0

我正在尝试通过 REST API添加暂停和 DTMF 音(类似于Dial an extension using DTMF tones after a pause / Twilio Studio )。我正在使用 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)

我对解决方案持开放态度 - 一种向执行选项(第一个块)添加音调/暂停的方法,或者一种让调用选项(第二个块)实际工作的方法。说实话,让第二个选项起作用是我的偏好。

4

1 回答 1

0

这就是我最终这样做的方式 - 不确定是否有更好的方法。我使用了 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. 然后我在拨出电话后添加了一个功能小部件。这个小部件获取一个函数参数,其中 key 是 digit 和 value = {{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 音调作为变量传递,以及我的电话号码变量。

于 2019-03-14T17:56:16.447 回答