引言:为什么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
我们将使用Webhook——这是一种现代且快速的方法。可以想象成,每当有新消息时,Telegram就会敲响您服务器的大门。很方便,对吧?
\n\n准备工作:开始需要什么?
\n要创建一个简单的PHP聊天机器人,您需要:
\n- \n
- 一个托管服务器或本地服务器(OpenServer、XAMPP、MAMP),需支持PHP 7.4+。 \n
- 互联网连接(用于在Telegram中注册机器人)。 \n
- PHP基础知识(变量、函数、JSON处理)。 \n
如果您没有托管服务器,不用担心——在测试阶段,您可以使用ngrok工具在本地主机上创建一个临时公共URL。稍后会详细介绍。
步骤 1. 在Telegram中注册机器人
\n打开Telegram,找到BotFather(官方机器人创建工具),并输入命令/newbot。回答几个问题:给机器人起个名字(例如,MyTestBot)和一个用户名(必须以bot结尾,例如my_test_pythonlib_bot)。
注册成功后,BotFather会提供给您一个令牌——这是访问API的密钥。它看起来像这样:123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11。请将其保存在安全的地方(最好放在.env文件中,但为简单起见,我们暂时将其硬编码)。
重要提示:切勿向任何人透露您的令牌!这是您机器人的密码。
\n\n步骤 2. 最简单的PHP回声机器人(Webhook)
\n在您网站的根目录下创建一个名为bot.php的文件。此脚本将接收来自Telegram的请求,并回复相同的文本(回声)。
<?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
- Telegram向您的
bot.php文件发送POST请求。 \n - 我们读取传入