You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Asterisk 1.8.32拨号方案中MYSQL函数失效问题求助

解决Asterisk 1.8.32中"No application 'MYSQL'"报错的方案

这个报错的核心原因很直接——你的Asterisk实例找不到MYSQL这个拨号方案应用,通常是因为对应的模块没加载或者编译时没包含。下面是具体的排查和解决步骤:

1. 先检查MySQL相关模块是否已加载

登录到Asterisk命令行(执行asterisk -r进入),输入以下命令查看模块状态:

module show like mysql

你需要看到app_mysql.so(提供MYSQL应用)和res_mysql.so(数据库连接基础模块)都显示为Loaded状态。

  • 如果模块未加载,尝试手动加载:
    module load res_mysql.so
    module load app_mysql.so
    
    加载成功后,重新测试你的拨号方案。
  • 如果加载失败(提示模块不存在),说明你的Asterisk编译时没包含MySQL支持,需要重新编译。

2. 重新编译Asterisk并启用MySQL支持

第一步:安装MySQL依赖包

根据你的操作系统安装对应的开发包:

  • Debian/Ubuntu系统:
    apt-get install libmysqlclient-dev
    
  • CentOS/RHEL系统:
    yum install mysql-devel
    

第二步:重新配置并编译Asterisk

  1. 进入Asterisk 1.8.32的源码目录
  2. 执行配置命令启用MySQL支持:
    ./configure --with-mysql
    
  3. 进入菜单选择界面,确保相关模块被选中:
    make menuselect
    
    在Add-ons分类里找到app_mysql,确保它被标记为选中状态(按空格键勾选);同时检查基础模块分类里res_mysql是否已选中。
  4. 编译并安装:
    make
    make install
    
  5. 重启Asterisk服务,让新模块生效:
    service asterisk restart
    

3. 修复拨号方案中的语法错误

除了模块问题,你的拨号方案里还有两处小错误需要修正:

  1. 最后一行MYSQL(Disconnect)多了一个右括号
  2. Playback命令拼写错误(写成了Platback)

修正后的完整拨号方案代码:

exten => 8367,1,MYSQL(connect connid SERVERIP cron 1234 asterisk)
exten => 8367,n,MYSQL(Query resultid ${connid} select comments from vicidial_list where list_id=5555 and phone_number=${EXTEN:2} order by lead_id desc limit 1)
exten => 8367,n,MYSQL(Fetch vdp_tmp ${resultid} comments)
exten => 8367,n,MYSQL(Clear ${resultid})
exten => 8367,n,MYSQL(Disconnect ${connid})
exten => 8367,n,NoOp(${comments})
exten => 8367,n,Playback(/tmp/${comments})
exten => 8367,n,Hangup()

补充说明

Asterisk 1.8.32是非常老旧的版本(发布于2015年),官方早已停止维护,建议如果条件允许,尽量升级到较新的LTS版本(比如16或18),不仅能获得更好的兼容性,还有安全补丁和新功能。

内容的提问来源于stack exchange,提问作者Basani suresh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:43:46