LineのMessaging APIでグループトークの内容をデータベースに保存してみた

LineのMessaging APIでグループトークの内容をデータベースに保存してみた

タイトルに書いたとおり、LINEMessaging APIを触ってみました。
タイトルが長い。けど、やったことはタイトルに書いたとおり。
LINEは友人との連絡に使っていたのですが、最近多くなってきたのが仕事での利用。
簡単で便利なLINEですが、トークルームが増えてくると過去のメッセージを確認するのに手間がかかってしまい、管理ツールとしては使い勝手が悪いんですよね。チャットツールとしては良いのですが。
用途によってトークルームを作るわけですが、仕事で使うとなると、過去のメッセージを見返したりすることがあります。
また、特定のユーザーのメッセージだけを確認したいこともあるんですよね。
それがLINEのデフォルトの機能だとやりづらい、もしくはできない。
ということで、LINEトークルーム内のメッセージ(トーク)を所持しているデータベースに保存できないかと思ったわけです。DBに保存できれば、あとは好きなようにできますからね。

LINEトークルーム内のメッセージをデータベースに保存したい!

あらためて。
やりたいことは、LINEのトークルーム内のメッセージ(トーク)を取得してデーターベースに保存すること
ざっと調べてみて、

  1. LINEのMessaging APIと使ったボットを利用
  2. トークルームにボットを招待
  3. ボットが取得したメッセージ(トーク)をデータベースに保存 ※PHPとMySQLを利用

という流れにすることに。

LINEのMessaging APIを利用するための準備

Messaging APIを使えば、ボットアプリのサーバとLINEプラットフォームの間でデータを交換することが可能になります。
ユーザーがボットにメッセージを送るとwebhookがトリガーされるので、LINEプラットフォームからボットアプリのサーバのwebhook URLにリクエストが送信されることになります。
まず、なにはともあれMessaging APIとボットの準備。
Messaging APIを利用するには、LINE Developersコンソールでチャネルを作成し、LINE@でボット用のアカウントを作る必要があります。

LINE Developersコンソールでチャネル作成

LineのMessaging APIでグループトークの内容をデータベースに保存してみた
https://developers.line.me/console/
Messaging APIを使ってボットを作成するには、まずLINE Developersコンソールでチャネルを作成する必要があります。
作成は上記のコンソールから。

LINE@でボット用のアカウントを作成

LineのMessaging APIでグループトークの内容をデータベースに保存してみた
https://at.line.me/jp/
続いてボット用のLINE@アカウントを用意します。
このボットを友達登録してトークルームに招待することで、メッセージが取得できるようになります。
細かいMessaging APIの設定方法は下記マニュアルを参考に。
https://developers.line.me/ja/docs/messaging-api/overview/
結構やることありますが、マニュアル通り進めれば問題なく準備はできるはず。
LINEでのメッセージをボットがおうむ返しするくらいまでできていれば、メッセージを取得することはできているはずなので、あとはそのデータをDBに突っ込むだけです。

Messaging APIとボットでトークルームのメッセージを取得!

さて、Messaging APIとボットの準備ができたら、いよいよトークルームのメッセージをデータベースに保存していきます。
LineのMessaging APIでグループトークの内容をデータベースに保存してみた
まずはLINE DevelopersコンソールでWebhook URLを何かしらレンタルサーバーで運用しているものに。
ここではマニュアルに記載されているHerokuは使いません。
公式のPHP用のLINE Messaging APIのSDKがあるので、composerを使ってインストールしておきます。
インストール方法は下記に記載されていますよ。
https://github.com/line/line-bot-sdk-php
Webhook URLに記載したPHP(ここではcallback.php)の内容は下記のような感じに。

軽くコメントを書きましたが、やっているのは下記。

  1. メッセージを書き込んだユーザ情報を取得
  2. メッセージタイプが画像だった場合は画像を保存
  3. ユーザ情報やメッセージをデータベースに保存

LINE Messaging APIのアクセストークン等、データベース情報は環境に合わせて入力してください。
また、ユーザ情報は、メッセージを書き込んだユーザがボットと友達になっていないと取れません。トークルーム内のユーザ全ての情報を取るのであれば、全員にボットと友達になってもらう必要があります。
画像保存部分やテーブル設計はざっとやっているので……まあ、適当に。
LineのMessaging APIでグループトークの内容をデータベースに保存してみた
適当なトークルームを作り、ボットを招待して正しく動作するか確認。
サーバ・DBを確認する限り、問題なく動作しているようです。
LineのMessaging APIでグループトークの内容をデータベースに保存してみた
メッセージごとに、ユーザ情報・メッセージ(画像、テキスト)をデータベースに保存できているので、あとはゴニョゴニョして表示するだけ。
DBにどのように何を入れるか次第ですが、色々やれそう。
ここではとりあえず、ユーザや投稿日での絞り込みや、フリーワード検索をいれてみました。
さらに複数のトークルームをひとつのページに表示できるように。ひとまずの希望は叶えられた形。

まとめ

初めて触ってみたLINEのMessaging API。
LINE DevelopersやLINE@など色々登録しないといけないのが面倒ですが、公式のマニュアルに沿っていけばハマることなく進められました。
基本的には純粋なチャットアプリですが、内容をデータベースに保存できたことで色々な用途で使えそうだなと考えています。
特定のワードを書き込んだらほにゃららする、なんてこともできますね。面白い。

コメント

  1. ixwebhosting より:

    どうもありがとうございました!

コメントを残す

*