測試:Cisco Unified 3951 SIP Phone 和 Asterisk 1.6.x 的結合
Cisco Unified 3951 SIP Phone (http://www.cisco.com/web/CN/products/products_netsol/voices/products/3951/index.html) 是一只平價(以 Cisco 的牌子,500 - 600 元的確超值,但只限在中國國內銷售,而香港沒有得賣,可惜),而支持 SIP Protocol (RFC 3261, 3311, 3264 SDP, 3515 SIP Resister/Redirect Service)的 Hard Phone。因為她是以 Standard SIP Protocol 為基礎,所以搭配 Asterisk IP PABX 應該沒有問題。剛剛今年新年過後,有一位朋友找我幫手,拜託我幫忙測試 Cisco 3951 如何怎樣連接 Asterisk。測試結果是成功的。
注意,這是一個測試性質,如果要 Production 的話,發生問題的後果請自行負責。
其實設定方式和在 voip-info.org所看到關於 Cisco 7960 的方式是一模一樣。 首先要預備 3951 的 Firmware,設定 TFTP Server 在 Asterisk 中,而要注意是所有 configuration files 已經用了 XML 格式。3951 的Firmware 是需要經由 Cisco 的web site 下載 ,你需要一個 authorized account 才可以得到這 Firmware。
1, 下載後,解壓後你會得到以下的檔案(version number 可能會不一樣):
BOOT3951.0-0-0-9.zz
DSP3951.0-0-0-2.zz
SIP3951.8-1-2-11.zz
SIP3951.8-1-3.loads
把這些檔案存放到 tftpboot 中。
2, 設定 XMLDefault.cnf.xml。注意,processNodeName 是 Asterisk 的 IP Address。
<Default>
<callManagerGroup>
<members>
<member priority=”0″>
<callManager>
<ports>
<ethernetPhonePort>2000</ethernetPhonePort>
</ports>
<processNodeName>128.128.0.254</processNodeName>
</callManager>
</member>
</members>
</callManagerGroup>
<loadInformation1 model=”Cisco 3951″>SIP3951.8-1-3</loadInformation1>
</Default>
3, 設定 SEPXXXXXXX.cnf.xml。那些 XXXXXXX 是某一個 Cisco IP Phone 的 MAC Address。例如我的 3951 的 MAC Address 是:000B9BFFE659,那麼這個檔案的名字是:SEP000B9BFFE659.cnf.xml。注意,Call Manager IP Address 是 Asterisk 的 IP Address。即是,如果你有三台Cisco IP Phone,你需要預備三個 SEP XML。如此類推。
<?xml version=”1.0″ encoding=”UTF-8″?>
<device xsi:type=”axl:XIPPhone” ctiid=”94″>
<fullConfig>true</fullConfig>
<deviceProtocol>SIP</deviceProtocol>
<sshUserId>admin</sshUserId>
<sshPassword>cisco</sshPassword>
<devicePool>
<dateTimeSetting>
<dateTemplate>Y-M-D</dateTemplate>
<timeZone>Eastern Standard/Daylight Time</timeZone>
<ntps>
<ntp>
<name>stdtime.gov.hk</name>
<ntpMode>Unicast</ntpMode>
</ntp>
</ntps>
</dateTimeSetting>
<callManagerGroup>
<members> <member priority=”0″> <callManager>
<name>128.128.0.254</name>
<ports>
<ethernetPhonePort>2000</ethernetPhonePort>
<sipPort>5060</sipPort>
<securedSipPort>5061</securedSipPort>
</ports>
<processNodeName>128.128.0.254</processNodeName>
</callManager> </member> </members>
</callManagerGroup>
<srstInfo>
<srstOption>Disable</srstOption>
<ipAddr1></ipAddr1> <port1>2000</port1>
<ipAddr2></ipAddr2> <port2>2000</port2>
<ipAddr3></ipAddr3> <port3>2000</port3>
<sipIpAddr1>128.128.0.254</sipIpAddr1> <sipPort1>5060</sipPort1>
<sipIpAddr2></sipIpAddr2> <sipPort2>5060</sipPort2>
<sipIpAddr3></sipIpAddr3> <sipPort3>5060</sipPort3>
<isSecure>false</isSecure>
</srstInfo>
<connectionMonitorDuration>120</connectionMonitorDuration>
</devicePool>
<sipProfile>
<sipProxies>
<backupProxy></backupProxy> <backupProxyPort></backupProxyPort>
<emergencyProxy></emergencyProxy> <emergencyProxyPort></emergencyProxyPort>
<outboundProxy></outboundProxy> <outboundProxyPort></outboundProxyPort>
<registerWithProxy>true</registerWithProxy>
</sipProxies>
<sipCallFeatures>
<cnfJoinEnabled>true</cnfJoinEnabled>
<callForwardURI>x-cisco-serviceuri-cfwdall</callForwardURI>
<callPickupURI>x-cisco-serviceuri-pickup</callPickupURI>
<callPickupListURI>x-cisco-serviceuri-opickup</callPickupListURI>
<callPickupGroupURI>x-cisco-serviceuri-gpickup</callPickupGroupURI>
<meetMeServiceURI>x-cisco-serviceuri-meetme</meetMeServiceURI>
<abbreviatedDialURI>x-cisco-serviceuri-abbrdial</abbreviatedDialURI>
<rfc2543Hold>false</rfc2543Hold>
<callHoldRingback>2</callHoldRingback>
<localCfwdEnable>true</localCfwdEnable>
<semiAttendedTransfer>true</semiAttendedTransfer>
<anonymousCallBlock>2</anonymousCallBlock>
<callerIdBlocking>2</callerIdBlocking>
<dndControl>0</dndControl>
<remoteCcEnable>true</remoteCcEnable>
<retainForwardInformation>false</retainForwardInformation>
</sipCallFeatures>
<sipStack>
<sipInviteRetx>6</sipInviteRetx>
<sipRetx>10</sipRetx>
<timerInviteExpires>180</timerInviteExpires>
<timerRegisterExpires>3600</timerRegisterExpires>
<timerRegisterDelta>5</timerRegisterDelta>
<timerKeepAliveExpires>120</timerKeepAliveExpires>
<timerSubscribeExpires>120</timerSubscribeExpires>
<timerSubscribeDelta>5</timerSubscribeDelta>
<timerT1>500</timerT1>
<timerT2>4000</timerT2>
<maxRedirects>70</maxRedirects>
<remotePartyID>true</remotePartyID>
<userInfo>None</userInfo>
</sipStack>
<autoAnswerTimer>1</autoAnswerTimer>
<autoAnswerAltBehavior>false</autoAnswerAltBehavior>
<autoAnswerOverride>true</autoAnswerOverride>
<transferOnhookEnabled>false</transferOnhookEnabled>
<enableVad>false</enableVad>
<preferredCodec>none</preferredCodec>
<dtmfAvtPayload>101</dtmfAvtPayload>
<dtmfDbLevel>3</dtmfDbLevel>
<!– ??? –>
<dtmfOutofBand>avt</dtmfOutofBand>
<kpml>3</kpml>
<alwaysUsePrimeLine>false</alwaysUsePrimeLine>
<alwaysUsePrimeLineVoiceMail>false</alwaysUsePrimeLineVoiceMail>
<phoneLabel></phoneLabel>
<stutterMsgWaiting>2</stutterMsgWaiting>
<callStats>true</callStats>
<offhookToFirstDigitTimer>15000</offhookToFirstDigitTimer>
<silentPeriodBetweenCallWaitingBursts>10</silentPeriodBetweenCallWaitingBursts>
<disableLocalSpeedDialConfig>true</disableLocalSpeedDialConfig>
<poundEndOfDial>false</poundEndOfDial>
<startMediaPort>16384</startMediaPort>
<stopMediaPort>32766</stopMediaPort>
<sipLines>
<line button=”1″ lineIndex=”1″>
<featureID>9</featureID>
<proxy>128.128.0.254</proxy>
<port>5060</port>
<autoAnswer> <autoAnswerEnabled>2</autoAnswerEnabled> </autoAnswer>
<callWaiting>3</callWaiting>
<sharedLine>false</sharedLine>
<messageWaitingLampPolicy>3</messageWaitingLampPolicy>
<messagesNumber></messagesNumber>
<ringSettingIdle>4</ringSettingIdle>
<ringSettingActive>5</ringSettingActive>
<forwardCallInfoDisplay>
<callerName>true</callerName>
<callerNumber>false</callerNumber>
<redirectedNumber>false</redirectedNumber>
<dialedNumber>true</dialedNumber>
</forwardCallInfoDisplay>
<!– ***************************** –>
<featureLabel>Feature</featureLabel>
<displayName>Dennis</displayName>
<name>111</name>
<authName>111</authName>
<authPassword>111</authPassword>
</line>
</sipLines>
<externalNumberMask>000</externalNumberMask>
<!– ***************************** –>
<voipControlPort>5060</voipControlPort>
<dscpForAudio>184</dscpForAudio>
<ringSettingBusyStationPolicy>0</ringSettingBusyStationPolicy>
<dialTemplate>dialplan.xml</dialTemplate>
</sipProfile>
<commonProfile>
<phonePassword></phonePassword>
<backgroundImageAccess>true</backgroundImageAccess>
<callLogBlfEnabled>2</callLogBlfEnabled>
</commonProfile>
<loadInformation>SIP3951-8-1-3</loadInformation>
<vendorConfig>
<disableSpeaker>false</disableSpeaker>
<disableSpeakerAndHeadset>false</disableSpeakerAndHeadset>
<forwardingDelay>1</forwardingDelay>
<pcPort>0</pcPort>
<settingsAccess>1</settingsAccess>
<garp>0</garp>
<voiceVlanAccess>0</voiceVlanAccess>
<videoCapability>0</videoCapability>
<autoSelectLineEnable>1</autoSelectLineEnable>
<webAccess>0</webAccess>
<daysDisplayNotActive>1,7</daysDisplayNotActive>
<displayOnTime>09:00</displayOnTime>
<displayOnDuration>12:00</displayOnDuration>
<displayIdleTimeout>01:00</displayIdleTimeout>
<spanToPCPort>1</spanToPCPort>
<loggingDisplay>2</loggingDisplay>
<loadServer>128.128.0.254</loadServer>
<recordingTone>0</recordingTone>
<recordingToneLocalVolume>100</recordingToneLocalVolume>
<recordingToneRemoteVolume>50</recordingToneRemoteVolume>
<recordingToneDuration></recordingToneDuration>
<displayOnWhenIncomingCall>0</displayOnWhenIncomingCall>
<rtcp>0</rtcp>
<moreKeyReversionTimer>5</moreKeyReversionTimer>
<autoCallSelect>1</autoCallSelect>
<logServer>128.128.0.254</logServer>
<g722CodecSupport>0</g722CodecSupport>
<headsetWidebandUIControl>0</headsetWidebandUIControl>
<handsetWidebandUIControl>0</handsetWidebandUIControl>
<headsetWidebandEnable>0</headsetWidebandEnable>
<handsetWidebandEnable>0</handsetWidebandEnable>
<peerFirmwareSharing>0</peerFirmwareSharing>
<enableCdpSwPort>1</enableCdpSwPort>
<enableCdpPcPort>1</enableCdpPcPort>
</vendorConfig>
<versionStamp>1200501729-ee9247c4-1a10-481c-8fdc-612737c5aadd</versionStamp>
<userLocale>
<name>English_United_States</name>
<langCode>en_US</langCode>
<version></version>
<winCharSet>utf-8</winCharSet>
</userLocale>
<networkLocale>United_States</networkLocale>
<networkLocaleInfo>
<name>United_States</name>
<version></version>
</networkLocaleInfo>
<deviceSecurityMode>1</deviceSecurityMode>
<idleTimeout>0</idleTimeout>
<authenticationURL>http://128.128.0.254/ccmcip/authenticate.jsp</authenticationURL>
<directoryURL>http://128.128.0.254/ccmcip/xmldirectory.jsp</directoryURL>
<idleURL></idleURL>
<informationURL>http://128.128.0.254/ccmcip/GetTelecasterHelpText.jsp</informationURL>
<messagesURL></messagesURL>
<proxyServerURL></proxyServerURL>
<servicesURL>http://128.128.0.254/ccmcip/getservicesmenu.jsp</servicesURL>
<dscpForSCCPPhoneConfig>96</dscpForSCCPPhoneConfig>
<dscpForSCCPPhoneServices>0</dscpForSCCPPhoneServices>
<dscpForCm2Dvce>96</dscpForCm2Dvce>
<transportLayerProtocol>4</transportLayerProtocol>
<singleButtonBarge>0</singleButtonBarge>
<capfAuthMode>0</capfAuthMode>
<capfList> <capf>
<phonePort>3804</phonePort>
<processNodeName>128.128.0.254</processNodeName>
</capf> </capfList>
<certHash></certHash>
<encrConfig>false</encrConfig>
<advertiseG722Codec>1</advertiseG722Codec>
</device>
設定 Dialplan.xml
<DIALTEMPLATE>
<TEMPLATE MATCH=”*” Timeout=”15″/>
<DIALTEMPLATE>
把這些 XML 檔案放在 tftpboot 內。然後設定 3951 的 Call Manager IP為 Asterisk 的 IP Address。
我的 Asterisk 的SIP.conf 如下:
;Cisco
[111]
type=friend
context=inbound
secret=111
;allow=g729
host=dynamic
canreinvite=no
defaultip=128.128.0.249
Posted: 九月 1st, 2009 under 系統設定, 開發.
Tags: Asterisk, Cisco
Comments
Comment from Frank Yau
Time 2009 年 12 月 22 日 at 04:19:54
Do you have voice from both sides?
Comment from Frank Yau
Time 2009 年 12 月 24 日 at 22:01:52
If I can get one, can you help to set it up with a fee?
Comment from wudennis
Time 2009 年 12 月 25 日 at 22:39:34
It’s not a matter of fee. Do u have a license of Cisco 3951 firmware? If not, we cannot to help you to setup it.
Comment from Frank Yau
Time 2009 年 12 月 28 日 at 16:36:12
Yes, I do. How to start? Thx in advance.
Comment from Frank Yau
Time 2009 年 12 月 31 日 at 16:12:13
Hi,
How to contact you ?
Comment from wudennis
Time 2010 年 01 月 04 日 at 09:06:50
Please send email to us for discussion. Thanks.
Comment from Randy To
Time 2009 年 10 月 14 日 at 00:36:41
I can’t login Asterisk server when use 8.1(4a), can you help me. Thanks!