Asterisk + FreePBX + 7937G

    Всем привет!

    На днях пришлось очень быстро решить задачу дружбы 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: По традиции: это мой первый пост, не бейте сильно )))
    Поделиться публикацией

    Комментарии 17

      0
      Подскажите пожалуйста, дополнительные микрофоны (те что сбоку от телефона на фотографии) идут в стандартной комплектации к Cisco 7379G?
        0
        Насколько я помню, нет. Мы дополнительный кит покупали. Кстати, в приведенной конфиге описан только один аппарат, два делаются по аналогии.
          0
          абсолютно точно — нет. Нужно покупать CP-7937-MIC-KIT. $350 GPL
          Также, если нет PoE или он недостаточно хорош, проще поставить стандартный блок питания — PWR-CUBE-3 + CP-7937-PWR-SPL (фактически power injector)

          0
          Если у вас есть tftp сервер, то, наверное, и dhcp-сервер есть и им можно выдавать на девайс настройки tftp, настройки sntp и адреса-маски-шлюзы. Тогда ваш цискофон еще и время правильное будет показывать. Можно, в крайнем случае сервер времени задавать в xml-конфиге параметром sntp_server.
            0
            По DHCP почти согласен: эти настройки надо будет либо всем отдавать, либо отдельно донастраивать DHCP. Мне показалось проще зафиксировать.
            По времени: там есть строчка tzoffset = +0 в настройке железки, которая говорит о времени со смещением относительно сервера Asterisk — проверено, работает ))
              0
              dhcp можно достаточно гибко настроить и не отдавать всем лишнего, ну а option ntp-servers всем и не помешает, если чо.

              То есть на сервере с астериском у вас синхронизированное время и циска на основании tzoffset тоже синхронизируется? Хм…
                0
                Конечно можно, как я написал сначала, нужно было сделать быстро.

                Сервер по ntp имеет правильное время и отдает его циске (ам). Ну и в cdr то же самое время пишет.

                Кстати, вычитал, что 7937 совсем не обязательно иметь на tftp собственный cnf.xml, тогда он все с сервака «утягивает». Честно говоря, мне так больше нравится.
            0
            Ребят, а как ВЫ называете эту железяку?

            Лягушка, спайдер…
              0
              Черепаха
                0
                Я его крабом зову
                0
                Проверьте стабильность работы этой связки. Раньше были проблемы, когда с большой скоростью набираешь цифры, вываливался chan_sccp и уносил за собой весь Asterisk.
                  0
                  Спасибо, учту. Пока полет нормальный.
                  +3
                  Задолбала цысочка со сраным SCCP.
                    0
                    А можно в статье привести аргументы, почему не использовать chan_skinny?
                      0
                      >>Посмотреть версию ПО можно, зайдя на 7937G через web.

                      подскажите в каком именно разделе можно посмотреть это?
                        0
                        Device Information. Там интересны MAC Address, Host Name (по умолчанию, тоже что и MAC, только с приставкой SEP...), App Load ID (в моем случае apps37sccp.1-4-1-0, см XML конфиг)
                          0
                          спасибо, всё заработало
                          телефон 7925g

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

                      Самое читаемое