如何在C#Asp.net中使用Twilio获得响应和回复短信

时间:2019-02-08 13:04:58

标签: asp.net asp.net-mvc twilio twilio-api

如何使用Twilio和C#Asp.net获得响应和回复短信。如何发送出站SMS短信?

2 个答案:

答案 0 :(得分:1)

  

Asp.net

     

安装软件包Twilio.AspNet.Mvc -DependencyVersion HighestMinor

TwiML是Twilio标记语言,这只是说它是带有Twilio定义的特殊标签的XML文档,可帮助您构建SMS和语音应用程序。使用帮助程序库时,您不必担心自己生成原始XML。当然,如果您愿意这样做,那么我们不会阻止您。

您已经有了代码,现在您需要一个可以提供给Twilio的URL。 Twilio只能访问Internet上的公共服务器。这意味着您需要将Web应用程序发布到Web或云托管提供商(其中有很多),可以将其托管在自己的服务器上,也可以使用ngrok之类的服务来公开本地开发。机器上网。我们通常只建议将后者用于开发和测试目的,而不建议用于生产部署。

配置Webhook URL现在,您已经为Web应用程序的TwiML应答生成例程提供了URL,可以配置Twilio电话号码,以便在有新的SMS(或MMS)消息出现时呼叫您的Webhook URL。

using Twilio;
using Twilio.Rest.Api.V2010.Account;
using Twilio.Types;
using Twilio.TwiML;
using Twilio.AspNet.Mvc;
using Twilio.AspNet.Common;

public class SmsController : TwilioController
{
    public TwiMLResult Index(SmsRequest incomingMessage)
    {
        var FromNumber = incomingMessage.From.Substring(2);
        var ComingMessage = incomingMessage.Body.ToLowerInvariant();
        var messagingResponse = new MessagingResponse();
        if (ComingMessage == "accept" || ComingMessage == "reject")
        {
            DataTable dtMsg = DBContext(FromNumber, ComingMessage);
            var SendMessage = dtMsg.Rows[0]["SendMsg"].ToString();
            messagingResponse.Message(SendMessage);
        }
        else
        {
            messagingResponse.Message("Invalid Response. Please reply with ACCEPT or REJECT.");
        }

        return TwiML(messagingResponse);
    }

    public DataTable DBContext(string FromNumber, string ComingMessage)
    {
        SqlParameter[] PM = new SqlParameter[]
        {
            new SqlParameter("@Mode", "Mode_Name"),
            new SqlParameter("@FromNumber", FromNumber),
            new SqlParameter("@ComingMessage", ComingMessage)
        };
        DataSet ds = SqlHelper.ExecuteDataset(new SqlConnection(SqlHelper.GetConnectionString()), CommandType.StoredProcedure, "Sp_Name", PM);
        DataTable dt = ds.Tables[0];
        return dt;
    }
}

答案 1 :(得分:0)

这取自于我写的有关设置Twilio和我们的Conveyor扩展程序(免费,请转到Tools-> Extensions)以进行本地开发的文章。

我们将使用Conveyor通过隧道提供对我们的Web项目的传入访问,从而使您的webhooks在本地主机上被调用。通过在“工具”->“扩展”菜单中搜索输送机,可以使用输送机。

设置MVC Web应用程序 首先,我们将在Visual Studio中设置一个简单的webhooks MVC演示应用程序。当收到文本消息(SMS)时,我们将使用Twilio服务通知我们的应用程序,并使用特定的消息进行响应。本教程还可用于Twilio的其他API,包括聊天,语音和视频。

此示例项目旨在向您展示如何使用传送带来简化本地计算机上Webhooks的使用。如果您需要有关如何设置网络钩子的更多详细信息,请在线查看众多教程和项目。

创建一个新项目,我们将创建一个空的ASP.NET MVC C#项目。我们不会托管在云中,所以请不要选择Azure。

enter image description here

添加NuGet软件包 为了使用Twilio帮助程序库,我们需要通过程序包管理器控制台安装Twilio NuGet程序包。输入以下行,然后按回车键;

     Install-Package Twilio.AspNet.Mvc -DependencyVersion HighestMinor

创建新的控制器 要收听Twilio Webhook,我们将创建一个MVC控制器。收到短信后,Twilio会致电我们的网络电话。

右键单击项目中的Controllers文件夹,选择Add> Controller并添加一个空的MVC 5 Controller。您可以根据需要命名控制器。

enter image description here

接下来,您将需要添加using语句以导入Twilio名称空间;

        using Twilio.AspNet.Common;
        using Twilio.AspNet.Mvc;
        using Twilio.TwiML;

并更改Controller类以继承自TwilioController。

现在,我们添加以下代码;

        [HttpPost]
        public TwiMLResult Index(SmsRequest request)
        {
            var response = new MessagingResponse();
            response.Message("Hello World");
            return TwiML(response);
        }

当然,您可以根据需要对Webhook进行编码,但对于我们的示例,我们将响应消息设置为“ Hello World”,因此当我们的Webhook收到有关Twilio号码的SMS文本通知时,它将以我们自己的方式响应消息。

运行应用程序 现在,我们可以继续运行我们的应用程序。由于这是一个简单的项目,唯一的内容就是我们的控制器,因此您将看到一个错误页面。没关系,我们只需要在Visual Studio中运行我们的项目即可使用webhook。

enter image description here

使用传送带 现在该应用程序正在运行,我们可以使用Conveyor获取可以提供给Twilio的可公开访问的URL。在“传送带”窗口中单击“通过Internet访问”将为我们提供所需的URL。您此时可能需要注册一个帐户。

对veyor.cloud URL的调用将通过隧道传输到您的本地主机,因此我们将控制器名称添加到veyor.cloud URL,然后将其添加到Twilio设置。

enter image description here

就是这样。我们已经准备好进行测试!

现在,当我将短信发送到Twilio号码时,来自我们应用程序的消息将发送回原始手机号码。

enter image description here