2012-03-02 77 views
1

我正在构建应用程序,其中一个功能与Twilio集成在一起。Twilio Rest Api的出站呼叫未执行

我已经用Asp.Net Mvc 3完成了所有的IVR流程,并且所有工作都正常。 但是,其中一个功能是让用户输入一个电话号码并让Twilio拨打该号码并在其他用户回答后播放。

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

我在做什么是这样的:我有一个从twilio


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调用后的响应和呼出呼叫不会引发任何错误接收数据的操作。 我在做什么错?

谢谢!

回答

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请求过程中发生了什么。

+0

哦,很酷。我会试试看,谢谢! – Ioni 2012-03-02 18:42:21

+1

我修正了它,结果发现,其余的API会执行POST和我所有GET的操作,所以我改变它并使用CallOptions对象作为参数。 – Ioni 2012-03-05 17:02:41

0

我有类似的问题,并希望在这里发布,以防其他人发现像我这样的问题。 (当时这是搜索“InitiateOutboundCall”时唯一显示的内容)。

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

该文档明确指出该URL必须是绝对的,而我已经放弃了“http://”。添加完成后,所有事情都按预期工作