LINEbot でオウム返し 2017 PHP版

やり方調べるのになぜか時間がかかる.

なんだかつらたん.

ただ, オウム返ししたいだけなのに!

しくみ

LINEサーバを介して自分のサーバ内のスクリプトで受け取ります.

スクリプト作成の前に LINE管理画面で,

- アクセストークンをもらう
- サーバー内スクリプトまでのURLを教えておく

スクリプト

LINE側 API はわかりやすい仕様で作られています.


<?php

$access_token = /* your access token */;

$url = 'https://api.line.me/v2/bot/message/reply';

// receive json data from line webhook
$raw = file_get_contents('php://input');
$receive = json_decode($raw, true);

// parse received events
$event = $receive['events'][0];
$reply_token  = $event['replyToken'];
$message_text = $event['message']['text'];


// build request headers
$headers = array('Content-Type: application/json',
                 'Authorization: Bearer ' . $access_token);

// build request body
$message = array('type' => 'text',
                 'text' => $message_text);

$body = json_encode(array('replyToken' => $reply_token,
                          'messages'   => array($message)));


// post json with curl
$options = array(CURLOPT_URL            => $url,
                 CURLOPT_CUSTOMREQUEST  => 'POST',
                 CURLOPT_RETURNTRANSFER => true,
                 CURLOPT_HTTPHEADER     => $headers,
                 CURLOPT_POSTFIELDS     => $body);

$curl = curl_init();
curl_setopt_array($curl, $options);
curl_exec($curl);
curl_close($curl);

結果

どんだけつらたんなのか!


「午前 12時」が「12 P.M.」とか

12

まさか、 「11AM」 の一時間後が 「12PM」 だなんて...

よく見かけるので調べてみたら...


<?php
date_default_timezone_set('UTC');
//date_default_timezone_set('Asia/Tokyo');

for ($h = 0; $h < 24; $h++) {
  $time = $h * 60 * 60;
  printf('%s - %s - %s %s' . "\n",
         date('H:i',   $time),
         date('h:i a', $time),
         date('h:i A', $time),
         $h % 12 === 0 ? '*' : '');
}

PHP: date - Manual


00:00 - 12:00 am - 12:00 AM *
01:00 - 01:00 am - 01:00 AM 
02:00 - 02:00 am - 02:00 AM 
03:00 - 03:00 am - 03:00 AM 
04:00 - 04:00 am - 04:00 AM 
05:00 - 05:00 am - 05:00 AM 
06:00 - 06:00 am - 06:00 AM 
07:00 - 07:00 am - 07:00 AM 
08:00 - 08:00 am - 08:00 AM 
09:00 - 09:00 am - 09:00 AM 
10:00 - 10:00 am - 10:00 AM 
11:00 - 11:00 am - 11:00 AM 
12:00 - 12:00 pm - 12:00 PM *
13:00 - 01:00 pm - 01:00 PM 
14:00 - 02:00 pm - 02:00 PM 
15:00 - 03:00 pm - 03:00 PM 
16:00 - 04:00 pm - 04:00 PM 
17:00 - 05:00 pm - 05:00 PM 
18:00 - 06:00 pm - 06:00 PM
19:00 - 07:00 pm - 07:00 PM 
20:00 - 08:00 pm - 08:00 PM 
21:00 - 09:00 pm - 09:00 PM 
22:00 - 10:00 pm - 10:00 PM 
23:00 - 11:00 pm - 11:00 PM

まじか...

Usage Note: By convention, 12 AM denotes midnight and 12 PM denotes noon. Because of the potential for confusion, it is advisable to use 12 noon and 12 midnight.

American Heritage Dictionary Entry: PM

そうなのですか...

覚えておきます。


LINE Notify をつかってターミナルから送信する

使ってみる.

line-notify

コマンドラインから LINE にメッセージを送れる LINE Notify « LINE Engineers' Blog

とりあえず.


#!/bin/sh -x                                                                                                                                   

token=zbOIf0lthC34fLGsXuilN2WBIkbomhtKj18M1MP0B1g

while true
do
  read message
  curl https://notify-api.line.me/api/notify \
  -H "Authorization: Bearer ${token}" \
  -F "message=${message} https://goo.gl/lU0Kx6" \
  -F "imageThumbnail=https://pbs.twimg.com/profile_images/745806811597406210/HO0KCGf2_400x400.jpg" \
  -F "imageFullsize=http://developers.linecorp.com/blog/wp-content/uploads/2016/10/moon.png"
  echo
done

これはグループ向けのメッセージ通知用になるのかな.