Perl Hackers Hub

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

この記事を読むのに必要な時間:およそ 2 分

本連載では第一線の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などの開発を担当しました。

注1)
本稿ではbotの表記を,一般的なチャットのためのbotを指す場合には「chatbot」⁠LINEの製品としてのbotを指す場合には「LINE BOT」⁠本稿で作成されるbotを指す場合には「bot」と区別します。
注2)
Java,PHP,Go,Perl,Ruby,Pythonを提供しています。

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サーバを立ち上げてアクセスすることで,正しくトンネリングされていることが確認できます。

注3)
?????の部分は筆者によるマスキングです。

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は次節以降の実装で利用します。

注4)
LINEアプリで「・・・」⁠その他)「設定」「アカウント」「メールアドレス登録」を開いた画面にてメールアドレスとパスワードの設定が必要です。

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

WEB+DB PRESS

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

2017年8月24日発売
B5判/160ページ
定価(本体1,480円+税)
ISBN978-4-7741-9129-4

  • 特集1
    作って学ぶ人工知能
    自然言語処理,機械学習,深層学習がまるわかり!
  • 特集2
    対応必須! 完全HTTPS化
    移行手順からつまずくポイントまで
  • 特集3
    メルカリ開発ノウハウ大公開
    ぜんぶ見せます! 1日100万出品のフリマアプリの舞台裏
  • 100号記念選書
    TOPエンジニアを支える1冊
    超豪華23名!
  • 100号記念エッセイ
    あのときの自分へ
    もし,過去に戻ってアドバイスできるなら

著者プロフィール

大沢和宏(おおさわかずひろ)

開発3センター サービス開発3室。翻訳Botなど,初期のBotサービス関連の開発を担当,その後LINE Taiwanのサービスを経て,現在はLINE LIVEのサーバ開発を行っている。

URL:https://github.com/yappo/

コメント

コメントの記入