💬

【LINE Bot開発】Webhookの宛先をLocalhostにする

2021/11/10に公開

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に割り当てます。webhook設定

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でリクエストのログがターミナルに出力されるようにしています。

代替ソフトウェア

https://github.com/anderspitman/awesome-tunneling
こちらにまとまっています。結構色々あります。

GitHubで編集を提案

Discussion