Данный пример основан на предыдущем варианте интеграции устройств NetPing с IP АТС Asterisk.
Для поднятия шлагбаума в предложенном примере необходимо позвонить на заранее определенный номер, и, если номер звонящего присутствует в базе разрешенных номеров Asterisk, шлагбаум откроется. Ответа на звонок не происходит. Определение номера звонящего осуществляется средствами оператора, предоставляющего аренду телефонной линии.
Дополнительные преимущества данного примера решения:
- отсутствие в необходимости запоминания добавочного номера для открывания шлагбаума;
- экономия средств звонящего на номер IP АТС Asterisk
Для реализации представленного решения потребуется аналогичное предыдущему примеру оборудование и программное обеспечение:
- UniPing v3 — 1 шт.;
- ПК/сервер с предустановленной АТС Asterisk — 1 шт.;
- Шлагбаум — 1 шт.;
- Аренда телефонного номера с возможностью АОН — 1 шт.
Основным условием является возможность определения номера входящего звонка средствами оператора, предоставляющего в аренду номер телефона. Все дополнительные требования и условия смотрите в предыдущей статье.
Настройка UniPing v3
Настройка устройства UniPing v3 полностью соответствует публикуемому раннее примеру интеграции.
Настройка IP ATC Asterisk
Основные параметры настройки IP ATC Asterisk и конфигурация файла sip.conf аналогичны публикуемому раннее примеру интеграции.
Файл конфигурации extensions.conf для данного примера будет отличаться.
В секции [default] добавьте extension, который будет переводить все входящие звонки на раздел [netping]:
…
[default]
exten => _X.,1,Goto(netping,s,1)
…
В конце файла добавьте сам раздел [netping], в котором будет осуществляться проверка номера звонящего и выполнение команд snmpset:
[netping]
; Предполагается, что номер определяется в формате: +XXXXXXXXXXX.
; Просто убираем первый символ.
; Если в вашем случае по-другому — см. документацию к Asterisk
exten => s,1,Set(CALLERID(all)=${CALLERID(num):1}); Если определенный номер не 7911XXXXXXX — ; — даем отбой (exten => s,1000,Hangup())
exten => s,n,GotoIf($[«${CALLERID(num)}» != «7911XXXXXXX»]?1000); Если все ОК — выполняем snmpset, пауза 5 сек и следующий snmpset
exten => s,n,System(/usr/bin/snmpset -v 1 -c ping28 192.168.0.28 .1.3.6.1.4.1.25728.5800.3.1.3.2 i 1)
exten => s,n,Wait(5)
exten => s,n,System(/usr/bin/snmpset -v 1 -c ping28 192.168.0.28 .1.3.6.1.4.1.25728.5800.3.1.3.2 i 0)
exten => t,n,Hangup()
exten => s,1000,Hangup()
Подробнее формат команды snmpset смотрите в документации к Net-SNMP tools.