我已经创建了一个拨号计划,它接受呼叫并保存呼叫的开始和结束时间。我使用${CDR(start)}
来获得调用的开始时间,但当我使用${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)}
时,它给了我10秒或更多的时间差,与${CDR(start)}
相比。我的部分代码:
same => n,NoOp(------${CDR(start)}----${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)}--)
上面的行是我拨号计划中的第二行。从文档中,${CDR(start)}
给出了呼叫的开始时间,${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)}
给出了当前时间。但是我把这行作为拨号计划的第二行,所以它几乎是呼叫的开始,所以${CDR(start)}
和${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)}
应该近似相等,但输出像
NoOp(------2015-10-25 12:30:10----2015-10-25 12:30:21--)
为什么两者有这么大的差异?我也不知道为什么${CDR(end)}
的值是空的。
${CDR(start)}
-为呼叫开始时间。${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)}
- 当前时间,该命令执行时。
如果在挂起后使用EPOCH
变量,它可能指向呼叫结束。
${CDR(end)}
可以为空,如果呼叫处于活动状态,将在挂机后填充。
关于话单变量:https://wiki.asterisk.org/wiki/display/AST/CDR+Variables
${CDR(start)}不是当前呼叫开始时间,而是当前话单开始时间。可在queue、ResetCDR、ForkCDR命令
转移后更改。EPOCH总是给出当前linux时间。挂机后可以显示通话结束,如果处理时间足够长,还可以显示不同的时间。