写点什么

基于 OpenIM 实现聊天机器人功能

作者:Geek_1ef48b
  • 2024-01-28
  • 本文字数:1329 字

    阅读完需:约 4 分钟

简要描述

使用 OpenIM 中的 Webhook 机制实现聊天机器人功能。发送文本消息或图片消息给聊天机器人后,机器人会返回相同的消息。开发者可以替换此逻辑,在 LangChain 框架上调用 LLM 接口(包括 gpt3.5 或其他开源本地模型),以实现智能客服功能。

1. 修改配置文件

参照下面的模板修改 open-im-server 中的 config/config.yaml 配置。



提示:

  • url 为回调 URL。

  • afterSendSingleMsg.enable 设置为 true 时,启用该回调。

2. 创建聊天机器人账号

  1. 登录管理后台,参考 此文档

  2. 在用户管理中创建聊天机器人账号,并记录该账号的 userID

  3. 为方便体验,可以将此 userID 设置为默认好友。

3. 编写 afterSendSingleMsg 接口

参考以下示例代码。


提示:

  1. 将例子中的 robotics 替换为第 2 步中获取的 userID


func (m *ChatApi) CallbackExample(c *gin.Context) {    // 1. Handling callbacks after sending a single chat message    msgInfo, err := handlingCallbackAfterSendMsg(c)    if err != nil {        apiresp.GinError(c, err)        return    }
// 2. If the user receiving the message is a customer service bot, return the message. // 2.1 UserID of the robot account robotics := "robotics"
// 2.2 ChatRobot account validation and determining if messages are text and images if msgInfo.SendID == robotics || msgInfo.RecvID != robotics { return } if msgInfo.ContentType != constant.Picture && msgInfo.ContentType != constant.Text { return }
// 2.3 Get administrator token adminToken, err := getAdminToken(c) if err != nil { apiresp.GinError(c, err) return }
// 2.4 Get RobotAccount info robUser, err := getRobotAccountInfo(c, adminToken.AdminToken, robotics) if err != nil { apiresp.GinError(c, err) return }
// 2.5 Constructing the contents of the message field or invoking an LLM to implement AI-driven question answering. mapStruct, err := contextToMap(c, msgInfo) if err != nil { apiresp.GinError(c, err) return }
// 2.6 Send Message err = sendMessage(c, adminToken.ImToken, robotics, msgInfo, robUser, mapStruct) if err != nil { apiresp.GinError(c, err) return }}
复制代码


详细代码参考 链接

4. 效果展示


5.关于 OpenIM

OpenIM 是一款开源、可自托管的即时通讯解决方案,旨在实现应用内通信技术。它作为 Twilio、SendBird、GetStream、CometChat 和 PubNub 等平台的替代品而存在。该解决方案在 GitHub 上获得了超过 13,000 star 的认可,突显了其安全性和可靠性。OpenIM 支持多种部署方法,包括 Docker、源代码和 Kubernetes。OpenIM 完全使用 Golang 开发,具有跨平台和高性能的特点。它作为聊天框架运行,支持通过 Webhook 集成各种机器人,并允许调用到一系列开源模型。


欲了解更多信息或进行贡献,开发者文档可在 https://docs.openim.io/ 查看,GitHub 仓库位于 https://github.com/OpenIMSDK


用户头像

Geek_1ef48b

关注

还未添加个人签名 2021-08-25 加入

还未添加个人简介

评论

发布
暂无评论
基于OpenIM 实现聊天机器人功能_Geek_1ef48b_InfoQ写作社区