如何通过AMI获取Agent的暂停时间?
How to get via AMI the Pause time of Agent?
我正在制作一个 WebSocket 应用程序,需要获取代理的当前暂停时间。
当我调用操作:QueueStatus 时,return 是 QueueMember 事件。
JSON 中的一个 return 是这样的:
{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"}
注意,是 returned "LastPause"、"PausedReson" 和 "Pause"..
在"LastPause"中,客场显示了一些疯狂的数字(我不明白那个数字哈哈哈哈)。
那么,如何从 Asterisk 15 获取当前暂停时间?
——编辑:
通过重新测试,我发现造成这种情况的原因是我还提交了休息原因。
如果我不发送休息时间的原因正常工作。
谢谢你的帮助。
在 asterisk 的论坛上冲浪,我找到了发行版:
Bugs fixed in this release:
ASTERISK-27541 - app_queue: Queue paused reason was (big number) secs ago when reason is set (Reported by César Benjamín García Martínez)
但是这个版本是针对 Asterisk 16 的,而不是针对 Asterisk 15 的。
我决定在一些 C 文件中搜索这个问题,但我发现失败了。
Remember, I have to recompile my asterisk, because I change things straight from the source code.
So if you need to perform this procedure, do it in a test environment before it is passed to the production environment.
打开文件:
/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 套接字上运行良好。
我正在制作一个 WebSocket 应用程序,需要获取代理的当前暂停时间。
当我调用操作:QueueStatus 时,return 是 QueueMember 事件。 JSON 中的一个 return 是这样的:
{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"}
注意,是 returned "LastPause"、"PausedReson" 和 "Pause".. 在"LastPause"中,客场显示了一些疯狂的数字(我不明白那个数字哈哈哈哈)。
那么,如何从 Asterisk 15 获取当前暂停时间?
——编辑: 通过重新测试,我发现造成这种情况的原因是我还提交了休息原因。 如果我不发送休息时间的原因正常工作。
谢谢你的帮助。
在 asterisk 的论坛上冲浪,我找到了发行版:
Bugs fixed in this release: ASTERISK-27541 - app_queue: Queue paused reason was (big number) secs ago when reason is set (Reported by César Benjamín García Martínez)
但是这个版本是针对 Asterisk 16 的,而不是针对 Asterisk 15 的。 我决定在一些 C 文件中搜索这个问题,但我发现失败了。
Remember, I have to recompile my asterisk, because I change things straight from the source code. So if you need to perform this procedure, do it in a test environment before it is passed to the production environment.
打开文件: /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 套接字上运行良好。