[英]How to set AGI variable in 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,則要進行掛斷電話
使用agi debug,您將看到腳本的作用。
最幸運的星號只是沒有腳本的權限,而腳本什么也不做。
啟用AGI調試使用
asterisk -r
agi set debug on
您將獲得0,因為您沒有從腳本中返回任何結果,因此需要將一個對象返回到撥號計划,如下所示
返回響應
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.