如何使用C#和twilio API发送短信

时间:2017-03-06 05:44:57

标签: c# visual-studio sms twilio twilio-api

我正在尝试创建一个用户界面,用户可以在其中输入她的凭据和电话号码,并使用Twilio API

向某些收件人发送消息

正如所解释的那样,我创建了我的帐户并初始化了身份验证密钥和令牌

    private void button1_Click(object sender, EventArgs e)
    {
         string ssid = twilioSSIDBox.Text;
         string token = twilioTokenBox.Text;
         string number = twilioNumberBox.Text;


        var client = new TwilioRestClient(Environment.GetEnvironmentVariable(ssid), Environment.GetEnvironmentVariable(token));
        client.SendMessage(number, "+158965220", "Teting API message!");

    }

经过多次测试(硬编码ssid和令牌和编号)和文档咨询后,仍然没有在visual studio平台上发送消息,我没有收到任何错误消息或其他任何内容

所以我的问题是我错过了什么?我是否需要某个允许visual studio能够发送短信的库?

我正在使用Visual Studio 2015和Windows 10平台

谢谢

2 个答案:

答案 0 :(得分:5)

我最终解决了我的问题

所以这不适用于VS2015平台:

    var client = new TwilioRestClient(Environment.GetEnvironmentVariable(ssid), Environment.GetEnvironmentVariable(token));
    client.SendMessage(number, "+158965220", "Teting API message!");

即使我已经使用nuget console

安装了Twilio api版本4.7.2

我再次做了以下事情:

Install-Package Twilio

比Visual Studio建议我在代码中添加对API的引用

 using Twilio;
using Twilio.Rest.Api.V2010.Account;
using Twilio.Types;

感谢以下Example

这有效:

 TwilioClient.Init(accountSid, authToken);

        var message = MessageResource.Create(
            to: new PhoneNumber(toNumber),
            from: new PhoneNumber(FromNumber),
            body: "Hello from C#");

所以我的结论可能是一个过时的库,因为当我使用NUGET安装时:

Install-Package Twilio -Version 4.7.2

我不知道它为什么不起作用

P.S:我不确定它是否相关,但我也使用NUGET控制台安装了它,它的迁移帮助或者可能没有,但我觉得我必须提到它:

Install-Package RestSharp 

答案 1 :(得分:3)

看看您是否可以从以下代码中获得任何帮助:

/// <summary>
    /// Sends alert as SMS 
    /// </summary>
    /// <param name="details"></param>
    /// <returns></returns>
    public static Message SendSms(DeliveryDetails details)
    {
        var messageResult = new Message();
        try
        {
            if (details?.ToNumber != null)
            {
                var toNumberList = details.ToNumber.ToList();
                if (toNumberList.Count > 0)
                {
                    foreach (var toNumber in toNumberList)
                    {
                        messageResult = Twilio.SendMessage(FromNumber, toNumber, $"{details.Subject}\n\n{details.Message}");

                        if (messageResult == null)
                        {
                            logger.Error(string.Format(
                                "Error connecting to Twilio, message sending failed to {0}",
                                toNumber));
                        }
                        else if (messageResult.RestException != null)
                        {
                            logger.Error(string.Format("Twilio Error Message Description - {0}",
                                messageResult.RestException.Message));
                        }
                        else
                        {
                            logger.Info(String.Format("SMS {0} deliverd to {1}", messageResult.Body, messageResult.To));
                        }
                    }
                }
                else
                {
                    logger.Error("ToNumber List Empty");
                }
            }
            else
            {
                logger.Error("ToNumber List Null");
            }
        }
        catch (Exception e)
        {
            logger.Error(String.Format("An error occurred while sending the message\n{0}", e.Message));
        }

        return messageResult;
    }