【PHP】LINEのグループトークでメンバープロフィールを取得する

LINE公式アカウント上でのユーザーコミュニケーションを自動で行うことができる「LINE Messaging API」。2016年4月に「LINE BOT API」として試験的に提供が開始されていましたが、同年9月には現在の名称にて一般公開されました。

一般公開時にはいくつかの機能追加が合ったのですが、その中の一つに「グループトーク内でのユーザー情報取得」があります。

以前はグループやルームのIDのみ取得可能で、そこに参加するメンバー情報は取得できませんでした。どうやらそれができるようになったのは、5月末のリリースからだそうです。

という事で、早速LINE Messaging APIを見ながらやってみましょう。

API情報

リクエストURL

Grouphttps://api.line.me/v2/bot/group/{groupId}/member/{userId}
Roomhttps://api.line.me/v2/bot/room/{roomId}/member/{userId}
AD

ヘッダー情報

AuthorizationBearer {Channel Access Token}

Webhookで取得したJSONに書かれているgroupId / roomId とuserId、botのアクセストークンがあれば、名前やプロフ画像をGetできます。

PHP例

とりあえずユーザー名(displayName)を取得します。

$profUrl ='https://api.line.me/v2/bot/group/' . $groupId . '/member/' . $userId;
$ch = curl_init($profUrl);
  curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Authorization: Bearer ' . $accessToken
  ));
$getProfile = curl_exec($ch);
curl_close($ch);
$resProfJson = json_decode($getProfile);
$displayName = $resProfJson->displayName;

今後試したいことについて

以前からボットでやりたい事は「グループトークで人の活動を活発化させるボット開発」だったので、今回の機能追加でそれが大分取り組みやすくなりました。

発言回数の増減傾向はすぐにでもできますし、Googleが提供する自然言語処理ツール「Dialogflow」などを連携すれば、発言内容に対するアノテーションやモチベーション分析などのハードルもグッと下がります。もちろんそこには詳細なロジックが必要ですが、LINEというメジャーなプラットフォームで開発し易いというだけでも喜ばしいことですね。