${CDR(start)}与${STRFTIME(${EPOCH},,%Y-%m-%d %H:% m:%S)}之间的差异



我已经创建了一个拨号计划,它接受呼叫并保存呼叫的开始和结束时间。我使用${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时间。挂机后可以显示通话结束,如果处理时间足够长,还可以显示不同的时间。

相关内容

  • 没有找到相关文章

最新更新