Совсем скоро должна появиться релизная версия 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.