我试图通过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)
我对解决方案持开放态度 - 要么为执行选项添加音调/暂停(第一个块),要么让调用选项(第二个块)实际工作。真相被告知让第二个选项正常工作是我的偏好。
这就是我最终做到的方式 - 不确定是否有更好的方法。我使用了client.studio(第一块代码),因为我知道它至少有效。
Record Call
= true即可。作为传入REST请求的一部分,不需要传递参数。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音调作为变量传递,以及我的电话号码变量。