25 March 2012

Asterisk + FreePBX + 7937G

Development of communication systems
Всем привет!

На днях пришлось очень быстро решить задачу дружбы Asterisk + FreePBX + Cisco 7937G.

Думаю, не все сразу вспомнят, что такое 7937G, напомню — это конференц-станция от Cisco.

image

У нее есть 2 «маленькие особенности»:
  • Работает только с SCCP
  • Питание через PoE




Сразу оговорюсь, приведенный ниже пример делался на CentOS 5.8 (i386).

Приступим к настройке:

tftp (оционально, если не установлен)

yum install tftp-server.i386
chkconfig  xinetd on
chmod  777  /tftpboot
service xinetd start


В диерктории /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></processNodeName>
           </callManager>
        </member>
     </members>
  </callManagerGroup>
<loadInformation431 model="Cisco Phone 7937">apps37sccp.1-4-1-0</loadInformation431>
  <authenticationURL></authenticationURL>
  <directoryURL></directoryURL>
  <idleURL></idleURL>
  <informationURL></informationURL>
  <messagesURL></messagesURL>
  <servicesURL></servicesURL>
</Default>


Здесь, очень важно указать правильную версию ПО железки, в моем случае apps37sccp.1-4-1-0. Посмотреть версию ПО можно, зайдя на 7937G через web.

Asterisk

По умолчанию поддержки SCCP в Asterisk нет (поддреживается chan_skinny, но очень хотелось сделать именно на SCCP), его лучше собрать, не стравить через RPM:

wget http://downloads.sourceforge.net/project/chan-sccp-b/V3/Chan_SCCP-3.1.2_STABLE.tar.gz
tar zxf Chan_SCCP-3.1.2_STABLE.tar.gz 
cd Chan_SCCP-3.1.2_STABLE/
make clean
./configure
make && make install

Включим загрузку chan_sccp.so при загрузке Asterisk:
nano /etc/asterisk/modules.conf

Добавляем строки:

noload => chan_skinny.so
load => chan_sccp.so
load => res_features.so


После этого конфигурируем sccp.conf в /etc/asterisk (я сделал минимальную конфигу, оставив все необходимое):


;=========================================================================================
;
; general definitions
;
;=========================================================================================
[general]
servername = MyOfficePBX
keepalive = 60
debug = 0
context = from-internal-xfer
dateformat = D.M.Y
bindaddr = 0.0.0.0
port = 2000
disallow=all
allow=alaw
allow=ulaw
allow=g729
firstdigittimeout = 16
digittimeout = 8
autoanswer_ring_time = 1
autoanswer_tone = 0x32
remotehangup_tone = 0x32
transfer_tone = 0
callwaiting_tone = 0x2d
musicclass=default
language=en
deny=0.0.0.0/0.0.0.0
permit=10.10.1.0/255.255.255.0
dnd = on
sccp_tos = 0x68
sccp_cos = 4
audio_tos = 0xB8
audio_cos = 6
video_tos = 0x88
video_cos = 5
echocancel = on
silencesuppression = off
trustphoneip = no
private = on
callanswerorder=oldestfirst
protocolversion=17

hotline_enabled=yes					;can devices without configuration register
hotline_context=from-internal-xfer				; context for hotline
hotline_extension=11111					; extension will be dialed on offHook

;=========================================================================================
;
; actual definitions
;
;=========================================================================================

[SEPXXXXXXXXXXXX] ; MAC of 7937G
description = Conference Room
devicetype = 7937
type = device
button = line, 200
deny=0.0.0.0/0.0.0.0                                    ; Same as general
permit=10.10.1.0/255.255.255.0                   ; Same as general
imageversion = apps37sccp.1-4-1-0
pickupcontext = from-internal-xfer
tzoffset = +0
transfer = on
trustphoneip = no
directrtp=off
earlyrtp = progress
private = on
mwilamp = on
mwioncall = off
setvar=testvar=value
cfwdall = on
imageversion = apps37sccp.1-4-1-0


[310]
id = 1001
type = line
label = Phone 200
description = Line 200
cid_name = CONFROOM
cid_num = 200
echocancel = off
context = from-internal-xfer
transfer = on
vmnum = 600
trnsfvm = 1000
secondary_dialtone_digits = 9
secondary_dialtone_tone = 0x22
musicclass=default
language=en
echocancel = on
silencesuppression = off



Приведу сильно сокращенное описание: заданы 3 секции [general] — глобальная конфигурация драйвера канала, [SEPXXXXXXXXXXXX] — конфигурация железки, [310] — конфигурация линии. Обращу внимение, что SEPXXXXXXXXXXXX тоже легко доступно через web 7937.

Очень желательно, после создания конфигурации перезагрузить ядро asterisk (core restart now).

После этого можно запросить:


pbx*CLI> sccp show version 
Skinny Client Control Protocol (SCCP). Release: 3.1.2 STABLE 

pbx*CLI> sccp show devices 

NAME                                     ADDRESS                    MAC              Reg. State Reg. Time           
======================================== ========================== ================ ========== =========================
Conference Room                      --                  :0      SEPXXXXXXXXXXXX  None       Sat Mar 24 17:29:55 2012 



FreePBX

Для полноценной интеграцие с 7937G с FreePBX необходимо создать (прописать) в FreePBX, то что мы определили в конфигах.

Создаем новый экстеншен: Extensions-> Other (custom) device:
User Extension: 200
Display Name: Conference Room
SIP Alias: 200
dial: SCCP/200
(приведен минимальный и достаточный набор полей к запонению)

Cisco 7379G

Здесь все уже совсем просто, необходимо «с кнопок» выставить настройки сети (IP адрес, маску, шлюз) и IP адрес tftp сервера. Оговорюсь, изменение настроек заблокировано (там замочек закрытый нарсован) и перед началом конфигуграции необходимо ввести **# для разблокировки.

Собственно и все!

Ссылки:

Asterisk
FreePPX
Cisco 7937G

PS: По традиции: это мой первый пост, не бейте сильно )))
Tags:asterisk7937G
Hubs: Development of communication systems
+20
20.1k 69
Comments 17
Infrastructure Automation Engineer
from 150,000 to 350,000 ₽Rubrain.comRemote job
Wireless Systems Engineer
from 100,000 to 200,000 ₽ON SemiconductorСанкт-Петербург
Engineering Manager
from 2,500 to 4,000 $LuxandRemote job
Director of Engineering
from 260,000 ₽Spark EquationСанкт-ПетербургRemote job
Senior Full Stack Developer (Laravel + Vue.js) (Remote)
from 227,600 to 273,900 ₽HicaliberRemote job