我目前正在使用php制作聊天机器人。
我使用的代码读取给定的消息,如果匹配特定的预设,则以新消息作为响应。
如果某人发送带有随机输入的 text 消息“ / repeat text”,则漫游器应回显与输入中相同的文本“ repeat> text”。
这是我到目前为止所做的。
<?php
if (strtolower($message['text']) == "/repeat text"){
$client->replyMessage(array(
'replyToken' => $event['replyToken'],
'messages' => array(
array(
'type' => 'text',
'text' => 'repeat>text'
)
)
));
}
?>
编辑回复:
<?php
if (strtolower($message['text']) == "hey"){
$client->replyMessage(array(
'replyToken' => $event['replyToken'],
'messages' => array(
array(
'type' => 'text',
'text' => 'hey person'
)
)
));
}
if (preg_match('/^\/repeat (.+)/g', strtolower($message['text']), $matches)){
$client->replyMessage(array(
'replyToken' => $event['replyToken'],
'messages' => array(
array(
'type' => 'text',
'text' => 'repeat>' . $matches[1]
)
)
));
}
?>
顶部效果很好
答案 0 :(得分:0)
您正在检查输入消息是否等于“ /重复文本”。您不想检查是否相等,而是要检查是否匹配某个表达式。因此,您可以使用正则表达式。
对您来说,最重要的功能是preg_match
,它检查字符串是否与特定模式匹配(在您的情况下,开头是“ / repeat”)。
您的最终代码如下:
<?php
if (preg_match('/^\/repeat (.+)/', strtolower($message['text']), $matches)) {
$client->replyMessage([
'replyToken' => $event['replyToken'],
'messages' => [
[
'type' => 'text',
'text' => 'repeat>' . $matches[1]
]
]
]);
}
?>