2017-04-24 22 views
0

我正在使用Twilio構建交互式語音助理。我的目標是在通話時錄音,處理錄製的音頻和在Twilio中錄製多個用戶答案

的部分這就是答案/語音網絡掛接(一個將收到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

你的第一句話似乎缺少一些東西 – Andy

+0

@Andy它似乎語法是好的,至少它適用於我。問題是Philnash在下面解釋我們不能在/ getRecording webhook中發送新的twiml,但是一旦進程完成,實際上就會將調用重定向到另一個。謝謝! –

回答

1

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> 

然後,當你得到錄像回調您重定向來電者走出這個循環。

讓我知道這是否有幫助。

+0

謝謝,這正是我們正在尋找的解決方案,這很有道理。我已經將/ getRecording twiml移動到了另一個/ sendRecording,它在音頻處理後重定向並且工作。另外感謝關於循環的提示,這是特別有用的,因爲這樣我們也會向用戶播放不同的消息,具體取決於處理的數量。 –