2017-10-02 3 views
0

私は現在twilioトレイルアカウントを使用しています。 私はAzure(機能アプリ)にTwilioを統合しました。twilioを使用して複数の確認済みの連絡先にSMSを送信

#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(); 
       }} 

2つの電話番号がログに示されているが、メッセージが最後の電話番号(最後の行に存在する電話番号)に送られます。 複数の番号に一度にメッセージを送信するために電話番号を反復処理する方法はありますか?

+0

私はC#のAPIに精通していないです。しかし、私は各電話番号のために新しいSMSMessageインスタンスを作成し、それに応じてそれを送信します。または、C#がクローニングをサポートする場合は、SMSMessageインスタンスのクローンを作成します。 – AMartinNo1

+0

複数のインスタンスを作成しようとしましたが、 '' smsmessage1 'パラメータをバインドしてSMSMessage&と入力できません。パラメータTypeがバインディングによってサポートされていることを確認してください。 ' – TheChosenOne94

答えて

0

SMSは、電子メールではない、それはメッセージごとに1つだけの受信者を持つことができます。したがって、あなたはデータベースにあるように、(自分の受信者を持つ)多くのメッセージを送信する必要があります。あなたのケースでは、あなたの言及したコードによると

+0

複数の連絡先に同じメッセージを送信する必要があります。 Twilioはこのオプションを提供しますか?多分配列の使用で、おそらく。 – TheChosenOne94

+0

同じボディと異なる受信者番号を持つメッセージの配列を作成するだけです。 –

+0

あなたはそれを行う方法の例がありますか? – TheChosenOne94

1

は、ちょうどあなたの紺碧の関数内から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(); 
    } 
    } 
+0

Hey Tom、2つのエラーが発生しました '名前' smsmessage 'は現在のコンテキストに存在しません'と '未割り当てパラメータの使用' smsmessages ' ' – TheChosenOne94

+0

コードを更新しました。 –

+0

「smsmessage」という名前のローカルまたはパラメータは、このスコープで宣言することはできません。その名前は、ローカルまたはスコープを定義するためにローカルのスコープ内で使用されているためです--- " smsmessagesは現在のコンテキストに存在しません " – TheChosenOne94

関連する問題