AIプログラミング

Docomo知識Q&Aを使用したLine Bot開発

投稿日:

Docomo 知識Q&Aを使用したLine Bot開発

今回は、Line BotとAIを組み合わせたアプリケーションを作成します。
概要として、ユーザ側で何かしらの言葉を入力するとその言葉に対して連想されるURLを3つまで返してくれるLine Botです。

LineBot

某漫画〇のように~クマと語尾につきますが、その辺りはカスタマイズできます。

連想されるURLについてはAIの機能を使用しており、Docomo APIで提供されている知識Q&Aを使用します。

また、Line BotとDocomo APIの橋渡しとしてGoogle App Scriptを使用します。

アプリケーション構成図

次の3つのサービスを組み合わせることでアプリケーションを作成します。

・Line Bot
・Docomo API
・Google App Script

アプリケーション構成図

① Lineからメッセージを送信し、Google App Scriptで受け取る
② メッセージをDocomo API(知識Q&A)のパラメータに変換して送信する
③ Docomo API(知識Q&A)から連想されるURLが返却される
④ Google App Scriptにて結果を整形してLineにメッセージを返却する

このように、Line Bot、Google App Script、Docomo APIを連携させることで、アプリケーションを作成していきます。

ソースコード

Google App Scriptのコードです。

ソースコードの詳細

トークンの設定

★の箇所にLineのアクセストークンとDocomoのAPIキーを設定してください

LineBotからのメッセージ受信

Line Botからメッセージを受信した場合はdoPost関数が起動されるので、受信したメッセージをJSON形式で解析を行います。

今回対象となるのは、メッセージ且つテキストとなり、event.typeが"message"、event.message.typeは'text'です。その場合、Docomo APIの知識Q&Aに問い合わせるために専用の関数(getDocomoQAMessage)を起動します。

getDocomoQAMessage関数の引数として、Lineで受信したテキストの内容を指定しています。それ以外のメッセージについては何もしません。

Docomo APIの知識Q&Aに問い合わせる

Docomo APIの知識Q&AのURL(https://api.apigw.smt.docomo.ne.jp/knowledgeQA/v1/ask)にクエリーとAPIのキーを指定して呼び出しています。

クエリーはLineより受信したテキストそのままを入力しています。

0件の場合はその言葉は無かったというコメントを返却して終了します。1件以上の場合は知識Q&Aより受信したメッセージを多少加工して返却します。

通常では最大5件まで情報をもらえますが、長文となってしまうため最大3件までにしています。

LineBotへメッセージを返却

LineBotへメッセージを返却します。引数としてはLineBotにより受信したイベントと返却するメッセージを指定します。

UrlFetchApp.fetch関数を使用することにより、LineBotに返却することが出来ます。

以外と簡単だったのではないでしょうか?

次回から知識Q&A以外でもいろいろ試してみます。

-AIプログラミング
-,

Copyright© AI人工知能テクノロジー , 2019 All Rights Reserved.