PHP聊天机器人:初学者实用指南

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

引言:为什么PHP是聊天机器人的绝佳选择?

\n

您是否曾想过,那些在Telegram、VK或网站上回答问题的智能助手是如何工作的?许多人认为创建聊天机器人需要掌握Python或Node.js。但事实是,PHP聊天机器人不仅可行,而且非常方便。PHP是一种成熟的编程语言,拥有庞大的社区,非常适合快速原型设计和部署机器人。

\n

在本指南中,我们将从零开始,逐步构建一个可运行的PHP Telegram机器人。我们将探讨两种方法:一个简单的本地回声机器人和一个连接数据库的机器人。剧透:会有大量代码,您可以立即复制并运行。

\n\n

什么是聊天机器人以及它如何工作?

\n

在编写代码之前,让我们先了解其架构。聊天机器人是一种接收用户消息、处理消息并发送回复的程序。在Telegram(最流行的机器人平台)的背景下,其工作流程如下:

\n
    \n
  • 用户在Telegram中给机器人发送消息。
  • \n
  • Telegram向您的服务器发送POST请求(Webhook),或者您自己不断轮询服务器(Long Polling)。
  • \n
  • 您的PHP脚本处理请求并通过Telegram API发送回复。
  • \n
\n

我们将使用Webhook——这是一种现代且快速的方法。可以想象成,每当有新消息时,Telegram就会敲响您服务器的大门。很方便,对吧?

\n\n

准备工作:开始需要什么?

\n

要创建一个简单的PHP聊天机器人,您需要:

\n
    \n
  • 一个托管服务器或本地服务器(OpenServer、XAMPP、MAMP),需支持PHP 7.4+。
  • \n
  • 互联网连接(用于在Telegram中注册机器人)。
  • \n
  • PHP基础知识(变量、函数、JSON处理)。
  • \n
\n

如果您没有托管服务器,不用担心——在测试阶段,您可以使用ngrok工具在本地主机上创建一个临时公共URL。稍后会详细介绍。

\n\n

步骤 1. 在Telegram中注册机器人

\n

打开Telegram,找到BotFather(官方机器人创建工具),并输入命令/newbot。回答几个问题:给机器人起个名字(例如,MyTestBot)和一个用户名(必须以bot结尾,例如my_test_pythonlib_bot)。

\n

注册成功后,BotFather会提供给您一个令牌——这是访问API的密钥。它看起来像这样:123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11。请将其保存在安全的地方(最好放在.env文件中,但为简单起见,我们暂时将其硬编码)。

\n

重要提示:切勿向任何人透露您的令牌!这是您机器人的密码。

\n\n

步骤 2. 最简单的PHP回声机器人(Webhook)

\n

在您网站的根目录下创建一个名为bot.php的文件。此脚本将接收来自Telegram的请求,并回复相同的文本(回声)。

\n\n
<?php\n// 从Telegram获取数据\n$content = file_get_contents("php://input");\n$update = json_decode($content, true);\n\n// 检查是否有消息\nif (!$update) {\n    exit;\n}\n\n// 提取聊天ID和消息文本\n$chat_id = $update['message']['chat']['id'];\n$text = $update['message']['text'];\n\n// 您的机器人令牌\n$token = "YOUR_TOKEN_HERE";\n\n// 发送回复(回声)\n$url = "https://api.telegram.org/bot{$token}/sendMessage";\n$data = [\n    'chat_id' => $chat_id,\n    'text' => "您输入了: " . $text\n];\n\n// 使用cURL发送请求\n$ch = curl_init();\ncurl_setopt($ch, CURLOPT_URL, $url);\ncurl_setopt($ch, CURLOPT_POST, 1);\ncurl_setopt($ch, CURLOPT_POSTFIELDS, $data);\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\n$result = curl_exec($ch);\ncurl_close($ch);\n?>
\n\n

这是如何工作的?

\n
    \n
  1. Telegram向您的bot.php文件发送POST请求。
  2. \n
  3. 我们读取传入

博客

书籍推荐