打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Asterisk 数据库配置方案

Asterisk 之数据库配置方案

 

 

一:硬件环境

     二台x86 PC

     一个Hub 或者 Switch

一部外线虚拟电话(电话号码比如:82085471),一部SIP电话(内部设置分机号为:82081001)

Asterisk(Open Vox A1200p)

一条电话线(比如电话号码为82085498)Asterisk

二:软件环境

     二台x86  PC

PC1:安装Windows Xp Sp2XP下安装VM-5.5,并在VM中安装Fedora 9,在其中架设Sip Server,本项目使用kamailio

PC2:安装Centos 5.3,并安装asterisk相关包,作为语音网关。

Asterisk包安装:

         asterisk-1.4.22.1.tar.gz asterisk主程序包。

         asterisk-addons-1.4.7.tar.gz  asterisk扩展包。

         asterisk-sounds-1.2.1.tar.gz asterisk 语音包。

         openvox_zaptel-1.4.11.tar.gz asterisk 卡驱动包。

         libpri-1.4.2.tar.gz PRI

三:软件安装

PC1(192.168.1.199)

     Kamailio的安装:

              make clean

              ./configure

              make install

PC2(192.168.1.200)  

安装顺序:

libpri->openvox_zaptel->asterisk->asterisk-addons->asterisk-sounds

     安装前最好先把各个包放到/usr/src/目录下解压安装:

              libpri安装:

                            tar xzvf libpri-1.4.2.tar.gz

                            cd libpri-1.4.2.tar.gz

                            make clean

                            make

                            make install

              openvox_zaptel-1.4.11.tar.gz的安装:

                            tar xzvf openvox_zaptel-1.4.11.tar.gz

                            cd openvox_zaptel-1.4.11

                            make clean

                            ./configure

                            make

                            make install

              asterisk-1.4.22.1.tar.gz 的安装:

                            tar xzvf asterisk-1.4.22.1.tar.gz

                            cd asterisk-1.4.22.1

                            make clean

                            ./configure

                            make

                            make install

                            make samples //生成默认配置到/etc/asterisk

              asterisk-addons-1.4.7.tar.gz 的安装:

                            tar xzvf asterisk-addons-1.4.7.tar.gz

                            cd asterisk-addons-1.4.7

                            make clean

                            ./configure

                            make

                            make install

                            cp configs/*  /etc/asterisk/                                          asterisk-sounds-1.2.1.tar.gz 的安装:

                            tar xzvf asterisk-sounds-1.2.1.tar.gz

                            cd asterisk-sounds-1.2.1

                            make clean

                            make install                             

         注意:安装完成后,需要先运行genzaptelconf生成默认的Zap通道的配置信息。

四:配置

PC1192.168.1.199)配置

         配置kamailio.cfg文件:

#apply DB based aliases (uncomment to enable)下面的switch语句中加入如下代码

               

switch ($retcode) {

           case -1:

                 if(is_method("INVITE")){

                   log(1, "Not a local user, go to pstn./n");

                      if (uri=~"sip:[0-9]+@")

                              {

xlog("Transform$ruto 192.168.1.200:5060./n");

rewritehostport("192.168.1.200:5060");                                        if(!t_relay())

sl_reply_error();

                                    exit;

}

route(1);

}

 

                  

在进行数据库配置之前我们需要先按照常规配置对asterisk进行配置,比如配置zapata.conf,zapata-channels.conf,sip.conf,

extensions.conf等。做了简单配置之后,测试是否可以和外线呼入/呼出,在确定没问题的情况下,我们要开始配置数据库,并使能数据库配置信息并屏蔽配置文件中的信息。

PC2 (192.168.1.200)  配置

     数据库连接配置

/etc/asterisk/res_mysql.conf文件如下:

[general]

dbhost = localhost       mysql的安装主机,本机可用localhost

dbname = asterisk       ;使用的数据库名

dbuser = asterisk             ;数据库用户名

dbpass = yourpassword   ;数据库密码

dbport = 3306

dbsock=/var/lib/mysql/mysql.sock

 

连接引擎配置

/etc/asterisk/extconfig.conf

配置文件格式如:family => 驱动名,数据库名,表名

[settings]

sipusers => mysql,asterisk,sip_buddies  ;到asterisk数据库的sip_buddies表中查询用户

sippeers => mysql,asterisk,sip_buddies    ;到asterisk数据库的sip_buddies表中查询端

extensions => mysql,asterisk,extensions  ;到asterisk数据库的extensions表中查拔号方案

 

数据库配置

 

到此我们需创建对应上面配置中用到的数据库和用户,sql脚本(t.sql)如下:

 create database asterisk;

GRANT ALL PRIVILEGES ON asterisk.* TO 'asterisk'@'localhost' IDENTIFIED BY 'yourpassword' WITH GRANT OPTION;

CREATE TABLE `asterisk`.`extensions` (

`id` int(11) NOT NULL auto_increment,

`context` varchar(20) NOT NULL default '',

`exten` varchar(20) NOT NULL default '',

`priority` tinyint(4) NOT NULL default '0',

`app` varchar(20) NOT NULL default '',

`appdata` varchar(128) NOT NULL default '',

PRIMARY KEY  (`context`,`exten`,`priority`),

KEY `id` (`id`)

) ENGINE=MyISAM;

CREATE TABLE `asterisk`.`sip_buddies` (

`id` int(11) NOT NULL auto_increment,

`name` varchar(80) NOT NULL default '',

`accountcode` varchar(20) default NULL,

`amaflags` varchar(7) default NULL,

`callgroup` varchar(10) default NULL,

`callerid` varchar(80) default NULL,

`canreinvite` char(3) default 'yes',

`context` varchar(80) default NULL,

`defaultip` varchar(15) default NULL,

`dtmfmode` varchar(7) default NULL,

`fromuser` varchar(80) default NULL,

`fromdomain` varchar(80) default NULL,

`fullcontact` varchar(80) default NULL,

`host` varchar(31) NOT NULL default '',

`insecure` varchar(20) default NULL,

`language` char(2) default NULL,

`mailbox` varchar(50) default NULL,

`md5secret` varchar(80) default NULL,

`nat` varchar(5) NOT NULL default 'no',

`deny` varchar(95) default NULL,

`permit` varchar(95) default NULL,

`mask` varchar(95) default NULL,

`pickupgroup` varchar(10) default NULL,

`port` varchar(5) NOT NULL default '',

`qualify` char(3) default NULL,

`restrictcid` char(1) default NULL,

`rtptimeout` char(3) default NULL,

`rtpholdtimeout` char(3) default NULL,

`secret` varchar(80) default NULL,

`type` varchar(6) NOT NULL default 'friend',

`username` varchar(80) NOT NULL default '',

`disallow` varchar(100) default 'all',

`allow` varchar(100) default 'g729;ilbc;gsm;ulaw;alaw',

`musiconhold` varchar(100) default NULL,

`regseconds` int(11) NOT NULL default '0',

`ipaddr` varchar(15) NOT NULL default '',

`regexten` varchar(80) NOT NULL default '',

`cancallforward` char(3) default 'yes',

PRIMARY KEY  (`id`),

UNIQUE KEY `name` (`name`),

KEY `name_2` (`name`)

) ENGINE=MyISAM;

 

五:用例

     下面讲述如何将拔号规则存入数据库存,并使其生效。

     假如在/etc/asterisk/extensions.conf有如下拔号规则:

     [from-sip]

exten =>_.,1,Answer()

exten=>_.,2,GotoIf($[${EXTEN:0:${LEN(${AREACODE})}}=${AREACODE}]?3:5)

exten =>_.,3,Dial(Zap/1/${EXTEN:${LEN(${AREACODE})}})

exten =>_.,4,Hangup()

exten =>_.,5,Dial(SIP/${EXTEN})

exten =>_.,6,Hangup()

我们可以用以下脚本将其插入数据库中:

INSERT into extensions (id, context, exten, priority, app)

VALUES ('','from-sip','_.','1','Answer');

INSERT into extensions (id, context, exten, priority, app, appdata)

VALUES ('','from-sip','_.','2','GotoIf','$[${EXTEN:0:${LEN(${AREACODE})}}=${AREACODE}]?3:5');

INSERT into extensions (id, context, exten, priority, app, appdata)

VALUES ('','from-sip','_.','3','Dial','Zap/1/${EXTEN:${LEN(${AREACODE})}}');

INSERT into extensions (id, context, exten, priority, app)

VALUES ('','from-sip','_.','4','Hangup');

INSERT into extensions (id, context, exten, priority, app, appdata)

VALUES ('','from-sip','_.','5','Dial','SIP/${EXTEN}');

INSERT into extensions (id, context, exten, priority, app)

VALUES ('','from-sip','_.','6','Hangup');

 

现在我们的拔号规则已存在于数据中,那么如何使它起作用呢?也就是说当一个内部SIP用户想拔打外线或者其它SIP电话的时候,asterisk如何引导主叫用户到数据库中查询拔号规则并根据拔号规则进行拔号呢?

此时我们需要修改/etc/asterisk/extension.conf文件,来引导主叫到数据库中查找拔号规则,如下:

 

[from-sip]

switch =>Realtime/@extensions

 

我们已成功有配置from-sip规则到数据库,并使内部用户拔打外线时,自动到数据库中查询拔号规则。比如我们在内部SIP电话中拔打外线号码82085471时,它会到数据库中查询from-sip这个规则,并根据此规则拔打电话。

六:Asterisk的启动与调试

PC1的终端输入如下命令:

          #service network start

              #service mysqld start

              #asterisk

也就是说在启动Asterisk之前必需确保网络和mysql数据库服务均已启动。

需要说明一点的是:在安装完mysql之后,数据库用户名root的默认密码为:空或者passw0rd。这里是数字0

另外我们还可以通过

#asterisk –rvvv 来察看asterisk的调式信息。

     PC2的终端启动kamailio

                   #service network start

                   #service mysqld  start

                   #kamailio

         同理在启动SIP服务的时候必需确保以上两个服务正常运行,若已运行可以不使用对应的指应。

         我们也可以通过

                   #kamctl online  来察看在线注册的用户。

 

         至此,我们已有一个完整的asterisk数据库配置方案,如果您想了解更多数据库配置方案可以到http://www.voip-info.org查询。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Asterisk Full RealTime example
深入浅出asterisk(四):部署CDR MySql模块
Asterisk 安装与配置
Asterisk 11的Web RTC功能
SqlServer数据库语句大全(四)
Asterisk学习资料
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服