GHKit ZeroとIntegromatの連携

「[GHKit Zero](https://ghkit.jp/ "GHKit Zero")」は、Google Homeに、プッシュ通知機能を追加することを目的に開発されたキットです。

ここでは、「[GHKit Zero](https://ghkit.jp/ "GHKit Zero")」と、サービス連携プラットフォーム「[Integromat](https://www.integromat.com/en/ "Integromat")」との連携手順を説明します。

具体的には、[Integromat](https://www.integromat.com/en/ "Integromat") の「RSS」モジュール、「HTTP」モジュールを使い、 設定した時間間隔（例：１時間おき）で、Google HomeがNHKニュース記事を再生するシナリオの構築手順について記載します。

以下に、[Integromat](https://www.integromat.com/en/ "Integromat")のシナリオ編集画面における本記事の完成形を示します。Integromatでは以下のような円アイコン（「RSS」、「HTTP」）をモジュールといい、このモジュールを連携して任意のシナリオを作成します。
![GHKit_Integromat_Scenario01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/160696/ecdb1939-2c9f-824f-6906-5cd90bd9bf5c.png)

# 設定前の準備

連携を設定する前に、以下の項目を確認してください。

**1. 「Google Home」と「GHKit」のセットアップ**

最初に、Google Homeをセットアップし、利用できる状態にしておいてください。

次に、HP上の手順を参考に「[GHKit Zero](https://ghkit.jp/ "GHKit Zero")」をセットアップし、Google Homeとの接続を確認してください。

**2. Integromatのアカウント作成**

[Integromat](https://www.integromat.com/en/ "Integromat")のサイトにアクセスし、アカウントを作成（Sign up）してください。

Googleアカウントをお持ちの方は「Sign in」ボタンより「Sign in with Google」を選択すると、アカウント作成(Sign up)とログイン(Sign In)が同時に行えます。
![Sign in with Google.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/160696/a5bfced8-a2ef-c3ba-6c58-adc1d68c7dfd.png)

**3. 連携情報の用意**

「[GHKit Zero](https://ghkit.jp/ "GHKit Zero")」同梱の書類より「GHKit ID」と「Code」をご準備ください。

* GHKit ID：ここでは例として「abcde12345」を用います。
* Code：ここでは例として「123456」を用います。

# Integromatの設定

[Integromat](https://www.integromat.com/en/ "Integromat")におけるシナリオ作成は、全て[Integromat](https://www.integromat.com/en/ "Integromat")のWEBサイトで行います。

あらかじめログイン（Sign in）しておいてください。

## シナリオの作成

まず最初に、ホーム画面から右上部の「＋Create a new scenario」をクリックし、シナリオ作成を開始します。
![GHKit_Integromat_Create a new scenario.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/160696/f5da5d92-ca5d-2181-c56c-951d8e28e5d8.png)
続いて、右上の「Skip」を選択し、シナリオ編集画面へ移動します。
![GHKit_Integromat_Skip.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/160696/2af4bbd3-600d-bf47-e3dc-41858fb07eb2.png)

## RSSモジュールの利用

以下がシナリオ編集画面になります。「Search」から使用するモジュールを探し、選択します。
![GHKit_Integromat_Search.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/160696/116a9c9c-6e15-8fcb-4331-9abefb8cdd8e.png)
「Search」に「RSS」と入力し、「RSS」モジュールを選択します。
![GHKit_Integromat_SearchRSS.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/160696/1f4aa979-8fe7-4482-87c2-f50c179f2853.png)
RSSモジュールを選択すると、以下のような選択画面が表示されるので、TRIGGERSの「Watch RSS feed items」を選択します。本選択により、「RSSフィールドの取得」をトリガーとして、別のサービス（モジュール）実行することができます。
![GHKit_Integromat_TRIGGERS.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/160696/79499ae9-eb45-a179-931c-62856d9fb627.png)
次にRSSモジュールの詳細を設定をします。
まず取得したいRSSフィードのURLを指定します。今回はNHKニュースの主要ニュースのRSSフィードを用いました。

次に、Integromatが1回の実行で返すアイテムの最大数に1を入力します。
これは取得したNHKニュースのRSSフィードのうち、新規の一つのニュース記事を取得するという設定になります。

* RSS URL　:　http://www3.nhk.or.jp/rss/news/cat0.xml
* Maximum number of returned items　:　1

![GHKit_Integromat_URL.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/160696/78ac0fe9-105c-babc-5726-b338d1e3b80e.png)

次に取得するフィード（ニュース）の開始位置を設定します。
RSSモジュールを右クリックし、「Choose where to start」を選択します。
![GHKit_Integromat_Settings.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/160696/1cd75af5-3b8a-ec32-106e-b56248d44b57.png)
以下の項目選択画面が表示されるので、「All RSS feed items」を選択して「OK」をクリックします。
これにより、RSSフィードに含まれる全ての新着ニュース記事を古い順に取得します。
![GHKit_Integromat_Choose where to start.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/160696/0ab43320-6d1c-8a87-4491-890e501b0132.png)
最後に、RSSモジュールを実行するタイミングを設定します。

RSSモジュールの左下にある時計アイコンを選択し、60分おきにRSSフォードが取得されるようにします。
「Run scenario」ならびに「Minutes」をそれぞれ以下のように設定します。

* Run scenario　:　At regular intervals
* Minutes　:　60

これにより、60分おきにRSSフィードを取得し、別のモジュール（HTTPモジュール）を実行する準備が整いました。
![GHKit_Integromat_Schedule setting.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/160696/cf7e8df4-0b47-13b6-2b50-32a4c6d88491.png)

## HTTPモジュールの利用

次にHTTPモジュールを追加し、設定していきます。
RSSモジュールの右端にある「＋アイコン」をクリックし、モジュールを追加します。
![GHKit_Integration_RSS Add.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/160696/8b3481cc-7e4a-3f5b-dcb3-72b95dd77d57.png)
追加された「？アイコン（未定義モジュール）」を選択し、モジュール検索欄から使用するモジュール（HTTP）を探し、選択します。
![GHKit_Integromat_HTTP.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/160696/2c4f15fb-a2a0-47b9-ec1d-2bd933d7657c.png)
ACTIONSとして「Make a request」を選択します。
![GHKit_Integromat_ACTIONS.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/160696/199583e7-e4bb-24d0-9c5a-929980a74993.png)
ここで下記のように GHKit への接続情報を記載します。
* URL：https://zero.ghkit.jp/
* Method：POST
* Body Type：Raw
* Content Type：application/json

最も重要なRequest Content部分は下記のように記載してください。
「abcde12345」は事前に準備した「GHKit ID」に、「123456」は「Code」に置き換えてください。

「message」には、Google Homeが再生するメッセージの内容を記述します。
ここで、「1.Description」の部分は、RSS feed items項目の中から、ニュースの主要内容であるDescriptionを選択して置き換えます。

```
{
"ghkit":"abcde12345",
"code":"123456",
"message":"NHKニュースです。1.Description"
}
```

最終的なHTTPモジュールの設定は以下のようになります。
![スクリーンショット 2020-10-05 18.19.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/160696/59a1433c-34af-456a-0024-7e80cb26e0bb.png)
> 「{」「}」「"」は全て半角です。全角にならないように注意してください。
> 特に「"」は、環境により「“」や「”」に自動変換される場合があります。
> また、message部分以外で全角スペースが挿入されたり、予期しない改行があると、エラーの原因になります。
> あわせてご注意ください。

上記の入力が完了したらOKボタンを選択して、HTTPの設定は完了になります。

## シナリオの実行

上記で、シナリオの作成は完了です。
実行テストとして「Run once」を選択すると、シナリオが1回実行されます。
![GHKit_Integromat_Runonce.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/160696/4aa2985b-510d-06e5-316c-6f04c5550752.png)
GHKitを経由し、Google HomeよりNHKニュース記事が再生されれば成功です。

シナリオの実行が成功すると、各モジュールの右上に「番号アイコン」が表示され、選択すると実行内容を確認できます。また、実行を失敗した場合も同じ場所にアイコンが表示されるので、選択して内容を確認ください。

モジュール及びシナリオの設定完了後、左下の「SCHEDULING」を選択し「ON」にします。
これで全設定は完了になり、1時間おきにGoogle HomeよりNHKニュースが再生されます。
![GHKit_Integromat_SCHEDULING.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/160696/277c306f-a3ff-1c0a-0590-1ac4acf58146.png)

# 最後に

今回は、Integromatの「RSS」モジュールによるNHKニュースの取得をトリガーとし、「HTTP」モジュールをアクションとすることで、GHKitを通じてGoole Homeでニュース記事を1時間おきに再生する手順について説明しました。

Integromatには他にも多様なモジュールがあり、条件分岐を行う「Router」機能など様々な機能があります。
どのように利用するはかアイデア次第です。面白い使い方を是非発見してください。