php - 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 和您需要的其他信息和频道名一起存储。
每次您进行任何操作时,您都具有相同的唯一 ID 或频道名称。当您在队列中有孩子的频道时,您有linkedid = parent 频道ID。
还有一些伪装事件会改变频道名称等。
检查 FOP(闪存操作面板)代码。通过 AMI 做到这一点确实不是一件容易的事,值得几年的发展。
推荐阅读
- python - 如何在python中计算这个数学表达式?
- reactjs - FeatureLayer - 不会渲染
- amazon-dynamodb - Dynamodb 说提供的关键元素与方案不匹配
- python - 如何检查正在使用 dask 计算哪个数据帧
- python - 将 csv 数据目录转换为 word2vec 对象
- c# - WebAPI(aspx项目)程序启动时如何从线程运行HttpListener
- f# - Microsoft F# 文档中的示例无法编译
- php - 用双引号将 PHP 中的所有文本括起来不会导致预期的行为,并且会添加太多引号
- python - 在 Matplotlib 中更改颜色条缩放
- javascript - 如何处理多个 API 调用