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

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

2000元阿里云代金券免费领取,2核4G云服务器仅664元/3年,新老用户都有优惠,立即抢购>>>


阿里云采购季(云主机223元/3年)活动入口:请点击进入>>>,


阿里云学生服务器(9.5元/月)购买入口:请点击进入>>>,

简要描述

使用 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

目录
相关文章
|
5天前
|
机器人
量化交易机器人系统开发详情源码/功能步骤/需求设计/稳定版
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:
|
5天前
|
传感器 数据采集 人工智能
植保机器人多功能性
植保机器人多功能性
42 2
|
5天前
|
传感器 机器学习/深度学习 算法
利用STM32实现自平衡机器人功能与方法
利用STM32实现自平衡机器人功能与方法
39 0
|
9月前
|
算法 机器人 API
量化交易机器人丨交易所系统开发详细流程/功能设计/源码实例
contract QuantitativeTradingBot is ERC20 { using Counters for Counters.Counter; Counters.Counter private _tokenIds; uint256 public constant InitialPrice = 1 ether;
|
9月前
|
JSON 算法 机器人
量化交易机器人软件平台功能模块开发源码定制合约类型
def get_data(self): response = requests.get(self.url, headers=self.headers) data = json.loads(response.text) return data
|
9月前
|
人工智能 机器人 UED
ai智能语音机器人系统都有什么功能?
第一、 智能AI电销机器人的并发量是多少啊?别人可以同时呼出几个? 通常情况下,智能AI电销机器人可以根据客户的需要选择客户需要的外呼并发量,最大可以实现一条宽带,一个主机,可以同时保持客户使用的灵活性,即能兼顾效率,也能兼顾成本控制。 第二、可以转人工?对话时可以打断机器人吗? 转人工和中途打断都是可以的,这些都是电话机器人的基本功能,个人不建议您用转人工的功能,因为每次转人工,机器人都要等到这通转接人工通话结束后才会进行下一通的呼出,这就大大降低了机器人的拨打效率了。所以留给后续人工跟进是最合理的。打断功能是客户说任何内容都能打断的,为了保证一个良好的用户体验度,一些无意义的语气
|
9月前
|
人工智能 机器人
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
|
10月前
|
算法 机器人 API
现货量化机器人/合约交易/合约跟单交易所系统开发(对接API火币/币安/OK/欧易)技术详细/开发程序/功能逻辑/源码案例
  交易机器人系统架构:交易机器人系统的架构可以采用分布式架构或集中式架构。集中式架构主要由后台服务、API接口、交易核心、交易逻辑四个部分组成,而分布式架构则将交易逻辑放在不同的节点上运行。
|
11月前
|
算法 机器人 区块链
数字货币量化机器人系统开发(项目案例)/功能说明/逻辑方案/源码平台
  简单地说,量化交易机器人就是能够自动执行交易策略的交易软件。它借助于计算机技术和数学模型,对市场行情进行分析预测,并根据程序设定的规则和条件自动执行交易策略,完成交易操作。Compared with traditional manual trading,quantitative trading robots have faster trading speed,lower transaction costs,and higher trading efficiency.
|
机器学习/深度学习 算法 机器人
FreeSWITCH ASR 电话机器人 VAD 打断 ASR集成 全功能开源代码
最近很多人都对FreeSWITCH和ASR对接比较感谢兴趣,我之前已经做了一个商业模块(商业模块请点击这里http://www.ddrj.com/callcenter/asr.html),考虑到大部分人,只是研究一下,并不准确购买商业模块,特意做一个开源项目给大家提供一个参考。
410 0
http://www.vxiaotou.com