Как подключить Cisco CP-7962G к FreePBX

Posted by

Телефонный аппарат Cisco 7962GЕсть телефонный аппарат Cisco IP Iphone 7962G и его нужно задействовать, по началу я даже не знал как к нему подступиться, по информации с официального сайта выходило, что он может работать только с приложением от Cisco, но ведь у меня такого нет и как я понял до того момента как я устроился в эту контору этого и не было. Выходом из этой ситуации я получил, что конфигурационные файлы будут забираться с tftpd сервиса развернутого на сервере с ролью Asterisk(), а обработка звонков будет идти через транки настроенные на связь с облачной АТС. Да вот такой наше руководство любит геморрой, а все из-за того, что в этой Манго видите ли красивые отчеты (но не понятные, ограниченные). Ну да ладно, мне важнее чтобы телефонный аппарат работал, т. е. Совершал звонки входящие и исходящие.
Далее я все действия лично проделал и конечно же задокументировал, чтобы понимать если что-то вдруг пойдет не так в работе, да и напоминалка необходима
Устанавливаю Asterisk(FreePBX) на Ubuntu Trusty (см заметку) + настраиваю работу с использованием SCCP протокола (см. заметку) с которым и работают телефоны Cisco. Также на этом Asterisk(FreePBX) будет TFTPD сервис с которого будут подгружаться файлы прошивки и необходимые файлы, в частности для данного телефонного аппарата самая актуальная прошивка: SCCP42.9-4-2SR2-2S.loads на момент написания данной заметки.

и конфигурационный файл: SEPF0292959E7CC.cnf.xml

На заметку: SEPэто приставка, а после идет MAC адрес, посмотреть который можно на задней части аппарата присутствует этикетка с указанием именно Важной информации и ею не стоит пренебрегать.

ekzorchik@srv-phone:~$ nano /tftpboot/SEPF0292959E7CC.cnf.xml

<device>

<deviceProtocol>SCCP</deviceProtocol>

<sshUserId>root</sshUserId>

<sshPassword>cisco</sshPassword>

<devicePool>

<dateTimeSetting>

<dateTemplate>D.M.Y</dateTemplate>

<timeZone>GMT0</timeZone>

</dateTimeSetting>

<callManagerGroup>

<members>

<member priority="0">

<callManager>

<ports>

<ethernetPhonePort>2000</ethernetPhonePort>

</ports>

<processNodeName>192.168.1.122</processNodeName>

</callManager>

</member>

</members>

</callManagerGroup>

</devicePool>

<commonProfile>

<phonePassword>cisco</phonePassword>

<backgroundImageAccess>false</backgroundImageAccess>

<callLogBlfEnabled>0</callLogBlfEnabled>

</commonProfile>

<loadInformation>SCCP42.9-4-2SR2-2S</loadInformation>

<vendorConfig>

<disableSpeaker>false</disableSpeaker>

<disableSpeakerAndHeadset>false</disableSpeakerAndHeadset>

<pcPort>0</pcPort>

<settingsAccess>1</settingsAccess>

<garp>0</garp>

<voiceVlanAccess>0</voiceVlanAccess>

<videoCapability>0</videoCapability>

<autoSelectLineEnable>0</autoSelectLineEnable>

<webAccess>1</webAccess>

<spanToPCPort>1</spanToPCPort>

<loggingDisplay>1</loggingDisplay>

<loadServer></loadServer>

</vendorConfig>

<deviceSecurityMode>1</deviceSecurityMode>

<idleTimeout>0</idleTimeout>

<directoryURL></directoryURL>

<servicesURL></servicesURL>

<idleURL></idleURL>

<messagesURL></messagesURL>

<proxyServerURL></proxyServerURL>

<dscpForSCCPPhoneConfig>96</dscpForSCCPPhoneConfig>

<dscpForSCCPPhoneServices>0</dscpForSCCPPhoneServices>

<dscpForCm2Dvce>96</dscpForCm2Dvce>

<transportLayerProtocol>2</transportLayerProtocol>

<capfAuthMode>0</capfAuthMode>

<capfList>

<capf>

<phonePort>3804</phonePort>

</capf>

</capfList>

<certHash></certHash>

<encrConfig>false</encrConfig>

</device>

На заметку: когда на TFTP лежит несколько прошивок, то на загружаемый телефон загружается так которая подходит, если не указано явно в конфигурационном файле (<loadInformation>SCCP42.9-4-2SR2-2S</loadInformation>)

Далее настраиваю описание для работы данного телефонного аппарата Cisco IP Phone 7962G через протокол SCCP с сервисом АТС (Asterisk + FreePBX)

ekzorchik@srv-phone:~$ sudo nano /etc/asterisk/sccp.conf

[SEPF0292959E7CC]

description = www.ekzorchik.ru

devicetype = 7962

type = device

button = line, 840

deny=0.0.0.0/0.0.0.0 ; Same as general

permit=0.0.0.0/0.0.0.0 ; Same as general

pickupcontext = sccp

tzoffset = +0

transfer = on

trustphoneip = no

directrtp=off

earlyrtp = progress

private = on

mwilamp = on

mwioncall = off

setvar=testvar=value

cfwdall = on
[840]

id = 840

type = line

label = Phone 840

description = Line 840

cid_name = 840

cid_num = 840

echocancel = off

context = from-internal-xfer

incominglimit = 3

transfer = on

vmnum = 600

trnsfvm = 1000

secondary_dialtone_digits = 9

secondary_dialtone_tone = 0x22

musicclass=default

language=ru

echocancel = on

silencesuppression = off

Вот теперь перехожу к настройке через Web-интерфейс FreePBX таких параметров, как Extensions, Trunk, Inbound & Outbound:

http://192.168.1.122/ — FreePBX Administration — user&pass — Extensions — Device: Other (Custom Device) — Submit

  • Extension Name: 840
  • Display Name: 840
  • Outbound CID: 840
  • dial: SCCP/840

После нажимаю Submit — Apply Config

Затем создаю Trunk где описывается что номер 840 подключается к облачной АТС Манго в роли Trunk:

http://192.168.1.122/ — FreePBX Administration — user&pass — Connectivity

Outgoing Settings

Trunk Name: 000840

Outbound CallerID: 000840

Disable Trunk: галочка должна быть снята

Trunk Name: 840-out

PEER Details:

  • username=000840
  • type=peer
  • secret=1234567
  • qualify=yes
  • insecure=invite
  • host=domain.mangosip.ru
  • fromuser=000840
  • fromdomain=domain.mangosip.ru
  • dtmfmode=inband
  • disallow=all
  • allow=alaw
  • accountcode=Mgo

Incoming Settings

USER Context: 840-in

USER Details:

  • type=user
  • secret=1234567
  • qualify=yes
  • host=domain.mangosip.ru
  • dtmfmode=inband
  • dissalow=all
  • context=from-trunk
  • alwaysauthreject=yes
  • allowguest=no
  • allow=alaw
  • accountcode=Mgo

Registration

Register String:

  • 000840:1234567@domain.mangosip.ru/840

После нажимаю Submit Changes — Apply Config

Затем в консоли Asterisk проверяю, что транк зарегистрировался:

ekzorchik@srv-phone:~$ sudo asterisk -rx "sip show registry"

Host dnsmgr Username Refresh State Reg.Time

domain.mangosip.ru:5060 N 000840 105 Registered Sun, 05 Mar 2017 08:18:06

1 SIP registrations.

Да, регистрация SIP транка под номером 840 успешно произведена.

Теперь настраиваю правила обработки входящих и исходящих вызовов.

http://192.168.1.122/ — FreePBX Administration — user&pass — Connectivity — Inbound Routes

  • Description: 840
  • DID Number: _X.
  • CallerID Number: 840
  • Set Destination: Trunks000840(sip)

и нажимаю Submit — Apply Config

http://192.168.1.122/ — FreePBX Administration — user&pass — Connectivity — Outbound Routes

  • Route Name: 000840
  • Route CID: 000840
  • Dial Patterns that will use this Route: ()_|[./840]
  • Trunk Sequence for Matched Routes: 000840

и нажимаю Submit Changes — Apply Config

Чтобы мой телефонный аппарат знал откуда брать файлы прошивки и конфигурационный файл следует на Mikrotik указать опцию в настройках Вашего пула выдачи DHCPадресов, как это сделать см. ниже:

Winbox — ip&mac — user&pass — IP — DHCP-Server — вкладка Options — Add

  • Name: tftp
  • Code: 150
  • Valude: 192.168.1.122

после открываю вкладку Networks, выделяю сеть и левой кнопкой по ней два раза перехожу в ее настройки, где в параметре: DHCP Options: выбираю созданный параметр (именоваться он будет: tftp78) указывающий телефонам Cisco расположение TFTP сервера в сети для их конфигурации.

Чтобы Ваш TFTP сервис стал более разговорчивым советую добавить параметр болтливости:

ekzorchik@srv-phone:~$ sudo nano /etc/default/tftpd-hpa

TFTP_OPTIONS="--secure --create --verbose"

ekzorchik@srv-phone:~$ sudo service tftpd-hpa restart

Таким образом вы сможете видеть, как телефонный аппарат обращается к TFTP сервису.

Теперь действия по полному сбросу всех настроек на телефонном аппарате Cisco IP Phone 7962G

  • 1) Отключаю кабель питания от телефона Cisco IP Phone 7962
  • 2) Подключаю ethernet кабель к телефону Cisco IP Phone 7962

AUX,10/100SW,10/100PC → Вот во второй порт слева и подключаю ethernet кабель

  • 3) Подключаю кабель питания к телефону Cisco IP Phone 7962
  • 4) И выполняю один из вариантов сброса настроек:

Сразу после того как на телефоне погаснут все кнопки после включения, НАЖИМАЕМ «#» и держим пока кнопки находящиеся справа от дисплея не начнут последовательно мигать оранжевым цветом.

Набираем на цифровой клавиатуре комбинацию: 3491672850*# или сброс через код: 123456789*0#

И ждем пока телефон не сбросится (обычно минут 7-10 на это дело уходит)

На заметку: В первый раз у Вас может не получиться пункт 4, но после Вы приноровитесь и все получится. В моем случае пока я не осознал как это делать у меня не получалось, а раза этак с тысячного у меня получилось. Еще что важно сброс не будет выполнен если не в сети отсутствует tftp сервис с которого должны быть подтянуты файлы обновления и конфигурационные файлы.

На заметку: первый раз необычно, что после ввода цифровое комбинации телефон не подает каких-либо признаков жизни, и первая мысль я что-то сделал не так, не получилось, но с данным аппаратом это не так, ожидаем. Это если использовали полный сброс, а при обычном сбросе можно видеть какие файлы закачиваются на телефон. По времени: 7 — 10 минут.

  • 5) Когда телефон произведет сброс всех настроек он по подключенному кабелю ethernet сам с tftp сервера произведет закачку прошивки и необходимые конфигурационные файл, а затем аутентификация на FreePBX
    Также на сервере где развернут FreePBX + tftp можно смотреть логи, (см. выше как включить болтливость сервиса tftpd) как телефонный аппарат Cisco IP Phone 7962 обращается к tftp за файлами прошивки:

ekzorchik@srv-phone:~$ sudo tail -f /var/log/syslog | grep tftp

Mar 5 07:03:36 srv-phone in.tftpd[16450]: RRQ from 192.168.1.199 filename term62.default.loads

Mar 5 07:03:37 srv-phone in.tftpd[16451]: RRQ from 192.168.1.199 filename jar42sccp.9-4-2ES22.sbn

Mar 5 07:03:46 srv-phone in.tftpd[16452]: RRQ from 192.168.1.199 filename cnu42.9-4-2ES22.sbn

Mar 5 07:03:49 srv-phone in.tftpd[16456]: RRQ from 192.168.1.199 filename apps42.9-4-2ES22.sbn

Mar 5 07:04:09 srv-phone in.tftpd[16457]: RRQ from 192.168.1.199 filename dsp42.9-4-2ES22.sbn

Mar 5 07:04:12 srv-phone in.tftpd[16458]: RRQ from 192.168.1.199 filename cvm42sccp.9-4-2ES22.sbn

где 192.168.1.199 → это IP адрес который выдал мой Mikrotik данному телефонному аппарату.

Телефонный аппарта Cisco 7962G успешно загружает с tftpd файлы обновления прошивки и конфигурационные файлыПосле обновления с TFTP сервера, у меня на телефонном аппарате надпись: Registration Rejected: Device Unknown, см. логи:

ekzorchik@srv-phone:~$ sudo tail -f /var/log/asterisk/messages

[Mar 5 07:20:05] NOTICE[16931] sccp_actions.c: SEPEF0292959E7CC: Rejecting device: Device Unknown

Вот в логе после приставки SEP F0292959E7CC, а в файле:

ekzorchik@srv-phone:~$ sudo nano /etc/asterisk/sccp.conf

[SEPEF0292959E7CC]

изменил на [SEPF0292959E7CC]

После не забываем сохранить внесенные изменения.

Также обнаружил, что в /tftpboot отсутствует файла XMLDefault.xml

ekzorchik@srv-phone:~$ nano /tftpboot/XMLDefault.cnf.xml

<Default>

<callManagerGroup>

<members>

<member priority="0">

<callManager>

<ports>

<ethernetPhonePort>2000</ethernetPhonePort>

<mgcpPorts>

<listen>2427</listen>

<keepAlive>2428</keepAlive>

</mgcpPorts>

</ports>

<processNodeName>192.168.1.122</processNodeName>

</callManager>

</member>

</members>

</callManagerGroup>

<authenticationURL></authenticationURL>

<directoryURL></directoryURL>

<idleURL></idleURL>

<informationURL></informationURL>

<messagesURL></messagesURL>

<servicesURL></servicesURL>

</Default>

Также не забываем сохранить внесенные изменения.

Еще раз проверяю MAC адрес моего аппарата, на оборотной строке есть заводская этикетка: MAC: F0292959E7CC

Да нет все верно, и конфигурационный файл правильный.

Изменяю права в каталоге /tftpboot:

ekzorchik@srv-phone:~$ sudo chown nobody:nogroup -R /tftpboot/

и перезапускаю сервис FreePBX:

ekzorchik@srv-phone:~$ sudo amportal restart

И буквально сразу же телефонный аппарат Cisco IP Phone 7962G успешно регистрируется на сервере Asterisk (FreePBX):

Телефонный аппарат успешно загрузился и зарегистрировался на FreePBXПосле проверил, что звонки внутри сети проходят, слышимость отличная, и прием происходит без каких-либо происшествий.

Вот собственно и всё действия которые нужно сделать, чтобы заставить работать данный телефонный аппарат Cisco IP Phone 7962G в схеме:

Аппарат ←ethernet→ Mikrotik ←ethernet→ Asterisk(FreePBX)+TFTPD ←ethernet→ Облачная АТС от Манго (будь оно не ладно).

Мое руководство уже понимает, что сервис вынесенный в облако это зло с которым сложно жить, спрашивать то с не кого, анализировать проблемы не возможно, да и привязка к тому оборудованию которое поддерживает облачная АТС.

Ну ладно, с этим мы еще пободаемся и все же уйдем на свою АТС, благо у меня есть опыт, а если я что-то не знаю, что разберусь, я же системный администратор по другому и быть не может. На этом всё, с уважением автор блога Олло Александр aka ekzorchik.