[目次]
LINE Messaging API | Webプログラミング!(2021年度)
完全一致による場合分けによる応答
サンプル1
ユーザのメッセージの完全一致で応答を決める例です.
URL(https://...../response.php)をWebhookに登録します. 更新したら, 接続確認します.
サンプル1response.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に登録します. 更新したら, 接続確認します.
サンプル1response.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 を作ろう.