下载地址是:http://www.asterisk.org/downloads
下载之后./configure 然后sudo make &&sudo make install && sudo make samples
重启asterisk,确保以下多个模块被正常加载
*CLI> module show like realtimeModule Description Use Count
pbx_realtime.so Realtime Switch 0
func_realtime.so Read/Write values from a RealTime reposi 0
app_realtime.so Realtime Data Lookup/Rewrite 0
3 modules loaded
*CLI> module show like mysql
Module Description Use Count
cdr_addon_mysql.so MySQL CDR Backend 0
app_addon_sql_mysql.so Simple Mysql Interface 0
res_config_mysql.so MySQL RealTime Configuration Driver 0
如果正常加载,我们就能开始配置asterisk 和mysql了
1.首先我们应该在数据库的某个database中建立一张表用来存储peers和users数据
表的结构如下
CREATE TABLE sip_users (
id int(11) NOT NULL auto_increment,name varchar(80) NOT NULL default '',
host varchar(31) NOT NULL default '',
nat varchar(5) NOT NULL default 'no',
type enum('user','peer','friend') NOT NULL default 'friend',
accountcode varchar(20) default NULL,
amaflags varchar(13) default NULL,
`call-limit` smallint(5) unsigned default NULL,
callgroup varchar(10) default NULL,
callerid varchar(80) default NULL,
cancallforward char(3) default 'yes',
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,
insecure varchar(4) default NULL,
language char(2) default NULL,
mailbox varchar(50) default NULL,
md5secret varchar(80) default NULL,
deny varchar(95) default NULL,
permit varchar(95) default NULL,
mask varchar(95) default NULL,
musiconhold varchar(100) default NULL,
pickupgroup varchar(10) default NULL,
qualify char(3) default NULL,
regexten varchar(80) default NULL,
restrictcid char(3) default NULL,
rtptimeout char(3) default NULL,
rtpholdtimeout char(3) default NULL,
secret varchar(80) default NULL,
setvar varchar(100) default NULL,
disallow varchar(100) default 'all',
allow varchar(100) default 'g729;ilbc;gsm;ulaw;alaw',
fullcontact varchar(80) NOT NULL default '',
ipaddr varchar(15) NOT NULL default '',
port smallint(5) unsigned NOT NULL default '0',
regserver varchar(100) default NULL,
regseconds int(11) NOT NULL default '0',
lastms int(11) NOT NULL default '0',
username varchar(80) NOT NULL default '',
defaultuser varchar(80) NOT NULL default '',
subscribecontext varchar(80) default NULL,
PRIMARY KEY (id),
UNIQUE KEY name (name),
KEY name_2 (name)
);
2.建立数据库用户并授权
grant select,insert,update,delete on asterisk.sip_users to username@localhost identified by 'username';
这里的username可以是你自己建立的 也可以是root 下面我以root为例
在mysql中的tirox中创建一张名为 sip_users的表
3. 编辑 /etc/asterisk/res_mysql.conf 以便asterisk访问数据库
[general]
dbhost = localhost
dbname = tirox
dbuser = root
dbpass = root
dbport = 3306dbsock = /var/lib/mysql/mysql.sock
如果你在 /var/lib/mysql/mysql.sock 找不到 mysql.sock的话
你可以去/etc/mysql/my.cnf 找到
[client]
2port = 3306
socket = /var/run/mysqld/mysqld.sock
4. 编辑 /etc/asterisk/extconfig.conf
在 [settings]标签下面添加下面的内容 sippeers => mysql,tirox,sip_users
sipusers => mysql,tirox,sip_users
5. 编辑 /etc/asterisk/sip.conf
在 [general],标签下面添加下面的内容
rtcachefriends=yes
6.然后添加你的数据到sip_users表中去
例如:
insert into sip_users set name='6001',
context='video-call',
type='friend',
host='dynamic',
secret='123456',
nat='yes',
canreinvite='no',
dtmfmode='rfc2833',
disallow='all',
allow='all',
callerid='\"9001\" <9001>';
大功告成
现在如果你在asterisk终端下 使用sip show peers 无法找到对应的账号
那么之需要使用sip客户端填写账号 就能看到了