从漫游器获取随机输入并将其发回

时间:2019-05-04 21:12:10

标签: php

我目前正在使用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]
            )
        )
    ));
}
?>

顶部效果很好

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]
                ]
            ]
        ]);
    }
?>