HI END


一种永不妥协,追求极致与完美的精神与态度。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Jabber与Asterisk的整合(转)

Posted on 2012-08-10 16:24  HI END  阅读(512)  评论(0编辑  收藏  举报
 
虽然Skype风雨飘摇,但是它的成功不言而喻,一个小小的聊天软件居然还能打电话,酷阿。
 
前一段日子装了Openfire(Jabber),聊天的一套有了。
最近玩了Asterisk(PBX),能打电话了。
嗯,整整吧。
 
没办法,伟大的人总归想的都是一样的(-,-),
这方面的需求显然是非常炙热的,整合的办法也有很多种。
 
在Openfire中整合Asterisk
0Asterisk必须安装AMI
1在Openfire中安装Asterisk-IM的plugin
2配置Asterisk服务器信息。Asterisk-IM->General Settings(user/pwd为AMI帐号)
3将Openfire用户与Phone匹配。Asterisk-IM->Phone Mapping(Device的格式类似SIP/2000)
这个plugin的作用是通过AMI(Asterisk Manager API)获得Phone的状态变化信息。
具体的效果就是Spark上用户的状态会变为"On the Pone",or "Available".
不过可以把它的AMI Client偷过来自己用,娃哈哈)
 
4在Openfire中安装SIP Phone Plugin
5配置SIP Server信息.Server->Phone->Sip Settings
(没有NAT所以没有配STUN,voicemail实在不知道干啥用这里,随便写了)
6将PHONE与Openfire用户匹配.Server->Phone->Sip Phone Mapping(其实为什么不和上面那个Plugin整合呢)
7在Spark上安装SIP Phone Plugin,关闭,重启
这套Plugin要强大的多,提供了基本的SIP Softphone的功能,可以Call,Hold等等。
实现用了OpenSource的SIP包,娃哈哈可以偷过来玩)
 
OK.顺利的话,你的Spark就进化成为了SIP Softphone!
终于有了第二个SoftPhone,欢快的地给Xlite打了一个电话。
这个方案最大的问题是对客户端的依赖。
不管是Status的变化还是Sip Phone,换成其他的都不行。
 
P.S.配置之中遇到的最大问题是Spark一直没办法注册到Asterisk上。
搞了半天最后才搞定。总结下来最有可能是以下两方面问题。
1原来Openfire上Asterisk的地址配的是localhost,可能Phone直接拿了这个地址去连接。
2最后Spark卸载了重装就好了,可能是本身Configuration没有更新。
 
在Asterisk中整合Jabber
其实Asterisk本身也整合了Jabber的功能(皑皑,蛋糕就这么大,谁都想吃)
1.4以后的版本都包含了Jabber Module,可以作为Jabber Client或者Component进行实用。
1作为Jabber Client,可以通过两个Application(jabbersend,jabberstatus)
在extension.conf中发送XMPP消息
2作为Jabber Component
可以在jabber.conf中配置Jabber Server
让Asterisk作为Jabber Component与Server通讯。(还不知道具体啥样子呢-。-)
 
这部分都没有试过。因为具体的效果就是那样
而且我也不确定Jabber Server是否对这种通讯支持良好。
皑皑,毕竟有上面那种比较完善的解决方案在了。。。