2017-05-19 56 views
0

我正在建立一個新的應用程序,其功能之一是賣方和客戶之間的溝通。爲此,我想使用Twilio API。因此,讓我們想象我們有兩個人:賣家和客戶,他們將要溝通。我的想法是,這兩個人不應該知道對方的真實電話號碼,所以我從Twilio購買兩個電話號碼,一個賣方和一個顧客,並將它們與我的應用中的真實電話連接起來。爲了方便起見,我在Twilio控制檯中創建了TwiML應用程序,併爲語音呼叫設置了REQUEST和STATUS CALLBACK URL,這些URL在我的應用程序中指向Webhook。我的應用程序基於.Net Core,但我仍然使用完整的.Net4.6框架,因爲對於.Net Core沒有一些.dll,似乎Twilio helper for C#也是爲.Net框架構建的。無論如何,我的網絡掛接方法是這樣的:Twilio錄音在ASP.Core

[HttpPost("call")] 
    public IActionResult IncomingCall(VoiceRequest request) { 
     // some logic 
     VoiceResponse response = new VoiceResponse(); 
     response.Dial({real_seller_number}, callerId: {virtual_customer_number}, record: "record-from-ringing-dual"); 

     return Content(response.ToString(), "application/xml"); 
    } 

在這裏,讓我們想象一下,我的客戶,我想打電話給賣家,我把它的虛擬Twilio號,Twilio使得這個網絡掛接一個請求,並撥打電話從虛擬客戶號碼到真實的賣家號碼。這是可以的,並按預期工作。 當通話結束後,Twilio使得以狀態回調URL的請求,這methos樣子:

[HttpPost("call/callback")] 
    public IActionResult IncomingCallCallback(StatusCallbackRequest request) { 
     // some logic 
     return Ok("Handled"); 
    } 

在第一種方法,你可以看到我要記錄的內部原因談話,我希望RecordingSid和RecordingUrl在第二種方法中,但我總是讓它們爲空。我可以在Twilio控制檯中看到錄製內容,但無法通過API獲取它們,這是我的問題。我花了很多時間閱讀了很多文檔,但沒有找到明確的解釋如何正確執行。有人能幫我嗎?

回答

0

Twilio開發人員在這裏傳播。

在錄製電話時,您收到statusCallback請求時錄音可能沒有準備好。相反,你應該設置一個recordingStatusCallback URL,這將在錄製完成並準備就緒時調用。

[HttpPost("call")] 
public IActionResult IncomingCall(VoiceRequest request) { 
    // some logic 
    VoiceResponse response = new VoiceResponse(); 
    response.Dial({real_seller_number}, 
     callerId: {virtual_customer_number}, 
     record: "record-from-ringing-dual", 
     recordingStatusCallback: {url_in_your_application_that_processes_recordings} 
    ); 

    return Content(response.ToString(), "application/xml"); 
} 
+0

您好,感謝的答案,但我沒有看到撥號的方法recordingStatusCallback參數,見https://github.com/twilio/twilio-csharp/blob/master/src/Twilio/TwiML/VoiceResponse .cs – Valentin

+0

你說得對!我已經向API團隊提到了這一點,他們正在考慮發佈一個包含所有參數的發佈。 – philnash