ざっくり流れ
- LINEのアカウント設定で、Messaging APIを「利用する」に設定する
- 利用開始したMessaging APIのチャンネルシークレットキーを
.env
に設定する - Messaging APIのaccess tokenを発行 &
.env
に設定する .env
の値を使用するためconfigファイル
に追記する- LINE Auth認証時に友達追加を行えるようにする (Linked OA & URL変更)
- LINEメッセージ送信処理実装
アカウント設定で、Messaging APIを「利用する」に設定する
- アカウントリストから送信元にするアカウントの名前をクリック
- 設定ボタンを押下
- サイドバーの「設定」 > 「Messaging API」をクリックして、
「Messaging APIを利用する」をクリック
利用開始したMessaging APIのチャンネルシークレットキーを.envに設定
- 上記「利用開始」後表示される「Channel secret」の値をコピー
.env
に記載する
LINE_CHANNEL_SECRET=XXXXXXXXXXX
Messaging APIのaccess tokenを発行 & .envに設定する
- コンソールのサイドバーの「Providers」から、対象のプロバイダー画面に移動
- Messaging APIのチャンネルをクリック
- 「Messaging API」タブをクリックして設定画面に移動
- 「Channel access token」のissueボタンを押下してアクセストークンを発行
- 値をコピーして
.env
に記載する
LINE_ACCESS_TOKEN=XXXXXXXXXXXXXXXXXX
.envの値を使用するためconfigファイルに追記する
.env
の値を直接利用するとキャッシュなどの弊害があるので、configファイルを噛ませる
- config/services.phpに記載
'line' => [
'channel_secret' => env('LINE_CHANNEL_SECRET'),
'access_token' => env('LINE_ACCESS_TOKEN'),
],
これで、config('services.line.channel_secret') config('services.line.access_token')
で各値を取得可能になった
LINE Auth認証時に友達追加を行えるようにする (Linked OA & URL変更)
LINE Messaging APIを利用したLINEメッセージ送信には、
前提として相手と「友達」になっていることが必須条件となる
そのためサイト上で友達追加を行えるようにしてあげる
- LINE Loginのチャンネルをクリック
- 基本設定のLinked OAで、今回のbotを選択して紐付ける
- Auth認証のURL (
https://access.line.me/oauth2/v2.1/authorize
) にパラメータを追記
bot_prompt=normal
(追記例)
protected function getAuthUrl($state)
{
$this->parameters['nonce'] = (string)uniqid('PREFIX', true);
session()->put(['nonce' => $this->parameters['nonce']]);
return $this->buildAuthUrlFromBase('https://access.line.me/oauth2/v2.1/authorize', $state)
. "&prompt=consent&bot_prompt=normal"; // ⭐️ 追加
}
これでLINE認証ポップアップに友達追加ボタンが表示されるようになる
LINEメッセージ送信処理実装
ここから本題の送信処理
- パッケージインストール
composer require linecorp/line-bot-sdk
- 送信処理
/**
* @param string $lineUserId
*/
public function sendMessage(string $lineUserId)
{
$http_client = new \LINE\LINEBot\HTTPClient\CurlHTTPClient(config('services.line.access_token'));
$bot = new \LINE\LINEBot($http_client, ['channelSecret' => config('services.line.message_channel_secret')]);
$message = "LINE送信テスト";
$textMessageBuilder = new \LINE\LINEBot\MessageBuilder\TextMessageBuilder($message);
$response = $bot->pushMessage($lineUserId, $textMessageBuilder);
if ($response->isSucceeded()) {
Log::info('送信成功');
} else {
Log::error('送信失敗: '. $response->getHTTPStatus(). ' '. $response->getRawBody());
}
}
Laravelプロジェクトにて、LINE Messaging APIを使用して
LINEを用いた通知を実装した