本連載では第一線のPerlハッカーが回替わりで執筆していきます。今回のハッカーは本連載の監修も務める大沢和宏さんで、テーマは「LINE Messaging APIで作るchatbot」です。
本稿のサンプルコードは、本誌サポートサイト から入手できます。
LINE Messaging APIとは
Messaging API はLINEのプラットフォーム上で動作するchatbot[1] を開発するためのAPIです。2017年9月に公式SDK(Software Development Kit )( 注2 )とともに正式リリースされました。開発者はMessaging APIを利用して、LINE上で動作するchatbotを開発できます。
筆者は現在LINE株式会社に勤務しており、LINE BOT関連ではPerl向けの公式SDKなどの開発を担当しました。
[1] 本稿ではbotの表記を、一般的なチャットのためのbotを指す場合には「chatbot」 、LINEの製品としてのbotを指す場合には「LINE BOT」 、本稿で作成されるbotを指す場合には「bot」と区別します。
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とは、ローカルホストやNAT(Network 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)はこちら 。>
特集1
イミュータブルデータモデルで始める
実践データモデリング
業務の複雑さをシンプルに表現!
特集2
いまはじめるFlutter
iOS/Android両対応アプリを開発してみよう
特集3
作って学ぶWeb3
ブロックチェーン、スマートコントラクト、NFT