Twilio: TwiML ‹Hangup› глагол, не завершающий вызов

Недавно я столкнулся с проблемой с глаголом TwiML <Hangup>. У меня простая установка, которая работает следующим образом:

У меня есть номер Twilio, настроенный для приема входящих вызовов, и я настроен на использование корзины TwiML, которая выглядит следующим образом:

<?xml version="1.0" encoding="UTF-8"?>
<Response>
    <Record timeout="5" transcribe="false" trim="trim-silence" maxLength="10"/>
    <Hangup/>
</Response>

Цель заключалась в том, чтобы номер перехватил входящий звонок, записал с него не более 10 секунд звука, отключил тишину и затем положил трубку. Все это делает правильно, кроме зависания.

В этот момент вместо того, чтобы повесить трубку, после того, как запись закончится по достижении maxLength 10 секунд, начнется новая запись. Это продолжается до конца разговора и обычно приводит к 2-5 записям на звонок. Как будто глагол <Hangup> полностью игнорируется. Вот пример того, что я имею в виду: Экран сведений о вызове Twilio

Я хотел бы знать, сталкивался ли кто-нибудь с этим раньше (и что вы сделали, чтобы обойти это), или что я могу сделать, чтобы мой вызов зависал правильно после записи. Мое текущее решение таково:

<?xml version="1.0" encoding="UTF-8"?>
<Response>
    <!-- This is a hacky solution. I found by accident that passing an invalid action argument causes the call to forcibly hangup (after the recording is completed) - hence the action "breakcall" below. = -->
    <Record timeout="5" transcribe="false" trim="trim-silence" 
            action="breakcall" maxLength="10"/>
</Response>

Однако это взлом, и я бы предпочел найти правильный способ сделать это.

Спасибо!


person smithcs    schedule 11.07.2018    source источник


Ответы (1)


Вы столкнулись с этой проблемой, потому что

Любые глаголы TwiML, встречающиеся после <Record>, недоступны.

Это описано здесь: (https://www.twilio.com/docs/voice/twiml/record).

Что касается вашего первого фрагмента кода, без action

Если «действие» не указано, по умолчанию будет запрашиваться URL-адрес текущего документа.

Как следствие, вы входите в цикл, и это объясняет, почему вы получаете несколько записей.

Как исправить:

Создайте другую корзину, которая отвечает <Hangup/>, и укажите на нее action первой корзины.

первая корзина

<?xml version="1.0" encoding="UTF-8"?>
<Response>
    <Record 
      action="[hangup_bin_url]" 
      timeout="5" 
      transcribe="false" 
      trim="trim-silence" 
      maxLength="10" 
    />
</Response>

второй контейнер

<?xml version="1.0" encoding="UTF-8"?>
<Response>
    <Hangup />
</Response>

Надеюсь, это поможет.

person Alex Baban    schedule 11.07.2018
comment
Спасибо! Сейчас все работает. Я ценю помощь. - person smithcs; 11.07.2018