在接听电话后获取来电号码

时间:2017-02-01 09:39:54

标签: asterisk

我有一个php脚本,在[macro-blkvm-clr]中接听电话时运行  宏。 php获得3个参数第一个参数应该是来电号码这是我的行

exten => s,n,AGI(/var/lib/asterisk/agi-bin/alertcalls.php,${CALLERID(num)},1,${MASTER_CHANNEL(CONNECTEDLINE(num))})

我不知道为什么,但是当星号将参数发送到php时,它会将其设置为已接听的电话。例如,ext 300调用ext 200,在日志中调用我看到的内容

Executing [s@macro-blkvm-clr:2] AGI("PJSIP/200-00000253", "/var/lib/asterisk/agi-bin/alertcalls.php,200,1,200") in new stack

为什么会这样。以及如何发送真正的分机(在这种情况下为300)

对所有帮手说话,对不起我的英语,我希望我很清楚

3 个答案:

答案 0 :(得分:1)

您可以保存

exten => s,n,SET(VAR1=${CALLERID(num)})
exten => s,n,AGI(/var/lib/asterisk/agi-bin/alertcalls.php,${VAR1},1,${MASTER_CHANNEL(CONNECTEDLINE(num))})

答案 1 :(得分:0)

在连接被叫和呼叫频道之前,为CALLED派对频道(它被发明为隐私)执行了这个宏。

您可以通过将Dumpchan作为宏中的第一优先级来查看所有变量。

答案 2 :(得分:0)

${CALLERID(num)}通话之前,将来电显示号码保存到频道变量中,然后引用该号码。 你应该总是能够引用netstat -n,但是如果它在那时不适合你,那么上面就是一个简单的解决方法。