FreePBX Asterisk - внедрение SIP системы оповещения CyberData

Администратор, 29.12.2014

1. Качаем CyberData Discover Utility: 

wget http://www.cyberdata.net/support/voip/VoIP_Discovery_Utility.zip

На официальном сайте написано, что работает только под Windows  2000 and XP, проверено, работает и под wine на Ubuntu 12.04

Для использования устанавливаем wine:

sudo aptitude install wine

И запускаем утилиту:

wine VoIP_Discovery_Utility/Voip\ Discovery\ Util.exe

Показать/скрыть детальную информацию о установке

Screenshot from 2014-12-22 12:37:33.png
Далее заходим по ip на интересующий нас девайс, логин/пароль по умолчанию admin/admin.
Идем на вкладку SIP Config и настраиваем девайс на регистрацию на sip-сервере:
CyberData Ceiling Speaker (1).png
Здесь пишем/вставляем блок текста №5

2. Multicast

Для настройки динамика на вещание через мультикаст заходим по ssh на сервер, далее идем в /etc/asterisk и правим файлик: extensions_custom.conf вставляя туда блок...

Показать/скрыть детальную информацию о Multicast

[from-internal-custom] ;кастомные контекст для внутренних устройств

exten => 777,1,Page(MulticastRTP/basic/239.168.3.1:2000,A(tt-monkeys)) ;tt-monkeys ;-файл который вы хотите стримить, должен лежать в дефолтной директории звуков ;asterisk (/var/lib/asterisk/sounds, настроить можно в /etc/asterisk/asterisk.conf)


В настройках самого динамика включаем мультикаст:

CyberData Ceiling Speaker (2).png


3. Paging

В веб-интерфейсе FreePBX заходим в Applications -> Paging and Intercom и видим список кодов пейджинга по умолчанию.

Показать/скрыть детальную информацию о Paging

FreePBX Administration (1).png


Если мы хотим добавить кастомную группу пейджинга (например, если у нас в сети три динамика и мы хотим объединить в группу динамики X и Y, но не Z) то жмем New Paging Group (справа вверху). 


На открывшейся странице заполняем поля:

Paging Extension - номер, по которому у нас будет доступна вызываемая группа

Group Description - описание, опционально.

Device List - перетаскиваем мышкой нужные номера в группу.

Busy Extension - выбираем поведение занятых номеров:

Skip - не звоним на него

Force - принудительно звоним на него

Whisper - “шепнуть”, то есть нас слышит только вызываемый нами номер, но не номер, с которым сейчас идет разговор


FreePBX Administration.png


4. Автопровиженинг

Автонастройка устройств CyberData производится с помощью tftp-сервера.

Устанавливаем tftp-сервер (все настройки были выполнены на Centos 6.5):

yum install -y tftp-server

В папке /etc/xinetd.d редактируем файл tftp, приводя его к виду:

Показать/скрыть детальную информацию о автопровиженинге

# default: off
# description: The tftp server serves files using the trivial file transfer \
#<----->protocol.  The tftp protocol is often used to boot diskless \
#<----->workstations, download configuration files to network-aware printers, \
#<----->and to start the installation process for some operating systems.
service tftp
{
<------>disable>= no
<------>socket_type<---><------>= dgram
<------>protocol<------><------>= udp
<------>wait<--><------><------>= yes
<------>user<--><------><------>= root
<------>server<><------><------>= /usr/sbin/in.tftpd
<------>server_args<---><------>= -p -c -u root -s /tftpboot -v
<------>per_source<----><------>= 11
<------>cps<---><------><------>= 100 2
<------>flags<-><------><------>= IPv4
<------>bind<--><------><------>= 192.168.1.253
}

И создаем папку tftpboot, где будут лежать наши конфиги:

cd /
mkdir tftpboot
chown -R asterisk:asterisk /tftpboot - httpd так же должен запускаться от юзера asterisk

далее создаем конфиг для нашего девайса, ниже листинг моего конфига:

<?xml version="1.0" encoding="utf-8" ?>
<specific>
<!--
    Autoprovisioned values will override values stored in on-board memory and
    will be visible on the webpage. 

    To use autoprovisioning create a copy of this file with the desired
    settings and name this file with the mac address of the device to
    configure (for example: 0020f7350058.config).  Put this file into
    your tftpserver directory and manually set the tftp server address. 

    Alternately you can set your dhcp server to provide the autoprovisioning
    server address in OPTION 150 or 66.  If both settings are set, the
    CyberData device will use OPTION 150.

    On boot the device will download it's autoprovisioning file and configure
    itself with those settings.

    Though every setting that can be changed via autoprovisioning is shown 
    below, it isn't necessary to set every value.  
-->

<MiscSettings>
<DeviceName>CyberData Ceiling Speaker</DeviceName>
</MiscSettings>


<DeviceSettings>
<AdminName>admin</AdminName>
<AdminPassword>admin</AdminPassword>
        <UseDigitalVolume>No</UseDigitalVolume>
<SpeakerVolume>4</SpeakerVolume>
<VolumeBoost>No</VolumeBoost>
<ActivateRelayWithDTMF>Yes</ActivateRelayWithDTMF>
<DTMFActivationCode>321</DTMFActivationCode>
<DTMFActivationDuration>2</DTMFActivationDuration>
<ActivateRelayDuringRing>No</ActivateRelayDuringRing>
<ActivateRelayDuringNightRing>No</ActivateRelayDuringNightRing>
<ActivateRelayDuringCall>No</ActivateRelayDuringCall>
<RelayOnButtonPressTimeout>3</RelayOnButtonPressTimeout>
        <BeepOnInitialization>No</BeepOnInitialization>
<AutoAnswerIncomingCalls>Yes</AutoAnswerIncomingCalls>
<PlayRingbackTone>No</PlayRingbackTone>
        <BeepBeforePage>No</BeepBeforePage>
</DeviceSettings>


<IPSettings>
        <IPAddressMode>DHCP</IPAddressMode>   
<!--        <IPAddressMode>Static</IPAddressMode>   -->
<IPAddress>10.10.10.10</IPAddress>
<SubnetMask>255.0.0.0</SubnetMask>
<Gateway>10.0.0.1</Gateway>
<DNS1>10.0.0.1</DNS1>
<DNS2>10.0.0.1</DNS2>
        <DHCPTimeout>60</DHCPTimeout>
        <VLANID>0</VLANID>
        <VLANPriority>0</VLANPriority>
</IPSettings>


<SIPSettings>
<EnableSIPOperation>Yes</EnableSIPOperation>
<SIPServer>10.0.0.253</SIPServer>
        <BackupSIPServer1></BackupSIPServer1>
        <BackupSIPServer2></BackupSIPServer2>
        <UseCiscoSRST>No</UseCiscoSRST>
<RemoteSIPPort>5060</RemoteSIPPort>
<LocalSIPPort>5060</LocalSIPPort>
<OutboundProxy></OutboundProxy> 
<OutboundProxyPort>0</OutboundProxyPort>
<SIPUserID>199</SIPUserID>
<SIPAuthID>199</SIPAuthID>
<SIPAuthPassword>ext199</SIPAuthPassword>
<SIPRegisterOnBoot>Yes</SIPRegisterOnBoot>
<SIPRegistrationTimeout>360</SIPRegistrationTimeout>
<SIPUnregisterOnBoot>No</SIPUnregisterOnBoot>
        <DisableRportDiscovery>No</DisableRportDiscovery>
        <CallTimeout>0</CallTimeout>
<RTPPort>10500</RTPPort>
</SIPSettings>


<NightringerSettings>
        <EnableNightringer>No</EnableNightringer>
        <NightringerSIPServer>10.0.0.253</NightringerSIPServer>
        <NightringerRemotePort>5060</NightringerRemotePort>
        <NightringerLocalPort>5061</NightringerLocalPort>
        <NightringerOutboundProxy></NightringerOutboundProxy>
        <NightringerOutboundProxyPort></NightringerOutboundProxyPort>
        <NightringerUserID>241</NightringerUserID>
        <NightringerAuthID>241</NightringerAuthID>
        <NightringerAuthPassword>ext241</NightringerAuthPassword>

        <NightringerRegistrationTimeout>360</NightringerRegistrationTimeout>
</NightringerSettings>


<MulticastSettings>
<EnableMulticastOperation>No</EnableMulticastOperation>

<MGROUPAddress9>239.168.3.10</MGROUPAddress9>
<MGROUPPort9>11000</MGROUPPort9>
<MGROUPName9>Emergency</MGROUPName9>
        <MGROUPBuffer9>No</MGROUPBuffer9>
        <MGROUPBeep9>No</MGROUPBeep9>
        <MGROUPRelay9>No</MGROUPRelay9>

<MGROUPAddress8>239.168.3.9</MGROUPAddress8>
<MGROUPPort8>10000</MGROUPPort8>
<MGROUPName8>MG8</MGROUPName8>
        <MGROUPBuffer8>No</MGROUPBuffer8>
        <MGROUPBeep8>No</MGROUPBeep8>
        <MGROUPRelay8>No</MGROUPRelay8>

<MGROUPAddress7>239.168.3.8</MGROUPAddress7>
<MGROUPPort7>9000</MGROUPPort7>
<MGROUPName7>MG7</MGROUPName7>
        <MGROUPBuffer7>No</MGROUPBuffer7>
        <MGROUPBeep7>No</MGROUPBeep7>
        <MGROUPRelay7>No</MGROUPRelay7>

<MGROUPAddress6>239.168.3.7</MGROUPAddress6>
<MGROUPPort6>8000</MGROUPPort6>
<MGROUPName6>MG6</MGROUPName6>
        <MGROUPBuffer6>No</MGROUPBuffer6>
        <MGROUPBeep6>No</MGROUPBeep6>
        <MGROUPRelay6>No</MGROUPRelay6>

<MGROUPAddress5>239.168.3.6</MGROUPAddress5>
<MGROUPPort5>7000</MGROUPPort5>
<MGROUPName5>MG5</MGROUPName5>
        <MGROUPBuffer5>No</MGROUPBuffer5>
        <MGROUPBeep5>No</MGROUPBeep5>
        <MGROUPRelay5>No</MGROUPRelay5>

<MGROUPAddress4>239.168.3.5</MGROUPAddress4>
<MGROUPPort4>6000</MGROUPPort4>
<MGROUPName4>MG4</MGROUPName4>
        <MGROUPBuffer4>No</MGROUPBuffer4>
        <MGROUPBeep4>No</MGROUPBeep4>
        <MGROUPRelay4>No</MGROUPRelay4>

<MGROUPAddress3>239.168.3.4</MGROUPAddress3>
<MGROUPPort3>5000</MGROUPPort3>
<MGROUPName3>MG3</MGROUPName3>
        <MGROUPBuffer3>No</MGROUPBuffer3>
        <MGROUPBeep3>No</MGROUPBeep3>
        <MGROUPRelay3>No</MGROUPRelay3>

<MGROUPAddress2>239.168.3.3</MGROUPAddress2>
<MGROUPPort2>4000</MGROUPPort2>
<MGROUPName2>MG2</MGROUPName2>
        <MGROUPBuffer2>No</MGROUPBuffer2>
        <MGROUPBeep2>No</MGROUPBeep2>
        <MGROUPRelay2>No</MGROUPRelay2>

<MGROUPAddress1>239.168.3.2</MGROUPAddress1>
<MGROUPPort1>3000</MGROUPPort1>
<MGROUPName1>MG1</MGROUPName1>
        <MGROUPBuffer1>No</MGROUPBuffer1>
        <MGROUPBeep1>No</MGROUPBeep1>
        <MGROUPRelay1>No</MGROUPRelay1>

<MGROUPAddress0>239.168.3.1</MGROUPAddress0>
<MGROUPPort0>2000</MGROUPPort0>
<MGROUPName0>Background Music</MGROUPName0>
        <MGROUPBuffer0>No</MGROUPBuffer0>
        <MGROUPBeep0>No</MGROUPBeep0>
        <MGROUPRelay0>No</MGROUPRelay0>
</MulticastSettings>

<AudioSettings>
        <Zero>default</Zero>
        <One>default</One>
        <Two>default</Two>
        <Three>default</Three>
        <Four>default</Four>
        <Five>default</Five>
        <Six>default</Six>
        <Seven>default</Seven>
        <Eight>default</Eight>
        <Nine>default</Nine>
        <Dot>default</Dot>
        <Audiotest>default</Audiotest>
        <Pagetone>default</Pagetone>
        <YourIPAddressIs>default</YourIPAddressIs>
        <RestoringDefault>default</RestoringDefault>
        <Rebooting>default</Rebooting>
        <RingbackTone>default</RingbackTone>
        <RingTone>default</RingTone>
        <DoorSensorTriggered>default</DoorSensorTriggered>
        <NightRing>default</NightRing>
</AudioSettings>

    <ClockSettings> 
        <NTPServer>north-america.pool.ntp.org</NTPServer>
        <NTPTimezone>PST8PDT,M3.2.0/2:00:00,M11.1.0/2:00:01</NTPTimezone>
        <NTPOnBoot>No</NTPOnBoot>
        <NTPAutoupdate>No</NTPAutoupdate>
        <NTPAutoupdateDelay>24</NTPAutoupdateDelay>
        <ClockAmbientLight>Yes</ClockAmbientLight>
        <ClockBrightness>7</ClockBrightness>
        <ClockColonType>On</ClockColonType>
        <ClockTimeFormat>12</ClockTimeFormat>
    </ClockSettings>
   
<EventSettings>
        <EnableEventGeneration>No</EnableEventGeneration>
        <EventServerIP>10.0.0.250</EventServerIP>
        <EventServerPort>8080</EventServerPort>
        <EventServerURL>xmlparse_engine</EventServerURL>

        <EnableButtonEvents>No</EnableButtonEvents>        
        <EnableCallActiveEvents>No</EnableCallActiveEvents>
        <EnableCallTerminatedEvents>No</EnableCallTerminatedEvents>
        <EnableRelayActivatedEvents>No</EnableRelayActivatedEvents>
        <EnableRelayDeactivatedEvents>No</EnableRelayDeactivatedEvents>
        <EnableRingEvents>No</EnableRingEvents>
        <EnableNightRingEvents>No</EnableNightRingEvents>
        <EnableMulticastStartEvents>No</EnableMulticastStartEvents>
        <EnableMulticastStopEvents>No</EnableMulticastStopEvents>
        <EnablePowerOnEvents>No</EnablePowerOnEvents>
        <EnableHeartbeatEvents>No</EnableHeartbeatEvents>
</EventSettings>

<!--
<FirmwareSettings>
<FirmwareVersion>v5.0.5</FirmwareVersion>
<FirmwareFile>505-uImage-ceilingspeaker</FirmwareFile>
<FirmwareServer>10.0.1.3</FirmwareServer>
</FirmwareSettings>
-->

    <DebugSettings>
        <DebugLevel>3</DebugLevel>
        <DisableWatchdogTimer>No</DisableWatchdogTimer>
        <WriteLogfiletoFlash>0</WriteLogfiletoFlash>
    </DebugSettings>


    <!-- Ceiling Speaker Settings -->
    <CirrusSettings>
        <CirrusReg0>0800</CirrusReg0>
        <CirrusReg1>1202</CirrusReg1>
        <CirrusReg2>0104</CirrusReg2>
        <CirrusReg3>0006</CirrusReg3>
        <CirrusReg4>0038</CirrusReg4>
        <CirrusReg5>005A</CirrusReg5>
    </CirrusSettings>

</specific>


Файл автопровиженинга должен быть сохранен в в формате: MacAddress.config. Посмотреть MAC-адрес устройства можно на вкладке Home самого устройства CyberData:
CyberData v3 Paging Server.png

5. Автоматические сообщения по времени

Варианты использования устройств CyberData крайне разнообразны. Мне, например пришло в голову следующее: набираем со своего телефона определенный номер, который содержит такие параметры как, время, в которое нужно позвонить, номер на который нужно позвонить (или группа номеров) и надиктовываем, что именно нужно наговорить. Ниже представлена реализация (скрипты взяты тут: http://opennet.ru/tips/info/2472.shtml).

Что изменено в скриптах: все знаки “|” заменены на “,” ввиду изменений в коде asterisk, изменены пути к звуковым файлам под мое конкретное расположение файлов.

6. Автопровиженинг с помощью модуля EndPoint Manager:

Максимально простой и удобный способ автоматической настройки устройств Cyberdata - настройка с помощью модуля EndPoint Manager.

В веб-интерефейсе системы заходим на вкладку Settings -> Endpoint Manager

Показать/скрыть детальную информацию о автопровиженинге с помощью EndPoint

FreePBX Administration (3).png


В меню справа выбираем “Add Brand”, из появившегося окна выбираем Cyberdata, после этого в разделе Brands у нас появилась Cyberdata. Жмем на наш бренд, нам предлагается создать шаблон (можно оставить настройки по умолчанию, выбрать нужный нам девайс и просто как-то назвать его и сохранить)


Далее подключаем устройства Cyberdata в локальную сеть, в меню справа выбираем Network Scan, забиваем нашу подсеть, находим телефоны и применяем к ним нужные экстеншены


FreePBX Administration (4).png


После этого на вкладке Extension Mapping мы увидим список привязанных экстеншенов

FreePBX Administration (5).png