Perl Hackers Hub

第44回LINE Messaging APIで作るchatbot―LINE::Bot::APIとngrokでお手軽に(1)

本連載では第一線のPerlハッカーが回替わりで執筆していきます。今回のハッカーは本連載の監修も務める大沢和宏さんで、テーマは「LINE Messaging APIで作るchatbot」です。

本稿のサンプルコードは、本誌サポートサイトから入手できます。

LINE Messaging APIとは

Messaging APIはLINEのプラットフォーム上で動作するchatbot[1]を開発するためのAPIです。2017年9月に公式SDKSoftware Development Kit注2とともに正式リリースされました。開発者はMessaging APIを利用して、LINE上で動作するchatbotを開発できます。

筆者は現在LINE株式会社に勤務しており、LINE BOT関連ではPerl向けの公式SDKなどの開発を担当しました。

LINE@について

Messaging APIが利用できるのは、みなさんが普段使っているようなLINEアカウントではなく、個人、法人を問わずビジネスや公開用途で利用できるLINE@と呼ばれる種類のアカウントです。

LINE@は、専用の管理画面を用いて、友だち登録しているユーザー全員にメッセージの一斉送信を行ったり、特定のキーワードを受け取ったら設定した文章を自動返信したりといったことが行えます。これらはchatbotと言える挙動ですので、LINE@はchatbotを提供するためのアカウントとも言えます。

LINE@のプラン

LINE@では、Developer Trial、フリー、ベーシック、プロの4プランを提供しており、プランによって利用可能な機能が違います。個人の開発用途では、友だち登録の上限数は50人までですが、すべてのMessaging API機能が無料で利用できるDeveloper Trialを利用するとよいでしょう。

bot開発の準備

みなさんがLINE BOTの開発を行うために必要な準備は、主に次の2つです。

  • HTTPS上で動作するアプリケーションサーバの立ち上げ
  • LINE@アカウントの作成

アプリケーションサーバの立ち上げのためには、JSON APIで実装されたMessaging APIを利用して開発を行う必要があります。このAPIをPerlから簡単に利用するために、LINE::Bot::APIというCPANモジュールが公式SDKとして提供されていますので、これを利用します。

ngrokでHTTPS対応のAPIサーバを立ち上げる

Messaging APIでは、LINEユーザーから送信されたイベントをWebhook URLと呼ばれるbot開発者が用意したエンドポイントに向けて送信しているため、LINEサーバから疎通可能なWebサーバが必要になります。本節では、この条件を満たすWebサーバを簡単に用意するため、ngrokの利用を前提として説明します。

ngrokとは、ローカルホストやNATNetwork Address Translationの内側にあるサーバに対して、外部インターネットから接続できるトンネルを提供するサービスです。ngrokは、公式に提供されているコマンドを用いてトンネルを作成します。コマンドは、ダウンロードページから各種OS向けのバイナリを入手できます。

バイナリを取得したら、さっそくトンネルを作成してみましょう。HTTPサーバのトンネルの作成は、ngrok http ポート番号として実行します。ポート番号に5000を指定して実行すると、ターミナルに次の内容が出力されます。

---------1---------2---------3---------4---------5-----
ngrok by @inconshreveable              (Ctrl+C to quit)

Session Status online
Version        2.1.18
Region         United States (us)
Web Interface  http://127.0.0.1:4040
Forwarding     http://?????.ngrok.io -> localhost:5000
Forwarding     https://?????.ngrok.io -> localhost:5000

Connections    ttl    opn    rt1    rt5    p50     p90
               0      0      0.00   0.00   0.00    0.00

Web Interfaceで示されたhttp://127.0.0.1:4040は、作成したトンネルの利用状況を閲覧できるコンソールです。トンネルを通したHTTP通信の全情報を閲覧できますので、botのデバッグ時にも役立ちます。

Forwardingで示されたhttps://?????.ngrok.io[3]が外部向けのURLです。ここへの接続がhttp://localhost:5000にトンネリングされています。

Plackでplackup -e 'sub { [200, [], ["OK"]] }としてWebサーバを立ち上げてアクセスすることで、正しくトンネリングされていることが確認できます。

LINE@アカウントを作成する

LINEで動作するbotを作成するためには、LINE Business CenterでMessaging APIが利用可能なLINE@アカウントを作成する必要があります。Developer Trialプランに対応したLINE@アカウントを作成するには、Webログインが可能なLINEアカウント[4]が必要です。

LINE@アカウントを作成したあとに、Developer centerと呼ばれるLINE BOTの設定を行う管理画面での作業が必要になるなど、Messaging APIでの開発を始めるために必要な作業が多く、その作業に戸惑う開発者も多かったので、「LINE BOT & Beacon開発者向けFAQ(随時更新⁠⁠」の中でLINE@アカウント作成のための詳細な手順を紹介しています。操作手順に困った場合はこちらを参考にしてください。

前項でngrokによりForwardingで示されたURLを作成しましたが、ここで表示されているhttps://?????.ngrok.ioをDeveloper centerのWebhook URLに登録してください。登録後は、botに対するメッセージは登録されたURLに送信されます。また、このDeveloper center上の画面で取得できるChannel SecretとChannel Access Tokenは次節以降の実装で利用します。

<続きの(2)こちら。>

WEB+DB PRESS

本誌最新号をチェック!
WEB+DB PRESS Vol.130

2022年8月24日発売
B5判/168ページ
定価1,628円
(本体1,480円+税10%)
ISBN978-4-297-13000-8

  • 特集1
    イミュータブルデータモデルで始める
    実践データモデリング

    業務の複雑さをシンプルに表現!
  • 特集2
    いまはじめるFlutter
    iOS/Android両対応アプリを開発してみよう
  • 特集3
    作って学ぶWeb3
    ブロックチェーン、スマートコントラクト、NFT

おすすめ記事

記事・ニュース一覧