LINEからkintoneにレコードを登録する

メリークリスマス🎅🎄🌟
[kintone Advent Calendar 2021](https://qiita.com/advent-calendar/2021/kintone) 24日目の記事です🥳
## はじめに
ゲームのログインボーナスとかラジオ体操のカレンダーとかって
「自分これだけ頑張ったんだ！」って自分の頑張りが目に見えてわかるので私は好きです。

在宅勤務になってからおうちで筋トレを頑張ってて、
ラジオ体操方式でカレンダーにシール貼ってるのですが、紙ではなくデータとして残せるといいなと思って今回のカスタマイズを作ってみました！



## 概要図
データは簡単に登録したいので、今回は1番身近なLINEからkintoneへデータを登録します。
Power Autmateを使ってLINEとkintoneを連携をしたいと思います。
![概要図.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214243/afebdfac-46a8-71e3-107d-34021876c495.png)




## アプリの準備
アプリを作成しましょう。
以下のフィールドを追加してください。いたってシンプルですね！

| フィールド名 | フィールドの種類 | フィールドコード | 
|------------|------------|------------|------------|
|日付      | 作成日時     | 日付     | 
|メッセージ     | 文字列（1行）     |メッセージ     |



## LINE の設定
[LINE Developers](https://developers.line.biz/ja/) のサイトからログインします。
「LINEアカウントでログイン」してください。

### プロバイダーの作成
ログインするとLINE　Developersのコンソール画面が表示されます。
まず初めにプロバイダーを作成します。
LINE Developersコンソールでは、プロバイダーとは、サービス提供者のことを指します。
参照：[LINE Developersコンソールの概要](https://developers.line.biz/ja/docs/line-developers-console/overview/)
![プロバイダーの作成.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214243/3d4a468c-ca8b-d974-3c48-3fdeaffb3de1.png)



### チャネルの作成
チャネルを作成します。
今回はLINE Messaging APIを使います。
![チャネルの作成.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214243/1855be6a-f895-5f57-ea51-ffa93c3e7006.png)

任意の値を入力し、「登録」ボタンをクリックします。
![新規チャネル作成.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214243/27779572-f2ec-09fc-d487-546c7e445cc3.png)

### Messaging API設定
Messaging APIの設定をします。
![チャネル基本設定.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214243/d5ef9d8c-b5df-73ef-d80e-ce4c01a356b9.png)


QRコードをLINEで読み込むとアカウントが追加されます。
![Messaging API設定.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214243/a9d530a5-96bc-6af1-06ba-4d5d5c91258b.png)

#### 応答メッセージ設定
応答メッセージを「無効」に変更します。「編集」をクリックします。
![応答メッセージ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214243/075b300b-48bf-f8f1-ba2a-ae8ee91d2368.png)

応答メッセージを「オフ」にします。
![応答設定.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214243/8999dc33-564a-b0d4-41ab-857e90f8e22f.png)

#### チャネルアクセストークン設定
チャネルアクセストークンを発行します。「発行」をクリックします。
![チャネルアクセストークン.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214243/d34e65d6-c567-64a9-60df-50dc9c507e0f.png)

発行されたチャネルアクセストークンは後ほど使用するのでメモしておきましょう。
![チャネルアクセストークン_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214243/e23a6967-55d0-4bf7-77ba-3d85d9b32984.png)



## Power Automate の設定
[Power Automate](https://powerautomate.microsoft.com/ja-jp/) のサイトからログインします。

### フローの作成
「作成」をクリックします。
![作成.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214243/40ef4032-6df4-2e82-2d11-78425fc223e7.png)

フローにはいくつか種類がありますが、
今回は「LINEのメッセージを送る」という動作をきっかけに対してフローを実行するため、
手動でワークフロー始動のきっかけを与える「インスタントクラウドフロー」を選択します。
![インスタントクラウドフロー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214243/1e0d5fd5-f202-1eb7-6786-7063d2030a58.png)

フロー名を任意で入力、「HTTP 要求の受信時」を選択し、「作成」ボタンをクリックします。
![インスタントクラウドフローを構築する.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214243/869d7f97-9ef6-c165-a9b7-f9254388c612.png)

#### HTTP要求の受信時
「HTTP要求の受信時」をクリックします。
「サンプルのペイロードを使用してスキーマを生成する」をクリックし、
以下のコードを貼り付けます。

```json
{
    "type": "object",
    "properties": {
        "events": {
            "type": "array",
            "items": {
                "type": "object",
                "properties": {
                    "type": {
                        "type": "string"
                    },
                    "replyToken": {
                        "type": "string"
                    },
                    "source": {
                        "type": "object",
                        "properties": {
                            "userId": {
                                "type": "string"
                            },
                            "type": {
                                "type": "string"
                            }
                        }
                    },
                    "timestamp": {
                        "type": "integer"
                    },
                    "mode": {
                        "type": "string"
                    },
                    "message": {
                        "type": "object",
                        "properties": {
                            "type": {
                                "type": "string"
                            },
                            "id": {
                                "type": "string"
                            },
                            "text": {
                                "type": "string"
                            }
                        }
                    }
                },
                "required": [
                    "type",
                    "replyToken",
                    "source",
                    "timestamp",
                    "mode",
                    "message"
                ]
            }
        },
        "destination": {
            "type": "string"
        }
    }
}
```

![HTTP 要求の受信時_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214243/1c5b21a3-d0c4-578b-b9fa-25501b7e71e9.png)

#### 変数を初期化する
「動的なコンテンツの追加」をクリックし、以下の式を入力します。

```
triggerBody()?['events']?[0]?['message']?['text']
```
![動的なコンテンツの追加.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214243/ec739ebd-1aa7-1bf0-c449-8943728332f3.png)


以下の通り設定します。
![変数を初期化する.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214243/e84c9bd4-34fc-98be-61ac-2c1412760d96.png)



#### アプリにレコードを登録
今回はレコード追加のアクションを選択します。
![アプリにレコードを追加.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214243/8fec3b34-af65-cae8-7fe9-767463bf55dc.png)


アプリIDを入力し、メッセージには「response」を入力します。
これでLINEで入力したメッセージがkintoneのメッセージフィールドにセットされます。
![アプリにレコードを追加_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214243/74f6042c-cdcf-a57f-f0d6-8bcbd02e22aa.png)




#### 変数を初期化する２（ユーザーID）
次にLINEからメッセージを受信したユーザーのIDを取得します。
このユーザIDを使って、メッセージを送信したユーザに返信をすることができます。

「動的なコンテンツの追加」をクリックし、以下の式を入力します。

```
triggerBody()?['events']?[0]?['source']?['userId']
```
![動的なコンテンツ_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214243/0472dfe1-fd68-7bb4-4e47-63ae47054837.png)

以下の通り設定します。
![変数を初期化する２.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214243/de286531-9a6e-9a12-0938-020429c3bb4a.png)

#### HTTP
以下の通りに設定をします。

| 項目 | キー | 値 |
|:-----------|:-----------|:------------|
| 方法       | -        | POST        |
| URI    | -   | https://api.line.me/v2/bot/message/push      |
| ヘッダ１      | Content-Type        | application/json         |
| ヘッダ２         | Authorization          | 'Bearer ' と [LINE Developersでコピーしたチャネルアクセストークン]           |
| 本文       | -      | 下記|

```
{
  "to": "[上記で取得したメッセージ送信ユーザーのID]",
  "messages": [
    {
      "text": "kintoneにレコードを登録しました",
      "type": "text"
    }
  ]
}
```


![HTTP.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214243/cdd1d5aa-0174-6d87-5429-a4b3c0108eb5.png)


以上でフローの設定は終わりです。最後に忘れずに「保存」をクリックしましょう。
![保存.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214243/c7d721c8-03e6-85ea-023b-0e22446aa091.png)



## Webhook の設定
最後にWebhookの設定をします。
「HTTP 要求の受信時」を開くと、「HTTP POSTのURL」が生成されています。
「HTTP POSTのURL」をコピーします。
![HTTPPOSTのURL.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214243/010cd4c1-5720-aee7-563b-ebd3ff868d82.png)

LINE Messaging APIのWebhookにコピーした「HTTP POSTのURL」を登録します。
Webhook設定の「編集」をクリックします。

![Webhook設定.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214243/96d0dbec-bd2b-9998-1c16-f2f325090b1d.png)

先ほどコピーしたHTTP POSTのURLを貼り付け「更新」をクリックします。
![WebhookURL.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214243/01437af4-f26c-b4ad-68ba-7dcdb7f02061.png)

更新したあとにWebhookの利用を「オン」にするのも忘れずに！
![Webhookの利用.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214243/58018e7c-8d50-31e5-1013-47d6f891b606.png)


これで設定は終わりです！

## 動作確認
では、LINEからメッセージを送ってみましょう！

![動作確認.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214243/132d1820-03a9-6da9-1979-d148b38beb89.gif)




メッセージが返ってきました！
kintoneのアプリにも....
ちゃんとレコードを追加されてました👏👏👏
![動作確認_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214243/d3bc5d24-f483-11df-77a3-14be18ecaae8.png)


## さいごに
ほんとうはレコードの数に応じてクリスマスツリーのオーナメントが増えるようにしたかったんです！！
ちょっと時間が足りませんでした🙇‍♀️🙇‍♀️🙇‍♀️

「連携」と聞くとハードル高く感じていましたが、PowerAutomate使えば本当に簡単にkintoneと連携できました。
まだまだいろんな使い方ができそうなので、今後もいろいろ触ってみようと思います！

## 参考サイト
- [Power Automate と LINE で通信する方法](https://qiita.com/MiyakeMito/items/fb07c535d1f796a97929)
- [Microsoft Power Automateとkintoneを連携する > 設定例：Gmailでメールを受信したらkintoneにレコードを登録する](https://jp.cybozu.help/k/ja/id/040677.html#oauth_msflow_20)
- [LINE Developersコンソールの概要](https://developers.line.biz/ja/docs/line-developers-console/overview/)