いろいろいじっているので、備忘録のために出来る事をまとめます。
heroku + railsで実験してます。
Bot For Messengerとは
Facebookページでメッセージを送ると、そのメッセージに応じてBotが対応できます。
たとえば、ECで使うなら、以下のように、Botがカテゴリを提示してくれて、ユーザがどのカテゴリか選ぶと、そのカテゴリの商品一覧をだせたりします。
ユーザのボット用メッセンジャーへの動線
Web Pluginsや、Messenger Codesなどでユーザへの動線とできます。
Web PluginsはWebページにボタンを配置する方法です。モバイルユーザなら直接、Messengerアプリに遷移させることができます。
Messenger Codesは以下のようなQRコードのようなものです。これをMessengerで読み込ませて動線としています。
その他に、IDでもユーザはボット用メッセンジャーを探すことができます。
Welcome Screen
Bot用メッセンジャーにユーザがログインしたあと、最初のページでウェルカムスクリーン(初期画面)を設定することができます。
Welcome Screenには、通常のテキストメッセージと、Structured Messageというのを設定できます。
ユーザからメッセージが来たときの処理
ユーザからメッセージがきたとき、開発者が設定した、URLにFacebookからwebhookが飛んできます。
Webhookは20秒以内に返答しなければならず、8時間以上、そのwebhookが失敗するばあいは、リクエストがこなくなります。
なお、ユーザのメッセージが複数まとめられて送られてくる可能性もあるので適切に対処しなければいけません。
ジョブキューなどに入れて実装するのがよさそうです。
ユーザに送れるメッセージの種類
ユーザからのアクション(テキストを送る、画像を送る、ボタンが押されるなど)をフックとして、以下のメッセージが送れます。
- テキストメッセージ(Text Message)
- イメージ(Image (url), Image (file)): URLかファイルで送ります
- Structured Message - Button Template
- Structured Message - Generic Template
Structured Messageは以下のようになっており、画像とともにボタンが表示できます。
それぞれのボタンがクリックされたときに、Botがどのようなアクションをするかは、ボタンに設定された値をサーバが処理することにより行います。
Structured MessageのGeneric Templateを使うと、カルーセルのように、横にスライドさせれる複数のアイテムを並べる事ができます。
なお、Generic Templateは以下の制限があります。
- タイトル: 45文字
- サブタイトル: 80文字
- ボタンのタイトル: 20文字
- ボタンの数: 最大3つ
- カルーセルのアイテム数: 最大10個
- 画像のアスペクト比: 横1.91 対 縦1
画像は上記の比で用意しないと見切れてしまいます。
実装メモ
- 開発していたときに、いちいちwebhookを試すためにデプロイするのは面倒なので、webhookをlocaltunnelでローカルにリクエストを飛ばしながらやるのがいいかなと思いました。