Что нового в Asterisk 15

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

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

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

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

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

Confbridge:

 

  • Добавлен режим видео «sfu» к настройкам профиля,что позволяет использовать конференции в режиме SFU, когда приходящие видео потоки рассылаются всем участникам конференции, которые поддерживают прием нескольких потоков.
  • Добавлена поддержка объемного микширования звука для создания эффекта рассадки спикеров за столом. Микширование происходит на частоте 48кГц, используя библиотеку libfftw3.

 

Ядро:

  • Внесены массивные изменения в ядро, которые позволили расширить API каналов и обрабатывать несколько аудио/видео потоков. В данный момент данный API задействован только для PJSIP и мотивирован востребованностью данной опции в современных WebRTC браузерных приложениях. Новые конфигурационные опции:
    • max_audio_streams: указывает на максимальное количество аудио каналов, которые можно принять от данного устройства.
    • max_video_streams: указывает на максимальное количество видео каналов, которые можно принять от данного устройства.
  • Поддержка rtcp-mux в соответствии с RFC 5761: Multiplexing RTP Data and Control Packets on a Single Port. Новая опция «rtcp_mux» добавлена в настройки устройства. При включении UDP подключение используемое для RTP будет использовано и для RTCP. Массивные изменения в res_rtp_asterisk.
  • Удален ‘Data Retrieval API’. Как не поддерживаемый, функции которого могут быть замещены используя ARI.
  • Добавлено API абстракции над представлением SDP. Добавлена реализация для стека PJMEDIA.
  • Добавлено API для задержки доставки фреймов, так как данная функциональность реализована и дублируется сразу в нескольких приложениях.

 

PJSIP:

  • Добавлена команда «pjsip show subscriptions»
  • Добавлена функция PJSIP_DTMF_MODE(), это клон приложения SIPDtmfMode, позволяющий во время вызова изменить режим DTMF для вызова через PJSIP
  • Добавлен режим auto_info для отката к DTMF INFO режиму, будет произведен переход на SIP INFO вместо inband, в том случае если 4733  не доступен.
  • Новая опция «notify_early_inuse_ringing» для устройств. Опция будет полезна для работы функции подбора вызова на некоторых телефонах (пр. Linksys/Cisco)
  • Добавлена опция «webrtc» подключающая набор опций, необходимых для работы WebRTC:
    • rtcp-mux, use_avpf, ice_support и use_received_transport=enabled
    • media_encryption=dtls
    • dtls_verify=fingerprint
    • dtls_setup=actpass

Также включается проброс атрибута «msid» в SDP и отправляются h264 RTCP FIR ответные фреймы.

  • Добавлена поддержка BUNDLE, позволяющей для нескольких медиа потоков использовать общий транспорт, это ускоряет и упрощает старт сессии, так как сокращает количество ICE/DTLS согласований до 1.
  • Новая опция для устройств «refer_blind_progress», предазначена для скрытия уведомлений о деталях при слепом переводе. Требуется для корректной работы некоторых телефонов, например Mitel/Aastra или Snom.
  • Добавлена опция “preferred_codec_only”для устройств. Позволяет помещать в ответ только единственный, наиболее предпочтительный кодек.
  • Улучшения в логировании. Добавлены команды CLI:
    • pjproject set log level
    • pjproject show log level

Добавлена опция «log_level» в pjproject.conf для установки стартового максимального значения уровня логирования.

  • Добавлена команда AMI RegistrationInboundContactStatuses.
  • Добавлен новый вид транспорта — ‘symmetric_transport’. Если разрешено, то при запросе о динамического контакта, используемый тип транспорта будет сохранен и использован для последующих запросов.
  • Добавлена поддержка последовательного набора в соответствии с RFC3578. Включается через новую опцию “allow_overlap” устройства.

 

Приложения:

  • Добавлено новое эхо-приложение, возвращающее заданное количество копий полученных потоков (аудио и видео). параметры num и type задают количество и тип возвращаемых эхо- медиа потоков.
  • Фильтрация символов для ast_waitfordigit_full, для осановки только в случае получения ожидаемого ввода. Новое приложение WaitDigit().
  • Добавлена опция «Q» для установки причины ответа на каналах без ответа. Заменяет устанавливаемое по-умолчанию ANSWERED_ELSEWHERE.

 

Сборка:

  • Сборка по-умолчанию происходит с опцией —with-pjproject-bundled, автоматически загружающей копию файлов библиотеки pjsip с серверов Digium.
  • Для упрощения сборки без доступа к интернет добавлена опция ./configure ‘—with-download-cache’. Также может быть задана переменная окружения «AST_DOWNLOAD_CACHE».
  • Добавлена опция ./configure ‘—disable-libwebrtc’. Без данной опции происходит сборка внутренней реализации webrtc, что на платформах без sse2 приводит к ошибке.

 

RTP:

  • Добавлена опция ice_blacklist в rtp.conf.
  • Добавлена опция stun_blacklist в rtp.conf.
  • Добавлена поддержка использования libsrtp2.

 

Очереди:

  • Добавлена опция announce-position-only-up. В случае использования приложение будет анонсировать позицию в очереди только в том случае, если она улучшилась по сравнению с прошлым объявлением.
  • Добавлена переменная QUEUE_RAISE_PENALTY, в дополнение к переменным QUEUE_MAX_PENALTY и QUEUE_MIN_PENALTY, и дополнительным параметрам в queuerules.conf.
  • Добавлен вывод приоритета звонящего при ответе на AMI запрос QueueStatus.
  • Возможность изменения приоритета звонящего используя CLI или AMI.
  • Добавлено приложение QueueUpdate для отслеживания исходящих вызовов используя app_queue
  • Добавлено queue_log событие RINGCANCELED, отражающее сброс вызова до момента когда произошел таймаут вызова оператора. В таком случае не фиксировалось время вызова и имя оператора, пропустившего вызов.
  • логирование причины для событий PAUSEALL/UNPAUSEALL в queue_log.
  • Удалено действие AMI «Queues», как дублирующее вывод CLI «queue show». ”QueueStatus» выводит аналогичную информацию в структурированном виде.

 

Отладка:

* Добавлена утилита ast_coredumper для манипуляций с дампами.

* Добавлен ast_logescalator для детального разделения логов.

 

Кодеки:

  • Добавлена поддержка iLBC 20 в добавление к имеющейся поддержке iLBC30. Новый кодек будет использоваться по умолчанию, если напрямую не требуется иное.
  • Добавлена поддержка пропуска VP9 (но не проигрывание и запись в данный тип файла).

 

AMI/ARI:

  • Для использования в Asterisk 15 обновлены версии:
    • AMI с 3.2.0 на 4.0.0
    • ARI с 2.0.0 на 3.0.0
  • Добавлены команды CLI для отображения и отладки ARI приложений:

  — ari show apps: список ARI приложений

  — ari show app: детальная информация об ARI приложении

  — ari set debug: дамп событий отправляемых к приложению

  • Добавлена поддержка для переменных в ARI событиях. Если добавить  «channelvars=foo,bar» в ari.conf секцию general, тогда значение указанных переменных будет передано в событие в Stasis.
  • Возможность управлять источником видео, передаваемого участникам разговора, добавлены методы:

 (1) setVideoSource: POST /bridges/{bridgeId}/videoSource/{channelId}

 (2) clearVideoSource: DELETE /bridges/{bridgeId}/videoSource

 

AGI:

  • Добавлена возможность управления форматом аудио, передаваемого через EAGI. Используется переменная ‘EAGI_AUDIO_FORMAT’.

 

voicemail:

  • Для IMAP протокола добавлена опция «imap_poll_logout» для указания того что нужно отключиться от IMAP по завершению проверки почтовых ящиков.

 

CDR/CEL:

  • Поддержка для сборки cdr_radius and cel_radius с использованием библиотеки radcli.
  • Поддержка установки userfield из ‘h’ экстенжена.

 

Разное:

  • Логирование.  Добавлена опция logger_queue_limit. Определяет лимит на длину очереди на запись в лог файлы, по-умолчанию — 1000 строк
  • Sqlite3. Добавлена возможность управления параметром busy_timeout.
  • Календари. Добавлена поддержка для чтения календарей Google (ранее была доступна только запись).
  • IAX2. Поддержка передачи пароля в plaintext теперь deprecated. Будет удалена в версии 16.