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@など色々登録しないといけないのが面倒ですが、公式のマニュアルに沿っていけばハマることなく進められました。

基本的には純粋なチャットアプリですが、内容をデータベースに保存できたことで色々な用途で使えそうだなと考えています。
特定のワードを書き込んだらほにゃららする、なんてこともできますね。面白い。

筆者について

筆者について


1982年、東京下町生まれ。
高校卒業後、アメリカへ留学。その後、「アートが根付いた国では絵だけで食えるのか」を確認するため、ドイツベルリンにてアート活動をおこなう。

日本に戻ってからは、コーディング・オーサリング・プログラミングなんかを経て、ウェブディレクターを肩書きにしておりました。現在は独立し、ブログやサイトの運用を軸に、ウェブサイトの企画提案からデザイン・構築まで手広く活動しております。何でも屋です。
制作のご依頼はお問い合わせフォームよりお願いします。

isLog〜イズログ〜では『日々生きること自体が旅』をモットーに、日々の旅を中心に綴っています。

詳しいプロフィールはこちら


feedly

コメント

  1. ixwebhosting より:

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

コメントを残す

*