gpt4 book ai didi

asterisk - 如何将 Asterisk 调用的通话持续时间插入到我自己的数据库中?

转载 作者:行者123 更新时间:2023-12-02 19:07:29 26 4
gpt4 key购买 nike

我有自己的数据库来记录 Asterisk 中的调用。我需要将每次通话的通话持续时间插入表中。我怎样才能做到这一点?我可以在我的拨号方案中执行此操作吗?

最佳答案

您没有提供太多有关您想要使用的数据库后端的信息,并且您是否询问如何编写自己的通话持续时间或如何配置 Asterisk 来编写相关的 cdr。

因此,一般来说,您有 3 种可能的选择(见下文)。对于选项23,您必须自己打开与数据库的连接,编写插入/更新所需行、处理错误等所需的查询.而对于选项1,您只需配置 Asterisk 即可完成这项工作。

1) Asterisk 可以通过将每个调用的 CDR(调用详细记录)写入后端来默认自行执行此操作。该后端可以是csv , mysql , pgsql , sqlite和其他数据库通过 cdr_odbc模块。您必须配置您的cdr.conf(并且根据您选择的后端,cdr_mysql.confcdr_odbc.confcdr_pgsql .conf 以及您的后端信息,例如凭据、表名称等。

CDR 会默认写入一些内容,这些内容就是 CDR 变量(取自 the predefined asterisk variable list )

If the channel has a cdr, that cdr record has it's own set of variables which can be accessed just like channel variables. The following builtin variables are available and, unless specified, read-only.

此时您感兴趣的是:

${CDR(duration)}     Duration of the call.
${CDR(billsec)} Duration of the call once it was answered.
${CDR(disposition)} ANSWERED, NO ANSWER, BUSY

当处理为 ANSWER 时,billsec 将包含计费秒数(调用的总“应答时间”),持续时间将包含调用的总时间,包括非调用时间。计费时间。

2) 另一方面,如果您不是询问 cdr,而是想自己编写通话时长,则可以使用 AGI发出 dial() 后的脚本,读取CDR(billsec)变量,或ANSWEREDTIME(由Dial()命令设置):

${DIALEDTIME} * Time for the call (seconds)
${ANSWEREDTIME} * Time from dial to answer (seconds)

3) 您也可以通过 AMI 获得相同的结果客户端监听变量 ANSWEREDTIME 的事件 VarSet。相关事件将包含已设置此变量的 channel 。

因此,如果您已经拥有自己控制/处理调用的 AGI 脚本或 AMI 客户端,选项 2 和 3 显然更有用,而选项 1 更通用,但灵 active 可能稍差。

希望对你有帮助!

关于asterisk - 如何将 Asterisk 调用的通话持续时间插入到我自己的数据库中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11176711/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com