PHPとLINEを連携させて通知を送る方法(file_get_contents / curlの2パターン)
2024/02/27
PHPとLINEを連携させ、LINEに何らかの通知メッセージを送信したい。以下に方法をメモ。
LINE Notify側の作業
以下の過去記事参照。
PHP側の作業
以下ソースをアップロードしてブラウザから表示(実行)する。
file_get_contentsの場合
<?php //メッセージ内容 $message = '通知メッセージ'; //LINEから取得したトークン $token = 'xxxxxxxxxxxxxxxxxx'; //APIのURL $url = 'https://notify-api.line.me/api/notify'; $query = array( 'message' => $message, ); //URLエンコードされたクエリ文字列を生成 $content = http_build_query($query, '', '&'); //ヘッダ設定 $header = array( 'Content-Type: application/x-www-form-urlencoded', //form送信の際、クライアントがWebサーバーに送信するコンテンツタイプ 'Content-Length: '.strlen($content), //メッセージ本文の長さ 'Authorization: Bearer ' . $token, ); //ストリームコンテキスト設定 $context = array( 'http' => array( 'ignore_errors' => true, //ステータスコードが失敗を意味する場合でもコンテンツを取得 'method' => 'POST', //メソッド。デフォルトはGET 'header' => implode("\r\n", $header), //ヘッダ設定 'content' => $content //送信したいデータ ) ); $res = file_get_contents($url, false, stream_context_create($context)); var_dump($res); //string(29) "{"status":200,"message":"ok"}"
curlの場合
<?php //メッセージ内容 $message = '通知メッセージ'; //LINEから取得したトークン $token = 'xxxxxxxxxxxxxxxxxx'; //APIのURL $url = 'https://notify-api.line.me/api/notify'; //メッセージとヘッダー設定 $query = http_build_query(['message' => $message]); $header = [ 'Content-Type: application/x-www-form-urlencoded', 'Authorization: Bearer ' . $token, 'Content-Length: ' . strlen($query) ]; $options = [ CURLOPT_RETURNTRANSFER => true, CURLOPT_POST => true, CURLOPT_HTTPHEADER => $header, CURLOPT_POSTFIELDS => $query ]; curl_setopt_array($url, $options); var_dump(curl_exec($ch)); //string(29) "{"status":200,"message":"ok"}" curl_close($ch);
所感
GASと連携させるよりも若干面倒なものの、PHPだと開発したシステムと連携して使う際に柔軟に対応できそう。
参考サイト
https://panda-program.com/posts/use-line-notify-api-by-php-curl
関連記事
-
PHPでLINEログイン後「ユーザー名」「ユーザーID」「プロフィール画像URL」「メッセージ」を取得する方法
<a>タグのリンクからページ遷移するとLINEログインし、その後に「 ...
-
LINEのURLプレビューを表示させないようPHP側で制御する方法
公開中の特定のページのみLINEのURLプレビューを表示させないよう制御したいと ...