不执行使用Twilio Rest Api的出站呼叫

时间:2012-03-02 13:53:10

标签: asp.net-mvc-3 twilio restsharp

我正在构建一个应用程序,其中一个功能与Twilio集成。

我已经使用Asp.Net Mvc 3完成了所有IVR流程,到目前为止一切正常。 但是,其中一项功能是让用户输入一个电话号码,并让Twilio拨打该号码,并在其他用户应答后播放。

我正在使用Twilio REST API进行调用,但调用没有完成,我在应用程序或Twilio上没有任何错误。

我正在做的是:我有一个从twilio

接收数据的Action

public ActionResult Dial(Call request, int opt)
{

    var twilio = new TwilioRestClient(Configuration.TwilioAccKey, Configuration.TwilioAuthKey);
    twilio.InitiateOutboundCall(Configuration.TwilioPhoneNumber, 
                                "+" + request.Digits,
                                string.Format("{0}/Calls/Endorsement/Play?opt={1}", Configuration.BaseUrl, opt));

    var response = new TwilioResponse();
    response.Redirect("/Calls/Endorsement/Play?opt=" + opt, "GET");
    return TwiML(response);
}

正在执行REST调用之后的响应,并且出站调用不会引发任何错误。 我做错了什么?

谢谢!

2 个答案:

答案 0 :(得分:1)

启动出站呼叫的代码看起来是正确的。

可能是从REST API返回异常。我已经更改了您的代码以使用InitiateOutboundCall方法回调参数来检查RestException属性是否不为null:

var twilio = new TwilioRestClient(Configuration.TwilioAccKey,
                                  Configuration.TwilioAuthKey);
twilio.InitiateOutboundCall(Configuration.TwilioPhoneNumber,
                        "+" + request.Digits,
                        string.Format("{0}/Calls/Endorsement/Play?opt={1}", Configuration.BaseUrl, opt),
                        call =>
                        {
                            if (call.RestException != null)
                            {
                                //handle the rest error
                            }
                        }
                    );

如果RestException为null并且在Twilio调试器日志中没有记录任何内容,那么您最好的选择可能是打破Fiddler,看看在实际请求API期间发生了什么。

答案 1 :(得分:0)

我遇到了类似的问题,想在这里发帖以防其他人像我一样发现这个问题。 (当时这是搜索“InitiateOutboundCall”时唯一显示的内容。)

在我的情况下,我的应用程序或Twilio都没有抛出异常。对InitiateOutboundCall的调用根本就没有做任何事情。

文档清楚地表明URL必须是绝对的,我已经不使用“http://”。添加完毕后,一切都按预期工作。