CentOS6.5搭建asterisk及配置软电话

时间:2022-11-09 09:17:29

最近需要搭建asterisk开源项目模拟语音通话,浏览了比较多的博客文章,然后归纳加工,实测可以成功搭建,希望能帮到有需要的人。

这些命令假设你已经按照“操作系统安装”一节的内容把操作系统安装好了。

一、asterisk安装和配置

1. 执行系统更新并重启

CentOS:

yum update -y && reboot

CentOS 64-bit

yum remove *.i386 && yum update -y && reboot

Ubuntu:

sudo apt-get update && sudo apt-get upgrade && sudo reboot

2. 同步时间,并且安装网络时间协议(NTP)服务器:

CentOS:

yum install -y ntp && ntpdate pool.ntp.org && chkconfig ntpd on && service ntpd start

CentOS 64-bit:

yum install -y ntp && ntpdate pool.ntp.org && chkconfig ntpd on && service ntpd start

Ubuntu:

sudo apt-get install ntp

Ubuntu还需要一些额外的配置,见“启用NTP精确系统时间”。

3. (只对CentOS)添加一个新的系统用户

CentOS (32 and 64 bit):

adduser asteriskpbx && passwd asteriskpbx && yum install sudo && visudo

把以下的注释取消掉

## Allows people in group wheel to run all commands

%wheel ALL=(ALL) ALL

vi /etc/group

更改以下数据

wheel:x:10:root,asteriskpbx

更改asteriskpbx用户,后续未说明都用此用户

su – asteriskpbx

sudo ls /root/

查看是否能看到 /root 目录下的文件,若有,则成功。若无,请重新查看以上步骤

详见“添加系统用户”。 对Ubuntu来说,我们假设在安装过程中创建的用户是asteriskpbx。

4. 安装依赖软件包

CentOS:

sudo yum install gcc gcc-c++ make wget subversion libxml2-devel ncurses-devel openssl-devel vim-enhanced

CentOS 64-bit:

sudo yum install gcc.x86_64 gcc-c++.x86_64 make.x86_64 wget.x86_64 subversion.x86_64 libxml2-devel.x86_64 ncurses-devel.x86_64 openssl-devel.x86_64 vim-enhanced.x86_64

Ubuntu:

sudo apt-get install build-essential subversion libncurses5-dev libssl-dev libxml2-dev vim-nox

5、创建asterisk目录,使用svn下载

mkdir -p ~/src/asterisk-complete/asterisk

cd ~/src/asterisk-complete/asterisk

svn co http://svn.asterisk.org/svn/asterisk/branches/1.8

6、创建libpri目录,使用svn下载并安装

cd ~/src/asterisk-complete/

mkdir libpri

cd libpri/

svn co http://svn.asterisk.org/svn/libpri/tags/1.4.8

cd 1.4.8

make

sudo make install

(此处,如果make报致命错误,可能是centos版本太高级,或者libpri版本太高级,请按照该教程安装centos版本和libpr版本)

7、检查升级内核版本(此处操作过程出现错误)

sudo yum install kernel-devel-`uname -r`

8、编译安装tags

cd ~/src/asterisk-complete/

mkdir dahdi

cd dahdi/

svn co http://svn.asterisk.org/svn/dahdi/linux-complete/tags/2.4.0+2.4.0

cd 2.4.0+2.4.0

make

sudo make install

sudo make config

(此处,如果make报致命错误,可能是centos版本太高级,或者dahdi版本太高级,请按照该教程安装centos版本和dahdi版本)

9、编译安装

cd~/src/asterisk-complete/asterisk/1.8

./configure

make

sudo make install

sudo make config

10、额外步骤(安装菜单选择menuselect),不强制要求,可跳过此步骤(已跳过)

sudo yum installlibnewt-devel  (这个安装notavailable 貌似不影响以下步骤)

cd~/src/asterisk-complete/asterisk/1.8

cd menuselect

make clean

./configure

cd ..

make menuselect

用下箭头选择 Core Sound Packages,右箭头进入,空格键选择CORE-SOUNDS-EN-WAVandCORE-SOUNDS-EN-ALAW。左箭头离开,下箭头选择Extra Sound Packages,右箭头进入,空格键选择WAV, ULAW,and ALAW 格式,按x保存离开。

sudo make install

sudo chown -R asteriskpbx:asteriskpbx /var/lib/asterisk/sounds/

文件会下载并且安装到合适的位置(/var/lib/asterisk/sounds//by default)

11、设置文件权限

sudo chown -R asteriskpbx:asteriskpbx/usr/lib/asterisk/

sudo chown -Rasteriskpbx:asteriskpbx /var/lib/asterisk/

sudo chown -Rasteriskpbx:asteriskpbx /var/spool/asterisk/

sudo chown -Rasteriskpbx:asteriskpbx /var/log/asterisk/

sudo chown -Rasteriskpbx:asteriskpbx /var/run/asterisk

sudo chownasteriskpbx:asteriskpbx /usr/sbin/asterisk

vi /etc/udev/rules.d/dahdi.rules

将文件最后一行改成

SUBSYSTEM=="dahdi",OWNER="asteriskpbx", GROUP="asteriskpbx",MODE="0660"

12、更改root权限,关闭SELinux

sudo echo 0 > /selinux/enforce    (sudo echo 1 >/selinux/enforce 重新开启)

cd /etc/selinux/

sudo vim config

把SELINUX选项改成disabled

SELINUX=disabled

重启

sudo reboot

13、初始化配置

sudo mkdir /etc/asterisk/

sudo chown asteriskpbx:asteriskpbx/etc/asterisk/

14、备份配置文件

cp ~/src/asterisk-complete/asterisk/1.8/configs/indications.conf.sample /etc/asterisk/indications.conf

cp ~/src/asterisk-complete/asterisk/1.8/configs/asterisk.conf.sample /etc/asterisk/asterisk.conf

vim /etc/asterisk/asterisk.conf

将数据更改成以下

runuser=asteriskpbx

rungroup=asteriskpbx

15、开启asterisk终端

/usr/sbin/asterisk start

使用上面的命令提示使用:asterisk -r 进行连接

*CLI>module show

Module Description Use Count

0 modules loaded

*CLI>core stop now

16、新建并编辑modules.conf配置文件内容

cat >>/etc/asterisk/modules.conf

; The modules.conf file, used to define which modules Asterisk shouldload (or

; not load).

;

[modules]

autoload=yes

17、新建并编辑musiconhold.conf配置文件内容

cd /etc/asterisk/

cat >> musiconhold.conf

; musiconhold.conf

[default]

mode=files

directory=moh

二、音乐格式转换

1、 安装rpmforge repository

rpm –Uhv apt.sw.be/redhat/el6/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.2-1.el6.rf.x86_64.rpm

yum install yum-priorities

yum install mpg123

2、格式转换

上传apologize.mp3到/tmp目录下

cd /tmp

mpg123 -w apologize.wav apologize.mp3

sox apologize.wav -t raw -r 8000 -s -c 1 apologize.sln

(asterisk文档中–w是无法进行的,上网没查到,所以去掉,对音乐播放不影响)

三、IP电话安装

1、 PC端Sip软件电话(X-lite或eysbeam)(注意PC端要插入耳机和话筒,不然没法拨号)

参考链接:http://blog.csdn.net/sukhoi27smk/article/details/17532249

① 设置sip.conf

vim /etc/asterisk/sip.conf

[general]

context = default

srvlookup= yes

[111]

secret=aaa

port=5060

type=friend

host=dynamic

qualify =yes

nat =no

context =internal

canreinvite= no



[222]

secret=aaa

port=5060

qualify =yes

nat = no

context =internal

canreinvite= no

type=friend

host=dynamic

②设置extensions.conf

[internal]                                       

exten => 1001,1, playback(/tmp/apologize)

exten => 1002,1,playback(/tmp/apologize)

playback表示播放/tmp/apologize这首歌曲

③ 设置eyebeam或X-lite(参考上面链接)

或者配置电话接通:

[internal]                                              //这里的internal和sip.conf里的context相同,可修改
exten => 1001,1,Dial(SIP/111)
exten => 1002,1,Dial(SIP/222)

2、 公司IP电话

配置文件同上

配置参考链接:http://jingyan.baidu.com/article/215817f7eee4a01eda1423e6.html

①将IP电话连接PC主机和网络接口

② 选择IP电话(硬件)的√ 可以查看IP电话的IP地址

③ 根据IP地址登录web,默认账号密码admin

④ 选择account,界面输入请参考PC端Sip软件电话连接

3、开启asterisk并拨打IP电话测试

/usr/sbin/asterisk -cvvv

若提示已经在跑,输入asterisk –r

若提示文件不存在,先输入asterisk跑一次,再输入asterisk –r即可。

IP电话拨打号码,这里是拨打1001或1002,将会听到apologize这首歌曲。

4.X-lite电话配置

点击软件上方三角形ShowMenu,再点开SIP Account Settings,设置新账户

用户名和密码根据上面的配置文件设置保持一致,域名地址为服务器地址,需要加上端口号,配置文件中设定端口号为5060,保存成功后,如果能够连接上就会在服务器有显示如下:

  -- Registered SIP '111' at 192.168.1.145:22582
-- Unregistered SIP '111'
-- Registered SIP '111' at 192.168.1.145:43620
-- Unregistered SIP '111'
-- Registered SIP '111' at 192.168.1.145:11484
-- Unregistered SIP '111'
-- Registered SIP '111' at 192.168.1.145:17486
-- Unregistered SIP '111'
-- Registered SIP '111' at 192.168.1.145:3102
-- Registered SIP '222' at 192.168.1.112:54070
-- Unregistered SIP '111'
-- Registered SIP '111' at 192.168.1.145:33024
-- Unregistered SIP '222'

注:如果extensions.conf被重新编写了 一定要记得在CLI那里reload一下,
重新编写sip.conf就sip reload。

附:asterisk 常用指令操作:

  1. 运行调试常用命令

./asterisk & 在后台启动asterisk

./asterisk –vvvc 启动asterisk并尽量多的在控制台显示调试信息

./asterisk –r 连接asterisk控制台

set verbose 9999 设置打印详细信息

2.asterisk控制台下常用命令

sip reload 重新加载sip配置信息

sip set debug 设置显示更多的sip信息

sip set debug off关闭显示更多的sip信息

sip show channels 显示所有活动的SIP通道

sip show peers 显示所有已定义的SIP peer

dialplan show 显示拨号方案

dialplan reload重新加载拨打方案

stop gracefully 优雅地停止asterisk

stop now 立即停止运行asterisk

module show 显示所有已加载模块

module loadcdr_radius.so 加载模块cdr_radius.so

module reload cdr_radius.so 重新加载模块cdr_radius.so

module unload cdr_radius.so 卸载模块cdr_radius.so

core show applications 显示所有的应用,比如Dial, Radius, Hangup,Answer等

core show channels 显示所有的通话频道

core show codecs 显示所有支持的编解码器

core show functions 显示所有的功能函数

在asterisk源码目录下运行makemenuselect可以进入模块选择页面,在里面可以选择和去除一些模块。

看完这些目录之后,对其大体的功能也可能会有点认识,还是从启动服务器还是聊起。启动服务器方法很多,我们按照手册中的描述选取一种

Asterisk –cvvvv 具体参数含义请参考手册

也可以通过运行 /usr/sbin/safe_asterisk 来运行。

我们下文的描述就会基于这个简单的拓扑展开讨论,这儿的tel都是sip电话,我们假定tel1号码为808,tel2号码为830,现在的简单需求就是我808能够打通830,实现双向通话。开始配置前,先了解主要配置文件的作用。

/etc/asterisk/asterisk.conf  主要配置文件,

/etc/zaptel.conf  硬件接口的基本层.    修改这个配置文件要用modprobe装载LinuxKernel使用模块.

/etc/asterisk/zapata.conf  为硬件配置Asterisk的接口.

/etc/asterisk/extensions.conf  拨号方案.

/etc/asterisk/sip.conf  SIP协议配置文件

/etc/asterisk/iax.conf  呼入和呼出IAX通道

/etc/asterisk/extensions.conf  拨号方案配置文件

/etc/asterisk/moduprobe.conf  加载模块配置文件