Можно ли настроить Asterisk так, чтобы он отправлял RTP-пакеты со звуком от получателя до того, как удаленная сторона действительно подхватит?
Похоже, это необходимо для теста на соответствие VoIP, который должна пройти моя установка. Они используют симулятор, чтобы проверить это, и когда я звоню другому абоненту, они снимают трубку, не отправляя ОК. Я слышу звук с другой стороны, но они меня не слышат. Я заглянул в directmediasetup
, progressinband
, prematuremedia
но ни один из них не выполняет то, что мне нужно. Это вообще возможно с Asterisk?
Окружающая среда:
Asterisk регистрируется в магистрали SIP, аппаратные SIP-телефоны регистрируются в Asterisk. Исходящие вызовы проходят через магистраль SIP. Версия Asterisk: 1.8.11.
Раннее воспроизведение возможно с помощью Asterisk, но только в определенных ситуациях и только при сотрудничестве / поддержке всех задействованных устройств и служб. Некоторые телефоны и / или поставщики услуг не поддерживают ранние носители. Поддержка раннего голоса и раннего DTMF может отличаться.
У вас есть SIP-телефон, зарегистрированный в Asterisk, который выполняет вызовы на внешний номер. Asterisk, в свою очередь, набирает этот номер по отдельной магистрали SIP. Это две отдельные ветви вызова. Asterisk может воспроизводить ранние мультимедийные данные обратно вызывающему абоненту (например, настраиваемую мелодию звонка или музыку на удержании), а Asterisk может получать ранние мультимедийные данные от внешней стороны по магистрали SIP. Однако стандартный оператор Dial () автоматически выполняет Answer () и соединяет ветви вызова, когда удаленный абонент отвечает.
Похоже, вы хотите избежать этого обычно желаемого поведения и соединить ветви вызова без ответа на них Answer (). В Приложение Dial () позволяет отложить обычно автоматический Answer () с помощью параметров 'd' или 'D'. Я не знаю ни одной опции Dial (), которая позволила бы вам соединять ветви вызова без Answer () ing.
Дополнительную информацию см. В вики-странице Asterisk. обсуждение и примеры ранних медиа с Asterisk.
Это невозможно со звездочкой.
Asterisk не открывает обратный путь носителя преждевременно, потому что это приводит к прекращению работы некоторых устройств. Он только делает преждевременные СМИ в одном направлении.
Вы, вероятно, можете изменить это, переписав код (обе конечные точки должны это поддерживать), но исходное дерево по умолчанию не поддерживает это.
Почему бы просто не убрать Asterisk с медиа-пути? *
directmedia=yes
directrtpsetup=yes
prematuremedia=no ;this does the exact opposite of what everyone assumes it does
progressinband=no
Asterisk отправит приглашение на другую сторону с IP-адресом вашего телефона, указанным в SDP. Когда другая сторона сообщает 183 Session Progress, Asterisk отправляет это сообщение обратно на ваш телефон с IP-адресом другой стороны в SDP.
Пока ваш телефон поддерживает это, у вас будет двустороннее раннее воспроизведение без звездочки, даже если у вас будет возможность встать на пути и испортить его.
* ну, звездочка все равно повторно пригласит себя обратно в конце вызова на мгновение, но в противном случае она вообще не будет
Есть два пути. Либо 1-используя 183 Early media. Другой способ - использовать приложение Answer ().
В обоих случаях носитель будет поступать со стороны Asterisk.
; 183 - session progress method. exten=> _X.,1,Progress() exten=> _X.n,playback(tt-monkeys) ; 200 - Answer exten=> _X.,1,Answer() exten=> _X.,n,playback(tt-monkeys)