${CDR(start)} 和 ${STRFTIME(${EPOCH},%Y-%m-%d %H:%M:%S)} 星号之间的区别

difference between ${CDR(start)} and ${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)} in asterisk

我创建了一个拨号方案,它接听电话并保存通话的开始和结束时间。我使用 ${CDR(start)} 来获取通话的开始时间,但是当我使用 ${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)} 时,与 ${CDR(start)} 相比,它给了我 10 秒或更多秒的差异。我的部分代码:

same => n,NoOp(------${CDR(start)}----${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)}--)

上面一行是我的 dialplan.From 文档中的第二行 ${CDR(start)} 给出了通话的开始时间, ${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)} 给出了当前时间。但是我把这行作为我的第二行dialplan 所以它几乎开始呼叫所以 ${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)}如果正在通话可以为空,挂断后补上

关于 CDR 变量:https://wiki.asterisk.org/wiki/display/AST/CDR+Variables

${CDR(start)}不是当前通话开始时间,而是当前cdr开始时间。从队列传输后可以更改,ResetCDR,ForkCDR命令

EPOCH 始终给出当前 linux 时间。挂断后它可以显示通话结束,但如果处理时间过长也可以显示不同的时间。