我正在使用Twilio构建交互式语音助手。我的目标是记录部分对话,处理录制的音频和
这是/ voice webhook的答案(会收到Twilio的电话)
<Response>
<Play>./welcome</Play>
<Record maxLength="10" action="/processing" recordingStatusCallback="/getRecording"></Record>
</Response>
处理音频并提供答案可能需要很长时间,所以我在/处理结束时添加了暂停:
<Response>
<Play>./ok</Play>
<Pause length="10"></Pause>
</Response>
这是使用/ getRecording
结束时的答案<Response>
<Play>./answer</Play>
<Record maxLength="10" action="/processing" recordingStatusCallback="/getRecording "></Record>
</Response>
/ welcome,/ ok和/ answer导致相应的音频文件。
所以我能够执行所有步骤,我可以在我的日志中检查/ getRecording实际执行到最后并且twiml再次发回,但是/ getRecording之后的/ answer永远不会被Twilio执行(和调用刚结束)。
你有什么指导吗? Twilio是否在同一个电话上接受多个录音?
注意:出于某种原因,如果不使用'recordingStatusCallback'而使用/ getrecording作为'action'它确实有效......但是我们不确定我们正在使用的录音是否真的生成了,对吧?
感谢您的帮助!
答案 0 :(得分:2)
Twilio开发者传道者在这里。
调用了您的/getRecording
端点,但这是调用上下文中的异步webhook。将TwiML返回recordingStatusCallback
不会影响当前的通话。
相反,您应该将REST API用于modify the call,方法是根据对录制文件的响应将其重定向到您要执行的下一个TwiML。
希望录制的时间少于您使用的10秒暂停,但您可能需要在/processing
端点添加一个循环,以便呼叫不会挂断您的呼叫者。您可以通过redirecting来电回复重新开始:
<Response>
<Play>./ok</Play>
<Pause length="10"></Pause>
<Redirect>./processing</Redirect>
</Response>
然后,当您收到录音回调时,您将调用者重定向到此循环。
让我知道这是否有帮助。