Twilio StatusCallback不工作:

时间:2016-10-28 21:40:24

标签: c# asp.net rest twilio-api

所以我用twilio语音构建应用程序,并且我已经完成了所有电话呼叫工作。但是我在理解回调应该具有的参数方面有点麻烦。

我已按照文档中所述注册了网址:

                options.From = formatPhoneNumber(callout.callback_number);
                options.To = formatPhoneNumber(offer.employee_phone_number);
                options.Url = TwilioCallBotController.TwilioCalloutScriptURL;
                options.StatusCallback = TwilioCallBotController.StatusCallbackURL;
                options.StatusCallbackEvents = new []{"initiated", "ringing", "answered", "completed" };
                options.StatusCallbackMethod = "POST";

我也在这里制作了一个回调方法,但是我没有太多运气来找出这些参数应该如何与他们的API一起使用。我不知道这个不起作用背后的原因是什么:

[HttpPost]
        public ActionResult TwilioStatusCallback()
        {
            var twiml = new Twilio.TwiML.TwilioResponse();
            twiml.Say("This is a test");
            string CallSid = Request.Form["CallSid"];
            string CallStatus = Request.Form["CallStatus"];
            Debug.WriteLine("Status Callback Delivered");
            Shift_Offer shoffer = db.Shift_Offers.Where(s => s.twillio_sid == CallSid).ToList()[0];
            shoffer.status = CallStatus.ToString();// + DateTime.Now.ToString();
            return TwiML(twiml);
        } 

编辑: 事实证明,API对方法签名非常敏感(调用之前在许多微软DLL中抛出了一个未找到方法的异常,包括System.Web和System.Web.Mvc。

所以我实际上已经通过使用空方法签名(无参数)来获取软件来调用该方法。

但是我仍然无法从HTTPPOST获取参数

编辑:因此,经过进一步调查,我设法检查了请求。我之后的值I' m存在于Request.Form [" foo"]中,但它们似乎没有被放入我声明的两个字符串中。我已经删除了[" HttpPost"]属性以尝试解决问题,但我真的不知道为什么我可以在调试器中看到这些值,但是他们&# 39;不要翻译成记忆。

public ActionResult TwilioStatusCallback()
{
    var twiml = new Twilio.TwiML.TwilioResponse();
    string sid = Request.Form["CallSid"];
    string status = Request.Form["CallStatus"];
    Shift_Offer shoffer = db.Shift_Offers.Where(s => s.twillio_sid == sid).ToList()[0];
    shoffer.status = status;// + DateTime.Now.ToString();
    return TwiML(twiml);
} 

1 个答案:

答案 0 :(得分:1)

最后一个问题是数据库没有被保存。

刚刚添加了一个db.SaveChanges(),我们很好。