LINEプラットフォーム上のアプリの可能性
メッセージの送受信、通話アプリとして有名なLINEですが、実は公式アカウントを中心とした開発プラットフォームがかなり整備されています。
LINEの開発プラットフォームには以下のような特性があることから、色々な可能性があると思っています。
- LINEという日常に溶け込んだインターフェースを使える
入力情報の収集や通知が受け入れられやすい - 色々な情報を受け取ることができる
テキスト、画像、音声、動画、位置情報など - バックエンドの処理は自由に設計することができる
LINEと繋がるAPI部分のみが提供されているので、それ以外は好きに構築できる
その中心となる仕組みがユーザーへ能動的にメッセージを送信するMessaging APIと、ユーザーからのアクションを受け取るWebhookの仕組みです。
LINEのWebhook
LINE公式アカウントでMessaging APIを利用すると使えるようになる機能の一つです。
公式アカウントにユーザーからアクションがあった際に、その内容を知らせるリクエストが指定したWebhook URLに送信されます。
Webhookで送信されるリクエストの中身
リクエストBodyのeventsに色々な情報が詰まってきます。
eventごとのtypeという属性を確認することで、どんなイベントなのかを識別することができます。
- follow
友達追加もしくはブロック解除 - unfollow
ブロック - message
メッセージの受信
全てのイベントにはuseridが付与されているので、どのユーザーのイベントなのかが識別できます。
messageはさらにmessage内のtypeを確認することでどんなメッセージなのかを識別することができます。
-
text
テキストメッセージ。
送信されてきたテキストの内容もmessageの中に含まれています。 -
sticker
スタンプメッセージ。
packageId、stickerId というスタンプを識別する情報が送られてくるので、どのスタンプが送信されたのかを識別することができます。
さらにkeywordsという形でどのような内容のスタンプなのかが大まかに掴めるようになっています。
"keywords":["wonderful","Awesome","Yay","go out","Wow","Dog","good"] -
image
画像メッセージ。
画像のバイナリはmessageのidを利用して別のAPIで取得することができます。 -
audio
ボイスメッセージ。
音声のバイナリは画像と同様にmessageのidを利用して別のAPIで取得することができます。 -
video
動画メッセージ。
こちらも同様にバイナリ取得可能。 -
location
位置情報メッセージ。
経度緯度のポイント情報と、それを使って送信前に割り出された住所の情報も含まれています。
他にも連絡先やKeepメモの内容を送信したりすることができるようです。
また、ヘッダーの x-line-signature には公式アカウントごとのシークレットを使って、リクエストの内容をハッシュ化したものが送られてくるので、これを利用してリクエストの内容に改竄がないかを検証できます。