智能机器人开发项目

前景:

PHP 是我做开发的入门语言,但是这么久没有一个自己的成熟开源的项目很是惭愧,这个 Bot 机器人项目年前就有构想,因为工作原因没有时间,刚好最近下课,由于没有项目运营经验,不知道前景如何?是否有构建必要?希望对此感兴趣的大佬能给点宝贵意见 :+1:

构想

根据各主流平台(wechat,qq,抖音等)生态搭建一个 Bot 聊天机器人,它提供了一组丰富的功能。底层通过对接不同的第三方平台实现对机器人的操作,用户可以配置不同的大语言模型实现智能问答机器人,而无需修改代码就能实现不同的大语言模型的切换,可以实现数据的智能处理和流程自动化,提高效率并减少人力成本

智能机器人开发

智能机器人开发

技术架构

系统主要包含四个核心组件:Bot 组件、BotManager 组件、OneBot12 组件和 Drive 组件,以及它们之间的交互方式。
智能机器人开发

Bot 组件

Bot 组件是整个系统的核心组件,主要包含以下功能:

  1. 用户信息仓库(BotRepositoryInterface):本质上一个Bot 机器人实例就是 微信、Telegram等平台的一个用户,这个用户有账号和个人的基本信息,
    RepositoryInterface 负责与数据库交互,通过这个接口,Bot 可以获取和更新关于用户的信息,如登录状态、个人资料等。这使得 Bot 能够适应不同的存储解决方案,如 Redis、MySQL 等,增加了系统的灵活性
  2. 驱动组件(DriverInterface):这个接口定义了与外部服务(如微信、Telegram)通信的方法。Bot 组件通过这个接口发送 action 动作和接收消息,Drive 组件是没有保存用户信息的无状态设计,这样的设计使得 Bot 能够轻松地适配不同的通信协议和平台。
  3. 事件订阅与处理: 通过 EventDispatcherInterface,Bot 能够在执行动作前后触发事件,这为客户端提供了一个强大的工具,用于扩展 Bot 的功能,如日志记录、消息过滤、自定义响应等。

BotManager 组件

  • 管理多个机器人实例。
  • 监测和维护机器人实例的连接状态。
  • 可以实现负载均衡和故障转移机制。

OneBot12 组件

OneBot12 是一个为即时通讯机器人定义的通讯协议,它是 OneBot 协议的一个版本,旨在提供统一的标准,使得开发者可以更方便地为不同的即时通讯平台(如QQ、微信等)开发机器人:

  1. Drive 组件实现 OneBot 协议的规范来与即时通讯平台进行交互。OneBot 协议定义了一套标准化的接口和消息格式,以便机器人能够跨平台工作,而 Drive 组件则是这一协议与具体即时通讯平台之间的适配层。
  2. 消息发送:当机器人需要发送消息时,它会创建一个符合 OneBot 协议的消息对象,然后调用 Drive 组件的发送方法。Drive 组件将这个消息转换为平台特定的格式并发送出去。
  3. 消息接收:Drive 组件监听来自即时通讯平台的消息和事件,将它们转换为 OneBot 协议定义的格式,然后传递给机器人的处理逻辑。
  4. 事件响应:对于需要响应的事件(如好友添加请求),Drive 组件将平台特定的事件转换为 OneBot 协议的事件,机器人根据转换后的事件执行相应的动作。

Drive 组件

消息转换:Drive 组件将符合 OneBot 或其他机器人协议的通用消息格式转换为特定即时通讯平台所需的格式,以及将接收到的平台特定消息格式转换为机器人能理解的 OneBot 格式。

发送消息:Bot发送消息到微信,QQ等平台流程,

首先 client 需要构建 OneBot12 标准协议 Action 动作,和发送对象的实体 Entity 例如:Fround 好友或者 Group 群组,
Bot 机器人通过绑定的 Drive(远程驱动)将 OneBot12标准协议转换为 微信,QQ等通讯平台所需的格式消息格式,
然后通过远程服务通信协议 Http,websocket 等协议发送给远程服务

伪代码

//构建一个 HTTP Driver
$http = new Bot\Drivers\Http\HttpDriver(url:'http://127.0.0.1:8080',token: 'xxxxxxx');
//构建一个 bot 机器人实例
$bot = new Bot\Bot(new \Bot\User\BotRepository(),$http)
//构建一个 OneBot12 的消息
$message = new \OneBot\Message\Message(\OneBot\Message\MessageSegment::text('hello'));
//构建一个 OneBot12 的动作
$action = new Action('send_message',new \OneBotEntity\Friend(userid:'123'), , $bot->getRepository());
//处理消息
$bot->handleAction($action);

消息接收

消息接收:将接收到的平台特定消息格式转换为机器人能理解的 OneBot 格式。

伪代码


interface DriverInterface
{
 public function formatMessageDriverToOneBot():EventMessageEvent;}
class wechat implements DriverInterface{

public function formatMessageDriverToOneBot(array $request): EventMessageEvent{
 //构建 OneBot 协议的消息事件
 return new \OneBot\Event\Message\MessageEvent($request['content'])}
}
//qq驱动
class qq implements DriverInterface{

public function formatMessageDriverToOneBot(array $request): EventMessageEvent{
 //构建 OneBot 协议的消息事件
 return new \OneBot\Event\Message\MessageEvent($request['text'])}
}

//接收消息
Router::addRoute(['GET', 'POST'],'/wechat', function (RequestInterface $request) {
$oneBotEvent = (new wechat()->receiveMessage($request->param('content'));
});

Router::addRoute(['GET', 'POST'],'/qq', function () {
$oneBotEvent = (new qq()->receiveMessage($request->param('text'))));
});
  1. API调用:封装对即时通讯平台API的调用,包括发送消息、管理群组、处理好友请求等操作。
  2. 连接管理:维护与即时通讯平台的连接状态,处理认证、重连、心跳等逻辑,确保机器人与平台间的通信畅通。
  3. 配置与扩展:支持不同即时通讯平台的配置,允许根据需要轻松添加或修改平台适配器,实现对新平台的支持

    使用场景

  4. 公司的客服部门每天需要处理数千个客户咨询,而大多数问题都是关于产品使用、订单状态或支付问题的简单咨询。 通过整合客户服务数据库和AI大语言模型,智能Bot能够理解客户的问题,并提供快速准确的答复。这不仅提高了客户满意度,也能够专注于处理更复杂的问题。
  5. 管理多个社交媒体账户,发布内容并互动粉丝,但每天的繁琐任务量非常大。
    Bot可以自动安排和发布内容,同时对粉丝评论进行实时响应。通过自然语言处理能力,它可以筛选出需要张华个人注意的重要互动。
  6. 消息监控:Bot将实时监控所有群聊消息。我的 WeChat 有几十个聊群,但是我没有精力每时每刻都查看消息,我希望 Bot 机器人能帮我总结群里的聊天内容,当然利用自然语言处理技术,Bot可以提取每个群聊中的主要话题或要点,并提供一个简短的内容摘要
  7. 初学者在学习Laravel 文档时可能会遇到概念理解:(Laravel框架中有很多专业术语和概念),配置环境(我刚学习laravle 不知如何下手)问题, Bot可以即时解释Laravel文档中的专业术语,帮助初学者构建知识体系,提供简单的代码示例来阐明文档中的概念,帮助初学者理解如何在实际项目中使用Laravel。
  8. …..

目前市面上相关项目

wechaty 是很成熟的 Bot 开源项目,使用 gprc 服务也提供 openapi 接口,在官网可以找到 PHP gprc 实现
github.com/zhayujie/chatgpt-on-wec... python 实现,文档齐全,提供商店下载插件
github.com/lss233/chatgpt-mirai-qq... python 实现
github 上很多就不一一列举了
智能机器人开发

PHP版本

github.com/Hanson/vbot wechat 实现,收费
github.com/kcloze/swoole-bot 使用 swoole 基于 vbot 实现
github.com/lbbniu/WebWechat wechat web 协议
github.com/zhamao-robot/zhamao-fra... 使用 swoole 的 OneBot 框架,但是代码不忍直视
github.com/botman/botman 国内多平台 bot 实现
gitee.com/fudaoji/wxbot 主要是微信机器人,后台对接实现微信接口的平台,值得学习,但是代码不忍直视

wechat 接口实现

github.com/nodeWechat/wechat4u web协议
e小天
E云
wechaty
vbot 价格小贵有门槛
个人微信SCRM系统 价格小贵有门槛

协议

OneBot 协议

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 5

挺好的想法,布的局好大,我们公司有用微信的机器人一个月大概买800个微信机器人

5个月前 评论
微加加的朋友 (楼主) 5个月前
liaosp (作者) 5个月前

可以的。微信等平台的信息是怎么接收到的?Hook了系统函数然后解密?

5个月前 评论
微加加的朋友 (楼主) 5个月前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!