c# - Twilio StatusCallback 不工作 :

标签 c# asp.net rest twilio-api

所以我正在构建一个带有 twilio 语音的应用程序,并且我已经让所有的电话调用工作正常。但是我在理解我的回调应该有哪些参数时遇到了一些麻烦。

我已经按照文档中的描述注册了 URL:

                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 对方法签名非常敏感(调用之前在许多 Microsoft DLL 中抛出一个方法未找到异常,包括 System.Web 和 System.Web.Mvc。

所以我实际上已经获得了使用空方法签名(无参数)来调用方法的软件。

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

编辑:因此,经过进一步调查,我设法检查了请求。我所追求的值存在于 Request.Form["foo"] 中,但它们似乎没有被放入我声明的两个字符串中。我已经删除了 ["HttpPost"] 属性以尝试解决问题,但我真的不知道为什么我可以在调试器中看到这些值,但它们没有转换到内存中。

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);
} 

最佳答案

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

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

关于c# - Twilio StatusCallback 不工作 :,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40313548/

相关文章:

javascript - 在 AngularJS REST 中使用 JSON

REST api vs REST Webservice vs RESTFul Web 服务

c# - 如何从另一个 in-behind xaml 代码访问变量 in-behind xaml 代码

c# - Web 表单上的消息和输入框

asp.net - ObjectDataSource不调用SelectCount方法

asp.net - 在 ASP.NET Web 项目中编辑并继续

javascript - ASP :hyperlink is not directing to the linked url

java - Spring RestTemplate 抛出 InvalidMediaTypeException

c# - System.ArgumentException : Object is not an ADODB. RecordSet 或 ADODB.Record

c# - 单击前更改 Bootstrap 模式上的标签文本