DiagflowでSlackチャットボットを作って遊びましょう

2021-04-24

Dialogflowで作るSlackチャットボット

皆さんチャットボット使ってますか? いろいろな人から届く質問をさばく為に企業が導入しようとしているあれです。 そうです。最近よく話題に上がるチャットボットです。

この手のサービスは、導入を手伝ってくれる会社もありますが導入だけで100万円、保守で年間40万円みたいな話も聞きます。 実際そこまで潤沢な資金があれば、ランサーズなどで委託して作ってもらっても良い気がしますが…そんな代物です。

今回の趣旨は、手軽に安く(Trialは無料)賢いチャットボットを作るのが目的です。回答精度は作り込み次第ですね。

今回作るチャットボットは、適当な話題がアニメの話をしていたらそのアニメは何かを教えてくれるボットです。名付けるならそうですね…うろ覚えアニメチャットボットですかね。

Dialogflow APIを有効にする

Dialogflow とは、Googleが提供するサービスの一つです。 自然な会話を実現するAIを提供してくれます。更にUIやSkypeやSlack等の各種サービスとの連携もサポートされています。高機能ですね。

Dialogflow ES のドキュメント

Dialogflowでは、2種類のプランが用意されています。 CX:大規模向けサービス ES:小規模向けサービス

今回は小規模向けプランであるESを使って構築していきます。

Agentの作成

Dialogdflow Console では早速始めていきましょう。

上記のページからConsole画面を開き、Create Agentを押します。

言語:Japanese-ja TIMEZONE:(GMT+9:00) Asia/Tokyo Google Project: api project MEGA AGENT: OFF

右上から CREATEボタンを押してしばらくすると、完成して画面が遷移します。

MEGA AGENTとは

サブエージェントと呼ばれる複数のDiagflowで作成できるエージェントを複数集めて1つのメガエージェントに結合したものです。 スライムが集まってキングスライムになるようなイメージですね。 このキングスライムに要求があれば、スライム達の中から適切な回答をすることができるようです。

エンティティの作成

Console画面からEntitiesを選択して作成できます。

エンティティを作成して、チャットに文章中含まれる値から目的の何かを判断します。 例えば、エヴァを判断したい場合は「碇シンジ」などの用語が文面に含まれているときに、一番左の単語を返すように設定します。

インテントの作成

続いてインテントを作成します。 画面は右上にあるCREATEを押した様子です。

ここでは会話例の作り込みとResponseを作ります。

Training phrases

ユーザの入力は様々でここで如何に例文を用意できるかが応答の精度に影響します。様々な文面を入力していきましょう。

Response

animeインテントで用意した値を元に値を含んだ応答メッセージを用意します。

あなたが話しているanimeは$animeですね。

「${entitry}」を入力するとdiagflowから帰ってきた単語を入力することができます。

テスト

IntegrationからWEB Demoから動きを確認することができます。 適当に文字を打ち込んでみましょう。

挨拶はわからないですが、アニメがわかるBotができました。

次はせっかくなので各種チャットサービスに繋ぎます。

Slackとつなぎます。

左のメニューバーからIntegrationsを選択します。 Text basedの欄からSlackを選択します。

Test
You can stop test bot at any time, just click Shutdown test bot.

という記載がある横のボタンをクリックします。 Slackのアカウントログイン画面が現れポチポチやります。 すると、アプリの権限リクエストが求められるので「許可する」をクリックします。

立ち上げると、Slack連携画面が表示されます。

Slackのチャンネル上のAppの下にDialogflow Bot君が追加されています。 ためにし挨拶してみましょう。

Slack動作チェック

まとめ

話題のチャットボットの作り方を解説しました。 かなり手軽に作ることができますね。 私も今かなり困っているのですが、色々な人から届く質問対応が少しでも楽になったらなぁと思います。 今回試してなんとなくわかってきましたが、実運用するにはかなりの作り込みが必要になるとは思います。 ただし、便利な時代になったものですね。手軽ですわ。