linebot

注意：
- スマートフォンが手元にあること

# B: LINEボット

LINE上で自動応答するチャットボットを作ります。
先週使ったHerokuに加えて、LINE Messaging APIというものを利用します。

## ①ボットのプログラムをHerokuに送る

download して解凍

（ここからの手順は先週と同様です）

→ “Create New App”

（Herokuのアプリ名：何でも良い）

（PowerShell上で）

> $env:home = "F:" （環境変数homeの設定。herokuコマンドに必要）

> git config --global user.email "xxx@yyy" （メアドを登録。gitコマンドに必要）

（展開した/linebotに移動して）

> heroku login

Herokuと接続します。
Logged in as ...と出たらOK。

> git init （新しいプロジェクトを始めるときだけ実行してください）

Gitというバージョン管理ツールで複数のファイルをまとめて扱います。

> heroku git:remote -a (Herokuのアプリ名)

Gitの保存先をHerokuにします。

> git add .

全てのファイルを対象とします。

> git commit -am "first commit"

現状を最新バージョンとして登録します。

> git push heroku master

エラーっぽいときは手順を見直してみてください。

## LINE Messaging APIのアプリを作成

- スマホでやる場合：↓を開く
- PCでやる場合：こちらから（ただし融合実験室からはアクセスできません）

→ Log in

→ Log in with LINE account

（Unable to log in automatically. となった場合はQRコードを違うブラウザで開いてみる）

Providerを新規作成する。（プロバイダとはこの後に作るchannelを入れるフォルダみたいなもの）

Channel name: （自由に決める）

Channel description: （説明。適当でよい）

Category: 保育・学校

Subcategory: 高等専門学校

Email address: （メアド）

Privacy policy URL:

Tearms of use URL:

2つ同意してCreate

ドロップダウンメニューから“Messaging API”を選択

Webhook URL → Edit → https://(Herokuのアプリ名).herokuapp.com/callbackと入力 → Update

（すみませんVerifyはできません）

Use webhook を on

Auto-reply messages → Edit → 応答メッセージをオフに

## トークンの設定

①で作成したHerokuアプリと②で設定したLINE Messaging APIを接続したいのですが、人がIDとパスワードでログインするように、①と②はシークレットとトークンと呼ばれるものを共有することで接続が許可されます。（シークレット≒ID、トークン≒パスワード）

### Channel Secret

LINE設定のトップに戻り、ドロップダウンメニューから“Basic settings”を選択

Channel secret に続く30文字ぐらいをコピー（手で打たないこと）して、Herokuの

KEY: LINE_CHANNEL_SECRET
VALUE: （さっきコピーした値、最後に改行を入れないこと）

→ “Add”

### アクセストークン

同様に、LINE設定のトップに戻り、ドロップダウンメニューから“Mssaging API”を選択

Channel access token (long lived) → Issue → 出てきた値をコピーして、Herokuの環境変数として

KEY: LINE_CHANNEL_ACCESS_TOKEN
VALUE: （コピーした値、最後に改行を入れないこと）

→ “Add”

## いよいよ実行！

LINE設定のトップに戻り、ドロップダウンメニューから“Mssaging API”を選択

QRコードで友だち追加
↓
何か送信するとその言葉がそのまま返ってくるはず。

課題： app.pyを変更して違う言葉を返すようにしてみましょう。

Herokuへの変更反映は：

> git commit -am "modified"

> git push heroku master