Twilio Studio REST API - пауза и отправка DTMF-кодов - PullRequest
0 голосов
/ 13 марта 2019

Я пытаюсь добавить паузы и тоны 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 в логах (интересно, что когда я использовал базовую концепцию с Autopilot, у меня не было ошибок ... однако клиент хочет, чтобы человеческий голос воспроизводился, а голос робота не читал текст, а Autopilot не ' пока не имею такой возможности). Он действительно выполняет вызов, но сразу заявляет ~ «Извините, произошла ошибка приложения».

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)

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

1 Ответ

0 голосов
/ 14 марта 2019

Вот как я это сделал - не уверен, что есть лучший способ. Я использовал 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)

B. Затем я добавил виджет функции после исходящего звонка. Этот виджет получает параметр функции, где ключ является цифрой, а значение = {{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 в качестве переменной вместе с переменными моего телефонного номера.

...