在Twilio中记录多个用户答案

时间:2017-04-24 23:44:46

标签: twilio twiml

我正在使用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'它确实有效......但是我们不确定我们正在使用的录音是否真的生成了,对吧?

感谢您的帮助!

1 个答案:

答案 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>

然后,当您收到录音回调时,您将调用者重定向到此循环。

让我知道这是否有帮助。