LoginSignup
1
2

More than 5 years have passed since last update.

ネットの画像をネタに小話するボット ①概要編

Last updated at Posted at 2017-12-07

ボットアドベントカレンダー8日目になりました。今日は、Cogbot!アドベントカレンダーにもお邪魔してます。前半の記事はこちらに、後半の記事はCogbot!のほうに掲載します。

今回は、画像のURLを共有して、その感想でユーザと盛り上がる?ボットを作ってみました。

実行結果の例

題材

蝶々

出典: https://pixabay.com/photo-1391809/

会話例その1

kekka1.png

ユーザに納得してもらったと感じたら、単純に喜んで終わります。

会話例その2

kekka2.png

ユーザに異議を唱えられたら、ランダムに別の観点から感想を述べようとします。運が悪いと、同じ感想を口走りますが... とにかく、喜んでもらえる(?)まで頑張ります。

構成

以下をチョイスして、ベスト・オブ・ちょっとケチくさいブリードで作ってみました。

  • Dialogflow ... インテント・エンティティ識別、ダイアログ制御
    • バリエーションがある返答を、Web画面上で簡単に定義可能
    • 出口(Slack, Cortana, Alexa, ...)のバリエーションが豊富
  • Azure Functions ... Dialogflowのwebhookとして利用(C#)
    • Firebaseから外部のAPIを叩く場合はGCPにクレカ登録しなければならないそうで...
      • 結局Cloud Natural Language APIを使うために登録してしまいましたが
  • 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」がきたかを判定し、その後の処理を変えるようにしています。

architecture.png

②実装編

本日(12/8)のCogbot!アドベントカレンダーに投稿した、こちらの記事に進んでください。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2