当发生以下事件时,我需要执行AGI脚本:
- 来电(只需调用
AGI()
函数即可( - 当呼叫是"呼叫"时;"振铃";(我想不通!(。
<-- Problem, how to do this?
- 当呼叫是"呼叫"时;回答";(我使用
Dial()
中的U(answer^${CALLID})
选项执行此操作( - 当一个电话挂断时(我使用
h
特殊分机(
我的拨号计划如下:
[from_origin]
exten => _X.,1,NoOp(${CALLER_USERNAME} from ${CHANNEL(pjsip,remote_addr)})
same => n,AGI(agi://127.0.0.1/incoming)
same => n,Dial(${DIALSTR},45,U(answer^${CALLID}))
exten => h,1,AGI(agi://127.0.0.1/hangup,${CDR(uniqueid)})
[answer]
exten => s,1,Set(theCallID=${ARG1})
same => n,AGI(agi://127.0.0.1/answered)
same => n,Return()
看,我已经调用了3
fast-agi
脚本:incoming
、answered
和hangup
。现在我需要调用类似的脚本CCD_;"振铃";。如何做到这一点?
振铃状态是通道(chan_pjsip.so(的状态,它没有发送到通道代码之外。
所以不,你无法在拨号应用程序中获得它。因为它不能为某些频道类型和拨号仍然应该为这些类型工作。
对于某些通道,您可以在NewState事件的事件侦听循环中通过AMI获得它。但并没有任何担保,当你们收到啜饮信息时,它将完全在同一时间。
https://wiki.asterisk.org/wiki/display/AST/Asterisk+11+经理Event_Newstate