четверг, 22 декабря 2016 г.

Asterisk (FreePBX Elastix) некорректный "Канал источник" (Src/Source Channel) в таблице.CDR

Когда к Asterisk подключается два и более транка с одного IP адреса.
При входящих звонках "Канал источник" (Src/Source Channel) отображается первый SIP-транк по списку в конфигурации для IP адреса сервера оператора, такая логика была заложена разработчиками системы.

Решение данной проблемы было реализовано в Asterisk 11 версии.

Из описание к новой версии:

"Asterisk 11: Add support to realtime for the ‘callbackextension’ option. When multiple peers exist with the same address, but differing callbackextension options, incoming requests that are matched by address will be matched to the peer with the matching callbackextension if it is available."

Для правильной работы в настройках транка FreePBX или Elastix необходимо убрать строку Register String и в PEER Details добавить параметр:

callbackextension=<DID-номер, который был в Register String>

*Соответственно следует обратить внимание на параметр insecure:

insecure=port ; Разрешить проверку соответствия транка (peer) по ip-адресу, номер порта игнорируется
insecure=invite ; Отключить аутентификацию входящих сообщений INVITE
insecure=port,invite ; (оба условия)

вторник, 20 декабря 2016 г.

Посмотреть все модели телефонов подключенные к серверу Asterisk.

В некоторых случаях может возникнуть необходимость собрать информацию о устройствах, которые подключены к серверу Asterisk. Например, нужно получить список зарегистрированных устройств, их модели, IP-адреса и другую информацию, связанную с конфигурацией SIP-устройств. В этой статье приведены несколько команд, которые помогут вам эффективно собрать такую информацию.

1. Получение списка моделей всех зарегистрированных аппаратов

Для того чтобы увидеть модели всех зарегистрированных SIP-устройств на сервере Asterisk, можно использовать следующую команду:


for a in `asterisk -rx "sip show peers" | grep "OK" | cut -f1 -d/` ; do asterisk -rx "sip show peer $a"; done | grep Useragent
Разбор команды:
  • asterisk -rx "sip show peers" — эта команда выводит информацию о всех зарегистрированных SIP-устройствах.
  • grep "OK" — фильтрует вывод, оставляя только те устройства, которые успешно зарегистрированы.
  • cut -f1 -d/ — извлекает имя устройства, разделяя строку по символу /.
  • asterisk -rx "sip show peer $a" — выполняет запрос для каждого устройства, получая его подробную информацию.
  • grep Useragent — фильтрует вывод, показывая только строку с информацией о модели устройства (параметр Useragent).

Таким образом, команда вернет список всех устройств, зарегистрированных на сервере, с их моделями, если они указаны в поле Useragent.

2. Получение списка всех зарегистрированных SIP-экстенов с IP-адресами

Чтобы получить информацию о зарегистрированных SIP-экстенах и их IP-адресах, можно использовать следующую команду:


for a in `asterisk -rx "sip show peers" | grep "OK" | cut -f1 -d/` ; do asterisk -rx "sip show peer $a"; done | grep Contact
Разбор команды:
  • Вся структура команды аналогична первой, но вместо фильтрации по Useragent используется фильтрация по Contact, которая выводит информацию о текущем IP-адресе устройства.
  • Результат команды будет содержать список всех зарегистрированных SIP-устройств с их IP-адресами.

3. Поиск телефонов по конкретной модели (например, Yealink)

Если вам нужно найти все устройства определенной модели, например, телефоны Yealink, можно использовать команду с дополнительной фильтрацией по строке Useragent. Команда будет выглядеть так:


for a in `asterisk -rx "sip show peers" | grep "OK" | cut -f1 -d/` ; do asterisk -rx "sip show peer $a" | grep -E "Useragent|Contact" done | grep "Yealink"
Разбор команды:
  • В первой части команды мы получаем список всех зарегистрированных SIP-устройств.
  • Для каждого устройства выполняется запрос его подробной информации (включая параметры Useragent и Contact).
  • Далее, мы фильтруем вывод по ключевым словам "Useragent" и "Contact", чтобы получить только нужную информацию.
  • Используя grep "Yealink", мы отфильтровываем устройства, которые соответствуют модели Yealink.

Если вам нужно искать телефоны другой модели, достаточно заменить "Yealink" на имя другой модели, например, "Grandstream", чтобы получить устройства этой марки.

Использование таких команд позволяет оперативно собирать информацию о зарегистрированных SIP-устройствах, моделях телефонов, IP-адресах и другой важной информации для администрирования серверов Asterisk. Эти команды помогут вам эффективно управлять сетью устройств и отслеживать их состояние.

среда, 14 декабря 2016 г.

Маршрутизация входящих DID по полю заголовка SIP "to" (Asterisk sip to header)

Данная заметка будет полезна для тех. кто настраивает транк с оператором VoIP с регистрацией, и в транке провайдер отдает несколько номеров.

Для маршрутизации необходимо прописать следующий кусок диалплана.

exten => _.,1,Set(GROUP()=OUT_2)
exten => _.,2,Set(NUM=${SIP_HEADER(TO):5})
exten => _.,3,Set(NUM=${CUT(NUM,@,1)})                                                         
exten => _.,n,Goto(from-trunk,${NUM},1)

Для FreePBX и Elastix добавляем кусок в файл extensions_override_freepbx.conf:

[from-trunk-sip-НАЗВАНИЕ-ВАШЕГО-ТРАНКА]
include => from-trunk-sip-НАЗВАНИЕ-ВАШЕГО-ТРАНКА
exten => _.,1,Set(GROUP()=OUT_2)
exten => _.,2,Set(NUM=${SIP_HEADER(TO):5})
exten => _.,3,Set(NUM=${CUT(NUM,@,1)})                                                         
exten => _.,n,Goto(from-trunk,${NUM},1)

понедельник, 12 декабря 2016 г.

Asterisk: очистить зависшие каналы (SIP channel hangup)

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

Что делаем?
Заходим в консоль CLI Asterisk:
asterisk -rvv

Убиваем канал:

channel request hangup [Нажимаем TAB]

Выбираем зависший канал и нажимаем Enter.