将Openfire XMPP聊天服务器与Asterisk PBX集成
在成功安装Asterisk PBX服务器和安装Openfire XMPP Chat服务器之后,是时候将两者集成在一起了,这样我们的Chat服务器就可以在Asterisk构建的VOIP基础架构中使用了。
前提条件已安装Asterisk PBX服务器已安装Openfire XMPP服务器Asterisk和Openfire已联网,以便它们都能成功通信.Linux的基本知识和文件编辑已编译res_xmpp.so和res_jabber.so Asterisk模块。
首先安装Asterisk和Openfire
安装Openfire XMPP聊天服务器:
有关如何在CentOS 7上安装Openfire XMPP的完整指南
在Ubuntu 18.04/Ubuntu16.04上安装Openfire XMPP聊天服务器
Asterisk PBX的安装:
如何在CentOS 8/RHEL 8上安装Asterisk
在Ubuntu上安装Asterisk
安装完Asterisk和Openfire之后,启动Openfire并登录到Web配置界面。使用ip 127.0.0.1. 如果我们在主机上安装了Openfire,并且在远程系统或者虚拟机上安装了Openfire服务器的IP地址。
http://127.0.0.1:9090 http://your_ip_address:9090
使用在安装过程中配置的用户名和密码登录。在"菜单"部分,转到"插件>>可用插件",然后搜索名为Asterisk-IM和SIP电话插件的插件。通过单击插件名称部分右上角的+(加号)来安装插件。如果我们在"可用插件"子菜单下似乎找不到上述插件,则可以手动下载插件并将其放在Openfire插件目录中。
在Openfire XMPP服务器上执行以下操作。
输入root密码,然后
su cd /opt/openfire/plugins/ wget http://www.igniterealtime.org/projects/openfire/plugins/sip.jar wget http://suse.mes.edu.cu/Utiles/Jabber/Openfire-3.8.x/Plugins/2013/asterisk-im.jar
为了让Openfire能够识别添加的插件,请使用以下命令重新启动它:
sudo service openfire restart
重新启动Openfire之后,我们应该在openfire仪表板菜单上看到Asterisk-IM菜单。单击它进行配置。在Asterisk-IM>常规设置下,确保已启用Asteris-IM插件。
在配置电话管理器上,添加Asterisk上下文,我的名为test。如果Asterisk Server中已经配置了上下文,请在此处添加它。如果我们没有任何上下文,请使用test并在以后添加它。
现在该添加Asterisk Server了。只需单击"常规"设置下的"添加服务器"选项即可。然后提供以下信息
服务器名称:星号服务器的别名。可以是任何名称
服务器IP:Asterisk服务器的IP地址
端口:用于连接到Asterisk服务器的连接端口,默认为5038
用户名:将连接到星号管理器的用户名。下一步,将其添加到Asterisk manager.conf文件中。保存配置。
密码:将用于连接到Asterisk PBX服务器的用户密码。
有关我的配置,请参见下面的屏幕截图。 >转到Asterisk Server,然后将上一步中指定的用户添加到/etc/asterisk/manager.conf文件中。
启动Asterisk PBX服务器,然后:
su nano /etc/asterisk/manager.conf
nano /etc/asterisk/manager.conf
确保常规部分具有以下配置选项。
[general] enabled = yes webenabled = yes port = 5038; This is the Asterisk AMI Port number httptimeout = 120 bindaddr = 0.0.0.0 allowmultiplelogin = yes displayconnects = yes timestampevents = yes
添加我们在中指定的用户和密码。
[openfire] secret =password-that-you'll-set-on-next-step displayconnects = yes read = system, call, log, verbose, agent, user, config, DTMF,reporting write = system, call, agent, user, config, comman, reporting
添加将连接到Asterisk Server的用户,转到"用户和组",然后添加用户。
用户名:openfire
名称:开火
密码:openfire
重新启动星号。
service asterisk restart
或者
/etc/init.d/asterisk reload
让我们在Asterisk上创建上下文测试。
nano /etc/asterisk/extensions.conf
转到文件末尾并添加以下行。
[test] exten => _XXX,1,Answer exten => _XXX,n,No0p ( This-is-a-sample-context) exten => _XXX,n,Dial(SIP/${EXTEN},10,r) exten => _XXX,n,Hangup
_XXX:这是一种模式匹配,表示具有三位数的任何扩展名。
${EXTEN}是一个变量,保留拨打的分机号。
添加要映射到XMPP聊天帐户的SIP用户。
nano /etc/asterisk/sip.conf
在常规部分添加以下行:
callevents = yes
然后在文件末尾添加以下行。
[101] ; Account name context=test ; default context for incoming calls type=friend ;Access type secret=password ; a secure password for this device usernam=kim nat=no ;Disabled NAT for LAN bindport=5060 ; UDP port for Asterisk disallow=all ;Disallow all Call Codecs allow=ulaw language=en host=dynamic ;use DHCP to get ip address qualify=yes allowguest=no ; disable unauthenticated calls dtmfmode=auto ; accept touch-tones from the devices, negotiated automatically [102] ; Account name context=test ; default context for incoming calls type=friend ; Access type secret=password ; a secure password for this device username=val nat=no ;Disabled NAT for LAN bindport=5060 ; UDP port for Asterisk disallow=all ;Disallow all Call Codecs allow= ulaw language=en host=dynamic ; use DHCP to get ip address qualify=yes allowguest=no ; disable unauthenticated calls dtmfmode=auto ; accept touch-tones from the devices, negotiated automatically
现在让我们回到Openfire并添加用户以映射到我们添加的SIP帐户。我们将配置:
用户名:用户名
姓名:全名
电子邮件:电子邮件地址
在Asterisk-IM >>电话映射>>添加用户/星号电话映射下,指定:*用户名:jose *设备:SIP/101 *分机:101呼叫者ID:jose主要:是
保存设置,我们已成功完成配置。
在开始向XMPP好友发送消息之前,我们需要连接到启用XMPP的服务器。将以下配置添加到xmpp.conf文件。
nano /etc/asterisk/xmpp.conf
加:
[asterisk] type=client serverhost=192.168.1.105 ; ip addresss of XMPP server(Openfire) theitroad@localhost secret=openfire priority=1 usetls=yes port=5222 usesasl=yes status=available statusmessage="Asterisk Server" endtodialplan=yes context=from_xmpp keepalive=yes
要安装res_xmpp,我们需要iksemel开发库。如果安装了OpenSSL开发库,则res_xmpp还将利用该库进行安全连接。首先,安装iksemel和OpenSSL库。
对于基于Ubuntu和Debian的系统:
sudo apt-get install libiksemel-dev libssl-dev
对于CentOS 7和RedHat Bases系统:
sudo yum install iksemel-devel openssl-devel
重新启动Asterisk服务器,然后如下安装res_xmpp。
安装res_xmpp
安装依赖项后,我们需要在Asterisk源代码中运行./configure并进行menuselect。然后进入"资源模块"菜单,并确保启用了res_xmpp。之后,运行make install获得新模块。
cd asterisk-source-directory ./configure make menuselect
然后进入"资源模块"菜单,并确保启用了res_xmpp。之后,进行安装。
make install
测试。
测试以确认Sip用户已成功添加到星号
service asterisk restart asterisk -rvvvvvv sip show peers
在Asterisk CLI类型上测试以确认Asterisk和Openfire XMPP服务器正在通信:
manager reload manager show connected
现在,我们可以安装Sparkweb,它是针对企业和组织而优化的开源,基于Web的IM客户端以及Spark IM客户端。我们将能够通过我们添加到Asterisk的SIP帐户接听电话。