接听电话后获取来电号码

get the caller number after call is answered

我有一个 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 时,它会将其设置为已回答的 phone。例如分机 300 调用分机 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)

感谢所有帮助者,对不起我的英语我希望我说清楚了

因为在连接被叫和主叫频道之前为被叫方频道执行的宏(它是为了保护隐私而发明的)。

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

Answer() 通话之前将来电显示号码保存到频道变量中,然后引用它。 您应该始终能够参考 ${CALLERID(num)},但如果此时它不适合您,则上述方法很容易解决。

您可以保存

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