Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

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/

h-takauma
様々なIoT機器の研究開発を行っています。 AWSの研究開発がメインです。LINE API Expert('19〜) 最近はスマートスピーカーに夢中です! 著書「スマートスピーカーアプリ開発入門」https://amzn.to/2o0KGWs
i-enter
「効果」をつねに提供します。スマホアプリ開発No.1の実績。最新のIoTに対応した開発も行います。
https://www.i-enter.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away