Проблема
Сегодня обратились клиенты с жалобой на то, что аппаратный IP-телефон Foxgate при входящем звонке может поставить вызов на удержание (Hold), а снять не может. При снятии с Hold оператор слышит вызывающего абонента, а на стороне абонента продолжает играть музыка.
Решение
После небольшого расследования стало понятно, что данная проблема связана исключительно с аппаратными телефонами. При дальнейшем разбирательстве я обнаружил «известную ошибку» Asterisk 1.6, которая описана на баг-трекере со статусом suspended. Это означает, что разработчики знают об этой ошибке, но пока нет решения.
Причем, все остальные функции IP-ATC (условный/безусловный трансфер, парковка вызова и т.д) работают штатно. Обратившись к тематическим форумам, я нашел множество подобных веток. Все жалуются на проблему с SDP пакетами. Непосредственно ошибка заключается в том, что в Asterisk 1.6 для корректной работы функции удержания разработчики придумали, что для постановки требуется сессия пакета SDP, а для снятия, новая сессия пакета SDP. Это, как оказалось было сделано для совместимости с Microsoft OCS.
Проблема решается простым переопределением опции Asterisk. Если у вас просто Asterisk 1.6 то вам необходимо править файл sip.conf, а если у вас еще есть и FreePBX то — sip_general_custom.conf. В указанный файл необходимо добавить строку:
1 |
ignoresdpversion=yes |
после этого перезапустить Asterisk и все должно начать работать.
Удачи.