Asterisk PAMI如何查找相关事件



我有以下代码:

$pamiClient = new ClientImpl($params);
$pamiClient->open();
$originateMsg = new OriginateAction('PJSIP/9090');
$originateMsg->setContext('from-internal');
$originateMsg->setPriority('1');
$originateMsg->setAsync(true);
$originateMsg->setCallerId('Test');
$originateMsg->setExtension('user phone');
$response = $pamiClient->send($originateMsg);
$pamiClient->close();

返回响应:

"response": "Success",
"actionid": "1607830126.4974",
"message": "Originate successfully queued",
"created": 1607830126

我的任务是记录所有操作呼叫从9090开始到用户电话,结束9090到用户电话等。

为此,我听取了星号的所有操作,但我不知道如何将呼叫后收到的响应与事件联系起来您无法通过calleridnum进行连接,因为9090可以拨打不同的号码我如何通过actionid获取linkedid?

示例事件:

array(17) {
["event"]=>
string(13) "HangupRequest"
["privilege"]=>
string(8) "call,all"
["channel"]=>
string(19) "PJSIP/9090-000007f5"
["channelstate"]=>
int(5)
["channelstatedesc"]=>
string(7) "Ringing"
["calleridnum"]=>
int(9090)
["calleridname"]=>
string(7) "Test"
["uniqueid"]=>
string(15) "1607830255.6102"
["linkedid"]=>
string(15) "1607830255.6102"
...

每次通道启动时,您都会收到NewChannel事件。在这种情况下,您有uniqueid字段,将其与callerid和其他需要的信息and channelname一起存储。

每次你有任何操作,你都有相同的uniqueid或通道名称。当您在队列中有子频道时,您有linkedid=父频道id。

还有一些更改频道名称等的伪装事件。

检查FOP(闪光操作面板(代码。通过AMI实现这一点真的很重要,值得几年的开发。

最新更新