c语言 - chan->cdr 从星号1.4.21升级后没有数据



我有一个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'",dialstr);app=pbx_findapp("拨号");if(应用程序)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"返回,处置:"无应答">
而相同的代码在1.4.21 上运行良好

我听说的一个解决方案是在拨号之前使用ast_reset(),但我不知道如何实现它。关于如何调整此应用程序,有什么帮助吗?

您只需获得DIALSTATUS变量,该变量适用于您的应用程序,并将在未来的版本中得到支持。

pbx_builtin_getvar_helper(chan, "DIALSTATUS");

相关内容

  • 没有找到相关文章

最新更新