Facebook Messengerのchatbotリリースを振り返って
こんにちは、Loco技術Gの古田です。
突然ですが、、、
relux公式Facebookページ(http://www.facebook.com/rlx.jp)のメッセンジャーで、
チャットボットによる旅館・ホテルの検索サービス「reluxトラベルボット」が開始!
(詳しくはこちらのプレスリリースをご覧ください)
http://m.me/rlx.jp こちらのリンクからお試しいただけます。
ということで、今回は開発に至る背景から苦労したところなどなど、
振り返りも兼ねてご紹介しようと思います。
はじまり
きっかけは社長の鶴の一声、、、ではなく。
弊社は新しい技術や仕組みにいち早く取り組もうとする文化があります。
だからFacebook Messenger Platformが公開されたなら、
その可能性を知るためにも Tryしてみよう!
という流れになるのは自然なことでした。
まずリリースをすることを決める。で実装を考えていかないと
これってリリースできるかなとか本当に必要あるのかとか
やらない言い訳はいくらでも出てきてしまいます。
時代の流れというか人々の中心にチャットがあることは明らかであり、
お客様とのコミュニケーションを大事にしている弊社にとっては
うまく活かしていきたいプラットフォームでした。
また、自分で作ろうと思った理由としては2つあり、
1つは元から自分自身でもAIには興味持っていたこと。
もう1つは、LINEなどchatbotの流れが来ているけれど、
具体的な活用イメージを描くためにも直接作りたいという点でした。
設計
他社の事例も参考にしながらユーザーストーリーを作りました。
既に良い事例がいくつも出ていたのでかなり参考になりました。
(参考例)
http://m.me/hiponcho
http://m.me/cnn
http://m.me/techcrunch
http://m.me/alterra.cc
設計で気を付けたことは3つです。
- 盛り込み過ぎない。必要最低限のミニマムスタート。
- 実用的か。ちゃんと使ってもらえるものか。
- reluxらしい機能か。
これを元にまずはGoogleSlide5,6枚の簡単なものを作成しました。
今回はreluxの検索機能とコンシェルジュへと繋げる機能としました。
実装
まずは足がかりとして、こちらのイベントへ参加。
最初は何をやっていいか全く分からず当日を迎えましたが、
雰囲気を察して、鸚鵡返しを作ると良さそうだと分かり実装開始。
色々なサイトを参考にしながらHerokuを活用して実現できました。
ここまでは意外とあっさり。
周りの参加者もお昼頃にはそこまで完了している様子。
次に、検索を実現するためにDBを参照する方法を検討。
既存のrelux自体はPHPで書いているので、
PHPでbotAPIを作成するという手もありました。
ただ、本体機能と切り離したい&アクセス数が読めない中で
そのためのリソースを確保するのも難しいと思い、
Lambda + API Gatewayで実現することにしました。
その勉強会ではLambda環境までいかずにタイムアップ。
続きは宿題となりました。
〜〜〜
Lambdaの導入、ここは意外とはまりました。
RDSを参照するためVPCにアクセスできるように設定しつつ、
Messengerへ投稿するために外部へ通信できる必要がありました。
そのためのNAT ゲートウェイをサブネットに設定するのですが、
通信できない状況が続きました。。
試行錯誤を繰り返し環境を構築。(方法はどこかで書けたら書きますw)
Lambda使って鸚鵡返しに成功したことを確認できました。
次はメッセージ内容の保存です。
検索機能ではchatやりとりの中で入力した条件を利用するので、
テキスト内容とメッセージの種類(日付・泊数・人数など)を
保存する先としてAWSのDynamoDBを選択しました。
これはLambdaで標準に使えるaws-sdkを使えば簡単に実装できます。
最後に検索条件に従って宿泊できる施設を検索する機能です。
これもSDKを使えばDBとの接続は難しくありません。
クエリを書く際にはセキュリティに配慮して実装しました。
途中気づいたのが写真付きのパネルは最大10個までという点です。
今回は施設を探すエリアをパネルから選択できるようにしたのですが、
本来relux上のエリア区分は12あります。10では全て選択できません。
統合も検討しましたが、まずはサクッと進めるために
取り扱い施設数が少ないエリアを除くという一時対応としました。
他にも難しいなと思ったのはチャットだから自由な表現ができる点。
同じ意味を伝えるのにも様々な表現がある。
かつ検索フローと関係なく、いつでも好きなテキストを打ててしまう。
全ての言葉に正しく反応することを考え始めると時間がかかるので
検索中とそれ以外とで状態を定義して、
それぞれに一定の文言を返す様にしました。
申請
Facebook開発者 - 開発者向けFacebook から申請を行います。
一連の操作が含まれている動画を用意する必要があります。
出したはいいのですが、最初の申請では2週間以上待たされました。
変だなと思っているところで社内の人間が他社に聞くと2日程度で完了したとのこと。
普通ではなさそうなので思い切って審査をキャンセルし再度申請したところ2日で通過。。
審査完了したのにOKボタンを押し忘れてたのかな。。。
2週間のロスは痛いですが、無事にリリースできました。
リリース反響
プレスリリース当日は凄まじい勢いで投稿数が増えました。
普段は月に数名というところ、初日で1000名を超える方からアクセスいただきました。
おかげで社内コンシェルジュも大慌て、嬉しい悲鳴でした。
実際やってみることで世の中の注目度を身をもって感じました。
おわりに
世の中の流れに乗るということのインパクトの大きさを感じると共に
初期に参加することによる反響の大きさ、その重要性を改めて実感。
これからサービスや組織が大きくなっても初動スピードは大事にしていきます。
そして、今回は本当にプレイヤーとして存分に楽しませてもらいました。
新しいことにtryするって良いですね〜
ということで、こんなスピード感でいろいろ挑戦したい!
というエンジニアの方がいれば、
ぜひ一度弊社に遊びに来てください。いつでもwelcomeです!