HOME » 備忘録 » 2017 » TypetalkにPHPで投稿してみる

TypetalkにPHPで投稿してみる

ただ日付を表示するだけのBOT

作成日時:2017-11-17 / 最終更新:2017-11-17

Typetalkで投稿内容を確認している時に、日付をまたいだ投稿なのかぱっと見わかりにくいとのお話だったので、サクッと日付が変わるたびになんかつぶやくBOTを作成する。
BOTの登録画面に投稿用のサンプルがあるのでそれを適当にPHPで実装しただけのお話。
サンプルを見てみる。

powershell -Command Invoke-RestMethod -Uri 'https://typetalk.com/api/v1/topics/トピックID?typetalkToken=トークン' -Method POST -Body 'message=Hello, Typetalk!'

とてもシンプル。
トピックIDとトークンを含んだURLにPOSTしてるだけ。
なんでパワーシェルなのか謎だが、タイムスケジューラーに突っ込んでやれば動くよ!という感じなんだろうか。

実装は以下のように。

<?php

$topics = [
	'トピックID' => 'トークン',
	'トピックID2' => 'トークン2'// 複数ある場合は追記していく。
];

$base_url = 'https://typetalk.com/api/v1/topics/';

$msg = '===[' . date("Y年m月d日") . '](https://kids.yahoo.co.jp/today/)=== ミスター日付変更線 =========================';

foreach ($topics as $key => $value) {
	$post_url = $base_url . $key . '?typetalkToken=' . $value;

	$data = array(
		'message' => $msg
	);
	$content = http_build_query($data);
	$options = array('http' => array(
		'method' => 'POST',
		'content' => $content
	));
	$contents = file_get_contents($post_url, false, stream_context_create($options));

}

おそらく日付が変わったことを投稿したいトピックは複数存在すると思われるので、topics配列でキーをトピックIDに、値をトークンにして格納。
みんな大好きforeachでぐるんぐるんするだけ。

あとはcrontabなどでこのPHPファイルを定時になるたびに叩くように下記のようにエディタを起動し、毎日0時1分に実行されるよう、設置したPHPのパスを指定して保存する。

$ crontab -e
1 0 * * * php /home/user/typetalk-bot/alarm.php

POSTするだけのプログラムをベースに、処理をちょっと加えるだけでサーバーの死活チェックなど発想次第でいろんなことに使用できるかと思います。