PHPでLINEBot作ってみた(一斉送信編:その1)

プログラミング

こんにちは、ぴのです。

ちょっと前にLINE公式アカウントを作って自動返信できるプログラムを書いたのですが、みなさん覚えていらっしゃるでしょうか?読んでない?読んでね!

自動返信はそれでいいのですが、TweetBotみたいに能動的に発信していきたいと思ったので、今回はLINE公式アカウントに能動的にメッセージを送るプログラムを作っていきたいと思います。

実はプログラムを書かなくても定型文なら手動で投稿したり予約投稿したりできるのですが、管理人は最新記事のURLを投稿するなどといった動的な処理をさせたいので、TweetBotと同じようにPHPで作っていきたいと思います。

なお、今回は動作確認なので定型文を送れるようにするのが目標です。

LINEBotを作る

LINE公式アカウントを作成する

前回作成したので省略。Channel access tokenは同じものが使えるのでメモしておきましょう。なお、送信するプログラムにはWebhookは必要ないので、設定は前回のままで大丈夫です。

line-bot.phpを作る

前回と同じファイル名ですが全く別のファイルです。今回のファイルはルートディレクトリ直下に配置します(twitter-bot.phpと同じところ)。とりあえず今回は定型文を送るようにしています。

<?php
$channelToken = ''; //アクセストークン
$headers = [
	'Authorization: Bearer ' . $channelToken,
	'Content-Type: application/json; charset=utf-8',
];
$text = 'test2'; //メッセージテキスト
$post = [
	'messages' => [
		[
			'type' => 'text',
			'text' => $text,
		],
	],
];
$post = json_encode($post);

$ch = curl_init('https://api.line.me/v2/bot/message/broadcast'); //一斉送信
$options = [
	CURLOPT_CUSTOMREQUEST => 'POST',
	CURLOPT_HTTPHEADER => $headers,
	CURLOPT_RETURNTRANSFER => true,
	CURLOPT_BINARYTRANSFER => true,
	CURLOPT_HEADER => true,
	CURLOPT_POSTFIELDS => $post,
];
curl_setopt_array($ch, $options);

$result = curl_exec($ch);
$errno = curl_errno($ch);
if ($errno) {
	return;
}

$info = curl_getinfo($ch);
$httpStatus = $info['http_code']; //200なら成功

$responseHeaderSize = $info['header_size'];
$body = substr($result, $responseHeaderSize); //エラーメッセージ等

echo $httpStatus . '_' . $body; //ログ出力
?>

シェルスクリプトへの追加

前にTweetBotを作ったときのシェルスクリプトの下に作ったプログラムファイルの場所を追加します。これで、シェルスクリプトを実行すればTweetBotとLINEBotのプログラムが動作します。

#!/bin/sh
#PHP
/usr/local/bin/php73 /virtual/okinotori/twitter-bot.php
/usr/local/bin/php73 /virtual/okinotori/line-bot.php
exit

手動で実行してみる

TweetBotの時にcron1.shをCRONジョブに設定してあるので23時になったら自動で実行されますが、動作確認のためにTweetBotの時と同様にサーバーにSSH接続して手動でシェルスクリプト実行させます。

完成

一斉送信できた!!!!!!!!!!!!!!

※友人にも協力してもらい、一斉送信できていることを確認しました。感謝。

「ぴのの社」LINE公式アカウント

「ぴのの社」のLINE公式アカウントができました!!!友達追加してね!!でも完成するまでは通知オフ推奨だよ!!!!以下のリンクかQRコードからできるよ!!!

友だち追加

終わりに

とりあえず一斉送信できることを確認できて満足です。

ゆくゆくはTweetBotみたいに定期的にメッセージを送るか、最新記事投稿時にメッセージを送れるように改良していきたいと考えています。

また、自動返信のプログラムのほうも今は「こんにちは」しか返さない無能になっているので、一斉送信のプログラムができてきたらそちらにも手を付けていきたい所存です。

みんなも公式LINEと友達になろう!

【更新情報】その2が公開されました。

参考

1+

コメント

タイトルとURLをコピーしました