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

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
对象存储 OSS,内容安全 1000次 1年
简介: 基于OpenIM 实现聊天机器人功能

简要描述

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

1. 修改配置文件

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

IMG_1068.png

提示:

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

IMG_1066.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

目录
相关文章
|
3月前
|
自然语言处理 机器人 API
【Azure 机器人】微软Azure Bot 编辑器系列(4) : 使用语言生成功能[LG: Language Generation] (The Bot Framework Composer tutorials)
【Azure 机器人】微软Azure Bot 编辑器系列(4) : 使用语言生成功能[LG: Language Generation] (The Bot Framework Composer tutorials)
|
3月前
|
自然语言处理 机器人 API
【Azure 机器人】微软Azure Bot 编辑器系列(3) : 机器人对话流中加入帮助和取消按钮功能 (The Bot Framework Composer tutorials)
【Azure 机器人】微软Azure Bot 编辑器系列(3) : 机器人对话流中加入帮助和取消按钮功能 (The Bot Framework Composer tutorials)
|
4月前
|
传感器 人工智能 搜索推荐
苹果首款搭载Apple Intelligence功能的新品类曝光——AI桌面机器人
苹果研发的AI桌面机器人,融合360度机械臂与显示屏,预示智能家居新篇章。具备生物识别、实时交互与HomeKit控制,挑战已有的智能音箱市场。面对竞争,苹果依赖创新与品牌影响力,有望引领潮流,开启更智能、个性化的家庭体验。
76 0
|
6月前
|
机器人
量化交易机器人系统开发详情源码/功能步骤/需求设计/稳定版
he development of a quantitative trading robot system involves multiple aspects, including strategy design, data processing, and transaction execution. The following is a detailed overview of the development strategy for a quantitative trading robot system:
|
6月前
|
传感器 数据采集 人工智能
植保机器人多功能性
植保机器人多功能性
79 2
|
6月前
|
传感器 机器学习/深度学习 算法
利用STM32实现自平衡机器人功能与方法
利用STM32实现自平衡机器人功能与方法
83 0
|
算法 机器人 API
量化交易机器人丨交易所系统开发详细流程/功能设计/源码实例
contract QuantitativeTradingBot is ERC20 { using Counters for Counters.Counter; Counters.Counter private _tokenIds; uint256 public constant InitialPrice = 1 ether;
|
JSON 算法 机器人
量化交易机器人软件平台功能模块开发源码定制合约类型
def get_data(self): response = requests.get(self.url, headers=self.headers) data = json.loads(response.text) return data
|
人工智能 机器人 UED
ai智能语音机器人系统都有什么功能?
第一、 智能AI电销机器人的并发量是多少啊?别人可以同时呼出几个? 通常情况下,智能AI电销机器人可以根据客户的需要选择客户需要的外呼并发量,最大可以实现一条宽带,一个主机,可以同时保持客户使用的灵活性,即能兼顾效率,也能兼顾成本控制。 第二、可以转人工?对话时可以打断机器人吗? 转人工和中途打断都是可以的,这些都是电话机器人的基本功能,个人不建议您用转人工的功能,因为每次转人工,机器人都要等到这通转接人工通话结束后才会进行下一通的呼出,这就大大降低了机器人的拨打效率了。所以留给后续人工跟进是最合理的。打断功能是客户说任何内容都能打断的,为了保证一个良好的用户体验度,一些无意义的语气
|
人工智能 机器人
AI智能自动交易量化机器人系统开发稳定版丨案例设计丨方案项目丨功能分析丨源码说明
When developing an AI automated quantitative trading robot system, it is first necessary to clarify the system's goals and requirements. Determine key factors such as the market, trading strategy, and risk control methods to be traded. Next, establish the basic framework for data acquisition and pro