Как определить тональные сигналы (DTMF) в видео-комнате Twilio

После просмотра этого документа я могу успешно добавить Абоненты PSTN в видеозал (тип Small Room). Чего я не смог сделать, так это обнаружить сигналы DTMF от звонящего.

Я пробовал два разных подхода, оба потерпели неудачу

1) Тот, который я использовал раньше с другим провайдером и работал, но не с Twilio, заключался в том, чтобы один из других пользователей в комнате (не абонент PSTN, а клиент javascript) обнаруживал клиентскую сторону DTMF. Это не работает с twilio, потому что мне кажется, что twilio манипулирует аудиопотоком, чтобы удалить DTMF, прежде чем они достигнут других пользователей в комнате (когда абонент PSTN нажимает номер, вы слышите только короткий щелчок по Обратная сторона)

2) Вдохновленный этим ответом, я попытался ответить с помощью TWIML

<Response>
  <Connect>
    <Room>my-room</Room>
  </Connect>
  <Gather input="dtmf">
  </Gather>
</Response>

Это не было бы идеальным вариантом, поскольку он не обнаруживал бы DTMF в комнате; вам придется покинуть комнату, но я все равно попробовал, чтобы увидеть, смогу ли я придумать способ завершить вызов, чтобы перейти к глаголу gather, как в связанном ответе. Похоже, что звонок не перемещается в часть сбора после того, как комната заканчивается (я попытался завершить комнату, и звонок PSTN немедленно завершился)

Есть ли другие подходы, которые кто-то использовал для этого? Самым простым для меня был бы способ сказать twilio не удалять DTMF из аудиопотока, чтобы мое решение №1 работало, но я открыт для других идей, возможно, используя gather twilio.


person Hilikus    schedule 27.08.2019    source источник


Ответы (1)


Проповедник разработчиков Twilio здесь.

Не похоже, что в настоящее время можно напрямую обнаруживать тоны DTMF в телефонном звонке, который был подключен к видео-комнате.

Одна из возможностей - использовать новую возможность Media Stream, чтобы направить живое аудио на ваш собственный сервер для обнаружения тонов.

Я попросил команду посмотреть, есть ли другие варианты.

person philnash    schedule 28.08.2019
comment
Спасибо @philnash. Можете ли вы подтвердить, что DTMF удаляются из аудиопотока, который другие участники получают в комнате? можно ли отключить эту функцию? на быстрых тестах, похоже, что это не так в обычном голосовом вызове, зачем удалять их в видео-комнате, а не в обычном голосовом вызове? Могу ли я создать где-нибудь запрос функции, чтобы показать эту конфигурацию в API создания комнаты? - person Hilikus; 28.08.2019
comment
Кроме того, если я использую ваше предложение о медиапотоке для направления звука на сервер, как вы предлагаете мне уведомлять участников в комнате об обнаруженных DTMF? я не вижу в API комнаты ничего, что позволило бы мне передать эту информацию в комнату - person Hilikus; 28.08.2019
comment
Я проверяю это внутри команды, чтобы узнать, что происходит. - person philnash; 29.08.2019
comment
возможно ли это по прошествии двух лет или DTMF-сигналы по-прежнему удаляются из вызовов PSTN, подключенных к видеозалам? спасибо за любые указатели - person Hilikus; 13.07.2021
comment
Согласно команде Voice, согласование SDP, которое мы проводим с оператором связи, должно означать, что тональные сигналы DTMF фактически отправляются вне диапазона, поэтому по другому каналу, чем обычный голосовой звук. Таким образом, тональные сигналы DTMF не слышны в этом голосовом аудиопотоке. Таким образом, тональные сигналы не удаляются из звонка, а просто отправляются другим способом. - person philnash; 15.07.2021
comment
О, это очень интересно. Итак, если я правильно понимаю, js-клиент twilio-video присоединяется к комнате, мой бэкэнд выполняет вызов pstn и присоединяет его к комнате, и теперь js-клиент twilio-video будет получать DTMF пользователя pstn через тот же SDK для видео twilio. ?? любая идея, какие js-вызовы я должен сделать, чтобы удержать этот другой канал, на котором идут dtmfs? - person Hilikus; 15.07.2021
comment
Нет, DTMF, который отправляется вне диапазона, отбрасывается Twilio вне контекста <Gather> или <Dial> (где вы можете положить трубку с помощью *). Нет доступа к этому внеполосному каналу из Voice API или Video SDK. - person philnash; 15.07.2021
comment
ах! я понял :( спасибо за помощь, фил - person Hilikus; 15.07.2021
comment
Извините, это не то, на что вы надеялись. - person philnash; 15.07.2021