line-bot-sdk-phpを使ってBotにLINEグループに投稿させる

LINE APIを使ってLINEグループにプッシュ投稿を行う

Botにリプライを行わせる事例は沢山あったのですが、プッシュ通知の事例は少なかったので自分用備忘録。まずComposerでLINE BotのSDKを導入します。

$ composer require linecorp/line-bot-sdk

LINE DevelopersでMessaging APIの利用登録を行います。その際にチャネルのアクセストークンとシークレットトークンをメモしておきましょう。次に参加しているLINEグループのIDが取得できるようにコールバック用のスクリプトを準備します。

<?php
$accessToken = 'チャネルのアクセストークン';

//ユーザーからのメッセージ取得
$json_string = file_get_contents('php://input');
$json_object = json_decode($json_string,true);

$json = fopen('sample.json', 'w+b');
fwrite($json, json_encode($json_object));
fclose($json);

LINE DevelopersのBotの設定でコールバック先としてこのスクリプトを実行するようにします。これで特定のLINEグループに招待されたときに、groupIdをJSONで取得することができたと思います。

次にこのグループIDを使ってプッシュ投稿を行うスクリプトを作成します。

$group_id = "LINEグループのID";
define("LINE_MESSAGING_API_CHANNEL_SECRET", "チャネルのシークレットトークン");
define("LINE_MESSAGING_API_CHANNEL_TOKEN",  "チャネルのアクセストークン");

$bot = new \LINE\LINEBot(
  new \LINE\LINEBot\HTTPClient\CurlHTTPClient(LINE_MESSAGING_API_CHANNEL_TOKEN),
  ['channelSecret' => LINE_MESSAGING_API_CHANNEL_SECRET]
);

$text = "テストメッセージ";
$textMessageBuilder = new \LINE\LINEBot\MessageBuilder\TextMessageBuilder($text);
$bot->pushMessage($group_id, $textMessageBuilder);

これでLINEグループへプッシュ投稿ができるかと思います。設定値は適宜各自の環境に置き換えてください。