我正在使用如下调用文件:
Channel: SIP/TRUNK/1-111522282783163<br/>
CallerID: 522299308962<br/>
MaxRetries: 1<br/>
Data: GqFR7rubPw_10<br/>
Context: calls<br/>
Extension: s<br/>
Priority: 1 <br/>
Setvar: AUDIOFILE=GqFR7rubPw_10<br/>
Setvar: ID=BkzKlksau1<br/>
Setvar: DEST=522282783163<br/>
Archive: yes<br/>
正如我已经知道的,当呼叫被应答时,拨号计划(在上下文中(被执行,但不执行"无应答、拥塞、繁忙、失败"的呼叫。我想做的是在呼叫处于未应答状态时执行拨号计划(在同一上下文或默认上下文中(,因为我在用于识别呼叫的呼叫文件中添加了一个 ID 作为变量。
我发现这个链接星号 - 如果呼叫未接听,则执行 agi 脚本?但我不明白对你说实话。如果有人有这方面的例子,我将不胜感激。
拨号方案:
[calls]
exten => s,1,wait(2)
exten => s,n,Set(CDR(outbound_cnum)=${DEST})
exten => s,n,Set(CDR(userfield)=${ID})
exten => s,n,Playback(${AUDIOFILE})
您不仅会遇到尝试编写自己的拨号核心的问题。强烈建议使用已经编写的核心/一些开源项目。
这个确切的问题可以通过使用本地/频道并通过拨号计划呼叫来解决。这样,您将获得有关拨号计划的反馈,并可以在通话结束后检查DIALSTATUS变量。
https://wiki.asterisk.org/wiki/display/AST/Local+Channel