LINE Messaging APIで遊んでみた。

参考ページ:

こんにちは~、なんとなくLINEのMessaging APIで遊んでみました~

今回付けた機能は

  • Twitter投稿
  • メモ帳
  • 電卓
  • 乱数生成

です

これを動かすために、「apcalc」とPHPのcurlモジュールの有効化が必要になります。

ちょっとLINEで使う理由がわかんないものばかりですねw

このコードではTwitterに一切認証なしで書き込めるとか、セキュリティ的に大問題があるので実用するのはちょいとまずいかなぁ・・・w

それと、一切メモを付けずに、謎変数名を付けまくったためにスパゲッティコードと化してるんで、がんばって解読してください。

問題仕様:

  • メモ帳は最新のものしか保存されません。
  • tw:から始まる文章をTwitter投稿用のスクリプトに投げます。

メッセージ受信側コード

<?php
$accessToken = ‘アクセストークン’;

$json_string = file_get_contents(‘php://input’);
$jsonObj = json_decode($json_string);

$type = $jsonObj->{“events”}[0]->{“message”}->{“type”};
$text = $jsonObj->{“events”}[0]->{“message”}->{“text”};
$replyToken = $jsonObj->{“events”}[0]->{“replyToken”};

if($type != “text”){
exit;
}

if(preg_match(“/^tw:/”,$text)){
$sendtext = “送信された文章はTwitterに送信されます!”;
$twtext = str_replace(‘tw:’,”,$text);
exec(‘curl (Twitter投稿用スクリプトのURL)?message=’ . $twtext);
} elseif(preg_match(“/^fish:/”,$text)) {
$text1 = str_replace(‘fish:’,”,$text);
if(preg_match(“/^calc:/”,$text1)) {
$math = str_replace(‘fish:’,”,$text1);
$result = exec(‘calc ‘ . $math);
$sendtext = $result;
}
if(preg_match(“/^memo:/”,$text1)) {
$text2 = str_replace(‘memo:’,”,$text1);
if(preg_match(“/^save:/”,$text2)) {
$text3 = str_replace(‘save:’,”,$text2);
exec(‘rm memo.txt && touch memo.txt’);
file_put_contents(‘memo.txt’,$text3);
$sendtext = “保存しました。”;
} elseif(preg_match(“/^load/”,$text2)) {
$sendtext = file_get_contents(‘memo.txt’);
} else {
$sendtext = “Error…”;
}
}
if(preg_match(“/^rand:/”,$text1)) {
$max = str_replace(‘rand:’,”,$text1);
settype($max,”int”);
$sendtext = mt_rand(0,$max);
}
} else {
exit;
}

$response_format_text = [
“type” => “text”,
“text” => $sendtext
];
$post_data = [
“replyToken” => $replyToken,
“messages” => [$response_format_text]
];

$ch = curl_init(“https://api.line.me/v2/bot/message/reply”);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, ‘POST’);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($post_data));
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
‘Content-Type: application/json; charser=UTF-8’,
‘Authorization: Bearer ‘ . $accessToken
));
$result = curl_exec($ch);
curl_close($ch);
?>

Twitter処理側コード

<?php

require(‘vendor/autoload.php’);
use Abraham\TwitterOAuth\TwitterOAuth;

$consumerKey = “”;
$consumerSecret = “”;
$accessToken = “”;
$accessTokenSecret = “”;
$message = $_GET[‘message’];

$obj = new TwitterOAuth($consumerKey,$consumerSecret,$accessToken,$accessTokenSecret);
$obj->post(“statuses/update”,array(“status”=>$message));
?>

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください