Line Messaging APIで簡単Line Bot作成（超初心者向け）

# はじめに
Line Messaging APIを使った超初心者向けLine Bot作成の手順を記載したものです。
本記事の手順を実施するには、以下のアカウントが必要になります。

+ Line Developperアカウント
+ AWSアカウント

# Messaging APIとは
[Line公式ドキュメント](https://developers.line.biz/ja/docs/messaging-api/overview/)によると、**「Messaging APIを使って、ユーザー個人に合わせた体験をLINE上で提供するボットを作成できます。作成したボットは、LINEプラットフォームのチャネルに紐づけます。チャネルを作成すると生成されるLINE公式アカウントをボットモードで運用すると、LINE公式アカウントがボットとして動作します。」**とあります。
つまり、Messaging APIを使用することで、Lineのアプリ（チャネル）とサーバー（ボットサーバー）を連携でき、Line Botが作成できるというわけです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307872/fa684911-fd54-e62c-b378-9f68c396e444.png)
※[Line公式ドキュメント](https://developers.line.biz/ja/docs/messaging-api/overview/)より

# 簡単なLine Botを作成する
まずは、固定のメッセージを返答するLine Botを作成します。

Line Botは、Line Developperサイトにてチャネルという物を作成し、チャネルを作成した際に表示されるQRコードからLine公式アカウントを友達登録することで作成され、スマホなどのLineアプリからLine Botを使用する事ができるようになります。
上記の作業を行うだけで、ボット用サーバーを用意することなく、固定のメッセージを返答するLine Botを作成する事ができます。

### 作成手順

**1. Line Developperログイン**

[ここ](https://developers.line.biz/ja/)からLineアカウントでLine Developperへログインします。Lineアカウントのユーザ名／パスワードは、スマホなどのLineアプリで登録したメールアドレスとパスワードになります。
まだ、登録していない方は、Lineアプリでメールアドレスとパスワードを登録してください。


+ 画面中央にある、ログインボタンを押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307872/96d1675d-1063-2bec-e360-0714f1a1c214.png)

+ LINEアカウントでログインボタンを押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307872/ab8b3dcd-a1d0-7071-d8d3-6d144ad495a8.png)

+ Lineアプリで登録したメールアドレスとパスワードを入力し、ログインします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307872/9428de00-f0b8-4558-f5d1-52bce75043ab.png)

+ 初回ログイン時のみ開発者登録を行う必要がありますので、名前とメールアドレスを登録します。
メールアドレスは、ログイン時に使用した物と同じでなくても問題ありません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307872/ae31e71f-c2ca-736a-1d77-e0e56c931597.png)


**2. 新規プロバイダー作成**

新規にプロバイダー作成します。プロバイダーとは組織名のことです。任意の名称（本手順ではSample Providerとします）を入力します。

+ プロバイダー作成ボタンを押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307872/0c04e0fb-7861-a057-126c-c4177097c2ab.png)

+ プロバイダー名を入力し、作成ボタンを押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307872/ff84ee33-b1dd-f351-efda-4cb5b39a97e5.png)

+ プロバイダーを作成が完了すると以下のような画面となります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307872/6f1edc12-7bbf-11f6-5de0-f1bb1984701c.png)


**3. チャネル作成**

+ プロバイダー作成完了後の画面で、「MessagingAPI」を選択します。

+ 必要事項を記入します。

<dl>
  <dt>&nbsp;&nbsp;&nbsp;チャネル名</dt>
  <dd>&nbsp;任意の名称を入力してください。</dd>
  <dt>&nbsp;&nbsp;&nbsp;チャネル説明</dt>
  <dd>&nbsp;任意の説明文を入力してください。</dd>
  <dt>&nbsp;&nbsp;&nbsp;大業種</dt>
  <dd>&nbsp;選択肢の中から選んでください。</dd>
  <dt>&nbsp;&nbsp;&nbsp;小業種</dt>
  <dd>&nbsp;選択肢の中から選んでください。</dd>
  <dt>&nbsp;&nbsp;&nbsp;メールアドレス</dt>
  <dd>&nbsp;自身のメールアドレスを入力してください。</dd>
</dl>

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307872/f61528ba-545d-ffcf-6442-23574155ee10.png)

+ 利用規程に同意にチェックを入れて、作成ボタンを押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307872/5d8f3539-6b27-8de4-b9f0-b504497363fd.png)

+ チャネルの作成が完了すると、以下のような画面になります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307872/b2279712-4738-6e23-c411-5744d740295f.png)


**4. LINE公式アカウントの友達登録**

+ チャネル作成完了後の画面で、「MessagingAPI設定」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307872/4690ddae-16f8-0464-9ea1-ccfa8cf0b6b5.png)

+ QRコードが表示されるので、コードリーダーアプリで読み取ります。LINEアプリで読み取る必要はありません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307872/273c3159-607c-0584-ea88-1ba498516bab.png)

+ 友達追加します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307872/2b59086d-6f85-99d2-3312-604c200f9b24.png)


### 動作確認
これで、固定メッセージを返却するLine Botが完成しました。Lineアプリを開いてメッセージを送信してみてください。
毎回同じメッセージで返答されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307872/4244ea14-a642-64fd-294e-39e081b62d90.png)

# バックエンド（ボットサーバー）と連携する。
ここからは、バックエンドと連携させていきます。
バックエンドと連携させる事ができれば、AI等をバックエンドで実行させて結果をLineに返すなど、Line Botの機能の幅が格段に拡がります。

本記事では、「こんにちは」というメッセージを受け取ったら「こんにちは」を返し、「おはようございます」というメッセージを受け取ったら「おはようございます」というメッセージを返すバックエンドシステムを構築します。
バックエンドシステムはAWSを利用して構築し、使用するサービスは以下です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307872/84bafea2-a5bf-848a-bd20-685b27c5afb9.png)&nbsp;&nbsp;&nbsp;![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307872/3e737811-c9f6-97cd-2754-7f3e6d9dcefb.png)

### 手順（LINE：チャネルアクセストークンの発行）
先程作成したチャネルから、チャネルアクセストークンを発行します。チャネルアクセストークンはバックエンドからメッセージを送信するために必要となります。

**1-1. チャネルアクセストークンの発行**

+ 友達登録用のQRコードを確認したページを下までスクロールします。ページ最下部に、チャネルアクセストークンの発行ボタンがありますのでクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307872/f4f1f20c-ef7b-199b-5310-d626818c172d.png)

+ これで、チャネルアクセストークンが発行されます。発行されたチャネルアクセストークンはメモしておいてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307872/93756aa4-a222-caf5-e4e3-c52566e737fd.png)

### 手順（バックエンド構築）
**AWS Lambda**
**2-1. Lambdaサービスの選択**
AWSコンソールにログインし、Lambdaを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307872/f6c2e259-b16c-afd8-0a08-01cc32de1bc7.png)

**2-2. 関数作成**
関数作成ボタンをクリックし、関数の作成を開始します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307872/f4257c90-b86f-6048-fa8c-b842e04107a6.png)

**2-3. 関数名の入力とランタイムの選択。**
本記事では、関数名は「ReplayMessageFunction」としています。ランタイムはPython3.8を選択してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307872/06ca0cee-25e0-f799-2ad6-4429fd06d819.png)

**2-4. ソースコード及びライブラリの登録**

+ ソースコード及びライブラリを登録します。アクションから.zipファイルをアップロードを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307872/1ab791a5-294c-7f3e-8d7d-2fcc2e842d71.png)

+ アップロードをクリックし、Lambda関数ファイルをアップロードをします
アップロードするファイルは[こちら](https://github.com/YSFT-KOBE/LineAWSLambdaSample)からダウンロードしてください。
用意したファイルをアップロードすることで、ソースファイル(Python)とPython用LineBotライブラリがアップロードされます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307872/d13e2b4c-28eb-40b1-a54b-d5d4f2ad5950.png)

**2-6. 関数の修正**
Lmabda関数の6行目にある「\<channel access token\>」を、手順1-1で発行したチャネルアクセストークンに書き換えてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307872/3fa62a40-b88d-2231-ff36-f46d8ec2ba3b.png)

**2-7. 修正の反映**
Deployボタンをクリックします。修正した内容が反映されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307872/3165dc2a-791b-96eb-9336-4a2849cdb932.png)

これで、Lambdaの設定は完了です。

**Amazon API Gateway**
**3-1. API Gatewayサービスの選択**
AWSコンソールにログインし、API Gatewayを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307872/fa1f4a6a-3cd8-df66-c677-3d7af725fd28.png)

**3-2. API作成**
左のメニューからAPIを選択し、APIを作成ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307872/34d9d246-7444-cb69-9f7e-383a0a751916.png)

**3-3. HTTP APIの構築**
HTTP APIの構築ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307872/b2b711c9-a598-06a7-e939-ebe89862935d.png)

**3-4. 統合の追加**
統合を追加ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307872/72db1be6-f683-ec6d-b533-130adc47796f.png)

**3-5. 統合サービスの選択**
統合するサービスのリストからLambdaを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307872/be15de97-a312-d5bf-6955-9307632550d1.png)

**3-6. 必要事項の入力**
AWSリージョン・Lambda関数・API名を入力／選択して、次へボタンをクリックします。
Lambda関数は、先の手順で作成したLambda関数を選択します。
その他については、以下を設定します。

+ AWSリージョン：ap-northeast-1
+ API名：replayMesssage

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307872/00ecf6bc-fd46-fcd6-b8c2-24eaa5675b99.png)

**3-7. ルートの設定**
メソッドは「POST」を選択、リソースパスは「/replayMessage」を入力し、次へボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307872/4351b11b-89cf-f69c-e1ad-b9c48d998d56.png)

**3-8. ステージの定義**
ここは何も変更せず、次へボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307872/b240248f-4ace-9884-53d5-9f1fe68757d3.png)

**3-9. 設定内容の確認**
設定内容を確認し、作成ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307872/caec3398-5e60-ce8d-896c-77d4bf302836.png)

**3-10. 発行されたURLの確認**
次の手順でURLを使用しますので、メモしておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307872/384c1cb9-f642-8241-1620-ca6d5090c4e2.png)

これで、API Gatewayの設定は完了です。

### 手順（LINE：Webhookの設定）
**4-1. Webhookの設定**

+ バックエンドと連携する為に、Webhookを設定します。編集ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307872/e0cabfde-ee4d-7bac-975e-01739635386a.png)

+ 3-10で発行されたURLと、3-7で設定したリソースパスを組み合わせたURLを入力します。
例：**https://XXXXXXXXX.execute-api.ap-northeast-1.amazonaws.com/replyMessage**

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307872/b9928916-8fed-374e-f8cf-ae5f403269e5.png)

**4-2. Webhookの有効化**
Webhookの利用ボタンをクリックして有効化します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307872/f2555ef5-31bb-e8da-afd5-5c429d73d67b.png)

**4-3. メッセージの無効化**
応答メッセージ及びあいさつメッセージを無効化します。
「簡単なLine Botを作成する」で固定メッセージを応答するLine Botを作成しましたが、この機能が有効化していたことで、自動で応答メッセージを返していました。
バックエンドから応答メッセージを返しますので、この機能は無効化しておきます。

+ 応答メッセージ項目の右にある編集ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307872/6fc608b5-0ee3-67b5-052e-3abaa9dac1d9.png)

+ あいさつメッセージ及び応答メッセージ共にオフを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307872/c9610b03-4855-222a-b22e-26048cfcd931.png)

これで設定はすべて完了です。Lineアプリからメッセージを送信してみてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307872/9e511092-efdc-eb67-ae69-97faa48ec703.png)

# まとめ
Line DeveloperとAWSでLine Botを作成してみました。
ローコーディングでサービスを構築でき、また、普段使用しているアプリを使ってUIを構築する事ができることは、ユーザーにとっては使用するさいの学習コストが少なくてすみます。さらにバックエンドとしてAWSを利用することで、開発コストも抑える事ができます。