Asterisk conntected with 7962G

之前比较偷懒,通过sip trunk连接CUCM和Asterisk,实现了7962G->CUCM->Asterisk->Xlite这样一个方案. 现在直接配置7962G和Asterisk进行连接,遇到了各种各样怪异的问题,才发现这实在是不容易.写个步骤下来,不然自己都怕忘记.
Step 1 下载7962G SIP Firmware Image
如果你有CCO帐号,可以直接访问http://www.cisco.com/cgi-bin/tablebuild.pl/ip-7900ser,获取相应的Image文件,注意后缀名是cop.
cop文件其实是一个tar压缩文件,修改后缀名以后可以打开了.注意其中有一个xxxxx.loads的文件.xxxxxx代表的就是当前Firmware Image的版本号.
Step 2 下载配置文件
我已经把配置文件模板放在了我的网站上,可以通过configs下载,其中包含三个文件.

  • XMLDefault.cnf.xml:默认配置文件,其中是各个型号Phone的默认版本号.
  • dialplan.xml:顾名思义,dialplan配置文件.默认情况下不需要配置.
  • SEPXXXX.cnf.xml:Phone的配置文件,

Step 3 配置XMLDefault.cnf.xml
打开XMLDefault.cnf.xml,添加下面的语句

<loadInformation5 model="Cisco 7962">SIP42.9-0-2S</loadInformation5>

标签中的内容就是之前Firmware Image的版本号.

Step 4 添加sip帐号
如果是Trixbox应该可以自动在界面添加,我用的是纯Asterisk(-,-),修改sip.conf

[555]
type=friend
secret=555
callerid="555"
host=100.100.3.85
nat=no
qualify=yes
canreinvite=no ; Typically set to NO if behind NAT
disallow=all
allow=gsm ; GSM consumes far less bandwidth than G711-u (ulaw)
allow=ulaw
allow=alaw
context=cloud

Step 5 配置SEPXXXX.cnf.xml
这是最主要的配置部分,具体的reference可以参考
http://www.voip-info.org/wiki/index.php?page_id=3242
首先要把该文件名中的XXXX用Phone的Mac地址替换,例如修改成SEP001B2C24CC.cnf.xml.
然后打开该文件,有几个地方需要修改.

  • ipAddr1:修改成Asterisk的IP
  • sipIpAddr1:修改成Asterisk的IP
  • backupProxy:修改成Asterisk的IP
  • emergencyProxy:修改成Asterisk的IP
  • outboundProxy:修改成Asterisk的IP
  • line::proxy:修改成Asterisk的IP
  • line::featureLabel:sip帐号的显示名称
  • line::authName:sip帐号的用户名
  • line::authPassword:sip帐号的secret
  • loadInformation:Firmware Image的版本号

另外每个line都代表了一个号码,可以按照需要自己添加或者删除.
Step 5 搭建TFTP Server
我用的是Ubuntu的tftpd,简单方便,这里就不多说了.
把cop文件解药后的所有文件以及三个配置文件都放到tftp的folder下.
Step 6 运行起来
最后要做的就是让Phone通过tftp下载这些Firmware Image, Configuration File.
可以用的方法主要有两种:
1)修改DHCP,在dhcpd.conf中添加如下语句

option tftp-server-addr 100.100.3.70;

2)通过Phone->Settings->Network Configuration->IPv4 Configuration,按”**#”解除锁.修改”Alternative TFTP”设置成”Yes”,修改”TFTP Server”成你TFTP Server的IP地址.

怎么样,试试看?让你的Cisco TNP Phones连接Asterisk吧.同样的办法我也把7975G连上了,打电话肯定没问题,ohyeah.

F&Q:
Q1:Phone在Registering这步就走不下去了怎么办?
A1:在sip.conf中配置”nat=never”,把SEPXXX.cnf.xml中sipProxies中各个标签的内容都设置成空,应该就没问题了.
Q2:Unable to create channel of type ‘SIP’ (cause 20 – Unknown) ?
A2:可能的问题是你把sipProxies中内容全部删除了,其实是标签留着,内容删除.或者在sip.conf中将host设置成静态IP也可以.
Q3:有噪音怎么办?
Q3:我解决的办法是删除sip.conf中”dtmfmode=rfc2833″.

参考链接:http://www.asterisktutorials.com/cisco-7970-ip-phone/
参考链接:http://www.greenwireit.com/blog/2008/12/a-guide-a-faq-how-to-unbrick-the-cisco-7970g/

 

Adhearsion初体验

我是偶尔在Asterisk: The Future of Telephony上看到Adhearsion的介绍的.以下是摘自Adhearsion主页http://adhearsion.com/的一段对Adhearsion的定义.

Adhearsion is a new way to write voice-enabled applications. It's not just an API or library — it's a fully-featured framework, the first of its kind, designed for maximal code reuse and intuitiveness. The name "Adhearsion" is a combination of "adhesion" and "hear" because Adhearsion shines best when integrating technologies with voice.

简单的说就是基于Asterisk AGI,一套完整的应用于Voice Application的Ruby框架.VoIP Application + Ruby,还有什么比这个更适合我呢?二话不说,马上开始试用.
Adhearsion Getting Start


Adhearsion的主页还是非常的人性化的。不仅提供了完全免费,电话测试系统,使得你建立的Adhearsion应用可以方便的进行调试运行,还提供了多种Voice客户端的选择,包括Skype, 各种SIP Phones甚至In-browser Phone。按照下面的步骤,你可以轻松的建立你的第一个Adhearsion Application.
Step 1:注册Adhearsion帐号
默认会加入Adhearsion的Mailing List,不算很热闹,偶尔会有一些邮件。Adhearsion帐号同时也是电话系统的测试帐号,有了它你就可以连接到Adhearsion提供的SandBox上了.

Step 2:安装Ruby, RubyGems, Adhearsion
Ruby和Gems的安装就不多说了.安装Adhearsion也就是一句话的事情.感谢伟大的Ubuntu和RubyGems.

sudo gem install adhearsion

Step 3:创建你的第一个Adhearsion应用
类似Rails,Adhearsion会创建一整套基础部件,解决了类似Adhearsion服务器启动,停止等工作,使得你可以专心在Adhearsion应用的开发上.

ahn create my_first_app

Step 4:启用Sandbox Component
Adhearsion中有一个Component的概念.Component类似插件的意思,代表了一组功能的集合.所有的Components都放在my_first_app/components目录下.其中Sandbox就是一个包含了连接注册Adhearsion电话测试系统的Component.

cd my_first_app
ahn enable component sandbox

修改my_first_app/components/sandbox/sandbox.yml,按照你在Ahearsion注册的帐号密码修改该文件,这样你无需编写任何代码就可以连接注册到Adhearsion电话测试系统了.

username: xxxxxxx
password: xxxxxxx

Step 5:编写你的Adhearsion应用
打开my_first_app/dialplan.rb,添加如下代码:

sandbox {
play "hello-world"
}

sandbox代表的是Asterisk中规定的context,Adhearsion测试系统默认的context就是sandbox. play “hello-world”的意思就是播放”hello-world”的音频.简单的就好像说话一样-.-


Step 6:运行你的Adhearsion应用
直接通过ahn命令就可以运行你的adhearsion应用了.由于启用了sandbox component,你的应用会先去连接adhearsion测试系统进行登录注册,然后启动后台进程监听请求.

ahn start .



OK了,这就是Adhearsion全部需要做得了.测试一下吧.选一款你觉得最酷的soft phone,按照Ahdearsion的提示拨打电话,听到一声清脆的”Hello World”,你的Adhearsion蹦出一些log信息.看这就爽,你也快来试试看吧.

 

Asterisk与Call Manager的整合

几个月前就完成了这个工作。可是因为工作的需要,一直重装不同版本的Call Manager,然后再回头配置集成。痛定思痛,决定把过程写下来,自己找起来也方便。

Asterisk上的配置
Step 1 在sip.conf中添加如下配置,简单的说就是添加一个SIP User.

[callman01]
type=friend
context=xiuxiu
host=10.0.0.1
disallow=all
allow=ulaw
allow=alaw
nat=no
canreinvite=yes
qualify=yes


Step 2
在extensions.conf你需要用到Call Manager的Context按照如下方法使用。基本和普通的SIP User都是一样的,就是要对SIP Header稍微做一些处理。

[macro-dialout-callmanager]
exten => s,1,ChanIsAvail(SIP/callman02&SIP/callman01)
exten => s,2,Dial(${CUT(AVAILCHAN||1)}/${ARG1})
exten => s,3,Hangup
exten => s,102,Congestion
[outgoing]
exten => _XXXX,1,Macro(dialout-callmanager,${EXTEN})
exten => _9NXXXXXX,1,Macro(dialout-callmanager,${EXTEN})
exten => _91NXXNXXXXXX,1,Macro(dialout-callmanager,${EXTEN})
exten => i,1,Congestion

Call Manager上的配置
Step 1 配置 SIP Trunk
1)在菜单中选择 Device -> Trunk -> Add New
2)点”Add New”
3)选择Trunk Type: SIP Trunk, Device Protocol: SIP
4)选择Device Pool(默认的就可以), Destination Address: Asterisk服务器的地址

Step 2 修改 SIP Trunk Security Profile (我用的是CUCM 7.1,所以需要这个修改)
1)在菜单中选择System > Security Profile > SIP Trunk Security Profile
2)在列表中选择你之前填写的Security Profile
3)将Outgoing Transport Type修改成UDP

Step 3 配置Route Pattern
1)在菜单中选择Call/Routing -> Route/Hunt -> Route Pattern
2)点Add New
3)Route Pattern: 8XXX, Gateway/Route List: 之前创建的SIP Trunk(按照你的需求设置,例如这里就是8开头的四位电话号码转到Asterisk上)

OK,基本就这些了,用你的X Lite 给Call Manager打个电话吧。

参考地址:Asterisk Cisco CallManager Integration

 

无觅相关文章插件,快速提升流量