LoginSignup
10
11

More than 5 years have passed since last update.

Facebook Messenger Platform + Bluemix on Node.jsでオウム返しBot

Last updated at Posted at 2016-04-14

Messenger Platform/Getting Started
FacebookドキュメントとQiitaの記事を参考にオウム返しBotを作成しました。
つぎはぎですが、一応動くはず。。

流れ

  1. Bluemixのセットアップ
  2. Facebook Messenger Platformの設定

Bluemixのセットアップ

  1. IBM SDK for Node.js アプリケーションを作成
  2. スターターコードをダウンロード
  3. 以下のファイルを変更
  4. BluemixへPush
app.js
var express = require('express');
var request = require('request');

var app = express();
var bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());

var token = "<YOUR TOKEN>";

function sendTextMessage(sender, text) {
  messageData = {
    text:text
  }

 var options = {
    url: 'https://graph.facebook.com/v2.6/me/messages',
    qs: {access_token:token},
    method: 'POST',
    json: {
      recipient: {id:sender},
      message: messageData,
    }
  }

  request.post(options, function(error, response, body){
    if (!error && response.statusCode == 200) {
      console.log(body.name);
    } else {
      console.log('error: '+ response.statusCode);
    }
  });
}

app.get('/webhook/', function (req, res) {
  if (req.query['hub.verify_token'] === '<VALIDATION TOKEN>') {
    res.send(req.query['hub.challenge']);
  }
  res.send('Error, wrong validation token');
})

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;
      sendTextMessage(sender, "Text received, echo: "+ text.substring(0, 200));
    }
  }
  res.sendStatus(200);
});

var server = app.listen(process.env.PORT || 3000, function() {
  console.log('Listening on port %d', server.address().port);
});
manifest.yml
applications:
- disk_quota: 1024M
  host: <YOUR HOST>
  name: HelloWorld
  command: node app.js
  path: .
  domain: <YOUR DOMAIN>
  instances: 1
  memory: 256M

package.json
{
  "name": "cloudant_boilerplate_nodejs",
  "version": "0.0.2",
  "private": true,
  "scripts": {
    "start": "node app.js"
  },
  "dependencies": {
    "express": "4.13.x",
    "ejs": "2.4.x",
    "cloudant": "1.4.x",
    "body-parser": "1.14.x",
    "method-override": "2.3.x",
    "morgan": "1.6.x",
    "errorhandler": "1.4.x",
    "connect-multiparty": "2.0.x",
    "request": "2.71.x" //<-追加行
  },
  "repository": {},
  "engines": {
    "node": "4.2.x"
  }
}

Facebook Messenger Platformの設定

  1. Facebookページの作成
  2. Messenger -> Webhookを設定
  3. アクセストークン発行 -> app.jsにアクセストークンを設定して再度BluemixにPush
  4. アプリ申請 -> curl -ik -X POST "https://graph.facebook.com/v2.6/me/subscribed_apps?access_token=<token>"
  5. Facebook上でBotの動作確認

こちらの記事を参考にさせていただきました。
Messengerで簡単なBotつくる(Facebook Messenger Platform from F8)

10
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
11