首页 > 其他分享 >基于OpenIM 实现聊天机器人功能

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

时间:2024-01-28 18:34:09浏览次数:13  
标签:robotics return err OpenIM 机器人 msgInfo 聊天

### 简要描述

使用 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. 效果展示

 

## 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。

 

标签:robotics,return,err,OpenIM,机器人,msgInfo,聊天
From: https://www.cnblogs.com/OpenIM/p/17993128

相关文章

  • OpenIM (Open-Source Instant Messaging) Mac Deployment Guide
    Thisguideprovidesstep-by-stepinstructionsfordeployingOpenIMonaMac,includingbothsourcecodeandDockerdeploymentmethods.##PreliminaryEnvironmentSetupEnsureacleanworkingenvironment:1.**CreateaNewDirectory**:Startinanewdirec......
  • 无涯教程-Socket.IO - 聊天示例
    现在我们已经很熟悉Socket.IO,让我们编写一个聊天应用程序,可以在不同的聊天室中使用它进行聊天,我们将允许用户选择用户名,并允许他们使用他们聊天。因此,首先,让我们设置HTML文件以请求用户名-<!DOCTYPEhtml><html><head><title>HelloLearnfk</title></head><......
  • 开发QQ官方机器人
    QQ频道机器人开发简明教程1.简介QQ频道机器人是一种可以在QQ频道中与用户进行互动的服务。这个教程旨在帮助新手学习如何使用Python的官方SDK,快速实现一些基本的机器人功能。2.准备工作机器人注册和添加:在QQ开放平台注册开发者账号,并创建一个机器人应用。获取分......
  • 【专题】2022中国工业机器人市场研究报告PDF合集分享(附原数据表)
    报告链接:https://tecdat.cn/?p=33224本报告合集将基于中国工业产业升级和智能制造的背景,通过对供应端市场和产业链的分析,结合投资视角,探讨工业机器人企业如何增强自身竞争力,推动中国工业产业发展,为企业带来新的增长和转型机会,并从而思考中国工业机器人行业的现状和未来趋势。阅读......
  • AI聊天工具:智能时代的交流先锋
    随着科技的不断进步,人工智能(AI)聊天工具正逐渐成为我们生活中不可或缺的一部分。这些工具通过先进的机器学习和自然语言处理技术,使得机器能够理解、解释和生成人类语言,为我们的社交、商务和学习活动带来了深刻的变革。首先,AI聊天工具在社交方面发挥着越来越重要的作用。在社交媒体......
  • 拥有自己的本地聊天机器人(不需要ChatGPT、笔记本就行)
    概述Windows下,架构是使用开源项目来搭建起来的。因为苦于ChatGPT需要Key,觉得很麻烦,且还有一些数据隐私的考虑,所以一直在寻找有没有可行的完全本地化的方法,最终还是找到了一个可行的方案。最低的资源要求也不是很高,笔记本就行,如果拥有更好的硬件资源的话(Nvidia显卡),那输出会快很多......
  • 【专题】2023年中国工业机器人行业研究报告PDF合集分享(附原数据表)
    原文链接:https://tecdat.cn/?p=34144原文出处:拓端数据部落公众号仿生机器人作为一类结合了仿生学原理的机器人,具备自主决策和规划行动的能力,正逐渐进入大众视野。它们的核心技术要素包括感知与认知技术、运动与控制技术、人机交互技术和自主决策技术。阅读原文,获取专题报告合集......
  • OpenIM Open Source Instant Messaging Project Docker Compose Deployment Guide
    ThedeploymentofOpenIMinvolvesmultiplecomponentsandsupportsvariousmethodsincludingsourcecode,Docker,andKubernetes.Thisrequiresensuringcompatibilitybetweendifferentdeploymentmethodsandeffectivelymanagingdifferencesbetweenversio......
  • Open Source Instant Messaging (IM) Project OpenIM Source Code
    DeployingOpenIMinvolvesmultiplecomponentsandsupportsvariousmethods,includingsourcecode,Docker,andKubernetes.Thisrequiresensuringcompatibilitybetweendifferentdeploymentmethodswhileeffectivelymanagingdifferencesbetweenversions.I......
  • OpenIM Open Source Instant Messaging Project Docker Compose Deployment Guide
    ThedeploymentofOpenIMinvolvesmultiplecomponentsandsupportsvariousmethodsincludingsourcecode,Docker,andKubernetes.Thisrequiresensuringcompatibilitybetweendifferentdeploymentmethodsandeffectivelymanagingdifferencesbetweenversio......