При передирании, ссылка на itgalaxy.net обязательна

Всем, кому хотя бы 1 раз приходилось держать телефон Cisco в руках, знают, что он работает на проприетарном протоколе CiscoSkinny Client Control Protocol (SCCP). Поэтому для того, чтобы подружить Cisco например с Asterisk, необходимо установить и сконфигурировать модуль SCCP на Asterisk. Скажу сразу, такое решение мне не встречалось ни разу. Это просто нецелесообразно если в сети есть другие VoIP клиенты работающие на SIP. Гораздо более практичное решение здесь – прошивка телефона Cisco на SIP.

Процедуру прошивки телефона Cisco 7911 я и опишу далее…

 

Нам понадобиться:

  1. DHCP сервер
  2. TFTP сервер (я рекомендую TFTPd32)
  3. Прошивка для Cisco 7911. Мне удалось достать 8.5.3
  4. Файл настроек телефона: SEP<MAC адрес телефона>.cnf.xml или XMLDefault.cnf.xml

 

Для прошивки телефона Cisco обязательно наличие DHCP а также TFTP серверов. DHCP, кроме предоставления IP, также сообщает циске IP адрес TFTP сервера на котором находяться файлы прошивки. IP адрес TFTP сервера передается в опции 150.

Настраиваем DHCP сервер:

  • Встроенный DHCP TFTPd32

В этом случае я рекомендую подключать компьютер с TFTP сервером и телефон через общий свитч. Убедитесь, что в сети нет других DHCP серверов иначе рискуете уложить всю сеть и получить по шее от начальника :)

Настройка TFTPd32:

Кнопка «Settings» —>

Отмечаем галочкой DHCP Server, указываем путь к папке, которая будет служить корневой папкой TFTP сервера (Current Directory в главном окне программы). Base Directory та же, что и Current Directory. «Server Interface» – IP адрес  TFTPd32 сервера (он может не соответствовать IP адресу сетевой платы). Все остальные настройки – как на скриншоте.

и DHCP :

  • DHCP  сервер Windows Server 2008

Лично я проводил все операции в корпоративной сети и использование DHCP сервера TFTPd32 доставляло мне некоторые неудобства т.к. необходимо было отключать комп от общей сети (лишая себя экстренной интернет-помощи если что-то пойдет не так). Поэтому я решил настроить корпоративный DHCP сервер на раздачу опции 150.

По умолчанию, в DHCP Windows Server нет опции 150. Ее необходимо создать ручками.

Открываем оснастку DHCP, ПКМ на IPv4 (в моем случае) –> Set predefined options:

Далее «Add» и как на скриншоте справа:

Теперь находим наш телефон в списке устройств по MAC адресу и резервируем IP.

Применяем к нему опцию 150.

Подготовка необходимых файлов

Самое главное здесь – правильно настроить файл конфигурации SEP<MAC адрес телефона>.cnf.xml. Ниже я привожу пример своего рабочего конфигурационного файла для Cisco 7911.



Show »

<?xml version="1.0" encoding="UTF-8"?>
<device xsi:type="axl:XIPPhone" ctiid="94"> 

<fullConfig>true</fullConfig>
<deviceProtocol>SIP</deviceProtocol>
<sshUserId>root</sshUserId>
<sshPassword>SSH_Password_here</sshPassword>

<devicePool>
<dateTimeSetting>
<dateTemplate>Y-M-D</dateTemplate>
<timeZone>Russian Standard/Daylight Time</timeZone>
</dateTimeSetting>

<callManagerGroup>
<members> <member priority="0"> <callManager>
<name>Asterisk_IP</name>
<ports>
<ethernetPhonePort>2000</ethernetPhonePort>
<sipPort>5060</sipPort>
<securedSipPort>5061</securedSipPort>
</ports>
<processNodeName>Asterisk_IP</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></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>Miratech</phoneLabel>
<stutterMsgWaiting>2</stutterMsgWaiting>
<callStats>false</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>Asterisk_IP</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>true</callerNumber>
<redirectedNumber>false</redirectedNumber>
<dialedNumber>true</dialedNumber>
</forwardCallInfoDisplay>
<!-- ***************************** -->
<featureLabel></featureLabel>
<displayName>будет отображаться в правом верхнем углу</displayName>
<name>абон. номер</name>
<authName>логин на астериске</authName>
<authPassword>пароль</authPassword>
</line>
</sipLines>
<externalNumberMask>$num</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>файл с именами файлов прошивки, например SIP11.8-5-3S</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>Asterisk_IP</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>Asterisk_IP</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>1143565489-a3cbf294-7526-4c29-8791-c4fce4ce4c37</versionStamp>

<userLocale>
<name></name>
<langCode></langCode>
<version></version>
<winCharSet></winCharSet>
</userLocale>

<networkLocale></networkLocale>
<networkLocaleInfo>
<name></name>
<version></version>
</networkLocaleInfo>

<deviceSecurityMode>1</deviceSecurityMode>
<idleTimeout>0</idleTimeout>
<authenticationURL>http://Asterisk_IP/ccmcip/authenticate.jsp</authenticationURL>
<directoryURL>http://Asterisk_IP/ccmcip/xmldirectory.jsp</directoryURL>
<idleURL></idleURL>
<informationURL>http://Asterisk_IP/ccmcip/GetTelecasterHelpText.jsp</informationURL>
<messagesURL></messagesURL>
<proxyServerURL></proxyServerURL>
<servicesURL>http://Asterisk_IP/ccmcip/getservicesmenu.jsp</servicesURL>
<dscpForSCCPPhoneConfig>96</dscpForSCCPPhoneConfig>
<dscpForSCCPPhoneServices>0</dscpForSCCPPhoneServices>
<dscpForCm2Dvce>96</dscpForCm2Dvce>
<transportLayerProtocol>2</transportLayerProtocol>
<singleButtonBarge>0</singleButtonBarge>

<capfAuthMode>0</capfAuthMode>
<capfList> <capf>
<phonePort>3804</phonePort>
<!-- <processNodeName>Asterisk_IP</processNodeName> -->
</capf> </capfList>

<certHash></certHash>
<encrConfig>false</encrConfig>
<advertiseG722Codec>1</advertiseG722Codec>

</device>