勉強したことのメモ

webプログラマが勉強したことのメモ。

PHPとLINEを連携させて通知を送る

   

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でファイルを添付してメール送信

PHPでファイルを添付の上、メールを送信したかった。方法を探したところphpma ...

PHPで複数の変数に同じ値を代入する

PHPのソースで $a = $b = $c = 12; みたいな見たことの無い代 ...

mysqldumpが使えないレンタルサーバでMySQLのバックアップ

mysqldumpが使えないレンタルサーバで開発を行うことがあり、尚且つ他社に使 ...

体重管理をPHPで

体重とBMIを管理する画面をPHPで作ってみようと思った。 ソースは下記の通り。 ...

Ajaxでデータを受信した際にリファラのチェックをしたい

Ajaxでデータを受信し、MySQLにINSERTするプログラムがあった。そこま ...

迷惑メール対策でフォームにreCAPTCHAを導入する方法

スパムメール対策として問い合わせフォームにreCAPTCHAを導入したいという件 ...

jQueryとprototypeの共存

prototypeを先に使っているがjQueryに移行してきている ページで、尚 ...

メールサーバーを構築せずにGmailのSMPTを使ってPHPでメール送信

メールサーバーが立てられなかったり、無料サーバーのため使えなかったりといった場合 ...

PHPで画像のフォーマット(拡張子)の変換

画像のアップロードでjpg/png/gif形式を受け付けつつ、 最終的にjpgで ...

PHPで他サーバにファイルをアップロードする

formで送信した内容をチェックした上で、他サーバにファイルをアップロードしたか ...