Как установить переменную AGI в Python?

У меня есть следующий agi-скрипт test_agi.py: этот скрипт делает проверку, называется ли номер действительно номером или не использует запрос HLR (API)

import urllib.request
import json
from pyagi.pyagi import AGI
agi = AGI()

dst = agi.env["agi_dnid"]

url = 'https://www.hlrlookup.com/api/hlr/?apikey=blabla&password=blabla&personalcache=5&msisdn=' + dst

req = urllib.request.Request(url)
r = urllib.request.urlopen(req).read()
cont = json.loads(r)


live = cont["error_text"]
agi.set_variable('live_dst',live)

И иметь расширение в звездочке:

[HLR_check]
exten => _XXXXXX.,1,Set(fname=${UNIQUEID})
exten => _XXXXXX.,2,AGI(/root/hlr/test_agi.py)
exten => _XXXXXX.,3,NoOp(${live_dst})
exten => _XXXXXX.,4,GoToIf($["${live_dst}" != "Live"]?6:5)
exten => _XXXXXX.,5,GoTo(agiexten,${EXTEN},1)
exten => _XXXXXX.,6,Hangup(42)
same => n,Hangup(42)

После звонка вижу в отладке agi:

[May 18 09:02:17] VERBOSE[8194][C-00048437] netsock2.c:   == Using SIP RTP CoS mark 5
[May 18 09:02:17] VERBOSE[11945][C-00048437] pbx.c:     -- Executing [380633958833@HLR_check:1] Set("SIP/CC-000429e6", "fname=1495098137.288333") in new stack
[May 18 09:02:17] VERBOSE[11945][C-00048437] pbx.c:     -- Executing [380633958833@HLR_check:2] AGI("SIP/CC-000429e6", "/root/hlr/test_agi.py") in new stack
[May 18 09:02:17] VERBOSE[11945][C-00048437] res_agi.c:     -- Launched AGI Script /root/hlr/test_agi.py
[May 18 09:02:17] VERBOSE[11945][C-00048437] res_agi.c:     -- <SIP/CC-000429e6>AGI Script /root/hlr/test_agi.py completed, returning 0
[May 18 09:02:17] VERBOSE[11945][C-00048437] pbx.c:     -- Executing [380633958833@HLR_check:3] NoOp("SIP/CC-000429e6", "") in new stack

ТАК! Agi вернул 0. Я хочу сделать проверку - agi должен вернуть мне значение переменной 'live_dst', и я хочу сделать вызов, если live_dst = Live, и повесить вызов, если live_dst !=Live


person SergeyMoroz    schedule 18.05.2017    source источник


Ответы (2)


Используйте отладку agi, вы увидите, что делает ваш скрипт.

Скорее всего, у звездочки просто нет разрешения на скрипт, а скрипт ничего не делает.

Чтобы включить использование отладки agi

asterisk -r
agi set debug on
person arheops    schedule 18.05.2017
comment
-- ‹SIP/CC1-00042e2f›Сценарий AGI /root/test.py завершен, возвращается 0 и информация от agi о каналах, приоритете и т. д. Я сделал все разрешения для этого fille chmod 777 - person SergeyMoroz; 18.05.2017
comment
не файл. Пользователь звездочки обычно не имеет доступа к корневой ПАПКЕ. - person arheops; 18.05.2017

Вы получаете 0, потому что вы не возвращаете никаких результатов из своего скрипта, вам нужно вернуть объект в диалплан, подобный этому

вернуть ответ

person Fouad Djebbar    schedule 24.01.2019