LINE Messaging API | Webプログラミング!(2019年度)

Time-stamp: "2018-11-22 Thu 09:02 JST hig"

予備知識

  • 正規表現

正規表現を用いたテキスト処理

ユーザの送信したメッセージ内に特定のパターンがあったとき, そのパターンに応じて返信したいことがあります. これは, PHP のPCRE関数関数群 preg_ナントカを利用して行うことができます.

もっとも有用なのはおそらくpreg_matchで, 特定のパターンがあったかどうかを判定し, そのパターンを文字列として取り出してくれます.

パターンは正規表現で指定します.

サンプル1

parrot_preg.php


    <?php
require_once("lineconfig2.php");


$received_data = json_decode(file_get_contents('php://input'),t);
$replyToken = $received_data["events"][0]["replyToken"];
$received_text=$received_data["events"][0]["message"]["text"];

mb_regex_encoding("UTF-8"); // プログラム内で1回
$pattern="/\b([a-zA-Z]{3}|\w+坂)[0-9]{2}\b/u";

if( preg_match($pattern,$received_text,$groupname) ){
    $message_text="$groupname[0] が好きなの〜?";
} else {
    $message_text="つまんな〜い";
}
    

error_log(print_r($received_data,TRUE));

$messageData = [[
    'type' => 'text',
    'text' => $message_text
                ]];

sendMessage($replyToken,$messageData);



function sendMessage($replyToken,$messageData){
    global $accessToken;

    $post_data=json_encode(['replyToken' => $replyToken, 'messages' => $messageData]);

    $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, $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);
    error_log(print_r($post_data,TRUE));
    error_log(print_r($result,TRUE));
    return $result;
}

// Local Variables:
// mode:php
// End:

課題

参考

このサイトのコンテンツ

QRcode to hig3.net

http://hig3.net