【发布时间】:2012-11-30 11:02:12
【问题描述】:
我有一个旧的 C 语言 Asterisk 应用程序,它使用 MySQL 进行用户身份验证、路由和计费。我将它保留在 Asterisk 1.4.21 中,因为在较新版本的 Asterisk 中没有返回任何 CDR 数据。
显然,在 1.4.22 https://issues.asterisk.org/jira/browse/ASTERISK-13064 中有一些更改完全改变了 CDR-s 的处理方式。遗憾的是,没有提供有关如何正确迁移现有代码的有用信息。
他们改变了执行顺序,调用了'h'扩展并重置了CDR数据。
我的代码:
ast_log(LOG_NOTICE,"拨号字符串:'%s'\n", dialstr); app = pbx_findapp("拨号"); 如果(应用程序) res = pbx_exec(chan, app, dialstr); ast_log(LOG_NOTICE,"从 pbx_exec '%i'返回, 处置: '%s'\n", res, ast_cdr_disp2str(chan->cdr->disposition));代码的其他部分处理 chan->cdr->billsec 等,但它总是给出 0 值。
成功调用后,我总是从 CLI 获取此日志:
从 pbx_exec '-1' 返回,处置:'NO ANSWER'而相同的代码在 1.4.21 上工作正常
我听说的一个解决方案是在 Dial 之前使用 ast_reset() ,但我不确定如何实现它。 有关如何调整此应用程序的任何帮助?
【问题讨论】:
标签: c migration asterisk billing cdr