尘锋SCRM开放平台
    • 嵌入页面前端SDK
    • 接入前准备
      • 接口鉴权说明
      • 回调接入指南
      • 报错code码说明
      • 省市区code码
      • 民族id对应关系
      • 获取附件URL访问签名
      • 更新日志
      • AI编程指南
    • 对接方案介绍
      • 联系人架构介绍
      • 员工概览
      • ERP打通
      • 客户信息打通
      • 订单打通
      • 微信unionid互通场景
      • 获客助手对接场景
      • 外呼平台接入SCRM自检说明文档
    • API文档
      • 客户
        • 联系人
          • 联系人管理
            • 查询联系人
            • 新增联系人
            • 编辑联系人
            • 删除联系人
            • 编辑联系人状态
            • 获取联系客户统计数据
            • 批量查询联系人和企业关联关系
            • 外部ID
              • 删除联系人外部ID
              • 更新联系人外部ID
              • 绑定外部ID与联系人ID
          • 联系人字段ID
            • 查询联系人自定义字段模板
            • 查询跟进状态列表
            • 查询联系人公海列表
            • 无效&放弃&删除原因查询
            • 联系人类型与标签和自定义字段关联关系
            • 联系人类型
            • 联系人联系方式
            • 多级联选列表
            • 来源
              • 来源列表查询(企业&联系人)
              • 编辑来源
              • 创建来源
          • 标签库
            • 给联系人打标签
            • 好友标签(企业微信标签)
              • 查询好友标签列表
              • 编辑好友标签
              • 新增好友标签
            • 联系人标签
              • 编辑联系人标签值
              • 新增联系人标签组
              • 编辑联系人标签组
              • 新增联系人标签值
              • 查询联系人标签列表
          • 跟进团队
            • 编辑(联系人/企业)共享人
            • 查询创建⼈跟进⼈和共享⼈
          • 跟进提醒
            • 查询跟进提醒
            • 新增跟进提醒
            • 编辑跟进提醒
            • 完成跟进提醒
            • 删除跟进提醒
          • 跟进记录
            • 查询跟进记录
            • 查询跟进记录模板
            • 新增跟进记录
          • 在职继承
            • 分配在职成员联系人
            • 查询接替状态
          • 签到
            • 查询签到记录
          • 行为轨迹
            • 轨迹参数说明
            • 上报轨迹事件
            • 查询轨迹事件
            • 查询旅程项目
        • 企业
          • 企业字段ID
            • 查询企业字段ID
            • 查询企业跟进状态
            • 查询企业公海列表
            • 来源列表查询(企业&联系人)
            • 查询企业类型
            • 查询企业删除原因
            • 查询多级联选
          • 企业管理
            • 查询企业列表
            • 新增企业
            • 编辑企业
            • 删除企业
            • 企业绑定联系人
            • 更新企业跟进人
            • 放弃企业到公海
            • 分配公海中企业
          • 企业标签
            • 查询企业标签
        • 好友
          • 查询好友列表
          • 编辑好友信息
          • 好友关联联系人
          • 好友取消关联联系人
          • unionId上传&关联externalUserId
        • 客户群
          • 查询客户群列表
          • 查询客户群详情
          • 编辑客户群标签
          • 查询群标签列表
          • 查询群聊数据统计-按群主聚合方式
          • 查询群聊数据统计-按自然日聚合方式
      • 销售机会
        • 销售机会管理
          • 查询销售机会列表
          • 新增销售机会
          • 编辑销售机会
          • 删除销售机会
          • 新增销售机会协同人
          • 移除销售机会协同人
          • 销售机会绑定订单
          • 销售机会解绑订单
          • 销售机会阶段变更记录
        • 销售机会字段ID
          • 查询销售机会字段ID
          • 查询销售机会类型
          • 查询销售机会阶段
          • 查询协同角色ID
          • 查询竞争对手
          • 查询丢单原因
          • 查询销售机会多级联选选项
          • 修改销售机会多级联选选项
      • 交易
        • 订单
          • 查询订单列表
          • 新增&编辑订单
          • 查询订单自定义字段ID
          • 修改订单归属人/归属部门
          • 订单发货
          • 查询物流公司列表
          • 查询订单来源
          • 编辑自主下单
        • 售后单
          • 查询售后单列表
          • 创建售后单
          • 售后单操作退款
          • 关闭售后单
        • 回款单
          • 查询回款单列表
          • 创建回款单
        • 会员积分
          • 查询会员列表
          • 新增会员
          • 变更会员等级
          • 查询会员等级变更明细
          • 变更会员积分
          • 变更会员成长值
          • 查询会员积分变更明细
          • 使用会员积分
        • 商品类
          • 查询商品列表
          • 查询商品详情
          • 新增商品
          • 商品图片/视频上传
          • 编辑商品库存
      • 员工
        • 查询员工信息
        • 编辑员工信息
        • 部门信息查询
        • 批量为员工启用系统
        • 给员工发送企微通知
        • 查询系统登录记录
      • 预约单
        • 查询预约列表
      • 评论
        • 查询评论列表接口
      • 运营
        • 活码
          • 查询活码详情
          • 查询活码列表
        • 表单
          • 查询表单字段模板
          • 查询表单填写内容
        • sop
          • 查询sop列表
          • 查询sop执行情况列表
        • 素材
          • 查询素材列表
          • 查询素材详情
          • 查询员工发送素材明细
          • 创建&编辑素材
          • 删除素材
          • 查询素材包详情
        • 营销任务
          • 查询营销任务执行情况
          • 查询营销任务列表
        • 朋友圈
          • 获取企业发布的朋友圈员工执行情况
          • 获取朋友圈的互动数据
          • 获取企业全部发布列表
        • 获客助手短链
          • 查询获客助手来源及链接信息
          • 查询获客助手配置列表
          • 获取专属短链详情列表
          • 生成用户专属短链接
      • 会话存档
        • 上传会话存档记录
      • 通话短信
        • 查询通话记录列表
        • 电销手机外呼
        • 查询通话录音转文字结果
        • 查询短信记录列表
      • 页面嵌入
        • 页面嵌入配置说明
        • 解密嵌入页面传参
        • 菜单嵌入说明
      • 应用
        • 楼盘管理
          • 查询楼盘
          • 新增楼盘
          • 删除楼盘
        • 外联盟管理
          • 查询外联盟
          • 新增外联盟
          • 编辑外联盟
          • 删除外联盟
          • 启停用外联盟
          • 查询外联盟字段ID
          • 外联盟多级联选选项
    • 事件推送
      • 联系人
        • 新增联系人事件
        • 编辑联系人事件
        • 联系人跟进状态变更事件
        • 删除联系人事件
        • 联系人合并事件
        • 跟进提醒
          • 联系人跟进提醒状态变更
        • 联系人流转
          • 跟进团队变更事件
          • 联系人流转事件
        • 跟进记录
          • 跟进记录操作事件
      • 好友
        • 添加好友事件
        • 好友与联系人绑定事件
        • 好友与联系人解绑事件
        • 好友主动删除员工事件
        • 员工主动删除好友事件
        • 更新好友信息事件
      • 客户群
        • 新增客户群事件
        • 变更客户群事件
        • 解散客户群事件
      • 销售机会
        • 销售机会负责人变更
        • 销售机会协同人变更
        • 销售机会操作事件
      • 企业
        • 企业跟进团队流转事件
        • 企业新增事件
        • 编辑企业事件
        • 企业跟进状态变更事件
        • 企业删除事件
      • 交易
        • 推送说明
        • 订单
          • 新增订单事件
          • 编辑订单事件
          • 订单状态变更事件
          • 订单支付完成事件
          • 删除订单事件
        • 售后单
          • 售后单创建事件
          • 编辑售后单事件
          • 售后单状态变更事件
          • 删除售后单事件
          • 售后单退款成功事件
        • 商品
          • 新增商品事件
          • 商品库存变更事件
          • 编辑商品事件
          • 商品状态变更事件
        • 会员积分
          • 新增会员事件
          • 会员合并事件
          • 成长值变更事件
          • 会员等级变更事件
          • 会员积分变更事件
      • 工单
        • 新增工单事件
        • 流转工单事件
        • 编辑工单事件
      • 运营
        • 提交表单事件
        • SOP推送第三方系统事件
      • 通话短信
        • 通话记录操作事件
        • 短信记录操作事件
      • 预约单
        • 新增预约单事件
      • 应用
        • 楼盘
          • 新增楼盘事件
          • 编辑楼盘事件
          • 删除楼盘事件
        • 外联盟
          • 新增外联盟事件
          • 编辑外联盟事件
          • 删除外联盟事件
          • 启/停外联盟事件
          • 外联盟审批完成事件
    • AIagent
      • 添加/移除群内员工
      • 回调AI推理接口
      • 查询渠道原始id
      • 接入说明
        • agent接口鉴权
        • agent回调接入说明
      • 收发消息能力
        • 会话消息事件
        • 回复消息接口
        • 主动发送消息接口
        • AI消息发送结果事件
      • 在线客服对接
        • 会话转人工
        • 发送消息
        • 消息推送事件
        • 获取访客信息
      • 嵌入页面

    嵌入页面前端SDK

    @cfx/chatdoing 是 Chatdoing 侧边栏 SDK。接入方只需要在自己的页面中通过 script 引入 SDK,然后通过 window.Chatdoing 调用方法。
    SDK 当前提供 3 个业务方法:
    config(options)
    sendChatMessage(options) 发送素材
    getRoomInfo() 获取会话详情
    SDK 不对外暴露 TypeScript 类型。文档中的类型声明仅用于说明参数结构和返回数据结构。

    1. 引入 SDK#

    其中 1.0.2 按实际发布版本替换,目前最新版就是1.0.2。
    引入后,全局对象为:
    window.Chatdoing

    2. 基本调用流程#

    推荐先调用 config() 完成注册,再调用其他方法。
    async function init() {
      try {
        const configResult = await window.Chatdoing.config({
          clientid: 'your-clientid',
          clientsecret: 'your-clientsecret',
        });
    
        if (configResult.code !== 'ok') {
          console.error('SDK 注册失败:', configResult.code, configResult.msg);
          return;
        }
    
        const roomInfo = window.Chatdoing.getRoomInfo();
        console.log('当前会话信息:', roomInfo);
    
        const sendResult = await window.Chatdoing.sendChatMessage({
          msgType: 'text',
          context: {
            text: '你好',
          },
        });
    
        if (sendResult.code !== 'ok') {
          console.error('消息发送失败:', sendResult.code, sendResult.msg);
          return;
        }
    
        console.log('消息发送成功');
      } catch (error) {
        console.error('SDK 调用异常:', error);
      }
    }
    sendChatMessage() 和 getRoomInfo() 必须在 config() 成功后调用。未完成注册时调用,会抛出 CONFIG_REQUIRED 异常。

    3. 返回格式#

    正常业务成功和正常业务失败都会返回 { code, msg }。
    interface ChatdoingResult {
      code: string | number;
      msg: string;
    }
    成功时 code 固定为 ok。
    示例:
    {
      "code": "ok",
      "msg": "发送成功"
    }
    业务失败示例:
    {
      "code": "SCHEMA_REQUIRED",
      "msg": "当前会话发送 H5 或小程序时 schema 必填"
    }
    处理建议:
    const res = await window.Chatdoing.sendChatMessage({
      msgType: 'text',
      context: {
        text: '你好',
      },
    });
    
    if (res.code !== 'ok') {
      console.error('业务失败:', res.code, res.msg);
    }

    4. 异常处理#

    网络错误、响应结构异常、未完成注册等情况会抛出异常,或返回 rejected Promise。
    SDK 内部异常格式通常为:
    interface ChatdoingError extends Error {
      name: 'ChatdoingError';
      code: string | number;
      message: string;
      docsUrl: string;
      response?: unknown;
    }
    建议所有 SDK 调用都使用 try/catch 包裹。
    function getErrorMessage(error: unknown) {
      if (error instanceof Error) {
        return error.message;
      }
    
      return String(error);
    }
    
    try {
      const res = await window.Chatdoing.config({
        clientid: 'your-clientid',
        clientsecret: 'your-clientsecret',
      });
    
      if (res.code !== 'ok') {
        console.error('注册失败:', res.code, res.msg);
      }
    } catch (error) {
      console.error('注册异常:', getErrorMessage(error));
    }
    常见异常:
    {
      name: 'ChatdoingError',
      code: 'CONFIG_REQUIRED',
      message: '请先调用 config'
    }

    5. config(options)#

    注册 SDK,并换取 token。
    window.Chatdoing.config(options): Promise<ChatdoingResult>
    参数:
    interface ConfigOptions {
      clientid: string;
      clientsecret: string;
    }
    参数说明:
    参数类型必填描述
    clientidstring是应用的 clientid
    clientsecretstring是应用的 clientsecret
    示例:
    try {
      const res = await window.Chatdoing.config({
        clientid: 'your-clientid',
        clientsecret: 'your-clientsecret',
      });
    
      if (res.code !== 'ok') {
        console.error('SDK 注册失败:', res.code, res.msg);
        return;
      }
    
      console.log('SDK 注册成功');
    } catch (error) {
      console.error('SDK 注册异常:', error);
    }
    成功返回:
    {
      "code": "ok",
      "msg": "sdk注册成功"
    }
    业务失败返回:
    {
      "code": "后端返回的错误码",
      "msg": "后端返回的错误信息"
    }
    异常情况:
    HTTP 状态码非 2xx
    token 响应数据不完整
    网络异常
    浏览器无法写入 cookie

    6. sendChatMessage(options)#

    发送聊天消息。
    window.Chatdoing.sendChatMessage(options): Promise<ChatdoingResult>
    调用前必须先 config() 成功。
    参数:
    interface SendChatMessageOptions {
      msgType: 'text' | 'image' | 'file' | 'video' | 'h5' | 'miniprogram';
      context:
        | TextContext
        | ImageContext
        | FileContext
        | VideoContext
        | H5Context
        | MiniProgramContext;
    }
    参数说明:
    参数类型必填描述
    msgTypestring是消息类型
    contextobject是消息内容,不同 msgType 对应不同结构

    6.1 text#

    发送文本消息。
    interface TextContext {
      text: string;
    }
    参数类型必填描述
    textstring是文本内容
    示例:
    await window.Chatdoing.sendChatMessage({
      msgType: 'text',
      context: {
        text: '你好',
      },
    });

    6.2 image#

    发送图片消息。
    interface ImageContext {
      url: string;
      name?: string;
      previewUrl?: string;
    }
    参数类型必填描述
    urlstring是图片地址
    namestring否图片名称
    previewUrlstring否图片预览地址
    图片校验规则:
    只允许 png、jpg 格式。
    图片大小必须小于 10MB。
    图片资源需要支持浏览器读取文件响应头。
    示例:
    await window.Chatdoing.sendChatMessage({
      msgType: 'image',
      context: {
        url: 'https://example.com/a.png',
        name: '图片名称',
        previewUrl: 'https://example.com/preview.png',
      },
    });

    6.3 file#

    发送文件消息。
    interface FileContext {
      url: string;
      name: string;
    }
    参数类型必填描述
    urlstring是文件地址
    namestring是文件名称
    文件校验规则:
    文件大小必须小于 30MB。
    文件资源需要支持浏览器读取文件响应头。
    示例:
    await window.Chatdoing.sendChatMessage({
      msgType: 'file',
      context: {
        url: 'https://example.com/a.pdf',
        name: '文件名称.pdf',
      },
    });

    6.4 video#

    发送视频消息。
    interface VideoContext {
      url: string;
      name: string;
      previewUrl?: string;
    }
    参数类型必填描述
    urlstring是视频地址
    namestring是视频名称
    previewUrlstring否视频封面地址
    视频校验规则:
    视频大小必须小于 30MB。
    视频资源需要支持浏览器读取文件响应头。
    示例:
    await window.Chatdoing.sendChatMessage({
      msgType: 'video',
      context: {
        url: 'https://example.com/a.mp4',
        name: '视频名称.mp4',
        previewUrl: 'https://example.com/poster.jpg',
      },
    });

    6.5 h5#

    发送 H5 消息。
    interface H5Context {
      url: string;
      title: string;
      description?: string;
      previewUrl?: string;
      schema?: string;
    }
    参数类型必填描述
    urlstring是H5 页面地址
    titlestring是标题
    descriptionstring否描述
    previewUrlstring否预览图地址
    schemastring否跳转 schema
    特殊规则:
    当前会话归属渠道为 PhysicalQwMessageIM 时,schema 必填。
    示例:
    await window.Chatdoing.sendChatMessage({
      msgType: 'h5',
      context: {
        url: 'https://example.com/page',
        title: '标题',
        description: '描述',
        previewUrl: 'https://example.com/cover.png',
        schema: 'example://page',
      },
    });

    6.6 miniprogram#

    发送小程序消息。
    interface MiniProgramContext {
      title: string;
      desc?: string;
      appName?: string;
      appId?: string;
      originalId?: string;
      userName?: string;
      path?: string;
      schema?: string;
      coverUrl?: string;
      iconUrl?: string;
      url?: string;
    }
    参数类型必填描述
    titlestring是小程序标题
    descstring否小程序描述
    appNamestring否小程序名称
    appIdstring否小程序 appId
    originalIdstring否小程序原始 ID
    userNamestring否小程序 userName
    pathstring否小程序页面路径
    schemastring否跳转 schema
    coverUrlstring否封面图地址
    iconUrlstring否图标地址
    urlstring否兜底地址
    特殊规则:
    当前会话归属渠道为 PhysicalQwMessageIM 时,schema 必填。
    示例:
    await window.Chatdoing.sendChatMessage({
      msgType: 'miniprogram',
      context: {
        title: '小程序标题',
        desc: '小程序描述',
        appName: '小程序名称',
        appId: 'wx123456',
        originalId: 'gh_xxx',
        userName: 'gh_xxx@app',
        path: '/pages/index/index',
        schema: 'weixin://dl/business/?t=xxx',
        coverUrl: 'https://example.com/cover.png',
        iconUrl: 'https://example.com/icon.png',
        url: 'https://example.com/fallback',
      },
    });

    6.7 sendChatMessage 返回#

    成功返回:
    {
      "code": "ok",
      "msg": "发送成功"
    }
    常见业务失败:
    codemsg
    INVALID_IMAGE_URL图片地址不能为空
    IMAGE_HEAD_FAILED图片文件信息获取失败
    INVALID_IMAGE_TYPE图片仅支持 png、jpg 格式
    IMAGE_SIZE_UNAVAILABLE无法获取图片大小
    IMAGE_TOO_LARGE图片大小需小于 10MB
    INVALID_FILE_URL文件地址不能为空
    FILE_HEAD_FAILED文件信息获取失败
    FILE_SIZE_UNAVAILABLE无法获取文件大小
    FILE_TOO_LARGE文件大小需小于 30MB
    INVALID_VIDEO_URL视频地址不能为空
    VIDEO_HEAD_FAILED视频信息获取失败
    VIDEO_SIZE_UNAVAILABLE无法获取视频大小
    VIDEO_TOO_LARGE视频大小需小于 30MB
    SCHEMA_REQUIRED当前会话发送 H5 或小程序时 schema 必填
    POST_MESSAGE_FAILED消息发送失败
    未先调用 config() 时会抛出异常:
    {
      name: 'ChatdoingError',
      code: 'CONFIG_REQUIRED',
      message: '请先调用 config'
    }

    7. getRoomInfo()#

    获取当前会话信息
    获取原始外部联系人id、群id,使用响应中的chatID,调用 查询渠道原始id 进行换取
    window.Chatdoing.getRoomInfo(): unknown
    调用前必须先 config() 成功。
    如果当前还没有会话信息,返回 undefined。
    返回字段:
    字段字段名类型描述
    chatID会话IDstring会话ID
    chatName会话名称string会话名称
    chatType会话类型stringSingleType = 单聊
    GroupType = 群聊
    chatChannel会话归属渠道stringDemoIM:演示
    WeChatKFIM:微信客服
    EComIM:ECom
    QwMessageIM:云端企微托管 rpa
    QwMessageSidebarIM:会话存档侧边栏
    MultiQwMessageIM:云端企微托管员工组 rpa
    PhysicalQwMessageIM:实体设备 rpa
    OpenKFIM:通用客服
    DouYinIM:抖音私信
    chatStatus会话状态stringChatStatusNormal = 正常
    ChatStatusNanualService = 人工服务
    ChatStatusAIService = AI服务
    ChatStatusCompletedService = 服务完成
    contactID好友IDstring仅会话类型为单聊返回
    contactName好友名称string仅会话类型为单聊返回
    roomID群IDstring仅会话类型为群聊返回
    roomName群名称string仅会话类型为群聊返回
    userID托管账号IDstring
    userName托管账号名称string
    staffUserID登录员工IDstring
    staffName登录员工名称string
    staffPhone登录员工手机string
    示例:
    try {
      const roomInfo = window.Chatdoing.getRoomInfo();
      console.log('当前会话信息:', roomInfo);
    } catch (error) {
      console.error('获取会话信息异常:', error);
    }
    未先调用 config() 时会抛出异常:
    {
      name: 'ChatdoingError',
      code: 'CONFIG_REQUIRED',
      message: '请先调用 config'
    }

    8. 完整示例#

    修改于 2026-07-14 06:52:55
    下一页
    接口鉴权说明
    Built with