Asterisk 星号AMI发起呼叫跟踪事件

Asterisk 星号AMI发起呼叫跟踪事件,asterisk,phone-call,amazon-ami,outbound,Asterisk,Phone Call,Amazon Ami,Outbound,我正在编写一个C应用程序,使用AMI接口和origine命令控制对asterisk的出站调用。其目的是建立一个“警告机器”,提醒用户警报系统。我编写了在AMI服务器上登录并放置成功排队的发起调用的例程。当接上本地分机时,按照拨号计划开始呼叫外线;我需要做的是跟踪外呼事件(挂机、铃声、应答、挂断),但我无法跟踪它们。我在登录到AMI服务器时启用了事件,但只有在用户挂断外部线路时才获取事件。在通话结束之前,拨号应用程序似乎会锁定任何消息。下面是origine命令: sprintf(buffer, "

我正在编写一个C应用程序,使用AMI接口和origine命令控制对asterisk的出站调用。其目的是建立一个“警告机器”,提醒用户警报系统。我编写了在AMI服务器上登录并放置成功排队的发起调用的例程。当接上本地分机时,按照拨号计划开始呼叫外线;我需要做的是跟踪外呼事件(挂机、铃声、应答、挂断),但我无法跟踪它们。我在登录到AMI服务器时启用了事件,但只有在用户挂断外部线路时才获取事件。在通话结束之前,拨号应用程序似乎会锁定任何消息。下面是origine命令:

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);
我怎样才能成功地跟踪出站呼叫? 非常感谢你的帮助
马可

你是如何观察你的事件的?如果您在拨号计划中直接调用SIP/201[从内部;ext=7](不使用origine),您是否看到事件?作为一个测试,我尝试使用AMI(与您的套接字相同),并确实看到了所有事件(在登录AMI时打开了事件)。感谢您的回复。我直接使用SIP/201进行了一次呼叫,但我得到了事件,以创建从SIP/201到外部呼叫的桥接。在此之后,在我手动挂断Sip/201之前,不会再发生任何事件。在那一刻,我得到了更多的事件,告诉我如何调用;他们先是挂断电话,然后告诉我答案是。。。;我在我以前登录的ami套接字上侦听了以下字符串:sprintf(缓冲区,“操作:登录\r\n用户名:mb\r\n凭据:xx\r\n事件:系统、调用、日志、详细信息、命令、代理、用户、报告\r\n\r\n”);发送(socktAMI,buffer,strlen(buffer),0);非常感谢你的帮助。对我来说,这似乎是正常的行为。Asterisk将在设置阶段触发事件,但一旦建立了语音连接,则在拆卸阶段(除非您正在进行IVR等)之前不会再发生任何事件(即SIP结束-现在只有RTP语音数据包)。问题是否仍然在于,Originate没有触发相同的设置/拆除事件,而direct dialplan则会触发相同的设置/拆除事件?或者你希望看到什么事件?您的事件列表“系统、呼叫、日志…”;如果您缺少一些事件,可以将所有事件作为测试打开(即events:on)。干杯。重点是我不知道分机何时(以及是否)应答。我使用RTPAUDIOQOS和RTPAUDIOQOSJITTER接收VarSet事件,但总是在调用结束时接收。在dialplan中,我调用async:agi,在参与方响应时发送自定义音频消息。我试着询问频道状态,它在通话中总是报告“向上”。但是我怎样才能触发党的回应以及何时?非常感谢你。
[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)