Freeswitch 中的最低成本路由 - 无法读取配置文件

Freeswitch 中的最低成本路由 - 无法读取配置文件

我们已将 Freeswitch 安装为 FusionPBX GUI 系统的一部分。FusionPBX 版本 3.7.1,Freeswitch 版本 1.4.9。FusionPBX 使用的数据库是 Postgres。

安装默认编译最低成本路由模块“mod_lcr”,并在模块配置文件中启用,存在模块“/usr/local/freeswitch/mod/mod_lcr.so”。

但是我似乎无法使用mod_lcr。

发出命令

reload mod_lcr

出现以下错误:

2016-10-22 23:22:12.023181 [ERR] mod_lcr.c:1078 Unable to determine database RANDOM function
2016-10-22 23:22:12.023181 [DEBUG] mod_lcr.c:1110 param val is       rate,quality,reliability
2016-10-22 23:22:12.023181 [DEBUG] mod_lcr.c:1113 arg #0/3 is rate
2016-10-22 23:22:12.023181 [DEBUG] mod_lcr.c:1113 arg #1/3 is quality
2016-10-22 23:22:12.023181 [DEBUG] mod_lcr.c:1113 arg #2/3 is reliability
2016-10-22 23:22:12.023181 [ERR] mod_lcr.c:2089 Unable to load lcr  config file
2016-10-22 23:22:12.023181 [CRIT] switch_loadable_module.c:1447 Error Loading module /usr/local/freeswitch/mod/mod_lcr.so
**Module load routine returned an error**

我查看了源代码“mod_lcr.c”,但无法看到错误到底是什么。它显然加载了配置并执行了函数“lcr_load_config”的一部分,如上面控制台中记录的内容所示,但错误出现在我无法清楚识别的位置。

这似乎与未正确定义此模块的数据库有关。在 mod_lcr.c 的第 1056 行中,它应该在读取配置的“setting”xml 标记后将数据源名称写入日志,但事实并非如此。setting 标记确实存在 - 请参阅下面的配置。但它没有设置“globals.odbc_dsn”变量。

Freeswitch 文档中关于“mod_lcr”的内容对这一点描述得非常简略,只是说

“编辑配置文件和数据库连接信息的默认配置 /usr/local/freeswitch/conf/autoload_configs/lcr.conf.xml”

但是我需要将什么放入该配置文件中?

在我的安装中默认它包含:

<settings>
  <param name="odbc-dsn" value="$${dsn_system}"/>
</settings>

我向数据库“freeswitch”和“fusionpbx”添加了表 lcr、carriers、carrier_gateway。没有变化,仍然是同样的错误。

您知道这里可能出了什么问题吗?

答案1

我自己弄清楚了。

该错误实际上是缺少数据库信息。错误消息“无法读取配置文件”具有误导性。

关键是 FusionPBX 安装未设置变量“dsn_system”。可以设置该变量,或在配置文件 /usr/local/freeswitch/conf/autoload_configs/lcr.conf.xml 中明确声明连接字符串。

因此,为了改进 Freeswitch 手册页中的 mod_lcr,要使用“mod_lcr”,您需要执行以下操作:

  1. 确保 Freeswitch 使用 mod_lcr 模块进行编译
  2. 确保 Freeswitch 在自动加载配置中加载 mod_lcr
  3. 为 LCR 创建表。目录 /usr/src/freeswitch/src/mod/applications/mod_lcr/sql/ 包含执行此操作的脚本。
  4. 为您打算使用的数据库制定一个连接字符串,并将其放入文件 /usr/local/freeswitch/conf/autoload_configs/lcr.conf.xml 中的“settings”XML 标签中。

对于 Postgres 数据库来说,这相当简单。以下是 lcr.conf.xml 文件中的显式设置:

<settings>
   <param name="odbc-dsn" value="pgsql://hostaddr=127.0.0.1 dbname=freeswitch 
          user=freeswitch password=xxxx "/>
</settings>

相关内容