C# Twilio MVC,如何使电话号码/信息动态化
我正在使用VisualStudio。这适用于Asp.net web应用程序(.net framework) 此解决方案作为webcore应用程序也是可以接受的 我想能够输入信息的消息和电话号码动态,但我不知道如何“暂停”的程序,使这可以发生。我了解动态部分,可以使用Javascript来实现 基本上我想要的是一个应用程序,它会弹出一个网页,最终用户在其中输入收件人号码和消息,然后单击send to send 我认为这很简单,但不是那么简单:( 我有C#as的快速启动代码-C# Twilio MVC,如何使电话号码/信息动态化,c#,C#,我正在使用VisualStudio。这适用于Asp.net web应用程序(.net framework) 此解决方案作为webcore应用程序也是可以接受的 我想能够输入信息的消息和电话号码动态,但我不知道如何“暂停”的程序,使这可以发生。我了解动态部分,可以使用Javascript来实现 基本上我想要的是一个应用程序,它会弹出一个网页,最终用户在其中输入收件人号码和消息,然后单击send to send 我认为这很简单,但不是那么简单:( 我有C#as的快速启动代码- 好的,我假设你想发送短
好的,我假设你想发送短信。此外,我假设你正在使用Asp.Net MVC。Twilio语音稍微复杂一点,因为Twilio会多次回电话以获取语音脚本和更新状态。如果你需要电话树行为,则会更复杂 SMS回调也不止一次,但它们一遍又一遍地调用同一个回调URL,没有什么特别之处 流程应如下所示: Web界面->Asp.Net MVC控制器操作->数据库->Twilio 我将把web界面留给您,并给出一些后端的例子 您需要一个数据库,其中有一个表“Message” 邮件应包含以下列(至少,您可能需要更多): 消息\u id\u pk twilio_sid(可为空) 信息内容(如果您希望将信息保留在一个SMS段中,则限制为160个字符,这需要考虑运营成本) 状态(可为空) 收件人\电话 控制器操作:
[Authorize] //assuming you'll want to have users authenticate before they can send the sms
[RequireHttps]
public async Task<ActionResult> SendSMS(
[Bind(Include = "message_id_pk, message_content, recipient_phone"] Message message)
{
db.Messages.Add(message);
TwilioSmsSender.SendSMS(message);
return RedirectToAction("Success");
}
在TwilioCallBackController.cs中(您需要在此处处理来自Twilio的回调)
[validatewilitorequest]
公共行动结果(mscallback)()
{
字符串sid=Request.Form[“SmsSid”];
List msg=db.Message.Where(x=>x.twilio_sid==sid.tolistSync();
如果(msg.Count>0)
{
Message=msg.First();
message.status=Request.Form[“SmsStatus”];
}
}
您必须获取用户输入,将其存储在变量中,然后将其传递给Twilio的API。如果您不确定如何在web应用程序中从用户处获取输入,那么您需要返回web应用程序教程并仔细阅读。对于我们来说,在堆栈溢出回答中解释这个主题实在太基本/太宽泛了。您在尝试吗要通过短信或语音发送消息?根据您的需要,方法有点不同。看起来您正在使用短信,但我想在键入答案之前确认一下。
[Authorize] //assuming you'll want to have users authenticate before they can send the sms
[RequireHttps]
public async Task<ActionResult> SendSMS(
[Bind(Include = "message_id_pk, message_content, recipient_phone"] Message message)
{
db.Messages.Add(message);
TwilioSmsSender.SendSMS(message);
return RedirectToAction("Success");
}
public static void SendSMS(Message message)
{
const string accountSid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
const string authToken = "your_auth_token";
TwilioClient.Init(accountSid, authToken);
var message = MessageResource.Create(
body: message.message_content,
from: new Twilio.Types.PhoneNumber("+15017122661"), //note: you can let your Twilio Messaging service handle the phone number, I recommend you look into that
to: new Twilio.Types.PhoneNumber(message.recipient_phone)
statusCallback: new Uri(TwilioCallBackController.SMSCallBackURL)
);
message.twilio_sid = message.Sid;
db.SaveChanges();
}
[ValidateTwilioRequest]
public ActionResult TwilioSMSCallback()
{
string sid = Request.Form["SmsSid"];
List<Message> msg = db.Message.Where(x=> x.twilio_sid == sid).ToListAsync();
if(msg.Count > 0)
{
Message message = msg.First();
message.status = Request.Form["SmsStatus"];
}
}