利用Digium卡搭建一个小型的asterisk电话系统 (二、添加Mysql支持)

在本文中,我们准备对上文搭建好的小型的asterisk电话系统添加动态的odbc支持,这样就可以动态地添加和注册。


一、安装Mysql和配置环境

1.1安装Mysql

$ sudo apt-get install mysql-server
设置root的password


1.2 配置Mysql

配置并确认安全

$ sudo /usr/bin/mysql_secure_installation

创建用户asterisk
$ mysql -u root -p
mysql> CREATE USER 'asterisk'@'%' IDENTIFIED BY 'yourpassword';

创建数据库asterisk
mysql> CREATE DATABASE asterisk;

赋予asterisk所有权限,并可以从任何地方访问。
mysql> GRANT ALL PRIVILEGES ON asterisk.* TO 'asterisk'@'%';

mysql> exit


1.3 安装并配置odbc桥

$ sudo apt-get install unixODBC unixODBC-dev
$ sudo apt-get install libmyodbc


创建 /etc/odbcinst.ini,内容如下:

[MySQL]
Description = ODBC for MySQL
Driver = /usr/lib/odbc/libmyodbc.so
Setup = /usr/lib/odbc/libodbcmyS.so
FileUsage = 1

通过如下命令来验证odbcinst.ini是否有效

# odbcinst -q -d


创建 /etc/odbc.ini,内容如下:

[asterisk-connector]
Description = MySQL connection to 'asterisk' database
Driver = MySQL
Database = asterisk
Server = localhost
UserName = asterisk
Password = yourpassword
Port = 3306
Socket = /var/run/mysqld/mysqld.sock

通过以下命令确认是否可以连接

# echo "select 1" | isql -v asterisk-connector


1.4 确认odbc相关安装模块

$ cd ~/src/asterisk-complete/asterisk/1.8
$ ./configure
$ make menuselect

确认cdr_odbc, cdr_adaptive_odbc, func_odbc,
func_realtime, pbx_realtime, res_config_odbc, and res_odbc,ODBC_STORAGE已经被选中


$ make install


二、配置Asterisk


2.1 修改/etc/asterisk/extconfig.conf支持动态加载

sippeers => odbc,asterisk,sip
sipusers => odbc,asterisk,sip


2.2 修改/etc/asterisk/res_odbc.conf

[asterisk]
enabled => yes
dsn => asterisk-connector
username => asterisk
password => cynthia
pooling => yes
limit => 2
pre-connect => yes


2.3 创建表和数据

如果需要从远程 访问Mysql,需要修改/etc/mysql/my.cnf 注释掉 bind-address = 127.0.0.1


mysql -u asterisk -p

use asterisk


CREATE TABLE `sip` (
  `type` varchar(6) DEFAULT NULL,
  `name` varchar(128) DEFAULT NULL,
  `secret` varchar(128) DEFAULT NULL,
  `context` varchar(128) DEFAULT NULL,
  `host` varchar(128) DEFAULT NULL,
  `ipaddr` varchar(128) DEFAULT NULL,
  `port` varchar(5) DEFAULT NULL,
  `regseconds` bigint(20) DEFAULT NULL,
  `defaultuser` varchar(128) DEFAULT NULL,
  `fullcontaxt` varchar(128) DEFAULT NULL,
  `regserver` varchar(128) DEFAULT NULL,
  `useragent` varchar(128) DEFAULT NULL,
  `lastms` int(11) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;


insert into sip (type,name,secret,context,host,defaultuser)
values ('friend','2220','blah','default','dynamic','2220');

insert into sip (type,name,secret,context,host,defaultuser)
values ('friend','2221','blah','default','dynamic','2221');

insert into sip (type,name,secret,context,host,defaultuser)
values ('friend','2222','blah','default','dynamic','2222');

2.4 去掉sip.conf

去掉sip.conf [2220]~[2226]的所有内容


三、启动和测试

启动

/etc/init.d/asterisk start

进入控制台

asterisk -rvvvvvvv


启动IP电话机和软件话,成功的话,在控制台可以考到从odbc注册的消息,并且可以和上文一样进行拨号,唯一不同的是,本文的配置可以从odbc动态加载数据,这尤其适用于sip用户经常发生改变的情况。

下文将对odbc数据库的支持,进行进一步的扩展,使得本文的小例子可以一步步符合工业的要求。

(待续)



你可能感兴趣的:(voip)