我目前正在使用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();
}}
日志中显示两个电话号码,但只会向最后一个电话号码(最后一行中显示的电话号码)发送一条消息。 有没有办法迭代电话号码一次将消息发送到多个号码。
答案 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)
短信不是电子邮件,每封邮件只能有一个收件人。因此,您需要在数据库中发送尽可能多的消息(每个消息都有自己的收件人)。