LoginSignup
5
5

More than 5 years have passed since last update.

Facebook Messenger Bot で リッチメッセージ を表示する

Posted at

環境構築

動かす環境を構築

基本的なところはこちらを参照ください (Facebook Messenger Bot を Hubot で構築して Heroku で動かす)
ただし、前記事の Adapter では、リッチメッセージに対応していないので、今回は hubot-fbを使います

Adpter を Install

$ npm install hubot-fb --save

Procfile 書き換え

Heroku で実行させる際の Adapter の指定を変更するため Procefile を書き換えます

Procfile
web: bin/hubot -a fb

必要な環境変数を追加

以下の環境変数を設定します (他にも有りますが最低限以下を設定します その他はこちら参照)

config variable type default description
FB_PAGE_ID string - Facebook Page の ID 右のURLから参照 https://www.facebook.com/<YOUR PAGE USERNAME>/info?tab=page_info.
FB_APP_ID, FB_APP_SECRET string - APP ID と、APP Secret 右のURLから参照 https://developers.facebook.com/apps/.
FB_WEBHOOK_BASE string - Webhook の ベースURL この値と FB_ROUTE_URL を接続すると Webhook URL になる, [例] FB_WEBHOOK_BASE=https://mybot.comFB_ROUTE_URL=/webhook を接続すると Webhook URL は 'https://mybot.com/webhook' となる
FB_PAGE_TOKEN string - Page access token. を右のURLから取得する https://developers.facebook.com/apps/<YOUR APP ID>/messenger/.
FB_ROUTE_URL string /hubot/fb Webhook の Root Path 今回は '/webhook' を設定する
FB_VERIFY_TOKEN string - Webhook を設定した際の Veryfy Token を指定する 今回は 'botapp' を指定する
$ heroku config:set FB_PAGE_ID=<FB_PAGE_ID を指定する>
$ heroku config:set FB_APP_ID=<FB_APP_IDを指定する>
$ heroku config:set FB_APP_SECRET=<FB_APP_SECRETを指定する>
$ heroku config:set FB_WEBHOOK_BASE=http://mybot.com
$ heroku config:set FB_PAGE_TOKEN=<FB_PAGE_TOKENを指定する>
$ heroku config:set FB_ROUTE_URL=/webhook
$ heroku config:set FB_VERIFY_TOKEN=botapp

Script を書く

文字列を表示する

  robot.hear /こんちは/i, (res) ->
    res.send 'ちはこん'

TextMesage.jpg

Button 形式で表示する (Postback)

attachment 以下のデータ構造は Messenger Platform Document のButton Templateを参照ください

  robot.hear /こんちは/i, (res) ->
    # attatchment の構造を richMsg 以下に定義する
    res.envelope.fb = {
      richMsg: {
      attachment: {
        type: "template",
          payload: {
            template_type: "button",
            text: "おかっちの今の気分を教えてほしいじょんぴー",
            buttons: [
              {
                type: "payload",
                title: "最高"
                payload: "FEELING_SAIKOU"
              },
              {
                type: "payload",
                title: "いい感じ"
                payload: "FEELING_IIKANJI"
              },
              {
                type: "payload",
                title: "いまいち"
                payload: "FEELING_IMAICHI"
              },
            ]
          }
        }
      }
    }

    res.send()

ButtonTemplate.jpg

Button 形式で表示する (URL Link)

attachment 以下のデータ構造は Messenger Platform Document のButton Templateを参照ください

  robot.hear /こんちは/i, (res) ->
    # attatchment の構造を richMsg 以下に定義する
    res.envelope.fb = {
      richMsg: {
      attachment: {
        type: "template",
          payload: {
            template_type: "button",
            text: "おかっちの今の気分を教えてほしいじょんぴー",
            buttons: [
              {
                type: "web_url",
                title: "Gmo-research"
                url: "http://gmo-research.jp"
              },
              {
                type: "web_url",
                title: "infoq.jp"
                url: "http://infoq.jp"
              },
            ]
          }
        }
      }
    }

    res.send()

ButtonLink.jpg

画像を表示する (URL指定)

attachment 以下のデータ構造は Messenger Platform Document のImage Attachmentを参照ください

    res.envelope.fb = {
      richMsg: {
        attachment: {
          type: "image",
          payload: {
            url: "(画像へのURL)"
          }
        }
      }
    }

ImageAttachment.jpg

その他

他にも感なものも有ります

5
5
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
5
5