LINE Messaging API を使ってLINEにメッセージ送信／メッセージ返信する

# 概要

ふとLINEのUI使ってみたいなぁと思い、Messaging APIを使って、メッセージ送信／メッセージ返信にチャレンジ

## できるようになること

* LINEのボット（友だち）を作れる
* 作ったボットにメッセージを送ると応答メッセージを返信できるようになる
* 作ったボットからプッシュメッセージが受け取れる

### 別の記事で書いたAWS Lambdaを使うパターン

[LINE Messaging API とAWS Lambdaを連携させてみる](https://www.studycloudtech.com/aws/start-line-messagingapi/ "LINE Messaging API とAWS Lambdaを連携させてみる")

### 別の投稿記事で書いたできるようになること

* 作ったボットに送ったメッセージがAWSのDB(DynamoDB)に保存できるようになる

[LINE Messaging API とAWSサービスを連携させてみる～位置情報をDynamoDBに保存する～](https://qiita.com/fkooo/items/05e87ae07d73ea563547 "LINE Messaging API とAWSサービスを連携させてみる～位置情報をDynamoDBに保存する～")

### 本投稿の画面イメージが古くなってきたので最新版の解説

[LINE Messaging API を使ってAWS Lambdaに連携する](https://www.studycloudtech.com/aws/start-line-messagingapi/ "LINE Messaging API を使ってAWS Lambdaに連携する")


## 参考書籍

[LINE BOTを作ろう! Messaging APIを使ったチャットボットの基礎と利用例](https://amzn.to/2KFDsEO "LINE BOTを作ろう! Messaging APIを使ったチャットボットの基礎と利用例")
<a target="_blank"  href="https://www.amazon.co.jp/gp/product/4798150738/ref=as_li_tl?ie=UTF8&camp=247&creative=1211&creativeASIN=4798150738&linkCode=as2&tag=line_msg_api_001-22&linkId=69d88b4ec5e9925d35a0b4fb18f25597"><img border="0" src="//ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&MarketPlace=JP&ASIN=4798150738&ServiceVersion=20070822&ID=AsinImage&WS=1&Format=_SL110_&tag=line_msg_api_001-22" ></a><img src="//ir-jp.amazon-adsystem.com/e/ir?t=line_msg_api_001-22&l=am2&o=9&a=4798150738" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />
[【Kindle版】](https://amzn.to/2PnfXQ3 "【Kindle版】")
<a target="_blank"  href="https://www.amazon.co.jp/gp/product/B0714D11DK/ref=as_li_tl?ie=UTF8&camp=247&creative=1211&creativeASIN=B0714D11DK&linkCode=as2&tag=line_msg_api_001-22&linkId=ce711c0873445be15ed60365e30a86f9"><img border="0" src="//ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&MarketPlace=JP&ASIN=B0714D11DK&ServiceVersion=20070822&ID=AsinImage&WS=1&Format=_SL110_&tag=line_msg_api_001-22" ></a><img src="//ir-jp.amazon-adsystem.com/e/ir?t=line_msg_api_001-22&l=am2&o=9&a=B0714D11DK" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />

画面イメージ／サンプル付きで誰にでもわかりやすく丁寧に書かれていた本(^^)

[チャットボット AIとロボットの進化が変革する未来](https://amzn.to/2ADvlUY "チャットボット AIとロボットの進化が変革する未来")
<a target="_blank"  href="https://www.amazon.co.jp/gp/product/4800711428/ref=as_li_tl?ie=UTF8&camp=247&creative=1211&creativeASIN=4800711428&linkCode=as2&tag=line_msg_api_003-22&linkId=bf0411daa5c30244c113a3923189835d"><img border="0" src="//ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&MarketPlace=JP&ASIN=4800711428&ServiceVersion=20070822&ID=AsinImage&WS=1&Format=_SL110_&tag=line_msg_api_003-22" ></a><img src="//ir-jp.amazon-adsystem.com/e/ir?t=line_msg_api_003-22&l=am2&o=9&a=4800711428" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />
[【Kindle版】](https://amzn.to/2XqkTq9 "【Kindle版】")
<a target="_blank"  href="https://www.amazon.co.jp/gp/product/B01LXDLO1L/ref=as_li_tl?ie=UTF8&camp=247&creative=1211&creativeASIN=B01LXDLO1L&linkCode=as2&tag=line_msg_api_003-22&linkId=1cbb5b1c37e7df39f2474b6711b1c1cf"><img border="0" src="//ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&MarketPlace=JP&ASIN=B01LXDLO1L&ServiceVersion=20070822&ID=AsinImage&WS=1&Format=_SL110_&tag=line_msg_api_003-22" ></a><img src="//ir-jp.amazon-adsystem.com/e/ir?t=line_msg_api_003-22&l=am2&o=9&a=B01LXDLO1L" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />
ボットの近未来、ボットへの期待についてはこっち
わかりやすく書かれている上、個人的には読んでいると近未来に対してワクワクしてくる本


## およその作業時間

30分

## 必要なもの

* LINEアカウント
* 応答メッセージを返信するためのWebサービス（Herokuを利用）
* HTTP(POST)リクエストが送信できる環境

Herokuは以下の記事に記載している1. IntroductionのHeroku Account取得だけでOK
無料ですぐ取得可能（メールアドレスのみ。クレカ登録不要）
[無料でWebアプリケーションを公開できるHerokuをやってみた](https://qiita.com/fkooo/items/0365b50d4534a236dcb2 "無料でWebアプリケーションを公開できるHerokuをやってみた")

## 必要な知識

* REST（HTTP POSTでOK)

## 注意事項

* 無料お試しのフリープランのため利用制限（メッセージ配信1,000通までなど）あり

詳細：[料金プラン](https://www.linebiz.com/jp/service/line-official-account/plan/ "プラン・料金")

## 手順の概要

１．チャネルの作成
　LINEアカウントでログインして初回登録（メールアドレス登録など）をする
２．Herokuでサンプルボットを作成する
　GitHubから直接HerokuにデプロイするのでHerokuのアカウントさえあれば事前準備不要で簡単
　ここまでで応答メッセージを返信できるようになる
３．プッシュメッセージを送る
　HTTP(POST)でプッシュメッセージ送信

＜参考：LINE公式ページ＞
[Messaging APIの概要](https://developers.line.biz/ja/docs/messaging-api/overview/ "Messaging APIの概要")
[Messaging APIを始めよう](https://developers.line.biz/ja/docs/messaging-api/getting-started/ "Messaging APIを始めよう")

### １．チャネルの作成
LINEの公式ページの通り

![image.png](https://qiita-image-store.s3.amazonaws.com/0/188544/09212f74-a542-e1d9-8f45-b59b88f2a1fc.png)


LINE公式ページ：[LINE Developersコンソールでチャネルを作成する](https://developers.line.biz/ja/docs/messaging-api/getting-started/#using-console "LINE Developersコンソールでチャネルを作成する")

### ２．Herokuでサンプルボットを作成する

![image.png](https://qiita-image-store.s3.amazonaws.com/0/188544/c5107027-d9bd-16ab-5df8-491f2fe0e06b.png)


LINE公式ページ：[Herokuでサンプルボットを作成する](https://developers.line.biz/ja/docs/messaging-api/building-sample-bot-with-heroku/ "Herokuでサンプルボットを作成する")

1.チャネルシークレットとチャネルアクセストークンは、コンソールリンクをクリックすると表示される画面で、「１．チャネルの作成」で作成したプロバイダー、チャネルをクリックすると表示されるChannel基本設定画面からボタンで発行／再発行が可能

![image.png](https://qiita-image-store.s3.amazonaws.com/0/188544/8cc41366-4483-f6a5-7047-a3d19f138a9d.png)
![image.png](https://qiita-image-store.s3.amazonaws.com/0/188544/900d4e06-7d13-5257-c26d-0b937d6126e3.png)
![image.png](https://qiita-image-store.s3.amazonaws.com/0/188544/8b11bcee-a873-d52a-681a-e3ac500f21ac.png)


2.sample-spring-boot-echo GitHub ディレクトリにある READMEファイルは「READMEファイル」をクリックするとGitHubに飛ぶのでこちらの手順に従う

![image.png](https://qiita-image-store.s3.amazonaws.com/0/188544/d1271beb-48db-4366-0bb3-15d817d9b19b.png)


[GitHub公式ページはこちら](https://github.com/line/line-bot-sdk-java/tree/master/sample-spring-boot-echo#step-2 "GitHub公公式ページはこちら")

### ３．プッシュメッセージを送る

![image.png](https://qiita-image-store.s3.amazonaws.com/0/188544/93834c97-679f-2cfb-5518-3c907b52aa0b.png)

LINE公式ページ：[メッセージを送信する](https://developers.line.biz/ja/docs/messaging-api/sending-messages/#push-messages "メッセージを送信する")

送信先が１人の場合はエンドポイント：
https://api.line.me/v2/bot/message/push

```json:content.json
{
    "to": "XXXXXXXXXXXXXXXXXXXXXX",
    "messages": [
        {
            "text": "Hello, world1",
            "type": "text"
        }, 
        {
            "text": "Hello, world2", 
            "type": "text"
        }
    ]
}
```

となる。
toに設定するuserIdは２．で確認したHerokuのログに出力されている

![image.png](https://qiita-image-store.s3.amazonaws.com/0/188544/fc64822b-4542-1d6d-9c2f-7d6eb8c486c1.png)

## まとめ
30分で試せるお手軽感がいい
LINEのUIが使えるためUIに悩まずサーバ側だけに集中できるようになるのは大きい

今後は↓の参考書籍を参考にいろいろボット作りにチャレンジしてみる！かも。。。

[おもしろまじめなチャットボットをつくろう](https://amzn.to/2lXvAzP "おもしろまじめなチャットボットをつくろう")
<a target="_blank"  href="https://www.amazon.co.jp/gp/product/4798051640/ref=as_li_tl?ie=UTF8&camp=247&creative=1211&creativeASIN=4798051640&linkCode=as2&tag=line_msg_api_002-22&linkId=0ba75dfefae137ad414b9f00579aaa06"><img border="0" src="//ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&MarketPlace=JP&ASIN=4798051640&ServiceVersion=20070822&ID=AsinImage&WS=1&Format=_SL110_&tag=line_msg_api_002-22" ></a><img src="//ir-jp.amazon-adsystem.com/e/ir?t=line_msg_api_002-22&l=am2&o=9&a=4798051640" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />
[【Kindle版】](https://amzn.to/2UIUYgB "【Kindle版】")
<a target="_blank"  href="https://www.amazon.co.jp/gp/product/B076J1V873/ref=as_li_tl?ie=UTF8&camp=247&creative=1211&creativeASIN=B076J1V873&linkCode=as2&tag=line_msg_api_002-22&linkId=9b40ac306f511bf43982b5cea57288ef"><img border="0" src="//ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&MarketPlace=JP&ASIN=B076J1V873&ServiceVersion=20070822&ID=AsinImage&WS=1&Format=_SL110_&tag=line_msg_api_002-22" ></a><img src="//ir-jp.amazon-adsystem.com/e/ir?t=line_msg_api_002-22&l=am2&o=9&a=B076J1V873" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />

PHPを使った誰にでもできそうなサンプルがあってボット作成がいろいろできそうな本です(^^)