cybozu developer network

カテゴリー内の他の記事

Google Home でイベントスケジュールを自動アナウンス

(著者:サイボウズ 三宅 智子)

Index

概要

Google HomeNode-REDkintone を使って、イベントスケジュールを音声で自動アナウンスするプログラムを実装します。
※ Node.js 環境が必要です。

シナリオ

kintone に登録しているイベントのタイムテーブルデータを一定時間おきにチェックして、今から10分後までに始まるセッションを Google Home でお知らせします。

  • 10分後までに始まるセッションがある場合は、そのセッション名をお知らせ
  • 10分後までに始まるセッションがない場合は、その他のコンテンツをお知らせ

____.png

Node-RED とは

ハードウェアデバイス、APIおよびオンラインサービスを接続するためのツールです。
ブラウザベースのエディタによってパレットに並ぶ多種多様なノードを結びつけて簡単にフローを作成でき、さらにシングルクリックで実行環境にデプロイすることができます。

Rasberry Pi や Arduino などのデバイス、IBM Cloud や AWS や Azure などのクラウドサービス上に立てることもできますが、今回はローカルにインストールして実行します。
Node-RED サイトより一部抜粋)

Node-RED.png

 

 

kintone アプリ作成

イベントのタイムテーブルを登録するための kintone アプリ(セッション管理アプリ)を作成します。

  1. 以下のフィールドを配置したアプリを作成します
    フィールドタイプ フィールド名 フィールドコード
    日付 日付 date
    時刻 開始 startTime
    時刻 終了 endTime
    文字列(一行) セッション名 sessionName
  2. サブドメイン名 と アプリID をメモしておきます(後ほど Node-RED 内で指定します)
    例)https://{subdomain}.cybozu.com/k/xxx/ ←アプリIDはxxxの部分の数字です
  3. いくつかテスト用にレコードを追加しておきます

これで kintone の設定は完了です。

Google Home アプリのインストールと設定

次は、Google Home を使うための初期設定です。
公式サイト等に手順が載っているので、参考にしながら進めてください。

  1. 電源ケーブルをGoogle Homeに差し込みます
  2. 電源アダプターをコンセントに差し込みます
  3. スマートフォンやタブレットでGoogle Homeアプリをダウンロードして開きます
  4. Google Home との接続設定をします
  5. 設定が完了したら、アプリ内のデバイスメニューより、今回使いたい Google Home を選択し、右上の「・・・」をクリックして、最下部の IPアドレス を確認しメモしておきます
    後ほど Node-RED でデバイス指定をする時に利用します

※ アプリで言語設定を日本語に変更するのを忘れずに。

Node-RED の設定

続いて、処理フローを定義する Node-RED をインストールし、設定します。
ここでは Mac OSX での手順のみ記載します。Windows の方は別途ドキュメントサイトをご確認ください。
(参考:Node-RED User Group Japan のドキュメント

事前準備

ローカル環境に Node-RED をインストールするためにはサポートされている Node.js のバージョンが必要です。

  1. Node をインストールします
    (参考:Node.js のインストールガイド(macOS)
  2. 日付処理のための Moment.js をインストールします
    (参考:Moment.js サイト

Node-RED のインストール

  1. ターミナルより、npm によってインストールします
    (参考:ローカルでNode-REDを実行する
  2. node-red コマンドを使って Node-RED を起動します。
    ※ Ctrl-C もしくは、ターミナルウィンドウを閉じることで Node-RED を停止することができます

Node-RED エディタでフロー構築

  1. ブラウザで http://localhost:1880 を指定することで Node-RED エディタにアクセスします
    Editor.png
  2. 右上の「≡」をクリックして、「パレットの管理」を選択します
    ________.png
  3. 「ノードを追加」タブをクリックして、以下3つのノードを追加します
    追加すると、エディタ左のノードメニューから選択できるようになります
    _______.png

    node-red-contrib-kintone (1.0.2)
    node-red-contrib-function-npm (0.3.0)
    node-red-contrib-cast (0.2.8)
  4. エディタ左のノードメニューから右へドラッグ&ドロップして、フローを作成します
    それぞれ以下の通り設定してください
    Node-RED.png

    ノード ノード名 詳細設定
    inject RepeatExecution ペイロード:日時
    ☑︎Node-RED 起動後 0.1秒後、以下を行う
    繰り返し:指定した時間間隔(10分)
    名前:RepeatExecution
    kintone GetSessions 名前:GetSessions
    設定:鉛筆マークをクリックして以下を指定
    名前:Config
    ドメイン:×××.cybozu.com
    ログイン名:ご自身のものを指定
    パスワード:ご自身のものを指定
    Basic認証:(必要あれば指定)
    メソッド:GET
    アプリID:事前に作成したkintone アプリの「アプリID」を入力
    クエリ:date = TODAY()
    debug msg.payload
    function npm GetNextSessions ✏︎:GetNextSessions
    🔧:後述の GetNextSessions.js を入力
    🔁:1
    debug msg.payload
    cast PlayGoogleHome IP:Google Home アプリで確認した IPアドレスを指定(検索マークをクリック)
    Port:8009
    language:ja
    Name:PlayGoogleHome

    ▼ GetNextSessions.js(function npm ノードに入力)
  5. 右上の「デプロイ」ボタンをクリックして、環境にデプロイします

動作確認

デプロイできたら、「RepeatExecutionノード」の左横の角ブロックをクリックして実行します。
Google Home からの発話があれば成功です!
右側のデバッグマークをクリックすると、実行結果を表示しながらデバッグすることも可能です。
___.png

おわりに

Node-RED のタイムスタンプを使うことで、Google Home へのプッシュ通知を可能にしているのがこの Tips のポイントです!
今回はローカルで実行していますが、色んなイベントで使い回すことを考えると、移行が楽な Docker や AWS などのクラウド上で実行環境を整えるのが便利です。
ぜひ他の方法でもチャレンジしてみてください。

本Tipsは、2019年7月時点の kintone と Google Chrome ブラウザで確認したものになります。

記事に関するフィードバック

記事のコメント欄は記事に対するフィードバックをする場となっております。
右の記事フィードバックのためのガイドを参照してコメントしてください。
記事のリンク切れなど、気になる点がある場合も、こちらのフォームからフィードバックいただけますと幸いです。

Avatar
cybozu Development team

IBM Cloud 環境で実行できるようにのせ換えてみました。
https://qiita.com/Mikei/items/be33784039c61d5cb773

サインインしてコメントを残してください。