ボットアドベントカレンダー8日目になりました。今日は、Cogbot!アドベントカレンダーにもお邪魔してます。前半の記事はこちらに、後半の記事はCogbot!のほうに掲載します。
今回は、画像のURLを共有して、その感想でユーザと盛り上がる?ボットを作ってみました。
実行結果の例
題材
出典: https://pixabay.com/photo-1391809/
会話例その1
ユーザに納得してもらったと感じたら、単純に喜んで終わります。
会話例その2
ユーザに異議を唱えられたら、ランダムに別の観点から感想を述べようとします。運が悪いと、同じ感想を口走りますが... とにかく、喜んでもらえる(?)まで頑張ります。
構成
以下をチョイスして、ベスト・オブ・ちょっとケチくさいブリードで作ってみました。
-
Dialogflow ... インテント・エンティティ識別、ダイアログ制御
- バリエーションがある返答を、Web画面上で簡単に定義可能
- 出口(Slack, Cortana, Alexa, ...)のバリエーションが豊富
-
Azure Functions ... Dialogflowのwebhookとして利用(C#)
- Firebaseから外部のAPIを叩く場合はGCPにクレカ登録しなければならないそうで...
- 結局Cloud Natural Language APIを使うために登録してしまいましたが
- Firebaseから外部のAPIを叩く場合はGCPにクレカ登録しなければならないそうで...
-
Azure Computer Vision API ... 画像認識
- 単純な言葉だけでなく、短文(caption)でも返してくれるので気に入った
-
Azure Translator Text API ... 翻訳
- Googleの方が遥かに精度がいいのはわかってますが、いきなり2千円以上課金されるそうで...
-
Google Cloud Natural Language API ... 感情分析
- Azure Text Analytics APIに比べて、短文での精度が雲泥の差
- それでいて翻訳APIのようにべらぼうに高くないし、無料枠もある
Dialogflowに正常系のインテントを5つ用意しています。「Query」と「Reaction」は、ユーザからの入力を受け付け、webhookとして登録したAzure Functionsに渡すインテントです。それ以外は、Azure Functionsから結果を受け取った後に発生するイベントを受け取り、結果を含めてランダムな応答を作成して返すインテントです。
残念なことに、Dialogflowでは、インテントごとに異なるwebhookを登録できません。このため、インテント共通のAzure Functionsで受け付けて、「Query」がきたか「Reaction」がきたかを判定し、その後の処理を変えるようにしています。
②実装編
本日(12/8)のCogbot!アドベントカレンダーに投稿した、こちらの記事に進んでください。