Asterisk Realtime with Mysql

Asterisk的强大功能让我第一眼就喜欢上了它,但是需要配置如此之多的conf文件实在让人有点受不了。
From Readme.extconfig for Asterisk Realtime Engine

The Asterisk external configuration engine is the result of work by Anthony Minessale II, Mark Spencer and Constantine Filin It is designed to provide a flexible, seamless integration between Asterisk's internal configuration structure and external SQL other databases (maybe even LDAP one day).


External configuration is configured in /etc/asterisk/extconfig.conf allowing you to map any configuration file (static mappings) to be pulled from the database, or to map special runtime entries which permit the dynamic creation of objects, entities, peers, etc. without the necessity of a reload.

这不就是我想要的么,动手是我的一贯原则,马上来。
前提
由于需要调用Mysql,所以需要先安装mysql-common,mysql-server,mysql-client,libmysqlclient-dev。
Step 1 安装Asterisk-Addon
在www.asterisk.org的网站上下载Asterisk-Addon,解压缩以后进行安装。

sudo ./configure
sudo make
sudo make install
sudo make samples

需要注意的是,执行configure这步没有mysql也是可以过得(Checking mysql_config … No),但是最后汇报错”Find Engine Mysql, but it is not available”.我已开始在这边耽误了很久,所以请注意前提中要求的几个包。

Step 2 配置/etc/asterisk/res_mysql.conf
在“ [general]”下增加如下配置。

dbhost = localhost
dbname = asterisk
dbuser = username
dbpass = password
dbport = 3306
dbsock = /var/lib/mysql/mysql.sock

基本的数据库配置,没啥好说的。

Step 3 配置/etc/asterisk/extconfig.conf
extconfig主要分成static 和database两种模式。
static 模式就是在”reload”的时候一口气全部从数据库中读出配置信息,储存在Memory中;database模式就是实时的按照需要从数据库中读取。这里我选择的是database,希望朝stateless asterisk靠拢。
在extconfig的”[settings] “中增加如下配置。

sippeers => mysql,general,sip_peers
sipusers => mysql,general,sip_users
queues => mysql,general,queue_table
queue_members => mysql,general,queue_member_table
meetme => mysql,general,meetme_table
voicemail => mysql,general,voicemail
extensions => mysql,general,extensions_table

这里需要注意的是,网上很多教程里写的配置格式是<driver>,<database name>[,table_name].但是在Asterisk 1.6.1或者以上的版本中正确的配置格式应该是<driver>,<settings name>[,table_name]。其中的<settings name>指的是res_mysql.conf中的”[general]“.
Step 4 创建数据库
这部分我就不多说了,没有什么不同。具体各个部分配置对应的数据表结构可以在我给出的参考地址中找到,我就不多说了。

Step 5 运行起来
还等什么运行起来。

sudo asterisk -vvvvc

然后在sip_peers中添加一条用户信息。不需要重起asterisk,直接用Xlite进行连接,哇塞,直接就注册上了,神奇的意思就是这个。

遗留问题
1)按照参考连接中的说法,database config不支持SIP NAT.这肯定是要克服的一个问题,回头再找找看资料了。
2) Realtime只是Asterisk集群,负载均衡的基石,要作大规模的Asterisk服务,Asterisk的集群技术和基于SIP的负载均衡技术都是下一个需要研究的课题。

参考地址:http://www.voip-info.org/wiki/view/Asterisk+RealTime



No tags for this post.
  • jeli

    楼主是否试过pgsql?
    另有没有sip帐号ldap化的经验,希望分享一下,谢谢

    [Reply]

    admin Reply:

    postgresql不怎么用?你可以参考这篇文章。
    http://www.cnasterisk.com/thread-418-1-1.html

    ldap化是什么意思?你是指把用户和对应的号码sync到LDAP Server上么?

    [Reply]

  • renwolang521

    ”Find Engine Mysql, but it is not available”.

    mysql-common,mysql-client,libmysqlclient-dev
    这些包yum 找不到为何?

    下面是我已经安装的包
    Installed Packages
    MySQL-python.i386
    asterisk-sounds-core-en-gsm.noarch
    asterisk16.i386
    asterisk16-addons.i386
    asterisk16-addons-bluetooth.i386
    asterisk16-addons-core.i386
    asterisk16-addons-mysql.i386
    asterisk16-addons-ooh323.i386
    asterisk16-configs.i386
    asterisk16-core.i386
    asterisk16-dahdi.i386
    asterisk16-doc.i386
    asterisk16-voicemail.i386
    mysql.i386
    mysql-connector-odbc.i386
    mysql-devel.i386
    mysql-server.i386
    麻烦帮忙看下

    [Reply]

无觅相关文章插件,快速提升流量