Twilio Studio REST API - пауза и отправка кодов DTMF

Я пытаюсь добавить паузы и сигналы DTMF (аналогично Наберите добавочный номер с помощью сигналов DTMF после паузы / Twilio Studio) через REST API. Я использую вспомогательные библиотеки python. Я уже пробовал использовать то же решение, что и было предложено выше, но получаю сообщение об ошибке, и я не уверен, почему.

Это работает [успешно запускает поток Studio], но не дает возможности добавлять паузы или тоны (насколько мне известно):

from twilio.rest import Client
import configuration as configuration

account_sid = configuration.account_sid
auth_token = configuration.auth_token
client = Client(account_sid, auth_token)

execution = client.studio \
                  .flows(configuration.flow_sid) \
                  .executions \
                  .create(to=configuration.test_number, from_=configuration.twlio_number)

print(execution.sid)

Это дает мне ошибку 401 в журналах (интересно, когда я использовал ту же базовую концепцию с автопилотом, у меня не было ошибок ... однако клиент хочет, чтобы воспроизводился человеческий голос, а не текст для чтения голоса робота, а у автопилота этого нет. вариант пока что). Он действительно выполняет вызов, но сразу же сообщает: «Извините, произошла ошибка приложения».

from twilio.rest import Client
import configuration as configuration
#This version calls a known number just to test it.  Called via CLI.

account_sid = configuration.account_sid
auth_token = configuration.auth_token

client = Client(account_sid, auth_token)
call = client.calls.create(
                        record=True,
                        send_digits= configuration.insurance_digits,
                        url='https://studio.twilio.com/v1/Flows/'+configuration.flow_sid+'/Executions',
                        to= configuration.test_number,
                        from_= configuration.twlio_number
                    )

print(call.sid)

Я открыт для решений - либо способ добавить тональные сигналы / паузы к варианту исполнения (первый блок), либо способ, чтобы опция вызова (второй блок) действительно работала. По правде говоря, я предпочитаю, чтобы второй вариант работал.


person deroses    schedule 13.03.2019    source источник


Ответы (1)


Вот как я это сделал - не уверен, что есть способ лучше. Я использовал client.studio (первый блок кода), так как знал, что он, по крайней мере, работает.

  1. Запись - это просто - просто установите Record Call = true на виджете. Нет необходимости возиться с передачей параметра как части входящего запроса REST.
  2. Отправка цифр. Немного больше вовлечено.

A. Сначала я передал параметр digits как часть оператора create.

    execution = client.studio \
                  .flows(configuration.flow_sid) \
                  .executions \
                  .create(parameters={'digits':configuration.insurance_digits},to=configuration.test_number, from_=configuration.twlio_number)

Б. Затем я добавил виджет функции после того, как был сделан исходящий вызов. Этот виджет получает параметр функции, где ключом является цифра, а значение = {{trigger.message.digits}}. Обратите внимание, что сразу после этого функционального виджета требуется новый виджет, который пропускается (см. https://support.twilio.com/hc/en-us/articles/360019580493).

C. Наконец, есть простая функция, которая получает цифры, создает TwiML и использует переданную переменную для установки правильных тонов. digits=event.digits дает мне то, что мне нужно сказать, и оттуда это просто TwiML. Конец функции должен перенаправить обратно в ваш поток, поэтому что-то вроде twiml.redirect('https://webhooks.twilio.com/v1/Accounts/ACxxxxxxxxxxxxx/Flows/FWxxxxxxxxxxxxxxxxxx?FlowEvent=audioComplete');

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

person deroses    schedule 14.03.2019