Продолжаю тему обновлений, которые требуются при переходе на канал chan_pjsip, отмечу еще два момента, возможно недостаточно отраженные в документации. По крайней мере нем при обновлении диалпланов наших систем пришлось немного поискать информацию.

  • Что: переменная SIPCALLID
  • Замена: вызов функции CHANNEL (pjsip,callid)

Положительным моментом является то, что данный вызов является более логичным и документация по нему доступна при просмотре помощи по функции CHANNEL. callid совершаемого вызова доступен до отправки INVITE в pre-dial процедуре, вызываемой приложением Dial ()

  • Что: приложение SipAddHeader ()
  • Замена: функция PJSIP_HEADER ()

Предложенная для замены функция является более функциональной заменой, позволяет также читать, удалять и модифицировать заголовки. О применении и ограничениях — подробнее во встроенной справке Asterisk

Также хотелось отметить, что все такие заметки мы начинаем собирать о обобщать в нашей базе знаний — https://kb.iqtek.ru, надеемся она сможет стать полезным ресурсом наравне с другими зарекомендовавшими себя сайтами по теме Asterisk и VoIP.

Оригинал: https://blog.iqtek.ru/?p=249

автор igorg

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

Далее »

автор igorg \\ теги: , , , ,

В этом году мне удалось принять участие в community-конференции Astricon компании Digium (ныне часть Sangoma), посвященную развитию проекта Asterisk. Данная конференция собирает представляет community со всего мира и позволяет познакомиться с актуальными вопросами, с которыми сталкиваются разработчики VoIP систем.

Хотелось бы рассказать о полученном опыте в плане получения визы, дороги, выбора маршрутов, стоимости и просто присутствия на конференции. Возможно кому-то эта информация будет полезна в будущем для поездки на Astricon или какую-либо другую конференцию в США.

Для начала хочу выразить благодарность семье, которая мужественно вынесла мое отсутствие в течении почти двух недель. Также хочу заметить, что в ссылках на сервисы далее по тексту могут быть использованы промо-ссылки. Если используете и это будет реально полезно — буду только рад. В комментариях задавайте вопросы, буду рад что-то подсказать. Далее »

автор igorg \\ теги: , , , , , ,

По следам прошедшей конференции AsterConf’2017 мы решили опубликовать несколько простых советов, которые оказались полезными участникам конференции.

Первый относится к использованию SQL запросов в системах, которые построены при помощи написания диалплана без применения графических оболочек вроде FreePBX. Для работы c SQL из диалплана чаще всего используют возможности модуля func_odbc. Однако часто оказывается неудобным то, что для каждого запрос а требуется редактирование отдельного файла. Ниже описание того, как этого избежать и задавать все запросы в диалплане.

Далее »

автор igorg

Совсем скоро должна появиться релизная версия Asterisk 15. В новой версии Asterisk Digium провели массивное изменение ядра системы, что вызвало отхождение от принципов нумерации и выпуска LTS релизов. Таким образом:

  • Asterisk 15 становится не-LTS релизом со сроком поддержки 2 года
  • Поддержка Asterisk 13 продляется до 2021 года

Основными нововведениями при этом являются:

  • Поддержка мульти-поточности в работе с RTP (в основном для WebRTC в chan_pjsip)
  • Внедрение API для абстракции при работе с SDP
  • Реализация спецификации BUDLE для передачи нескольких RTP потоков единым транспортом

Более подробный список изменений под катом.

Далее »

автор igorg

1280px-opus_bitratelatency_comparison-svg

Долгое время freeswitch обладал фактически эксклюзивной и первой реализацией кодека OPUS. Для Asterisk существовали решения на gihub, но они имели ряд недостатков — не имели возможности настройки через codecs.conf и не использовали информацию из SDP для своей работы.

Во время проведения Astercon 2016 было объявлено что для asterisk 13 и 14 выпущен официальный модуль кодека OPUS.

Далее »

автор igorg \\ теги: ,

Долгое время freeswitch обладал фактически эксклюзивной и первой реализацией кодека OPUS. Для Asterisk существовали решения на gihub, но они имели ряд недостатков — не имели возможности настройки через codecs.conf и не использовали информацию из SDP для своей работы.
Во время проведения As...

автор igorg \\ теги: ,

Для меня уже совершенно привычными являются интерфейсы на английском языке. Но большинству удобнее пользоваться великим и могучим. На одной из систем заметили что не срабытывает выбор языка во freepbx — просто при выборе языка перегружается интерфейс FreePBX, но язык интерфейса не меняется. Такая проблема может быть вызвана не работающим gettext модулем в php

1) Модуль может просто отсутствовать в системе

sudo apt-get install php-gettext

service apache2 restart

2) Проверьте что существует локаль ru_RU, именно ей, а не ru_RU.utf8 пытается воспользоваться FreePBX.

dpkg-reconfigure locales

service apache2 restart

автор igorg \\ теги: , ,

Vicidial — мощный opensource продукт для создание call-центров, обладающий, к сожалению, вполне ужасным интерфейсом.

По причине того, что имя звонящего передается в очень редких случаях, данная переменная при поступлении вызова в Vicidial сразу же используется для хранения идентификатора вызова. Чтобы сохранить имя для последующей обработки можно, например в контексте trunkinbound сделать запись такого вида и при необходимости получить имя из таблицы live_inbound_log:
exten => 1000000,1,AGI (agi-VDAD_inbound_calltime_check.agi,SomeIngroup-----NO-----${CALLERID (name)})
exten => 1000000,n,AGI (agi-DID_route.agi)
Интересующие вопросы относительно vicidial задавайте в комментариях.

автор igorg \\ теги: ,

Буквально заметка на полях. практически всегда приходится разделять исходящие вызовы по нескольким операторам и ограничивать внутренних абонентов. Поэтому важно правильно разделять исходящие вызовы в зависимости от номера. На всех устанавливаемых нами системах основные типы направлений примерно однотипны, курсивом комментарий:

1) Международные

  • 810XXXX. (международные номера не имеют фиксированной длинны, обычно такого формата достаточно для отделения международных направлений)
  • 833622XXXXX (Байконур)
  • 8840XXXXXXX (Абхазия)
  • 8[67]XXXXXXXXX (Казахстан)

2) Сотовые

  • 89XXXXXXXXX

Часто требуется разделить вызовы по региону или оператору, для этого мы используем собственное API для загрузки на АТС списка актуальных префиксов. Но вообще задача решается выборкой нужных операторов из базы Россвязи:  http://www.rossvyaz.ru/activity/num_resurs/registerNum/
Список сотовых номеров данного региона можно по-прежнему строить, а вот с выборкой по конкретному оператору сложнее:

  1. Операторы часто имеют различные наименования в разных регионах
  2. Хотя масштаб еще не большой, но MNP работает. Хотя и есть способы поиска реального оператора по номеру телефона.

4) Номера бесплатного доступа 8800

  • 8800[1-7]XXXXXX (Российские номера 8800)
  • 8804XXXXXXX (Тоже номера, на которые вызов бесплатен, остальные 880x номера запрещаем, так как там могут быть платные сервисы)

5) Номера в области

  • 8381[3-9]XXXXXX (на примере Омской области)

6) Городские номера

  • [2-9]XXXXX (шестизначная нумерация) или, например, [2-9]XXXXXX (для городов с семизначной нумерацией, можно уменьшить диапазон в зависимости от реально используемого) + предусмотреть варианты набора с кодом города
  • 849[589]XXXXXX (актуально в Москве)

5) Россия стационарные

  • 8[348]XXXXXXXXX (за исключением номеров из п.1)

Будучи педантичным, очень важно понимать какие номера бывают, по следующим причинам:

  1. Нужно начинать набор номера как только он был набран, чтобы пользователь по-возможности никогда не ждал таймаута или не был вынужден нажимать #;
  2. Нужно точно описать возможные варианты набираемых номеров, чтобы обезопасить себя от различных видов атак и злоупотреблений;
  3. Не давать пользователю набрать неправильный номер и стараться сразу сообщать об ошибке набора.

Надеюсь был полезен, если кому-то нужна информация о поиске реального оператора, обслуживающего номер, или, например есть желание использовать наше API — прошу в комментарии. Кстати была идея написать модуль для FreePBX, который бы учитывал сложные варианты (MNP, текущий регион) при вызове, но руки так и не дошли.

автор igorg