2017-06-25 25 views
0

私はチュートリアルでファンページのFacebookチャットボットを設定する方法を行っています。 これは完璧に機能し、ユーザーがキーワードを正確に入力した場合にポップアップするキーワードとメッセージを変更することもできます。複数のキーワードを含むFacebookのチャットボット

ここでは、回答を含む複数のキーワードを追加する方法はわかりません。

var express = require('express') 
 
var bodyParser = require('body-parser') 
 
var request = require('request') 
 
var app = express() 
 

 
app.set('port', (process.env.PORT || 5000)) 
 

 
// Process application/x-www-form-urlencoded 
 
app.use(bodyParser.urlencoded({extended: false})) 
 

 
// Process application/json 
 
app.use(bodyParser.json()) 
 

 
// Index route 
 
app.get('/', function (req, res) { 
 
    res.send('Hello world, I am a chat bot') 
 
}) 
 

 
// for Facebook verification 
 
app.get('/webhook/', function (req, res) { 
 
    if (req.query['hub.verify_token'] === 'token') { 
 
     res.send(req.query['hub.challenge']) 
 
    } 
 
    res.send('Error, wrong token') 
 
}) 
 

 
// Spin up the server 
 
app.listen(app.get('port'), function() { 
 
    console.log('running on port', app.get('port')) 
 
}) 
 

 

 
// API End Point - 
 

 
app.post('/webhook/', function (req, res) { 
 
    messaging_events = req.body.entry[0].messaging 
 
    for (i = 0; i < messaging_events.length; i++) { 
 
     event = req.body.entry[0].messaging[i] 
 
     sender = event.sender.id 
 
     if (event.message && event.message.text) { 
 
      text = event.message.text 
 
      if (text === 'hi') { 
 
       sendGenericMessage(sender) 
 
       continue 
 
      } 
 
      sendTextMessage(sender, "parrot: " + text.substring(0, 200)) 
 
     } 
 
     if (event.postback) { 
 
      text = JSON.stringify(event.postback) 
 
      sendTextMessage(sender, "Postback received: "+text.substring(0, 200), token) 
 
      continue 
 
     } 
 
    } 
 
    res.sendStatus(200) 
 
}) 
 

 
var token = " enter token here" 
 

 
// function to echo back messages 
 

 
function sendTextMessage(sender, text) { 
 
    messageData = { 
 
     text:text 
 
    } 
 
    request({ 
 
     url: 'https://graph.facebook.com/v2.6/me/messages', 
 
     qs: {access_token:token}, 
 
     method: 'POST', 
 
     json: { 
 
      recipient: {id:sender}, 
 
      message: messageData, 
 
     } 
 
    }, function(error, response, body) { 
 
     if (error) { 
 
      console.log('Error sending messages: ', error) 
 
     } else if (response.body.error) { 
 
      console.log('Error: ', response.body.error) 
 
     } 
 
    }) 
 
} 
 

 

 
// Send an test message back as two cards. 
 

 
function sendGenericMessage(sender) { 
 
    messageData = { 
 
     "attachment": { 
 
      "type": "template", 
 
      "payload": { 
 
       "template_type": "generic", 
 
       "elements": [{ 
 
        "title": "title 1", 
 
        "subtitle": "subtitle", 
 
        "image_url": "url of image", 
 
        "buttons": [{ 
 
         "type": "web_url", 
 
         "url": "https://www.facebook.com/", 
 
         "title": "Facebook" 
 
        }, { 
 
         "type": "web_url", 
 
         "url": "https://www.reddit.com", 
 
         "title": "Reddit" 
 
        },{ 
 
         "type": "web_url", 
 
         "url": "https://twitter.com/", 
 
         "title": "Twitter" 
 
        }], 
 
       }, { 
 
        "title": "Title 2 ", 
 
        "subtitle": "Subtitle", 
 
        "image_url": "imgurl", 
 
        "buttons": [{ 
 
         "type": "postback", 
 
         "title": "title", 
 
         "payload": "payload", 
 
        },{ 
 
         "type": "postback", 
 
         "title": "title", 
 
         "payload": "payload", 
 
        }, { 
 
         "type": "postback", 
 
         "title": "title", 
 
         "payload": "payload", 
 
        }], 
 
       }, { 
 
        "title": "title", 
 
        "subtitle": "subtitle", 
 
        "image_url": "http://www.google.com", 
 
        "buttons": [{ 
 
         "type": "postback", 
 
         "title": "title", 
 
         "payload": "payload", 
 
        },{ 
 
         "type": "postback", 
 
         "title": "title", 
 
         "payload": "payload", 
 
        }, { 
 
         "type": "postback", 
 
         "title": "title", 
 
         "payload": "payload", 
 
        }], 
 
       }] 
 
      } 
 
     } 
 
    } 
 
    request({ 
 
     url: 'https://graph.facebook.com/v2.6/me/messages', 
 
     qs: {access_token:token}, 
 
     method: 'POST', 
 
     json: { 
 
      recipient: {id:sender}, 
 
      message: messageData, 
 
     } 
 
    }, function(error, response, body) { 
 
     if (error) { 
 
      console.log('Error sending messages: ', error) 
 
     } else if (response.body.error) { 
 
      console.log('Error: ', response.body.error) 
 
     } 
 
    }) 
 
}

答えて

0

あなたが言うことを意味するか - あなたは同じ答えのために複数のキーワードを処理する必要がありますか?そうであれば、facebookはWebhook上のテキストとしてメッセージを送信します。あなたはそれをキャッチし、それに応じてメッセージをFacebookに送り返す必要があります。

[if(text === 'hi')]のように、サンプルメッセージ(この場合はhi)がシステムに保存され、回答がマップされている必要があります。

関連する問題