用PHP创建聊天机器人:从理论到可运行的代码

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

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

开始课程

为什么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
\n

如果你已经有一个PHP网站,比如pythonlib.ru,你可以直接将机器人添加到其子域名上——这很方便,且无需额外费用。

\n\n

在Telegram中注册机器人

\n

打开Telegram,找到BotFather(用于创建机器人的官方机器人)并发送命令:

\n
/newbot
\n

BotFather会要求你为机器人想一个名称和用户名。用户名必须以bot结尾,例如:MyFirstPHPBot。注册成功后,你会收到一个令牌——一串类似这样的长字符串:

\n
1234567890:AAHdqTcvCH1vGWJxfSeofSAs0K5PALDsaw
\n

保存好这个令牌——所有对API的请求都需要它。切勿将其透露给任何人,否则你的机器人可能会被入侵。

\n\n

聊天机器人架构:Long Polling vs Webhook

\n

有两种方式让机器人接收消息:

\n
    \n
  • Long Polling——机器人自己不断地“轮询”Telegram服务器,询问“有新消息吗?”。调试起来更简单,但会增加服务器负载。
  • \n
  • Webhook——当有人给机器人发消息时,Telegram主动向你的URL发送POST请求。更快、更可靠,但需要HTTPS。
  • \n
\n

在本实战指南中,我们将使用Webhook,因为这是生产环境机器人的现代标准。通过浏览器执行一条命令即可完成配置。

\n\n

步骤1:安装用于Telegram API的库

\n

为了避免手动解析JSON和发送请求,我们安装Telegram官方的PHP库。在项目文件夹中打开终端并执行:

\n
composer require telegram-bot/api
\n

这个库支持所有API方法,并会随Telegram一起更新。安装后,文件夹中会出现vendor目录和composer.json文件。

\n\n

步骤2:处理传入消息的基础脚本

\n

创建一个文件bot.php——这将是Webhook的入口点。以下是最简代码,用于对任何消息回复“你好!”:

\n\n
<?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                

博客

书籍推荐