Кодек WebRTC

Добрый день.

У нас появились проблемы со звуком с Манго пришел такой ответ. подскажите пожалуйста, в каких настройках можно отключить этот кодек
Кодек.png
 

Max

Administrator
Staff member
Здравствуйте.

Настройка кодеков

По-умолчанию включены все:
Code:
codecs=opus,alaw,ulaw,g729,speex16,g722,mpeg4-generic,telephone-event,h264,vp8,flv,mpv
Чтобы исключить все голосовые и видео кодеки кроме G.711 (alaw, ulaw), нужно перечислить их так:
Code:
codecs_exclude_sip=opus,g729,speex16,g722,mpeg4-generic,h264,vp8,flv,mpv
Итого, остаются: G.711 и DTMF (тоновый набор).
 
Добрый день.Спасибо, мы так и сделали, но ситуация не изменилась. Получили следующую информацию от коллег из Манго

Разработчики предоставили обратную связь:

В плече, которое ушло в SIP-транк, изначально был получен ответ SIP 183, затем абонент поднял трубку. После этого система отправила reINVITE, что согласовать кодеки после перехода с 183 Early-media на трафик от абонента. Система отправила INVITE без кодеков, и получила ответ 200 OK без кодеков.
На нашей стороне система считает, что ответ 200 OK без SDP на reINVITE без SDP это невалидная ситуация.
Если я правильно понимаю RFC 3261 пункт 14.2

A UAS providing an offer in a 2xx (because the INVITE did not contain
an offer) SHOULD construct the offer as if the UAS were making a
brand new call, subject to the constraints of sending an offer that
updates an existing session, as described in [13] in the case of SDP.
Specifically, this means that it SHOULD include as many media formats
and media types that the UA is willing to support. The UAS MUST
ensure that the session description overlaps with its previous
session description in media formats, transports, or other parameters
that require support from the peer.

то рекомендуется, чтобы сторона получившая reINVITE без SDP, ответила всеми кодеками, которая она поддерживает.

В данном случае, этих кодеков в ответе нет. Система считает, что кодеки не согласованы и не проключает трафик между плечами.

Проблема в том, что такое поведение РЕКОМЕНДУЕТСЯ, а не ТРЕБУЕТСЯ. Но наша система в этом месте требует кодеки.
Как мы поняли, что при reINVITE нам нужно передавать кодеки, и мы этого не делаем, можете подсказать какие настройки необходимо воспроизвести, чтобы кодеки передавались
 

Max

Administrator
Staff member
К сожалению, WCS в настоящее время не поддерживает reINVITE. На добавление этого функционала есть тикет WCS-3360, но он не является приоритетным, и мы не можем дать ETA по данному тикету.
Вам необходимо настроить SIP сервер таким образом, чтобы не использовать reINVITE (ранее у вас звонки ходили через Mango, следовательно, скорее всего было изменение настроек).
 

Max

Administrator
Staff member
Да, можно снять дамп трафика со стороны WCS (начинать запись дампа необходимо до звонка). Если от SIP сервера на WCS приходит SIP INVITE без SDP, это означает, что SIP сторона использует reINVITE.
На стороне SIP сервера должна быть настройка, которая отключает подобное поведение.
 
Добрый день. Извиняемся за столь долгий ответ. Мы сняли дамп трафика, но не видим той ситуации, которую вы описали. Видим пакеты SIP с методом INVITE, но в них везде есть SDP.
1694182501635.png
1694182514707.png
 

Max

Administrator
Staff member
Пожалуйста, воспроизведите проблему и соберите отчет на стороне сервера, как описано здесь, включая дебаговые логи и дамп трафика: Формирование отладочных логов и дампа трафика. Используйте скрипт для упаковки отчета: Сбор отладочных логов при помощи скрипта report.sh. Отправьте архив при помощи этой формы. Если размер архива превышает 30 Мб, разместите его в облачном хранилище (Google Drive, OneDive, Yandex.Disk) и пришлите ссылку в поле комментария формы.
 
Пожалуйста, воспроизведите проблему и соберите отчет на стороне сервера, как описано здесь, включая дебаговые логи и дамп трафика: Формирование отладочных логов и дампа трафика. Используйте скрипт для упаковки отчета: Сбор отладочных логов при помощи скрипта report.sh. Отправьте архив при помощи этой формы. Если размер архива превышает 30 Мб, разместите его в облачном хранилище (Google Drive, OneDive, Yandex.Disk) и пришлите ссылку в поле комментария формы.
Добрый день. Не могу одновременно приложить ссылку в форме, потому что требует файл обязательно, а он больше 30 мб
 

Max

Administrator
Staff member
К сожалению, вы предоставили только дамп трафика. Предоставьте, пожалуйста, логи сервера, как мы запрашивали выше. Также уточните, с каким именно из звонков воспроизводится проблема.
Если сбор логов вызывает затруднения, просим предоставить SSH доступы к серверу и два SIP аккаунта для совершения тестовых звонков, наши иженеры воспроизведут проблему и сами соберут нужные данные. Кроме SSH доступов, должнен быть доступен и веб интерфейс WCS (нужен пример Phone Min для совершения тестовых звонков). Для отправки данных используйте эту форму.
 
Добрый день.

Подскажите пожалуйста, а мы можем как-то организовать созвон с ограниченным числом пользователей и инженерами, где мы воспроизведем кейсы с отсутствием звука при звонке? Мы готовы переговорить о возможности такой встречи с вашими представителями.
 

Max

Administrator
Staff member
Для того, чтобы проблему можно было исследовать и решать, необходимо воспроизведение. В идеале, на наших тестовых серверах, тогда нам нужны только тестовые аккаунты для SIP звонков.
Если проблема не воспроизводится на наших тестовых серверах, необходим доступ к вашему серверу.
Если ни то, ни другое невозможно организовать, тогда нужны логи, собранные в точном соответствии с тем, как их запросили, в логах должна быть видна последовательность действий при установке проблемного звонка. Также нужен дамп трафика с проблемным звонком. Желательно, чтобы этот проблемный звонок в логах и дампе был один, если это организовать невозможно, репорт должен сопровождаться описанием, с каким именно из звонков была воспроизведена проблема.
Простой созвон с нашими представителями проблему решить не поможет. Нужно воспроизведение проблемы, логи и ламп. Либо доступы, тогда наши инженеры воспроизведут проблему на вашем сервере сами.
Если проблема воспроизводится, мы открываем тикет. В процессе работы над тикетом потребуется тестирование, для чего также могут потребоваться тестовые SIP аккаунты. Это обычная практика с клиентами, использующими функции SIP.
 
Добрый день. Прошу прощения, в первый раз отправили неполные данные

Звонки, по которым были проблемы со связью
09.20.2023 13.34.56 на номер 79917039538, sip пользователя user399
Проблема - Был входящий звонок на внутренний номер сотрудника, оператор слышит клиента, клиент не слышит оператора
09.20.2023 13.45.19 на номер 79104482020 sip пользователя user352
Проблема - Был звонок в рамках исходящего обзвона, ни клиент, ни оператор друг друга не слышат
 

Max

Administrator
Staff member
Проверили логи и дамп.
09.20.2023 13.34.56 на номер 79917039538, sip пользователя user399
Проблема - Был входящий звонок на внутренний номер сотрудника, оператор слышит клиента, клиент не слышит оператора
Этот звонок установился успешно, и медиатрафик отправлялся в обе стороны
1695629670792.png

Однако звук есть только с одной стороны
1695629743715.png

С другой стороны отправляется только тишина
1695629828128.png

Похоже на проблему на стороне клиента: либо микрофон не захвачен в браузере, либо замьючен (mute). В этом случае помогли бы логи на стороне браузера.
09.20.2023 13.45.19 на номер 79104482020 sip пользователя user352
Проблема - Был звонок в рамках исходящего обзвона, ни клиент, ни оператор друг друга не слышат
Этот звонок установился, но по SIP стороне не было медиатрафика, хотя со стороны браузера медиапакеты, по клиентским логам WCS, приходили
1695630061916.png

Выглядит как сетевая проблема между WCS и SIP сервером. Диагностировать такие проблемы на своей стороне мы, к сожалению, не можем. Возможно, сотрудники Mango подскажут, как можно мониторить состояние сети в ходе звонка.
 
Подскажите пожалуйста, каким образом снять логи с браузера, чтобы мы могли отправить вам на изучение?
 

Max

Administrator
Staff member
Для снятия логов на стороне браузера, обычно используют сетевые хранилища логов вроде Sentry.
В приложение добавляется библиотека Sentry, которая периодически отправляет логи на сервер.
Далее можно на сервере отыскать сессию конкретного пользователя и посмотреть были ли ошибки у него в логах.
Сбор логов на стороне клиента и поиск по ним - это независимая от нашего ПО подсистема. Обычно такие подсистемы встраиваются в разработчиками приложения, для которых требуются такие "разборы полетов". В данном конкретном случае, мы могли бы посмотреть логи и нафти в них например ошибку доступа к микрофону, а могли бы и ничего не обнаружить, например если гарнитура на тот момент была выключена или неисправна.
 
Проверили логи и дамп.

Этот звонок установился успешно, и медиатрафик отправлялся в обе стороны
View attachment 3659
Однако звук есть только с одной стороны
View attachment 3660
С другой стороны отправляется только тишина
View attachment 3661
Похоже на проблему на стороне клиента: либо микрофон не захвачен в браузере, либо замьючен (mute). В этом случае помогли бы логи на стороне браузера.

Этот звонок установился, но по SIP стороне не было медиатрафика, хотя со стороны браузера медиапакеты, по клиентским логам WCS, приходили
View attachment 3662
Выглядит как сетевая проблема между WCS и SIP сервером. Диагностировать такие проблемы на своей стороне мы, к сожалению, не можем. Возможно, сотрудники Mango подскажут, как можно мониторить состояние сети в ходе звонка.
Добрый день!
Подскажите пожалуйста, мы обратились в Манго, и Манго выдало нам следующую информацию
1698738815975.png

Каким образом можно изменить протокол передачи в настройках?
 

Max

Administrator
Staff member
Добрый день.
В настройках WCS можно изменить только транспорт между браузерным клиентом и WCS. Если у вас установлена настройка
Code:
ice_tcp_transport=true
следует переключить ее в
Code:
ice_tcp_transport=false
и перезапустить WCS. В этом случае ухудшится качество публикации и проигрывания у клиентов с плохими каналами, где есть потери пакетов.
На SIP стороне медиа трафик всегда ходит по UDP. На TCP можно переключить только SIP сигналинг
Code:
sip_force_tcp=false
но в этом случае может не проходить согласование кодеков из-за того, что SDP может не поместиться в один пакет 1400 байт.
Эту проблему можно решить, убрав все лишние кодеки и оставив только G.711
Code:
allow_outside_codecs=false
sip_force_tcp=false
codecs_exclude_sip=opus,g729,speex16,g722,mpeg4-generic,h264,vp8,flv,mpv
 
Здравствуйте.
Уточните пожалуйста, в каком файле конфигурации это нужно прописать, коллеги говорят, что в файле flashphoner.properties не могут найти
 
Top