C# Twilio MVC,如何使电话号码/信息动态化

C# Twilio MVC,如何使电话号码/信息动态化,c#,C#,我正在使用VisualStudio。这适用于Asp.net web应用程序(.net framework) 此解决方案作为webcore应用程序也是可以接受的 我想能够输入信息的消息和电话号码动态,但我不知道如何“暂停”的程序,使这可以发生。我了解动态部分,可以使用Javascript来实现 基本上我想要的是一个应用程序,它会弹出一个网页,最终用户在其中输入收件人号码和消息,然后单击send to send 我认为这很简单,但不是那么简单:( 我有C#as的快速启动代码- 好的,我假设你想发送短

我正在使用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"];
        }
    }