在ASP.Core中的Twilio录音

时间:2017-05-19 15:21:29

标签: asp.net .net twilio twiml

我正在建立一个新的应用程序,其功能之一是卖方和客户之间的沟通。出于这个原因,我想使用Twilio API。 因此,让我们想象一下,我们有两个人:卖家和客户,他们将进行沟通。我的想法是这两个人不应该互相知道真实的电话号码,所以我从Twilio购买了两个电话号码,一个用于卖家,一个用于客户,并在我的应用程序中连接真实电话。为方便起见,我在Twilio控制台中创建了TwiML应用程序,并为语音调用设置了REQUEST和STATUS CALLBACK URL,这些URL在我的应用程序中指向Webhook。我的应用程序基于.Net Core,但我仍然使用完整的.Net4.6框架,因为.Net Core没有一些.dll,而且C#的Twilio助手也已经为完整的.Net框架构建。无论如何,我的webhook方法如下:

    [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向这个webhook发出请求,它打电话给真正的卖家' s来自虚拟客户编号的编号。这没关系并按预期工作。 当通话结束时,Twilio向STATUS CALLBACK网址发出请求,这个方法看起来像:

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

在第一种方法中,您可以看到我想记录内部原因的对话,我期望在第二种方法中使用RecordingSid和RecordingUrl,但我总是将它们取为空。我可以在Twilio控制台中看到录制内容,但无法通过API获取,这就是我的问题。我花了很多时间阅读了很多文档,但没有找到明确的解释如何正确地做到这一点。有人能帮我吗?

1 个答案:

答案 0 :(得分: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");
}