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

OpenIM · · 1040 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

### 简要描述 使用 OpenIM 中的 Webhook 机制实现聊天机器人功能。发送文本消息或图片消息给聊天机器人后,机器人会返回相同的消息。开发者可以替换此逻辑,在LangChain框架上调用LLM接口(包括gpt3.5或其他开源本地模型),以实现智能客服功能。 ## 1. 修改配置文件 参照下面的模板修改 open-im-server 中的 `config/config.yaml` 配置。 ![PC Web Interface](./assets/config.png) > **提示**: > - `url` 为回调 URL。 > - 当 `afterSendSingleMsg.enable` 设置为 `true` 时,启用该回调。 ## 2. 创建聊天机器人账号 1. 登录管理后台,参考 [此文档](../../guides/gettingStarted/quickTestServer)。 2. 在用户管理中创建聊天机器人账号,并记录该账号的 **userID**。 3. 为方便体验,可以将此 **userID** 设置为默认好友。 ## 3. 编写 **afterSendSingleMsg** 接口 参考以下示例代码。 > **提示**: > 1. 将例子中的 **robotics** 替换为第 **2** 步中获取的 **userID**。 ```Go 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 } } ``` 详细代码参考 [链接](https://github.com/openimsdk/chat/blob/main/example/callback/callback.go) ## 4. 效果展示 ![PC Web Interface](./assets/result.png) ## 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。

有疑问加站长微信联系(非本文作者))

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1040 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传