Tech Racho エンジニアの「?」を「!」に。
  • Ruby / Rails関連以外

Docker + ngrokで10分で作るLINEbot

BPSの福岡拠点として一緒にお仕事をさせていただいています、株式会社ウイングドアの田上です。
本日はタイトルの通り、Docker + ngrokを使ってLINEのオウム返しbotを作ってみたのでご紹介いたします🦜

準備するもの

  • Docker for Macのインストール
  • ngrokのインストール
  • LINEアカウント

Docker for Macのインストール

Docker Hub

公式サイトに従ってDocker for Macをインストールしてください。

ngrokのインストール

ngrokを使うとローカル環境に立ち上げたWebアプリをお手軽にインターネットに外部公開することができます。

ngrok – secure introspectable tunnels to localhost

こちらも、公式サイトに従ってngrokをダウンロードしてください。

LINEbot用アカウントの作成

LINE Developers

  • LINE Developersにアクセスし、ログインをクリックします。

  • [LINEアカウントでログイン]をクリックし、お持ちのLINEアカウントでログインをします。

  • プロバイダー>[作成] にて、プロバイダー情報を開設します。

  • 作成したプロバイダーが一覧に表示されるので、選択します。

  • チャネル設定>[新規チャネル作成] を選択します。

  • Messaging APIを選択します。

  • アナウンスに従って入力を行ってチャネルを開設します。

  • 開設したチャネルがリストに追加されるので選択します。

  • Messaging API設定>チャネルアクセストークンにて、[発行]ボタンを押すとチャネルアクセストークン文字列が生成されるため、控えておきます。

LINEbotを動かすDockerコンテナの作成

次に、LINEbotを動かすためのプログラムを準備していきます。

今回はプロジェクト構成を以下の通りにしました。

LINEBot_test
├── docker-compose.yml
├── nginx
│   └── nginx.conf
└── www
   └── html
       └── index.php

docker-compose.yml

version: '3'
services:
  nginx:
    image: nginx:latest
    ports:
      - 8080:80
    volumes:
      - ./nginx/nginx.conf:/etc/nginx/conf.d/default.conf
      - ./www/html:/var/www/html
    depends_on:
      - php
  php:
    image: php:7.3-fpm
    volumes:
      - ./www/html:/var/www/html

nginx/nginx.conf

server {
   listen 80;
   server_name _;
   root  /var/www/html;
   index index.php index.html;
   access_log /var/log/nginx/access.log;
   error_log  /var/log/nginx/error.log;
   location / {
       try_files $uri $uri/ /index.php$is_args$args;
   }
   location ~ \.php$ {
       fastcgi_pass php:9000;
       fastcgi_index index.php;
       fastcgi_param SCRIPT_FILENAME  $document_root$fastcgi_script_name;
       include       fastcgi_params;
   }
}

www/html/index.php

LINEbotのプログラム部分となります。
Messaging APIのリファレンスを参考にリクエストメッセージを組み立てていきます。

参考:Messaging APIリファレンス | LINE Developers

手順3 Dockerコンテナの立ち上げ

  • プロジェクトルートで以下のコマンドを実行し、Dockerコンテナを起動します。
docker-compose up -d

手順4 ngrokで立ち上げたDockerコンテナへのポートフォワーディング

  • ngrokを使い、立ち上げたDockerコンテナへポートフォワーディングを行います。
ngrok http -host-header="0.0.0.0:8080" 8080

  • コマンドを実行すると上記の状態となりますので、ForwardingのhttpsのURLを控えておきます。

Webhook URLの登録

  • LINE Developersにて、Webhook URLにngrokでポートフォワーディングしているhttpsのURLを登録します。

httpsのURLでなければWebhook URLへの通知が届かないので注意してください。

実行

  • Messaging API設定のQRコードより友達登録を行い、メッセージを送信すると、送信した内容がオウム返しされるはずです❗️

まとめ

実際にやってみましたが、Dockerとngrokがインストールされている前提で、
合計8分前後でオウム返しbotを作成することができました☺️

今回はオウム返しをするだけですが、Messaging APIは他にも様々な機能がありますので、是非いろいろ試してみてください❗️


株式会社ウイングドアでは、Ruby on RailsやPHPを活用したwebサービス、webサイト制作を中心に、
スマホアプリや業務系システムなど様々なシステム開発を承っています。


CONTACT

TechRachoでは、パートナーシップをご検討いただける方からの
ご連絡をお待ちしております。ぜひお気軽にご意見・ご相談ください。