Записи с меткой ‘Asterisk’

Logstash: Useful grok patterns for asterisk

Где живут grok-patterns (Ubuntu):

Версия в пути может изменяться, но основная идея ясна

 

Суть: по умолчанию в filters для asterisk.json для описания имени транка и канала используется grok BASE16FLOAT, который, если у вас, как у меня, в имени транка есть BASE64FLOAT-последовательность (например как у меня -сс-) — откусит имя транка по ней.

Читать далее »

Регистрация мультииндексного транка на 1 register

Как подключиться по протоколу  SIP к поставщику услуг при одиночной регистрации, но с возможностью принятия звонков с более 1 линии. Или «SIP-транк с регистрацией»

От оператора получаем: LoginId, Secret, Registrar.

LoginID – 7-и значный номер в виде 1234567, он и юзернейм для регистрации, и идентификатор линии.

Также в данную регистрацию оператор предоставляет пул номеров: 1234568-1234599

Если произвести регистрацию как для обычной линии:

то все входящие звонки будут поступать исключительно с индексом 1234567 и обработать в dial plan остальной пул номеров будет не возможно т.к. вызовы будут отбиваться с сообщением fake auth rejected.

На самом деле, это абсолютно верное поведение астериска, так и должно быть (хотя в новых версиях insecure=port,invite позволяет начхать на то, какой там exten прописан в register string)

Во избежание головной боли, приводим строку регистрации в следующий вид:

Все входящие звонки будут поступать в контекст from-trunk на обработчик s.

Достанем из SIP_HEADER идентификатор  линии:

PROFIT!

Автоинформатор с произвольным текстом

Пришла с час назад идея облегчить жизнь нашему персоналу — по ночам уведомлять их о падении оборудования телефонным звонком. При чем так, чтобы не просто «у вас что-то сломалось», а с указанием точного адреса.

Модуль мониторинга — где-то у админов, по событию они могут сгенерировать строку с адресом и номером телефона ответственного, так что задача сводится к тому, чтобы:

  • Получить параметры
  • Сформировать коллбек
  • После поднятия трубки — продиктовать полученный адрес.

Нам потребуются:

  • Сервер с астериском
  • ffmpeg. Можно в дефолтной конфигурации
  • apache (у меня с mod_rewrite чтобы ограничить доступ к функционалу только конкретным инстансам)
  • 15 минут времени

Итак, приступим.

Читать далее »

Получение количества входящих звонков с 1 транка из asterisk в консоль Linux

Сегодня прилетела задача — писать в лог раз в 5 минут количество активных входящих звонков с каждого из транков.

И вот возник вопрос: как передать в bash значение переменной asterisk без использования AMI.

Получилось следующее:

В контексте incoming транка делаем следующее:

и из консоли добываем так:

PROFIT

Дружим GSM-модем c Asterisk

Нередко у пользователей, использующих Asterisk в работе, возникает необходимость подключить в систему мобильные номера. Основная причина такой необходимости — дешевые (или даже бесплатные) звонки на мобильные номера. Да и клиентам гораздо проще и дешевле звонить на мобильный номер, чем платить по 0.5-1.2 грн\мин за звонок на городской.

Как оказалось, украинское законодательство в этом плане довольно категорично — «приземлять» мобильные номера в стационарную сеть запрещено. Из 3 основных операторов только Астелит в данный момент предоставляет транспорт мобильных номеров в SIP. В представительствах же Киевстар и МТС мне вежливо отказали, предложив хитроумные схемы с использованием городских номеров и переадресаций.

Но задача остается задачей — в итоге пришлось остановиться на 2 вариантах: использовать GSM-шлюз или GSM-модемы. О шлюзе напишу попозже — в данный момент они в пути, а в этом посте более подробно остановлюсь на GSM-модемах.

У клиента есть: сервер с CentOS 15, asterisk 1.8+Elastix. В качестве модема используется Huawei e1550  как наиболее распространенный и наименее проблемный.

Итак, приступим-с.

Для начала, установим rpmforge (можно и без него, но он мне здорово облегчил жизнь):

Теперь без танцев с бубном установим  usb-modeswitch:

Перезагрузимся и проверим, появился ли модем в системе:

Теперь установим модуль поддержки для Asterisk. Тут у нас целых 2 варианта: chan_datacard или chan_dongle

Я остановился на chan_dongle, но в целом оба модуля работают одинаково неплохо.

в конфигурационном файле нужно будет самую малость пошаманить, а именно указать /dev/ttyUSB*, соответствующий собственно аудио-и дата-каналам. по умолчанию это ttyUSB0 и ttyUSB1, но могут быть другие (у мена например выглядит так:)

 

Еще 1 причина, по которой был выбран dongle — у него есть возможность «прибить» логическое стройство к IMEI, что очень помогает в некоторых случаях (например, при наличии нескольких модемов при отключении они могут поменяться местами)

Подгружаем модуль и проверяем его работу:

Собственно, настройка закончена. Диалплан буду писать завтра.

Авторизация