2017-05-20 10 views
1

が更新されていない私のコードJavaScript変数は、ここで

var isInput = false; 

app.post('/webhook', function (req, res) { 
    var data = req.body; 

     if (data.object === 'page') { 

     data.entry.forEach(function(entry) { 
      var pageID = entry.id; 
      var timeOfEvent = entry.time; 
     entry.messaging.forEach(function(event) { 
     if (event.message) { 
      receivedMessage(event); 
     } else if(event.postback){ 
      receivedPostback(event); 
     } 
     else { 
      console.log("Webhook received unknown event: ", event); 
     } 
     }); 
    }); 

    res.sendStatus(200); 
    } 
}); 

function receivedMessage(event) { 
    var senderID = event.sender.id; 
    var recipientID = event.recipient.id; 
    var timeOfMessage = event.timestamp; 
    var message = event.message; 

    console.log("Received message for user %d and page %d at %d with message:", 
    senderID, recipientID, timeOfMessage); 
    console.log(JSON.stringify(message)); 

    var messageId = message.mid; 
    var messageText = message.text; 
    var messageAttachments = message.attachments; 

    if (messageText) { 

    switch (messageText) { 

     case 'Vote': 
     delayText(senderID, "Send your message ", 1000); 
     isInput = true; 
     break; 

     default: 
     if(isInput){ 
      token = messageText; 
      sendTextMessage(senderID, "token: " + token) 
      isInput = false; 
     } else { 
     sendTextMessage(senderID, "isInput: " + isInput) 
     } 
     break; 
    } 
    } 
} 

である私は、デフォルトの場合には

if (isInput) { 
    token = messageText; 
    sendTextMessage(senderID, "token: " + token) 
    isInput = false 
} 

を実行したいのですが、それは動作しますことはありません。

上記のコードからわかるように、ユーザーが「Vote」というメッセージを送信した場合、私のチャットボットは「メッセージを送信」し​​、isInputをtrueとして更新します。しかし、私は再びボットにメッセージを送信するとisInputはfalseと言います。 isInputをどのように更新する必要がありますか?

答えて

1

で試してみてください。 switch文の上のコードを見てください。

... 

isInput = false; // this is always reseting isInput to false 

... 

if (isInput) { 
    token = messageText; 
    sendTextMessage(senderID, "token: " + token) 
    isInput = false; 
} 
1

receivedMessage()メソッドを呼び出すたびに、isInput変数がfalseに設定されます。 isInputは常にfalseであるため、このコードが実行されることはありません。このコード

var isInput = false; 

app.post('/webhook', function (req, res) { 
    var data = req.body; 

     if (data.object === 'page') { 

     data.entry.forEach(function(entry) { 
      var pageID = entry.id; 
      var timeOfEvent = entry.time; 
     entry.messaging.forEach(function(event) { 
     if (event.message) { 
      receivedMessage(event); 
     } else if(event.postback){ 
      receivedPostback(event); 
     } 
     else { 
      console.log("Webhook received unknown event: ", event); 
     } 
     }); 
    }); 

    res.sendStatus(200); 
    } 
}); 

function receivedMessage(event) { 
    var senderID = event.sender.id; 
    var recipientID = event.recipient.id; 
    var timeOfMessage = event.timestamp; 
    var message = event.message; 

    console.log("Received message for user %d and page %d at %d with message:", 
    senderID, recipientID, timeOfMessage); 
    console.log(JSON.stringify(message)); 

    var messageId = message.mid; 
    var messageText = message.text; 
    var messageAttachments = message.attachments; 

    if (messageText) { 

    switch (messageText) { 

     case 'Vote': 
     delayText(senderID, "Send your message ", 1000); 
     isInput = true; 
     break; 

     default: 
     if(isInput){ 
      token = messageText; 
      sendTextMessage(senderID, "token: " + token) 
      isInput = false; 
     } else { 
     sendTextMessage(senderID, "isInput: " + isInput) 
     } 
     break; 
    } 
    } 
} 
関連する問題