一般公開されたAmazonのAIサービスLexでFacebook MessengerのBotをつくってみた

2017.04.20

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、みかみです。

2017/04/20(JST)に、AWS Lex が一般公開されました。

以前から興味はあったものの触ったことはなかったAWS AI三兄弟、この機会に AWS Lex で Amazon Alexa のテクノロジーを体験してみました。

はじめに

やりたいこと

  • AWS Lexをさわってみたい
  • Lex で Facebook Messenger の Bot をつくってみたい

AWS 料金

利用量課金なので、お試しレベルならそんなにかかりません。

例えば、1,000 回の音声リクエストにかかる料金は 4.00 USD で、1000 回のテキストリクエストにかかる料金は 0.75 USD です。

引用:AWS Amazon Lex 料金

やってみた

Lex で Bot を作成する

AWS管理コンソールから、Lex の Bot を作成します。

サンプル Bot をつくるだけならたった3クリックで完了です!

実用に際しては Lambda 経由でバックエンドの作りこみが必要になると思われますが、今回は Facebook Messenger と連携させたいだけなので、Lambda関数作成まわりは省略してます。

残念ながら東京リージョンにはまだローンチされていないので、バージニア北部リージョンのリンクをクリック。

top_tokyo

Get Started ボタンからサンプル Bot を作成します。

今回は、ScheduleAppointment を選択しました。

Lex_1

子供向けサイト規制、COPPA(Children's Online Privacy Protection Act)の確認で No をチェックして、Create ボタンをクリック。

Lex_2

build が終われば、Bot 作成完了です。

Lex_3

Lex_4

まずはサンプルメッセージをそのまま入力してみます。

「予約したいのですが。」

→「何の予約ですか?」

と、ちゃんと返事が返ってきました!

Lex_5

次の入力内容 = Lex が理解してくれる予約の種類は、Slot types AppointmentTypeValue の Value で定義されています。

「ホワイトニング」を入力すると、「いつにしますか?」とお返事が。

Lex_6

「来週の月曜日」のような表現でも、ちゃんと認識してくれます。

Lex_7

Lexが認識できない入力には、Error Handling ページ Clarification prompts に指定した文章を返してくれます。

Lex_error_message

定型文なので試しに日本語で返事を設定してみたのですが、やはりエラーで設定できませんでした。。

Lex_NG2

Bot を Publish する

作った Bot を Publish して、エイリアスを作成します。

管理コンソール右上の Publish ボタンをクリック。

Lex_8

好きなエイリアスを入力して Publish ボタンをクリック。

Lex_9

少し待つと・・・Publish 完了です。

Lex_11

Facebook アプリを作成する

Facebook の開発者ページから、アプリを作成して Messenger を追加します。

アプリを作成したら、ダッシュボードから「製品を追加」をクリック。

FB_app_1

「プロダクト設定」の一覧から「Messenger」の「スタート」ボタンをクリックします。

FB_app2

トークンを取得するため、新しい Facebook ページを作成します。

FB_Token1

プルダウンから作成したページを選択すると、アクセストークンが表示されます。

FB_Token_2

Lex Bot のチャンネルを作成する

チャンネルを作成して Lex と Facebook Messenger を連携します。

Channels タブで Facebook を選択し、必要事項を入力します。

  • Verify token は、後ほど Facebook の Webhook 設定で使用します。
  • Page access token には先ほど Facebook アプリから取得したアクセストークンを入力。
  • App secret key には Facebook アプリダッシュボードに表示されているシークレットキーを入力します。

Activate ボタンクリックでチャンネル作成完了です。

Lex_Ch_1

画面下の方の Callback URLs に表示される Endpoint URL を取得します。

Lex_Ch_2

Facebook Messenger の Webhook を設定する

Facebook アプリダッシュボードの Messenger の設定から、Webhooks の設定をします。

FB_wh1

ポップアップウィンドウが表示されるので、Lex のチャンネル作成で取得した Callback URL と、Verify token を入力。

「messages」「messaging_postbacks」「messaging_optins」をチェックして「確認して保存」ボタンをクリック。

FB_wh_2

Wobhooks 欄のプルダウンからページを選択して「フォローする」ボタンをクリック

FB_wh_3

Facebook Messenger Bot を動かしてみる

Facebook の ページから Messenger でメッセージを入力してみます。

FB_M_2

Lex がちゃんとお返事してくれました!

おわりに(所感)

  • Lex で 簡単に Bot がつくれる!
  • Lex にはサンプル Bot が準備されてるのでお試ししやすい
  • Twitter とか LINE とか、対応アプリが増えたらもっと嬉しい
  • 日本語対応が待ち遠しいv

参考