LINEbot作成手順（オウム返しバージョン）


# シーケンス図
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1035894/1dd3ec45-c17d-78ce-8a87-8aca75bcb60f.png)

# LINEアカウントの作成
LINEの公式サイトからLINEアカウントを登録する
　　⇒LINEbot宛にメッセージを送信するアカウント
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1035894/4a4ea24d-4084-c4be-8982-69dbc6abd7ed.png)

# サーバの登録
IBMCloudを使用（無料）
IBMCloudにNode-REDを構築

:::note info
Node-RED
 APIやオンラインサービス、デバイスなどの機能を繋げてアプリケーションを作成していくプラットフォーム
処理フローをブラウザの操作によって作成することができる
オープンソースソフトウェアで、Node.jsが動く環境なら何処でも動かせる
:::
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1035894/f1472d0f-5e91-00d7-0309-26064e61406a.png)

IoTでゲートウェイの実装に用いられることもある。
Webアプリケーションから送信されるhttpリクエストを受け取り、各デバイス宛に連携する。
デバイスから受信したhttpリクエストをWebアプリケーションが受信できる形式に変換し連携する。等


IBMCloudにてアカウント登録を行う

https://www.ibm.com/jp-ja/cloud

## Node-REDを追加
リソースの作成を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1035894/df62812c-8fdf-1639-d851-f58de725bc93.png)

カタログからNode-RED Starterを選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1035894/747a8bdc-b158-95f7-5563-c66450684acf.png)
アプリの作成画面に遷移するので、必須項目を入力してNode-REDを作成

リソースの確認
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1035894/cc2ef2fa-8637-96fe-c43f-c679646ab9bb.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1035894/823a08b0-7eb7-7110-43db-a739a7c182f5.png)

稼働中であることを確認
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1035894/6c104d95-ea10-d409-2a29-5a7348f56485.png)
アクセス用URL：https://[リソース名].us-south.cf.appdomain.cloud/red
ベースURL：https://[リソース名].us-south.cf.appdomain.cloud

# botのLINEアカウント作成
LINE Developersの公式ページへアクセスしログイン

https://developers.line.biz/ja/

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1035894/92f6c43f-146a-a6c5-049d-84457e42491d.png)

任意のプロバイダーを作成し、MessagingAPIのチャネルを１つ作成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1035894/b206fc58-ef87-404c-cfd0-3eb5b814b217.png)

作成したプロバイダーを選択し、チャネル基本設定を変更します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1035894/741c3c5c-960a-2829-148a-03a49be9cc80.png)

※アクセストークンとWebhookURLはNode-RED実装時に使用します。

# サーバの設定
IBMCloudのNode-REDリソースページからツールチェーンの表示を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1035894/d0f7801f-c799-cfcd-1fc9-9de140e26c0f.png)

* Eclipse Orion Web IDEの編集	
この中にある「package.json」を開きこの中の「dependencies」に以下を追加します	
　"@line/bot-sdk": "*"
さらにNode-REDから呼び出せるように「bulemix-setting.js」の「functionGlobalContext」に以下を追加します。	
　linebot: require('@line/bot-sdk')	
* 上記変更をgitへコミット	

* Delivery Pipelineの実行	
左上の再生ボタンを実行し、正常終了することを確認

# Node-REDの編集
アクセス用URLを開き、Node-REDを編集
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1035894/0534f967-8051-e60c-ea08-48dc939579e5.png)

#### POST
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1035894/f410c033-fe8d-41c7-4346-ca7dc2df6e06.png)
LINEbotのチャネル作成時に指定した、任意のAPI名をURLに指定。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1035894/2cf44be8-75ef-d05f-7da3-220e33cc63c1.png)

#### request body header
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1035894/18b0b53e-93a0-75d6-b70b-8a02619bd6f1.png)

```javascript
msg.headers = {
    "Content-Type": "application/json", "Authorization": "Bearer {アクセストークン}"
};
var event = msg.payload["events"][0];
if(event["message"]["type"] != "text"){
    return msg;
}
var message = event["message"]["text"];
var replyToken = event["replyToken"];
var replyMessage = {"type": "text", "text": message + "!!"}
msg.payload = {"messages": [replyMessage], "replyToken": replyToken};
return msg

```

#### LINE REPLY API実行
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1035894/74fe496b-2c8d-3214-a195-b8c15ba7d09c.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1035894/5c6826e6-a3c3-790e-073a-6e85635aa137.png)

URL：https://api.line.me/v2/bot/message/reply
API仕様は公式サイトに記載あり：https://developers.line.biz/ja/reference/messaging-api/#message-event

# 動作確認
自身のLINEアカウントの友だちにLINEbotのアカウントを追加し、メッセージを投げてみましょう。
※スタンプなどは利用できません。