我正在编写一个C应用程序,使用带有originate命令的AMI接口控制星号上的出站调用。目的是建立一个警告机器"提醒用户警报系统。我编写例程来登录AMI服务器并放置成功排队的始发呼叫。当选择本地分机时,拨号计划后会启动对外线的呼叫;我需要做的是跟踪外拨电话上的事件(摘机,响铃,接听,挂机),但我无法跟踪它们。我在记录到AMI服务器时启用了EVENTS,但是只有在用户挂断外线时才会获取事件。在调用结束之前,看起来Dial应用程序会锁定任何消息。这里有起源命令:
sprintf(buffer, "ACTION:ORIGINATE\r\nCHANNEL:SIP/201\r\nCONTEXT:from-internal\r\nEXTEN:7number to dial\r\nASYNC:YES\r\nVariable: __SIPADDHEADER51=Call-Info: <sip:192.168.100.231>\\;answer-after=0\r\nPRIORITY:1\r\nACTIONID:98765\r\n\r\n");
send(socktAMI, buffer, strlen(buffer),0);
并且拨号方案是:
[from-internal]
exten => _7.,1,Dial(SIP/${EXTEN:1}@pstnbo,60,rM(callscript))
[ext-local]
exten => s,1,AGI(agi:async)
[macro-callscript]
exten => s,1,Wait(1)
same => n,AGI(agi:async)
如何成功跟踪外拨电话? 非常感谢您的帮助 马可