勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

PHPとLINEを連携させて通知を送る方法(file_get_contents / curlの2パターン)

   2024/02/27  PHP

PHPとLINEを連携させ、LINEに何らかの通知メッセージを送信したい。以下に方法をメモ。

 

LINE Notify側の作業

以下の過去記事参照。

GASとLINEを連携させて通知メッセージを送る方法のメモ

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

  関連記事

PHPでLINEログイン後「ユーザー名」「ユーザーID」「プロフィール画像URL」「メッセージ」を取得する方法

<a>タグのリンクからページ遷移するとLINEログインし、その後に「 ...

LINEのURLプレビューを表示させないようPHP側で制御する方法

公開中の特定のページのみLINEのURLプレビューを表示させないよう制御したいと ...