Websocket 如何通过AMI获取代理的暂停时间?

Websocket 如何通过AMI获取代理的暂停时间?,websocket,asterisk,amazon-ami,Websocket,Asterisk,Amazon Ami,我正在制作一个WebSocket应用程序,需要获取代理的当前暂停时间 当我调用action:QueueStatus时,返回的是QueueMember事件。 JSON中的返回值如下所示: {ActionID: "WelcomeStatus/7000" CallsTaken: "0" Event: "QueueMember" InCall: "0" LastCall: "0" LastPause: "1568301325" Location: "Agent/7000" Membership: "dy

我正在制作一个WebSocket应用程序,需要获取代理的当前暂停时间

当我调用action:QueueStatus时,返回的是QueueMember事件。 JSON中的返回值如下所示:

{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”。。 在“最后停顿”中,总是会出现一些疯狂的数字(我不懂那个数字,哈哈哈)

那么,如何从星号15获取当前暂停时间

--编辑: 通过重新测试,我发现造成这种情况的原因是我也提交了一个中断的原因。 如果我不发送休息时间正常工作的原因


谢谢你的帮助。

在asterisk的论坛上,我找到了以下版本:

此版本中修复的错误: ASTERISK-27541-应用程序队列:设置原因时,队列暂停原因(大数字)秒前(由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());
"LastPause", (int)mem->lastpause,
更改:

mem->reason_paused,  (long) (time(NULL) - mem->lastpause), ast_term_reset());
在这一行:

mem->reason_paused,  (long) (time(NULL) - mem->lastcall), ast_term_reset());
"LastPause", (int)mem->lastpause,
改为:

"LastPause", (long) (time(NULL) - mem->lastpause),
我想已经完成了。。。cliforme上的所有AMI请求和命令都返回了正确的信息,并且在我的AMI套接字上运行良好