为什么PHP是聊天机器人的绝佳语言?
\n当谈到创建聊天机器人时,许多人首先想到的是Python或Node.js。但驱动着pythonlib.ru以及大部分互联网的PHP,同样能出色地完成这项任务。PHP有三个主要优势:在任何主机上部署简单、拥有大量现成的库以及语法清晰易懂。如果你已经熟悉PHP,那么一个晚上就能写出你的第一个聊天机器人。在本文中,我们将从零开始讲解用PHP创建聊天机器人,从在Telegram中注册开始,一直到处理复杂命令。
\n我们不会使用框架——只使用纯PHP和一个官方库。这将让你理解一切是如何“在底层”工作的。然后,你可以轻松地过渡到任何现代框架(Laravel、Symfony)进行扩展。
\n\n开始需要什么?
\n在编写代码之前,让我们先准备好工作环境。对于用PHP开发机器人,你需要:
\n- \n
- Web服务器(Apache或Nginx)且PHP版本7.4或更高——任何主机或本地机器上的OpenServer都可以。 \n
- HTTPS访问——Telegram要求Webhook使用安全连接(本地开发可以使用ngrok)。 \n
- Composer——PHP的包管理器(一条命令即可安装)。 \n
- Telegram账户——用于注册机器人和测试。 \n
如果你已经有一个PHP网站,比如pythonlib.ru,你可以直接将机器人添加到其子域名上——这很方便,且无需额外费用。
\n\n在Telegram中注册机器人
\n打开Telegram,找到BotFather(用于创建机器人的官方机器人)并发送命令:
\n/newbot\nBotFather会要求你为机器人想一个名称和用户名。用户名必须以bot结尾,例如:MyFirstPHPBot。注册成功后,你会收到一个令牌——一串类似这样的长字符串:
1234567890:AAHdqTcvCH1vGWJxfSeofSAs0K5PALDsaw\n保存好这个令牌——所有对API的请求都需要它。切勿将其透露给任何人,否则你的机器人可能会被入侵。
\n\n聊天机器人架构:Long Polling vs Webhook
\n有两种方式让机器人接收消息:
\n- \n
- Long Polling——机器人自己不断地“轮询”Telegram服务器,询问“有新消息吗?”。调试起来更简单,但会增加服务器负载。 \n
- Webhook——当有人给机器人发消息时,Telegram主动向你的URL发送POST请求。更快、更可靠,但需要HTTPS。 \n
在本实战指南中,我们将使用Webhook,因为这是生产环境机器人的现代标准。通过浏览器执行一条命令即可完成配置。
\n\n步骤1:安装用于Telegram API的库
\n为了避免手动解析JSON和发送请求,我们安装Telegram官方的PHP库。在项目文件夹中打开终端并执行:
\ncomposer require telegram-bot/api\n这个库支持所有API方法,并会随Telegram一起更新。安装后,文件夹中会出现vendor目录和composer.json文件。
步骤2:处理传入消息的基础脚本
\n创建一个文件bot.php——这将是Webhook的入口点。以下是最简代码,用于对任何消息回复“你好!”:
<?php\nrequire_once __DIR__ . '/vendor/autoload.php';\n\nuse Telegram\\Bot\\Api;\n\n$token = '你的令牌在这里';\n$telegram = new Api($token);\n\n// 获取传入的更新\n$update = $telegram->getWebhookUpdate();\n\n// 提取消息文本和聊天ID\n$message = $update->getMessage();\n$chatId