2017-05-20 1 views
1

를 업데이트하지 않는 것은 저는 여기에 기본 경우자바 스크립트 변수가

if (isInput) { 
    token = messageText; 
    sendTextMessage(senderID, "token: " + token) 
    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; 
    } 
    } 
} 

이지만, 그것은 작동하지 않습니다.

위의 코드에서 알 수 있듯이 사용자가 'Vote'라는 메시지를 보내면 내 chatbot에서 '메시지 보내기'로 응답하고 isInput을 true로 업데이트합니다. 그러나 나는 봇에 메시지를 다시 보낼 때 isInput이 거짓이라고 말합니다. isInput을 (를) 어떻게 업데이트해야합니까?

답변

1

isInput 항상 false 때문에이 코드는 실행되지 않을 것으로 봅니다 . 위의 switch 문을 살펴보십시오.

... 

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

... 

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

receivedMessage() 메소드를 호출 할 때마다 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; 
    } 
    } 
} 
관련 문제