オウム返しLINE BOT 作成

#はじめに
オウム返しするline chatbot を作ります。
他にも参考になる記事はたくさんありますが、今回は自分がつまずいたところを含めて書いていこうと思います。
*LINEdevelopersに登録している前提で書いてます。登録してない方は「LINEdevelopers　使い方」などで調べると色々出てきます。
#実行環境
window7 64bit
python 3.6.4
editer Atom(何でも良い)
ライブラリ：
heroku
Flask
line-bot-sdk
#Herokuの準備
Herokuとは簡単にいうと、自分で作ったwebアプリを簡単に公開できるようです。
line botを作るにあたって必要ですのでインストールしときましょう。
アカウント作成してHerokuをインストールします。
https://jp.heroku.com/

インストールとアカウント作成ができたらコマンドプロンプトで

```
heroku login
```
と入力すると
![her.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/705524/be3cf099-a1ca-e89b-4cfa-eed3d27e7917.jpeg)
このような画面がブラウザで表示されるので「Log in」を押す。
すると
![dd.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/705524/e697df72-d9df-1641-27ed-6e8e7559458a.jpeg)
無事ログイン出来た事が確認できます。
#ファイル作成
必要なのは
runtime.txt
requirements.txt
Procfile
main.py
の４つを作ります。ひとつずつ見ていきましょう
・runtime.txtの中身

```
python-3.6.4
```
・requirements.txtの中身

```
Flask==1.1.2
line-bot-sdk==1.17.0
```
これはコマンドプロンプトで pip freeze と入力してコピペ
・Procfile (拡張子なし)の中身

```
web: python main.py
```
・main.py

```
from flask import Flask, request, abort
import os

from linebot import (
    LineBotApi, WebhookHandler
)
from linebot.exceptions import (
    InvalidSignatureError
)
from linebot.models import (
    MessageEvent, TextMessage, TextSendMessage,
)

app = Flask(__name__)

#環境変数取得
YOUR_CHANNEL_ACCESS_TOKEN = os.environ["YOUR_CHANNEL_ACCESS_TOKEN"]
YOUR_CHANNEL_SECRET = os.environ["YOUR_CHANNEL_SECRET"]

line_bot_api = LineBotApi(YOUR_CHANNEL_ACCESS_TOKEN)
handler = WebhookHandler(YOUR_CHANNEL_SECRET)

@app.route("/")
def hello_world():
    return "hello world!"

@app.route("/callback", methods=['POST'])
def callback():
    # get X-Line-Signature header value
    signature = request.headers['X-Line-Signature']

    # get request body as text
    body = request.get_data(as_text=True)
    app.logger.info("Request body: " + body)

    # handle webhook body
    try:
        handler.handle(body, signature)
    except InvalidSignatureError:
        abort(400)

    return 'OK'

@handler.add(MessageEvent, message=TextMessage)
def handle_message(event):
    line_bot_api.reply_message(
        event.reply_token,
        TextSendMessage(text=event.message.text))

if __name__ == "__main__":
#    app.run()
    port = int(os.getenv("PORT"))
    app.run(host="0.0.0.0", port=port)
```
main.pyは編集せずそのままコピペで使えます(引用)
これらのファイルを１つのフォルダにまとめましょう。
#アプリケーションの作成と設定
コマンドプロンプトにて

```
heroku create *******
heroku config:set YOUR_CHANNEL_ACCESS_TOKEN="**********" --app **********
heroku config:set YOUR_CHANNEL_SECRET="**********" --app **********
```
＊＊＊＊＊の部分を自分の環境に合わせて入力します。
最初の「heroku create ＊＊＊＊＊」にはアプリ名を入れます。
YOUR_CHANNEL_ACCESS_TOKENとYOUR_CHANNEL_SECRETはLINEdevelopersの「チャンネル基本設定」「Messaging API設定」に書いてあります。
その後の「--app ＊＊＊＊＊」にアプリ名を入れます。

#Herokuをデプロイ
コマンドプロンプトにて

```
git init
git add .
git commit -m "test commit"
git push heroku master
```
と順番に入力します。
最後に

```
heroku open
```
入力すると・・・
![gg.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/705524/3e853b82-d893-fadf-fc81-9f7e66c99f74.jpeg)

とブラウザ上に表示できれば成功です。

あとはlineアプリ内でオウム返しbotの動作確認ができると思います。
![IMG_3328.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/705524/9bc19861-53bf-048c-88a8-3c566b039d69.jpeg)


#つまずいたところ
そもそもの入力ミスが非常に多かった。。
「Procfile」ファイルが「Procfile.text」になっていた事が原因でエラー解決するのに時間掛かった。。
意外と簡単なミスって気づかない。
あとどこでエラーが出てるか分からないって人は

```
heroku log
```
と入力するとエラーの原因が分かるかも。

cheer up!!