C# Twilio状态回调不工作:
所以我正在用twilio voice构建一个应用程序,我已经让所有的电话通话功能正常工作了。但是我在理解回调应该包含哪些参数时遇到了一点困难 我已按照文档中的说明注册了URL:C# Twilio状态回调不工作:,c#,asp.net,rest,twilio-api,C#,Asp.net,Rest,Twilio Api,所以我正在用twilio voice构建一个应用程序,我已经让所有的电话通话功能正常工作了。但是我在理解回调应该包含哪些参数时遇到了一点困难 我已按照文档中的说明注册了URL: options.From = formatPhoneNumber(callout.callback_number); options.To = formatPhoneNumber(offer.employee_phone_number);
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中引发了method not found异常,包括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(),我们很好