Microsoft Flowを使ってノンコーディングでkintoneを使ったLINEのBotを作る

公開日:2018-03-05

このブログではこれまでに kintone と Google Home との連携Amazon Alexa(Echo)との連携を取り上げてきましたが、こうなると日本のメッセージングサービスの雄である LINE についても取り上げないわけにはいきません。

ですが、不勉強で LINE については何も知らなかったため、先日京都で行われたハンズオン勉強会に行ってきました。そこで学んだ内容を踏まえ、LINE の Bot から kintone データへアクセスするパターンを考えてみたいと思います。

ブログに載せる用の写真を撮るの忘れました(汗


ブログに載せる用の写真を撮るの忘れました(汗

ハンズオン資料に沿って LINE Developer コンソールにアクセスし、プロバイダー、Messaging APIを使用した channel と作っていきます。

LINEのBot開発 超入門(前編) ゼロから応答ができるまで – Qiita
_この記事ではLINEで動作するBotを開発する方法をチュートリアル形式で記載しています。カバーする内容は、「寿司の出前を受付するBot」を開発するというもので、LINE側での必要な設定、Bot本体の開発とクラウド環境へのデプロイ、そして自然…_qiita.com

Bot本体(Node.jsのプログラム)の実装に入り「メッセージの返信」の項によると、ユーザーの問いかけに対する応答は line.Client の replyMessage メソッドを使用すれば良いことが分かります。このメソッドに渡す text データを kintone 等の外部データソースで用意したり、後編 で説明されているように Dialogflow のような外部の自然言語処理のサービスを使用することになります。

// イベントオブジェクトを順次処理。
req.body.events.forEach((event) => {
// この処理の対象をイベントタイプがメッセージで、かつ、テキストタイプだった場合に限定。
if (event.type == “message” && event.message.type == “text”){
// ユーザーからのテキストメッセージが「こんにちは」だった場合のみ反応。
if (event.message.text == “こんにちは”){
// replyMessage()で返信し、そのプロミスをevents_processedに追加。
events_processed.push(bot.replyMessage(event.replyToken, {
type: “text”,
text: “これはこれは”
}));
}
}
});

今回は、これをノンコーディングで実装してみましょう。

のりじ さんのブログから「ノンコーディングで話しかけると天気を教えてくれるLINE BOTを作ってみた話。(LINE BOTとLogic Appsの連携)」をめっちゃ参考にさせていただきました。ありがとうございます。

このブログには LINE だけでなく、Microsoft Flow(Logic Apps)の実例が非常にたくさん挙げられているので一通り目を通すとかなり賢くなれます。

まず、LINEから Webhookで飛んでくる内容(JSON)を処理できるように JSON スキーマを作ります。

Webhook イベントオブジェクトのリファレンスはこちらにあるので、この JSONを のりじさんのブログにあるように「JSON の値からスキーマを作ってくれるサービス」を使用するか、あるいは「HTTP 要求の受信時」トリガーで「サンプルのペイロードを使用してスキーマを生成する」を使用すれば JSONスキーマを得られるので これを使用します。

APIリファレンス
_Edit description_developers.line.me

あとはこんな感じにフローを組んでいきます。

kintone側は以下のようにアプリを作ってデータを入れておきます。

作成した LINEアプリを「友だち追加」して「gusuku」と呼びかけると、

kintone へ query を投げて得られた結果を応答してくれます。

今回は kintone に対して

問いかけ like “LINEから渡ってきた文字列” limit 1

というクエリを投げているだけですので、日本語の”揺れ”に全く対応していませんし、例えば “gusukuについて教えて”と問いかけられた場合に “について教えて”を取り除く処理をしなければ期待する結果を返せません。

これに対しては Dialogflow のような自然言語処理サービスに前処理させたり、以前に紹介したように日本語をトークン化するサービスを利用したり、のりじ さんが書かれているように QnA Maker のような Q&A自体を全部行ってくれるサービスに必要なデータを読み込み、学習させて利用するといった方法が考えられるのでないかと思います。

せっかく LINEを使っているのだから、画像やスタンプ、リッチメニューのような LINE の特徴的な機能も使いたいですよね。先日、”LINE Botとの会話をプレビューするためのアプリケーション「Bot Designer」” が公開になり、このソフトを使用すれば Messaging API に対してどのような JSON を投げれば良いか 簡単に試せるようなので、色々と実験してみたいなと思っています。

投稿者プロフィール

アバター画像
うっちー
kintone認定カイゼンマネジメントエキスパート(KME), アプリデザイン/カスタマイズ スペシャリスト