勉強したことのメモ

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

PHPからLINEのMessaging APIにリクエストし通知を送る方法

  PHP

LINEから「2025/3/31にLINE Notifyのサービスが終了する」と通知が届いた。代替手段はMessaging APIの利用になるとのこと。取り急ぎPHPから特定のメッセージを送信できるようにしておきたいので対応方法を以下にメモ。

 

対応方法

LINE公式アカウントの作成

Messaging APIはLINE公式アカウントを作成する必要がある。そのためこちらのページよりアカウントを作成すること。

Messaging APIの有効化

LINE公式アカウントを作成するとLINE Official Account Managerに遷移するので「左側メニューの設定→Messaging API」に進み、APIを有効化すること。

LINE Developersアカウントの作成及びログイン

こちらのページよりLINE Developersアカウントを作成しログインする。

プロバイダー及びチャネルの作成

LINE Developersの「左側メニューのコンソール(ホーム)」に進み、プロバイダーの作成をクリックしMessaging APIでチャネルを作成する。

必要情報の取得

作成したチャネルのページの「チャネル基本設定タブ」内のページで「あなたのユーザーID」があるのでメモっておく。

また「Messaging API設定タブ」内のページで「チャネルアクセストークン」を発行し、内容をメモっておく。

ソースコード

アクセストークン及びユーザーIDは上記でメモったものに書き換えること。

<?php
//アクセストークン
$access_token = 'アクセストークン';

//ユーザーID
$user_id = 'ユーザーID';

//メッセージ本文
$message = '';

$data = [
    'to' => $user_id,
    'messages' => [
        [
            'type' => 'text',
            'text' => $message
        ]
    ]
];
$headers = [
    'Content-Type: application/json',
    'Authorization: Bearer ' . $access_token,
];
$ch = curl_init('https://api.line.me/v2/bot/message/push');

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$result = curl_exec($ch);

if( curl_errno($ch) ){
    //エラー時の処理
    echo 'Error:' . curl_error($ch);
}else{
    //成功時の処理
    echo 'Response: ' . $result;
}

curl_close($ch);
?>

 

その他

無料メッセージは上限あり

公式ページによると無料プラン(コミュニケーションプラン)の場合、200通 / 月の送信上限がある。

業務システムとかで使う場合だと有料プランを検討する必要がありそう。もしくはChatwork等の別サービスへの変更とか。

 

リファレンス

https://developers.line.biz/ja/reference/messaging-api/

 

参考サイト

https://it-slroom.blog/web/php-line-api/

 - PHP

  関連記事

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

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

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

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

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

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