はじめに
Herokuを使った公開の方では,push先の登録処理(ユーザIDをjsonで記録)が行えなかったため,お家に転がってたラズパイzeroをサーバに使います.※Herokuだと30分アクセスがない場合に自動的に停止するようになっていて,再度アクセスがあった時に新しくプログラムが起動する?のでメモリに格納していた変数が全てリセットされます.24時間停止しないようにすることもできますが,月の無料時間をオーバーする可能性があるのでやめました.(クレカ登録をすると無料時間が増えるので1つのサービスだけの場合は無料でできそうです.)
事前準備
- ラズパイ
- ngrokのアカウント
- LINE developersの登録
- python環境
LINE developersの登録
以下から登録https://developers.line.biz/ja/services/messaging-api/
登録が済んだら,Basic settingsの下のところにある'Channel secret'とMessaging APIの下のところにある'Channel access token'の文字列をひかえる.(Channel access tokenはissueをクリックして生成)
ラズパイ関連
OSインストール,ポート設定などは割愛ラズパイの設定
環境変数の設定
.bashrcに環境変数を記入(Herokuのときと名前を変えました)export LINE_BOT_ACCESS_TOKEN="【LineDevelopersのChannelの設定ページで表示されたAccessトークン】" export LINE_BOT_CHANNEL_SECRET="【LineDevelopersのChannelの設定ページで表示されたSECRET】"変更を読み込み
$ source ~/.bashrc
ngrok
LINE botのWebhook設定をする際にhttps通信でなければいけないのでngrokというサービスを使います.(最初はopensslを使ってやろうとしたのですが無料の証明書だと弾かれる?みたいだったので..)
- アカウントを作成
- ラズパイにngrokをインストール
- ログイン後,左上メニューから「Authentication」の「Your Authtoken」を選択し,コピー
- ラズパイでホームディレクトリに移動し,以下のコマンドを実行
$ ngrok authtoken 【Your Authtokenの文字列】
LINE bot関連
Webhookの設定
Webhook URL : https://"ngrokで設定された文字列"/callbackとすればOK(文字列のところは後述のデプロイを参照)
※後ろの/callbackのところは適宜自分のプログラムに合わせて変更してください
あとは,初期設定されてる余計な返答の無効化などすると良いとおもいます.
デプロイ
- ラズパイの方でHerokuでpushしていたようにmain.pyを用意して実行
- main.py実行後,以下のコマンドでngrokで生成されたhttpsのURLをLINE botのWebhookに設定すればOK
$ ngrok http 【ポート番号】※依存するライブラリを入れておく必要があります.
これで不具合がなければおしまい.