LINE Messasging APIでメッセージ送信を試してみた

# LINE Messasging APIで通知機能を試してみた

本稿はLINE Messaging APIを試した際のメモ。
LINE Messaging APIでメッセージ送信を行うまでの流れは以下の通り。

1. LINE Developersにログイン
2. プロバイダー作成
3. チャンネル作成
4. チャンネル(Bot)の友人登録
5. メッセージ送信

## LINE Developersにログイン

以下のリンクからLINE Developersにログインする。

https://developers.line.biz/console/

![Screenshot from 2019-05-02 00-47-17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/263164/62c50943-5d91-60d7-a6de-f7394d05f836.png)

アカウントがなかった場合は作成する。
私の場合、アカウント自体はあったが、普段スマホでしか使用しないため、
ログイン時のメールアドレス？ パスワード？が未設定だった。

## プロバイダー作成

LINE Messaging APIを使用するには、チャンネルを作成する必要がある。
そして、チャンネルを作成するためにはプロバイダーを作成する必要がある。
プロバイダーについての説明は、以下の画面の通りである。

プロバイダーの作成は以下の画面や右上のアイコンのメニューから作成できる。

![Screenshot from 2019-05-05 11-27-20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/263164/f5a293fe-554e-52d5-60c8-4562c62bd2a4.png)

プロバイダー作成に必要な入力情報はプロバイダー名だけである。

![Screenshot from 2019-05-05 14-22-00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/263164/a53bc666-7110-d592-cdec-5d970279e1d7.png)

## チャネル作成

プロバイダーを作成した後はチャンネルを作成する。
今回はMessaging APIの「チャンネル作成する」を押下する。

![Screenshot from 2019-05-05 13-36-41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/263164/6cae7a3c-1108-3a76-ad8b-d4219fdcfbe3.png)

チャンネル作成は以下の画面から必要な情報を入力する。

![Screenshot from 2019-05-05 11-43-34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/263164/40363105-80cf-b657-4581-ed6b403fa72a.png)

チャンネルの作成には最低限以下の情報を入力すれば良い。

* アプリ名
* アプリ説明
* 大業種
* 小業種
* メールアドレス 

上記以外にアイコンやプライバシーポリシーURLなどは任意で設定できる。
基本的にアプリ名以外は後からでもすぐに設定変更可能なため、アプリ名だけ気にすれば良い。

## チャンネル(Bot)の友人登録

作成したチャンネルをLINEアプリから友人登録するには、
「チャネル基本設定」画面に表示されているQRコード経由で登録できる。

![Screenshot from 2019-05-05 13-26-52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/263164/92d2edb9-6a81-d7ff-6a14-01618cda9319.png)

Messaging APIを試すには、予め友人登録しておく必要がある。

## メッセージ送信

通知機能を試すには、チャンネルの「アクセストークン」と、宛先の「ユーザID」が必要である。
確認方法はそれぞれ以下の通り。

* 「チャネル基本設定」画面で「アクセストークン」を確認する。最初はアクセストークンが設定されていないため、「再発行」から登録する必要がある。
![Screenshot from 2019-05-02 00-39-18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/263164/83a02cae-0fe1-ffb7-e272-23985699b125.png)
![Screenshot from 2019-05-02 00-33-47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/263164/93686c57-fa6f-a8be-0619-0794ac7947aa.png)
* 「チャネル基本設定」画面で開発者自身の「ユーザID」を確認する。
![Screenshot from 2019-05-05 13-26-57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/263164/56e6bed5-45e8-90ff-e2da-3c5b3a79518f.png)
尚、開発者自身以外のユーザIDを取得するには、
ボットサーバを作成してWebhookイベントとして取得できる。

「アクセストークン」と「ユーザID」を確認したならば、curlコマンドで、メッセージを送信できる。
以下、サンプルである。
※「アクセストークン」と「ユーザID」は実際の値に置換すること。

```shell
curl -v -X POST https://api.line.me/v2/bot/message/push \
-H 'Content-Type:application/json' \
-H 'Authorization: Bearer アクセストークン' \
-d '{
    "to": "ユーザID",
    "messages":[
        {
            "type":"text",
            "text":"Hello, world"
        }
    ]
}'
```

単純なテキスト送信以外については以下を参照。

https://developers.line.biz/ja/docs/messaging-api/message-types/

LINE Messaging APIのメッセージ送信については以上である。

## おまけ

一応受信についても試したので簡単だがメモを残す。

### メッセージ受信

チャンネルに投稿されたメッセージを受信するには、Botサーバを作成し、Webhookの設定を行う。

* Webhookは、「チャネル基本設定」画面で「Webhook URL」から設定する。設定可能なURLはHTTPSサーバのみである。
* Botサーバは、チャンネルに投稿されたメッセージ(イベント)をPOSTメソッドのJSON形式で取得できる。

私の場合、Botサーバの作成にはNode.jsを使用した。
(下記はただWebhook経由でメッセージを受信し、標準出力に受け取った情報を出力するだけ)

```javascript
var express = require('express');
var bodyParser = require('body-parser');
var app = express();
app.use(bodyParser.urlencoded({
    extended: true
}));
app.use(bodyParser.json());
app.get('/', function(req, res){
    console.log(req);
    res.send('res get');
});
app.post('/', function(req, res){
    console.log(JSON.stringify(req.body));
    console.log('======================');
    res.send('res');
});
app.listen(3000, () => console.log('My app listening on port 3000!'));
```

### 自動応答メッセージオフ

自動応答メッセージの設定が有効の場合、チャンネル(Bot)にメッセージを送信すると自動で設定されたメッセージを返信する。
デフォルトではこの状態である。
解除する場合は以下の手順で行う。

1. 「チャネル基本設定」画面で、「自動応答メッセージ」の「設定はこちら」のリンクを押下する。
![Screenshot from 2019-05-02 00-41-25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/263164/362949b5-33b1-3fab-faf6-8b8886b2e44f.png)
2. 「応答メッセージ」をオフにする。
![Screenshot from 2019-05-02 00-41-37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/263164/a4a439a7-ed58-08aa-1669-ae8a8a51fc91.png)