シンチャオ!稲葉貴大です。今回は第4回ChatBot製作日記です。ベトナム生活に慣れ、ベトナムに来てから早くも3週間が経とうとしています。1日1日大切にしていきたいと思います。今回は、Fulfillmentを用いた天気情報を呼び出すChatbotを紹介したいと思います。
DialoflowのFulfillmentを使って天気情報を呼び出す
DialogflowのFulfillmentを使うと外部からの情報を呼び出すことができます。下図には外部情報を呼び出す上での簡単なイメージ図を示しました。詳しく次に説明したい思います。
初めにHerokuとGithubについて簡単に説明します。Herokuとはサーバーやデータベース、OSなどをインターネットを介して接続してくれるものです。アプリケーションを実行するためのプラットフォームであるPaaSでもあり、無料で使用できることも特徴の一つです。また、Githubというのは、ソフトウェア開発プロジェクトのための共有Webサービスであり、世界中の人々がプログラミングコードなどを公開、保存することが出来ます。そして人のコードを自分のコードに出来ることがメリットの一つです。今回は天気情報を呼び出したいため、Pythonというプログラミング言語を用いたプログラミングコードをGithubから選択肢し、それをHerokuを介してFulfillmentのWebhookに入力しました。
実際に天気情報を出力するChatbotの作成手順
最初、Herokuのページに行き、自分のアカウントを作成します。
次に、Githubのページに行き、天気に関するリポジトリを見つけます。
このページが天気に関するリポジトリです。このページの下に行くと、次のようなHerokuにdeployする場所があります。
「deploy to Heroku」をクリックすると、Herokuのページに移ります。ここで、App nameを決めてDeployします。すると、「Your app was successfully deployed」という表示がされて、Deployが完了します。これで、天気情報を読み出すプログラミングソースがGithubからHerokuにDeployされました。
次に、DialogflowのFullfillmentを開き、WebhookのENABLEをONにし、Webhookの変更を可能にします。次に、FulfillmentのURLに
「https://[App Name].herokuapp.com/webhook」
と入力します。この際、[App Name]には自分で設定した名前を入力します。
これでFulfillmentの設定は完了です。次に、Intentsを設定します。下図のようにTraining Phrasesに「[都市]の天気」と入力すると、都市名が自動的に反応して「PARAMETER NAME」「ENTITY」「VALUE」が書き込まれます。そして、「Action」として「yahooWeatherForecast」と入力します。その理由は、Githubで取り出したプログラミングコードを参照すれば分かりますが、「Action=yahooWeatherForecast」となった時に動作するように設定されているからです。
そして最後に、Intentsの一番下にあるFulfillmentの呼び込みを許可すれば完成です。
天気情報を出力するChatbot
以上の方法で作成したChatbotを紹介します。例えば、「東京の天気」と入力すると、次のようになりました。
「DEFAULT RESPONSE」を見ると、誤りなく天気の情報が読み出されています。また、「INTENT」として「weather」、ACTIONとして「yahooWeatherForecast」が読み出されており、正しく動作したことが確認できました。しかし、「あれ?」と思った方もいると思います。日本語で入力しているのに、英語で出力されているのです。これは、yahooWeatherForecacstが英語にしか対応していないからです。
逆に英語で入力する場合を考えます。英語で入力するには、下図に示した言語の追加のページに行って変える事ができます。
英語の言語を追加し、英語を選択すると次のように「en」が青く表示されます。
ここで、「weather in Kanazawa」と入力してみました。
その結果、日本語で入力した場合と同じように、正しく動作しました。つまり、出力は英語になりますが、入力言語は設定すれば対応できるということが分かりました。
以上が天気情報を呼び出すChatbotについての説明でした。
ChatBotについて気になった方、このようなものづくりに携わりたいと思った方!お気軽に下のボタンよりお問い合わせください!