使用Twilio框架的目标:
当前正在工作:
Python代码调用通过TWiML Bins托管的菊花链式TwiML
问了3个问题
该通话将被记录,并可以通过Twilio控制台收听
问题/无法解决的问题:
任何建议表示赞赏:
from twilio.rest import Client
account_sid = 'XXXXXXXXXXXXXXXX'
auth_token = 'XXXXXXXXXXXXXXXX'
client = Client(account_sid, auth_token)
call = client.calls.create(
url='http://www.companyname.com/Auditor/MessageName.xml',
to="+61437231327",
from_='+61437231327',
record=True
)
print(call.sid)
print(call.status)
#print(call.transcription_text)
print(call.uri)
-------- TWIML hosted website MessageName.xml ---------------
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<Say voice="alice">Collecting Name </Say>
<Gather input="speech" timeout="3" numDigits="1" action="https://handler.twilio.com/twiml/someTwilBinURLID">
<Say>Please say Name. Press # when complete</Say>
</Gather>
</Response>
-------- TwimlBin TWIML - 2nd required voice response ---------------
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<Gather input="speech" finishOnKey="#" timeout="3" numDigits="1" action="https://handler.twilio.com/twiml/someTwilBinURLIDForNextVoice">
<Say>Please say how old you are. Press # when complete</Say>
</Gather>
</Response>
-------- TwimlBin TWIML -3rd required voice response ---------------
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<Gather input="speech" finishOnKey="#" timeout="3" numDigits="1">
<Say>Please say what your location is. Press # when complete</Say>
</Gather>
</Response>
答案 0 :(得分:1)
这里是Twilio开发人员的传播者。
这里进展不错,但是您将不得不改变一些地方才能达到目标。
首先,finishOnKey
和numDigits
仅在<Gather>
用于DTMF输入时才是适当的属性。对于语音输入,Twilio将听用户讲话,并且在他们停留timeout
(或speechTimeout
)时间后,将提交结果。因此,对于语音输入,您不能让用户在完成输入后按#
,但对话应该只在超时时间内进行。
接下来,通过请求将抄录发送到<Gather>
's action
attribute。要捕获转录的文本,您需要将操作设置到您控制的服务器上,以便您可以阅读文本。
如果您不想站立自己的应用程序,则可以使用Twilio Function来实现。以下代码将读取并记录结果,然后在调用中返回下一个TwiML:
exports.handler = function(context, event, callback) {
console.log(event.SpeechResult); // SpeechResult is the transcribed text
const twiml = new Twilio.twiml.VoiceResponse();
twiml.gather({ input: 'speech', timeout: 3 }).say('The next question');
callback(null, twiml);
})
您可能希望将转录的文本保存到您自己的数据库中。
我注意到您正在用Python编写应用程序。您也可以在自己的Python服务器上执行此操作。
最后,我不确定是什么原因导致TwiML Bins延迟。可能值得使用timeout
值来优化它。
让我知道是否有帮助。