如何从Asterisk dialplan访问外部MYSQL数据库?

如何从Asterisk dialplan访问外部MYSQL数据库?,asterisk,Asterisk,我试图从星号拨号计划访问我的外部数据库,但我得到错误“没有扩展mycontextname的应用程序MySQL” 所以我运行命令“moduleshowlikemysql”,它显示的是0模块。我在博客上读到,我必须添加mysql插件,比如app_addon_sql_mysql.so模块,但我发现的once也不能解决这个问题。在“moduleshowlikemysql”命令之后,我仍然得到了0个模块 我使用的是Asterisk 13.10.0,请问哪个mysql模块适合我的Asterisk版本,我在哪

我试图从星号拨号计划访问我的外部数据库,但我得到错误“没有扩展mycontextname的应用程序MySQL”

所以我运行命令“moduleshowlikemysql”,它显示的是0模块。我在博客上读到,我必须添加mysql插件,比如app_addon_sql_mysql.so模块,但我发现的once也不能解决这个问题。在“moduleshowlikemysql”命令之后,我仍然得到了0个模块


我使用的是Asterisk 13.10.0,请问哪个mysql模块适合我的Asterisk版本,我在哪里可以买到它?

mysql是过时的附加应用程序。你不应该使用它。如果你有,你需要编译它(在make之前做menuconfig)


推荐的方法是使用func_odbc或REALTIME,我个人不喜欢在星号拨号计划中使用数据库。我觉得它丑陋,难以书写(引用),难以维护,而且脆弱


我更喜欢在AGI中编写应用程序(逻辑和数据库访问)。您可以“完全”访问数据库,并将所有详细信息“隐藏”在一个漂亮的黑框中,您的代码可以通过真正的编译器(或脚本解释器)进行检查。

Asterisk 13有app_mysql.so模块。Try:module load app_mysql.soAGI每次使用新进程时都会运行它。当然,您可以随心所欲地编写,但func_odbc的性能在大多数情况下会更好。是的,进程创建更“昂贵”,但成本非常小,除非您使用脚本语言编写AGI,并且在与调用方的交互之间执行几十次。对不起。被“5分钟编辑”计时器捕获。。。是的,流程创建更“昂贵”,但成本非常小,除非您使用脚本语言编写AGI,并且在与调用方的交互过程中执行几十次,或者同时处理数百次调用。我大部分AGI都是用C语言编写的,这样我就可以在用Perl或PHP编写的AGI加载解释器、解析源代码、生成字节码然后执行的时间内执行xxx。但这不会比func_odbc更快,而seams之类的工具需要更多的时间(开发时间)在大多数情况下,对于任何在高级或专家级别了解sql的人来说,我同意通过dialplan进行单个查询的速度(纳秒?)比通过AGI快。随着“应用程序”的增长,差异会缩小。这并没有改变我的观点,即“我觉得它丑陋,难以书写(引用),难以维护,而且脆弱。”