使用twilio向多个经过验证的联系人发送短信

时间:2017-10-02 18:54:23

标签: c# azure twilio twilio-api

我目前正在使用twilio trail帐户。 我已经在天蓝色(功能应用程序)中集成了Twilio。

#r "Microsoft.Azure.ApiHub.Sdk"
#r "Newtonsoft.Json"
#r "System.Data"
#r "Twilio.Api"

using System;
using System.Configuration;
using System.Data.SqlClient;
using System.Data.Common;
using Microsoft.Azure.ApiHub;
using Newtonsoft.Json.Linq;
using Twilio;

    public static void Run(TraceWriter log, out SMSMessage smsmessage)
    {

            smsmessage = new SMSMessage();
          string phonenumber = "";
         string MessageBody = "sample message";
             using (SqlConnection conn = new SqlConnection(str))
                    {

                        conn.Open();
                    var sqlStr = "SELECT [phone] FROM [dbo].[tbl_ContactTable] where [ID] = 2";  //It returns two rows with twilio verified phone numbers

                    using (SqlCommand cmd = new SqlCommand(sqlStr, conn))
                    {

                        var dataReader = cmd.ExecuteReader();
                        if(dataReader.HasRows)
                        { 
                       while(dataReader.Read())
                        {

                            phonenumber = dataReader[0].ToString();
                                log.Info($" phonenumber {phonenumber}");

                                smsmessage.Body = MessageBody;
                                smsmessage.To = phonenumber;
                            }
                        }

                        dataReader.Close();
                    }
                    conn.Close();
                }}

日志中显示两个电话号码,但只会向最后一个电话号码(最后一行中显示的电话号码)发送一条消息。 有没有办法迭代电话号码一次将消息发送到多个号码。

3 个答案:

答案 0 :(得分:1)

根据您提到的代码,在您的情况下,您的azure函数中只有1个。根据我的经验,如果您想发送多条消息,请尝试使用ICollector作为输出。有关多个外包的更多详细信息,我们可以参考Queue output sample in C#。请尝试使用以下代码。

public static void Run(TraceWriter log, ICollector<SMSMessage> smsmessage) 
{
   string phonenumber = "";
   string MessageBody = "sample message";
   using (SqlConnection conn = new SqlConnection(str))
   {

        conn.Open();
        var sqlStr = "SELECT [phone] FROM [dbo].[tbl_ContactTable] where [ID] = 2";  //It returns two rows with twilio verified phone numbers

         using (SqlCommand cmd = new SqlCommand(sqlStr, conn))
         {

            var dataReader = cmd.ExecuteReader();
            if(dataReader.HasRows)
            { 
              while(dataReader.Read())
              {
                 var sms = new SMSMessage();  //changed code
                 phonenumber = dataReader[0].ToString();
                 log.Info($" phonenumber {phonenumber}");
                 sms.Body = MessageBody;
                 sms.To = phonenumber;
                 smsmessage.Add(sms); //changed oode
               }

             }

              dataReader.Close();
        }
              conn.Close();
     }
  }

答案 1 :(得分:0)

我不知道要放在Azure中,但这是我如何使用for循环将C#发送到多个数字的方法:

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

namespace TwilioSendMulti
{
    public class Program
    {

        static void Main(string[] args)
        {

           const string accountSid = "put account Sid Here or use class variable";

           const string authToken = "put auth Token Here or use class variable";

           string[] MultiNums = { "+1212number1", "+1212number2" };

           for (int i = 0; i < MultiNums.Length; i++)
            {
                TwilioClient.Init(accountSid, authToken);
                var message = MessageResource.Create(
                body: "Sent thru an Array in C# with Twilio!",
                from: new Twilio.Types.PhoneNumber("+1212mytwilio#"),
                to: new Twilio.Types.PhoneNumber(MultiNums[i]));
                Console.WriteLine(message.Sid);   
            }
            Console.ReadLine();
        }
    }
}

答案 2 :(得分:-1)

短信不是电子邮件,每封邮件只能有一个收件人。因此,您需要在数据库中发送尽可能多的消息(每个消息都有自己的收件人)。