我正在制作一个 WebSocket 应用程序,需要获取代理的当前暂停时间。
当我调用操作:QueueStatus 时,返回的是 QueueMember 事件。JSON 中的 an 返回如下:
{ActionID: "WelcomeStatus/7000"
CallsTaken: "0"
Event: "QueueMember"
InCall: "0"
LastCall: "0"
LastPause: "1568301325"
Location: "Agent/7000"
Membership: "dynamic"
Name: "Agent/7000"
Paused: "1"
PausedReason: "Almoço"
Penalty: "0"
Queue: "queue1"
StateInterface: "Agent/7000"
Status: "4"}
注意,返回的是“LastPause”、“PausedReson”和“Pause”。在“LastPause”中,离开显示一些疯狂的数字(我不明白那个数字哈哈哈)。
那么,如何从 Asterisk 15 获取当前的暂停时间?
--编辑:通过重新测试,我发现导致这种情况的原因是我还提交了一个中断原因。如果我不发送休息时间的原因正常工作。
谢谢你的帮助。
在 asterisk 的论坛上冲浪,我发现了这个版本:
此版本中修复的错误:ASTERISK-27541 - app_queue:设置原因时队列暂停原因是(大数字)秒前(由 César Benjamín García Martínez 报告)
但是这个版本是针对 Asterisk 16,而不是针对 Asterisk 15。我决定在一些 C 文件中搜索这个问题,我发现失败了。
请记住,我必须重新编译星号,因为我直接从源代码更改内容。因此,如果您需要执行此过程,请在将其传递到生产环境之前在测试环境中进行。
打开文件:/usr/src/asterisk-15.7.3/apps/app_queue.c
并搜索这一行:
mem->reason_paused, (long) (time(NULL) - mem->lastcall), ast_term_reset());
改变:
mem->reason_paused, (long) (time(NULL) - mem->lastpause), ast_term_reset());
在这一行:
"LastPause", (int)mem->lastpause,
改成:
"LastPause", (long) (time(NULL) - mem->lastpause),
我想已经完成了... CLI 上的所有 AMI 请求和命令对我来说都返回了正确的信息,并且在我的 AMI 套接字上运行良好。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句