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

Time-stamp: "2018-11-02 Fri 17:21 JST hig"

完全一致による場合分けによる応答

サンプル1

ユーザのメッセージの完全一致で応答を決める例です.

URL(https://...../response.php)をWebhookに登録します. 更新したら, 接続確認します.

サンプル1

response.php


    <?php
require_once("lineconfig2.php");
$received_data = json_decode(file_get_contents('php://input'),TRUE);
$replyToken = $received_data["events"][0]["replyToken"];
$received = $received_data["events"][0]["message"]["text"];

error_log("received_data=".print_r($received_data,TRUE));

$messageData = [
    [
    'type' => 'text',
    'text' => 'あなたはペンギンですか?(はい/いいえ)'
    ]
];

$responsemessageData=[
    'はい'=>
    [[
    'type' => 'text',
    'text' => 'あなたはペンギンなのですね'
    ]],
    'いいえ'=>
    [[
    'type' => 'text',
    'text' => 'あなたはペンギンではないのですね'
    ]]
];


if (array_key_exists($received, $responsemessageData)){
    sendMessage($replyToken,$responsemessageData[$received]);
} else {
    sendMessage($replyToken,$messageData);
}


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

    $sending_data=json_encode(['replyToken' => $replyToken, 'messages' => $messageData]);
    error_log("sending_data=". $sending_data);
    $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, $sending_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("result=". print_r($result,TRUE));
    return $result;
}




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

lineconfig.php


    <?php
$channelid=''; // a.k.a. client_id
$channelsecret=''; // a.k.a. client_id

$accessToken = '';// 

課題

  • テキストメッセージで受け取って, 「ヘルプ」ならヘルプを出す, そうでなければ数nと思って2*nを返す bot を作ろう.

部分一致による場合分けでの応答

ユーザのメッセージの完全一致で応答を決める例です.

PHPの関数 strpos

サンプル2

URL(https://...../response.php)をWebhookに登録します. 更新したら, 接続確認します.

サンプル1

response.php


    <?php
require_once("lineconfig2.php");
$received_data = json_decode(file_get_contents('php://input'),TRUE);
$replyToken = $received_data["events"][0]["replyToken"];
$received = $received_data["events"][0]["message"]["text"];

error_log("received_data=".print_r($received_data,TRUE));

$messageData = [
    [
    'type' => 'text',
    'text' => 'あなたはペンギンですか?(yes/no)'
    ]
];

$responsemessageData=[
    'はい'=>
    [[
    'type' => 'text',
    'text' => 'あなたはペンギンなのですね'
    ]],
    'いいえ'=>
    [[
    'type' => 'text',
    'text' => 'あなたはペンギンではないのですね'
    ]]
];

foreach($responsemessageData as $key=>$value ){
    if (strpos($received,$key)!==false){	     
       sendMessage($replyToken,$responsemessageData[$key]);
       exit(0);
    }   
}
sendMessage($replyToken,$messageData);

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

    $sending_data=json_encode(['replyToken' => $replyToken, 'messages' => $messageData]);
    error_log("sending_data=". $sending_data);
    $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, $sending_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("result=". print_r($result,TRUE));
    return $result;
}




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

lineconfig.php


    

文字クラスでの場合分けでの応答

PHP Ctype関数群

課題

  • テキストメッセージで受け取って, 数字だけなら nに対して2*nを返す, それ以外ならヘルプを出す bot を作ろう.

正規表現マッチでの場合分けでの応答

PHP関数 preg_match

課題

  • テキストメッセージで受け取って, 「ヘルプ」ならヘルプを出す, そうでなければ数nと思って2*nを返す bot を作ろう.

参考

このサイトのコンテンツ

QRcode to hig3.net

http://hig3.net