新規登録
- https://developers.line.me/ja/ にて、LINEのメールアドレス・パスワードで新規登録。
-
Messaging API
を選択する。 - Messaging API
APIの準備
channel_secret (少し長い文字)
channel_access_token (長い文字)
応答メッセージ
php
mkdir linebot && cd linebot
composer require linecorp/line-bot-sdk
オウム返し
<?php
$channelSecret = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
$channelToken = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
require_once __DIR__ . '/vendor/autoload.php';
$httpClient = new \LINE\LINEBot\HTTPClient\CurlHTTPClient($channelToken);
$bot = new \LINE\LINEBot($httpClient, ['channelSecret' => $channelSecret]);
$sign = $_SERVER["HTTP_" . \LINE\LINEBot\Constant\HTTPHeader::LINE_SIGNATURE];
$events = $bot->parseEventRequest(file_get_contents('php://input'), $sign);
foreach ($events as $event) {
if (!($event instanceof \LINE\LINEBot\Event\MessageEvent) ||
!($event instanceof \LINE\LINEBot\Event\MessageEvent\TextMessage)) {
continue;
}
$bot->replyText($event->getReplyToken(), $event->getText());
}
画像を送るサンプル
<?php
require_once __DIR__ . '/vendor/autoload.php';
use LINE\LINEBot;
use LINE\LINEBot\HTTPClient\CurlHTTPClient;
use LINE\LINEBot\MessageBuilder\ImageMessageBuilder;
use LINE\LINEBot\MessageBuilder\MultiMessageBuilder;
$channelSecret = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
$channelToken = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
$bot = new LINEBot(new CurlHTTPClient($channelToken), [
'channelSecret' => $channelSecret
]);
$body = file_get_contents('php://input');
$json = json_decode($body);
$event = $json->events[0];
$total = mt_rand(1, 5);
$imageRoot = 'https://s3-ap-northeast-1.amazonaws.com/noplan1989-demo/line';
$messageBuilder = new MultiMessageBuilder();
for ($i = 0; $i < $total; $i++) {
if ($i === 4 && mt_rand(1, 5) === 1) {
$path = 'sushi';
} else {
$path = "alive/{$i}";
}
$messageBuilder->add(new ImageMessageBuilder(
"{$imageRoot}/{$path}/original.png",
"{$imageRoot}/{$path}/preview.png"
));
}
$bot->replyMessage($event->replyToken, $messageBuilder);
LINE Bot Designer
- LINE Bot Designer というのものある。windowsとmacに用意されている。
LINE Bot Designerを使えば、プログラミングの知識がなくても簡単かつ短時間でLINE Botのプロトタイプを作成できます。ご希望のシナリオに沿って、自由にチャットボットを設計できます。
push通知
userID
<?php
$channel_access_token = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
// Your user ID
// Messaging API 管理画面で確認 これくらいながいやつ
$LINE_USER_ID = "Uxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
// LINE Messaging API プッシュメッセージを送る
$LINE_PUSH_URL = "https://api.line.me/v2/bot/message/push";
// 送信するメッセージ
$message_1 = date("Y-m-d H:i:s");
$message_1.= "です";
// リクエストヘッダ
$header = [
'Authorization: Bearer ' . $channel_access_token,
'Content-Type: application/json'
];
// 送信するメッセージの下準備
$post_values = array(
[
"type" => "text",
"text" => $message_1
],
);
// 送信するデータ
$post_data = [
"to" => $LINE_USER_ID,
"messages" => $post_values
];
// デバグ確認用のログ:送信データ
$file = './post_data.txt';
file_put_contents($file, json_encode($post_data, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE), FILE_APPEND);
file_put_contents($file, PHP_EOL.PHP_EOL, FILE_APPEND);
// cURLを使った送信処理の時は true
// file_get_contentsを使った送信処理の時は false
$USE_CURL = true;
if ($USE_CURL) {
// cURLを使った送信処理
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $LINE_PUSH_URL);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($post_data));
$result = curl_exec($curl);
curl_close($curl);
}
else
{
// file_get_contentsを使った送信処理
$context = stream_context_create(array(
'http' => array(
'method' => 'POST',
'header' => implode("\r\n", $header),
'content'=> json_encode($post_data),
'ignore_errors' => true
)
));
$result = file_get_contents(
$LINE_PUSH_URL,
false,
$context
);
}
// デバグ確認用のログ:受信レスポンス
$file = './result.txt';
file_put_contents($file, $result, FILE_APPEND);
file_put_contents($file, PHP_EOL.PHP_EOL, FILE_APPEND);
友達数を取得
channel_access_token='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
curl -v -X GET https://api.line.me/v2/bot/insight/followers?date=20220920 \
-H 'Authorization: Bearer '$channel_access_token
友達のuserID一覧を取得
- 初期のアカウント権限では取得ができなかった。(認証済みアカウントまたはプレミアムアカウントのみで可能)
{"message":"Access to this API is not available for your account"}
channel_access_token='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
curl -v -X GET https://api.line.me/v2/bot/followers/ids \
-H "Authorization: Bearer ${channel_access_token}" \
-d 'limit=1000' \
-G
友だち数と一致しない場合があります。
対象のLINE公式アカウントを友だち追加した後にブロックしたユーザー
プロフィール情報の取得に同意していないユーザー
アカウント連携
LINE Notify
curl -X POST -H 'Authorization: Bearer [access_token]' \
-F 'message=foobar' \
https://notify-api.line.me/api/notify