Как использовать Asterisk AGI с python3? - PullRequest
1 голос
/ 28 января 2020

При использовании Asterisk 16.2.1 мой AGI скрипт (внизу) работает с python2 #!/usr/bin/env python2, но не с python3 #!/usr/bin/env python3.

Я даже не захожу так далеко как agi.verbose("python agi started") (с python3), поэтому я предполагаю, что это как-то связано с импортом или инициализацией AGI agi = AGI()

Использование agi set debug on не очень помогает, единственная информация, которую я вижу, это

Launched AGI Script /home/.../asteriskAgi.py
    -- <SIP/..-00000002>AGI Script /home/.../asteriskAgi.py completed, returning 0

Как это работает с python2, но не 3 Я также установил pyst3 с https://pypi.org/project/pyst3/, но это не помогло (не работает с или без pyst3 установлено).

Q: Есть идеи, как настроить asterisk для python3 или как найти причину root? Любой шанс получить более подробную информацию в журнале о том, где на самом деле происходит сбой скрипта_

#!/usr/bin/env python3

import sys
import rpyc

from asterisk.agi import AGI

agi = AGI()
agi.verbose("python agi started")
aCallerId = agi.env['agi_callerid']
aType = agi.env["agi_type"]
agi.verbose("XXXXXXXXXXXXXX call from %s" % aCallerId)
agi.verbose(sys.executable)

l = [aCallerId, aType]
agi.verbose("XXXXXXXXXXXXXX l")

c = rpyc.connect("localhost", 18861)
c.root.asteriskCall(l)

Даже эта версия * minimal 10 * * не работает с "3"

#!/usr/bin/env python3

import rpyc

from asterisk.agi import AGI

agi = AGI()
agi.verbose("python agi started")

в конечном итоге решается с помощью:

  1. удалено pyst3 и
  2. принудительно переустановили pyst2 как pip3 install --upgrade --force-reinstall pyst2. Вообще не знаю, что пошло не так.

1 Ответ

2 голосов
/ 30 января 2020

Ваша минималистичная c версия работает для меня (с pyst2, установленным через pip)

Проверьте разрешение и установленные пакеты. Также убедитесь, что ваша звездочка работает в среде, которая может найти python3 и установленные пакеты.

...