1. 嵌入页面
尘锋SCRM开放平台
  • 接入前准备
    • 接口鉴权说明
    • 回调接入指南
    • 报错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
    • 添加/移除群内员工
    • 查询渠道原始id
    • 接入说明
      • agent接口鉴权
      • agent回调接入说明
    • 收发消息能力
      • 会话消息事件
      • 回复消息接口
      • 主动发送消息接口
      • AI消息发送结果事件
    • 自定义渠道对接
      • 对接说明
      • 会话转人工
      • 发送消息
      • 消息推送事件
      • 获取访客信息
    • 嵌入页面
      • 嵌入页面前端SDK
  1. 嵌入页面

嵌入页面前端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-08-13 01:53:04
上一页
获取访客信息
Built with