2017-12-30 33 views
3

でTwilioでSMSグループフォワーダを作成すると、ここで私が達成しようとしているものです:はNodeJS

テキストメッセージが送られたときの名前と番号のリスト(私の「グループ」)
  • を設定
    • Twilio番号、グループ内のすべてのメンバーに転送する

    ハイレベルでは、アイデアは十分に簡単です。私のプログラミング/構文スキルは錆びていますが、私はいくつかの助けが大好きです。

    私はTwilio Functionsを使用しており、正常にメッセージを送受信できました。今私は、グループを反復するこのアイデアをどのように運ぶかについて固執しています。私は私が持っていると信じて

    var groupmembers = { 
    
        jonathan:{ 
         name: 'Jonathan', 
         number: '+0000000000' 
        }, 
        joshua:{ 
         name: 'Joshua', 
         number: '+1110000000' 
        } 
    
    } 
    
    exports.handler = function(context, event, callback) { 
    
        // Set some values for later use 
        this.fromNumber = event.From 
        this.body = event.Body || '' 
    
        let twiml = new Twilio.twiml.MessagingResponse(); 
    
        groupmembers.forEach(function(member) { 
    
        // Skip sending if it's the same number 
        if (member.number === this.fromNumber) { 
         return; 
        } 
    
        // Otherwise, let's send a mesage! 
        twiml.message("Hello World").to(member.number); 
    
        callback(null, twiml); 
        }); 
    
    }; 
    

    問題:ここで

    は、私がこれまで書いてきたものだ

    • 適切に私の配列または「辞書」を
    • ないように設定する方法がわからされていません"to"変数を "to"変数に渡すための正しい構文を知っているmessage
    • NodeJSでループを実行するための適切な構文がわからない私は 'グループメンバーは機能ではありません')

    ありがとう、すべてのフィードバックと私を正しい方向に向けるために!

  • 答えて

    3

    あなたが持っている間違いはかなり簡単です。 groupmembersはオブジェクトであり、配列が必要です。

    あなたが代わりにこれに似た何かをしたいことがあります。

    それとは別に
    var groupmembers = [{ 
         name: 'Jonathan', 
         number: '+0000000000' 
        }, 
        { 
         name: 'Joshua', 
         number: '+1110000000' 
        }] 
    

    を、それは大丈夫のように私には見えます。

    +0

    これは本当に役に立ちました。スラヴァに感謝します! –

    3

    スラヴァからより多くの検索と正しい方向のポイントを見つけ出すことができました。完全なコードは次のとおりです。

    /** 
    * Represents a search trough an array. 
    * @function search 
    * @param {Array} array - The array you wanna search trough 
    * @param {string} key - The key to search for 
    * @param {string} [prop] - The property name to find it in 
    * Props: https://stackoverflow.com/a/33097318/315818 
    */ 
    
    function search(array, key, prop){ 
        // Optional, but fallback to key['name'] if not selected 
        prop = (typeof prop === 'undefined') ? 'name' : prop;  
    
        for (var i=0; i < array.length; i++) { 
         if (array[i][prop] === key) { 
          return array[i]; 
         } 
        } 
    } 
    
    var groupmembers = [ 
        { 
         name: 'Jonathan', 
         number: '+000000000' 
        }, 
        { 
         name: 'Joshua', 
         number: '+111111111' 
        } 
    ]; 
    
    exports.handler = function(context, event, callback) { 
    
        let twiml = new Twilio.twiml.MessagingResponse(); 
    
        // Search for the group member that matches the sender number 
        let sender = search(groupmembers, event.From, 'number'); 
    
        // Now, loop through each of the group members 
        groupmembers.forEach(function(member) { 
    
        // Skip sending if it's the same number 
        if (member.number === event.From) { 
         return; 
        } 
    
        // Now, forward on the message to the group member, using the sender's name 
        twiml.message(`${sender.name}: ${event.Body}`, { 
         to: member.number 
        }); 
    
        }); 
        // Loop ended 
    
        callback(null, twiml); 
    
    }; 
    
    +0

    共有いただきありがとうございます。 –