Edited at

EnOceanのトイレセンサーをLINE Botで確認する

EnOceanのトイレセンサーをLINE Botで確認してみました。

DialogflowでLINE Bot連携をしてLIFFで監視画面を表示させるようにしました。

EnOceanでトイレセンサーを作ってみた記事はコチラをご確認ください。

https://qiita.com/h-takauma/items/e81f46c9170fed1baa18


完成動画


システム概要

EnOceanで受信した信号をラズパイでキャッチしてFirebaseに開閉状態の値を保存しています。

Reactを使ってAmazon S3に設置した静的サイトにセンサー状態を可視化しています。

Reactで可視化する部分はコチラの記事をご確認ください。

https://qiita.com/h-takauma/items/208df83887ece15f0c45


システム構成図


1. LINE Developerでチャネルを作成する

Messaging APIのチャネルを新規で作成します。

スクリーンショット_2018-11-27_17_27_56.png


1-1. LIFFのURLを取得する

LIFFのURLは最近LINE Developer内で発行できるようになりました。

追加ボタンをクリックして、AmazonのCloudFrontで設定したURL(https)のサイトURLを指定してください。

LIFFのサイズはお好きなサイズを指定してください。

スクリーンショット_2018-11-27_17_54_38.png


2. Dialogflowでチャットボットを作成する

Dialogflowで新規エージェントを作成してください。


2-1. Intentを作成する

左側メニューのIntentsの右側にある[+]ボタンをクリックして、Intent名は「ToiletIntent」と入力します。

ここで、大文字小文字に気をつけてください。

Traning phrasesに「トイレは」や「トイレ空いてる」など、ユーザーが入力しそうな言葉を登録します。

Fulfillment項目にある上側のフラグを有効にしてください。

この言葉に反応してToiletIntentが飛んできます。

スクリーンショット_2018-11-27_17_32_03.png


2-2. Fulfillmentの設定

左側のメニューからFulfillmentをクリックして、Inline Editorの右側にあるチェックを有効にしてください。

スクリーンショット_2018-11-27_17_38_12.png


2-3. プログラムを修正する

Inline Editor上でプログラムを修正します。

Firebaseのアクセス先URLとLIFFのURLは適宜修正してください。プログラムを修正したら一番下にある[DEPLOY]ボタンをクリックします。


index.js

'use strict';

const {dialogflow} = require('actions-on-google');
const functions = require('firebase-functions');
const app = dialogflow({debug: true});
const admin = require("firebase-admin");

process.env.DEBUG = 'dialogflow:debug'; // enables lib debugging statements

// 接続するFirebaseのRealtimeDatabaseのURLを指定する
admin.initializeApp({
credential: admin.credential.applicationDefault(),
databaseURL: "https://toiletmanager-xxxxxx.firebaseio.com/"
});

// toiletのwordの値を取得しにいく
const getToiletStat = () => {
return admin.database()
.ref('toilet/word')
.once('value');
};

// 2-1で決めたIntent名を指定します
app.intent('ToiletIntent', (conv) => {
return getToiletStat().then((snapshot) => {

// LIFFのURLは適宜修正してください
conv.json(
JSON.stringify({
"fulfillmentText": `${snapshot.val()} \nline://app/xxxxxxxxxx-xxxxxxxx`
})
);

}).catch((e) => {
conv.json(
JSON.stringify({
"fulfillmentText": "エラー"
})
);

});
});

exports.dialogflowFirebaseFulfillment = functions.https.onRequest(app);



3. LINE BotとDialogflowを有効化する

Dialogflowの左側メニューにあるIntegrationsをクリックします。

その中にあるLINEを有効化します。

スクリーンショット_2018-11-28_9_37_09.png


3-1. LINE Botの紐づけ

LINE Developerに表示されているChannelIDChannel Secretアクセストークンをコピペします。

Dialogflow側にあるWebhook URLはLINE DeveloperのWebhook URLへコピペします。

line102.png


3-2. LINE Botを開始する

Dialogflow側のSTARTボタンをクリックしてLINE Botを開始します。

line103.png


まとめ

Google Homeのスキルを作る際にとても使っているDialogflowで簡単にLINE Botを使用することができました。

今後はこのようなBotが増えていくこと間違いなしかと思います。

アイデア次第で様々なBot連携が出てくるのが楽しみですね!

システム化のご検討やご相談は弊社までお問い合わせください。

https://i-enter.co.jp/contact/