💬
【LINE Bot開発】Webhookの宛先をLocalhostにする
LINE Botの開発中にWebhookイベントの動作確認をしたい時があると思います。そんなとき、いちいちサーバーにデプロイせずとも手元の環境でシミュレーションが可能です。
結論: localtunnelを使う
localtunnelを使えばLocalhost上のアプリケーションを簡単に外部に公開できます。事前にポート3000でボットサーバーを起動しておいてください。
$ npm i -D localtunnel
$ npx lt --port 3000 # localhost:3000で動いているアプリケーションを公開
your url is: https://unlucky-turtle.loca.lt
こうして払い出されたURLをWebhook URLに割り当てます。
ngrok無料プランと違い、URL固定も可能
こうした目的のためにしばしばngrokが紹介されますが、こちらの場合払い出されるURLは毎回ランダムになります。URLを固定する機能(Custom subdomains機能)は有料プランでしか使えません。
一方でlocaltunnelであればオプションで使用するURLを指定可能です。
$ npx lt --port 3000 --subdomain hoge # 誰かが使用中のサブドメインは使用不可
your url is: https://hoge.loca.lt
これであればURLを払い出すたびにLINEのWebhook URLを再設定する必要がありません。
npmスクリプトに割り当てる
いちいちオプションの入力をしなくていいよう、npmスクリプトに登録します。
以下の場合、npm run expose
で実行可能です。
package.json
{
"scripts": {
"expose": "lt --port 3000 --subdomain ${LOCALTUNNEL_SUBDOMAIN} --print-requests",
},
}
- 使用するサブドメイン名は環境変数
LOCALTUNNEL_SUBDOMAIN
で別途指定しています。 -
--print-requests
でリクエストのログがターミナルに出力されるようにしています。
代替ソフトウェア
こちらにまとまっています。結構色々あります。
Discussion