七鱼开发文档中心
总览服务端 APIWebiOSAndroid鸿蒙Uniapp微信小程序插件三方接入
工单系统

创建工单

代访客创建工单,支持普通工单(OpenAPI 来源)和邮件工单(fromType=4)。

参数与工单类型

  • uid 与 userMobile 二选一。
  • 普通工单的 staffId 必填:-1 代表访客自助提交,正数代表发起坐席,且该坐席必须有效并属于本企业。
  • 邮件工单的 uid 和 userEmail 必填,不使用 staffId 和受理目标规则。

受理目标规则

  1. 未使用自动流转模板时,优先使用接口传入的 targetStaffId、targetGroupId,未传的字段可由模板预设补充。
  2. 若最终没有有效受理目标,staffId 为正数时会自动成为受理人,staffId=-1 时则创建失败。
  3. 未指定模板(templateId=0)时,staffId=-1 必须传 targetStaffId、targetGroupId 中的至少一个;staffId 为真实坐席时两者可不传,默认由 staffId 受理。
  4. 使用自动流转模板时,接口传入的 targetStaffId、targetGroupId 仍会先进行有效性校验,但在实际分配时会被模板流程覆盖。
  5. 部分企业若将非自动流转模板的受理组和受理人同时配置为必填,则两者最终都必须有值;同时指定受理组和受理人时,受理人必须属于该组。

幂等与附件

  • uniqueId 最长 32 字符,重复提交时返回已创建的工单 ID。
  • 附件最多 5 个、总大小不超过 50 MB;type=1 为 Base64 图片上传后生成 URL,type=2 为 URL 直接使用。

请求参数

名称类型必填描述示例值
appKeystring是应用 AppKey
timeint64是请求时间戳(秒)
checksumstring是请求签名校验和
checksumAlgorithmint32否签名算法:0 - 默认(SHA1),1 - SHA256

请求体

名称类型必填描述示例值
uidstring否访客外部 ID,与 userMobile 二选一user_3f9a2c8d
userMobilestring否用户手机号,与 uid 二选一(邮件工单必须使用 uid)13800138000
staffIdint64否发起坐席 ID。普通工单必填:-1 代表访客自助提交;正数必须是当前企业有效坐席,且在非自动流转、未解析出其他受理目标时会默认成为受理人。邮件工单无需传10001
templateIdint64否工单模板 ID。不传或传 0 时使用默认模板;非自动流转模板可补充未传的受理目标;自动流转模板下,接口传入的受理目标会先校验有效性,再由模板流程覆盖30001
titlestring否工单标题售后咨询:订单取消后未退款
contentstring否工单内容用户反馈订单取消后 3 个工作日仍未收到退款,请协助核实。
userNamestring否访客姓名张三
priorityint32否优先级:2-低,5-一般,8-紧急,10-非常紧急8
typeIdint64否工单分类 ID40001
targetStaffIdint64否指定受理坐席 ID。未使用自动流转模板时优先采用;传入时必须是当前企业正常状态且有工单权限的坐席。staffId=-1 且模板未提供受理目标时,与 targetGroupId 至少传一个;使用自动流转模板时,本字段仍会先校验有效性,再由模板流程覆盖10002
targetGroupIdint64否指定受理客服组 ID。未使用自动流转模板时优先采用;传入时必须是当前企业有效客服组。staffId=-1 且模板未提供受理目标时,与 targetStaffId 至少传一个;使用自动流转模板时,本字段仍会先校验有效性,再由模板流程覆盖20001
userEmailstring否发件人邮箱(邮件工单)zhangsan@example.com
toEmailstring否收件人邮箱(邮件工单)support@example.com
uniqueIdstring否幂等 ID,最长 32 字符,用于防止重复提单oa202407010001
fromTypeint32否来源类型,默认为 OpenAPI2
propertiesstring否附加属性(JSON 字符串){"orderId":"SO202407010001","channel":"wechat"}
customFieldsstring否自定义字段列表,JSON 字符串,每项:{id 或 fieldId, name, value}[{"fieldId":81001,"name":"订单号","value":"SO202407010001"}]
attachmentsobject[]否附件列表,JSON 数组,每项:{type, payload, fileName}[{"type":2,"payload":"openapi/attachments/2024/07/refund-proof.pdf","fileName":"退款凭证.pdf"}]
└typeint32否附件类型:1-图片,2-文件,3-音频,4-视频2
└payloadstring否附件内容(Base64 编码或文件对象名)openapi/attachments/2024/07/refund-proof.pdf
└fileNamestring否附件文件名退款凭证.pdf
levelint32否VIP 等级:0-11,默认 0(JSON 字段名:level)2
connectionIdint64否关联会话连接 ID987654321
followerIdsstring否关注人坐席 ID 列表,JSON 数组字符串(JSON 字段名:followerIds)[10003,10004]
crmIdstring否CRM 用户 IDcrm_78901
crmForeignIdstring否CRM 外部 IDcrm_ext_001

返回参数

名称类型描述示例值
codeint32状态码,200 表示成功200
messagestring新建工单 ID(字符串格式)123456

错误码

状态码描述
8002uid 和 userMobile 均为空
8803crmId 与 crmForeignId 不匹配
14004普通工单 staffId 为空;非自动流转且 staffId=-1 时未解析出有效受理目标;uniqueId 超过 32 字符;附件数量/大小超限;JSON 格式错误
14100staffId/targetStaffId 不存在或已停用
14101typeId 无效或不存在
14102targetGroupId 无效
14103附件数量超限
14104单个附件超限
14107附件总大小超限
14108uniqueId 重复,返回已有工单 ID
14109uniqueId 超长
14500服务内部异常
16001企业工单服务不可用
19254坐席无工单权限
postEndpoint
/openapi/v2/ticket/create
POST
/openapi/v2/ticket/create
curl -X POST "https://qiyukf.com/openapi/v2/ticket/create?appKey=string&time=0&checksum=string" \  -H "Content-Type: application/json" \  -d '{}'
{
  "code": 200,
  "message": "123456"
}
{
  "code": 8002,
  "message": "uid 和 userMobile 均为空"
}
{
  "code": 8803,
  "message": "crmId 与 crmForeignId 不匹配"
}
{
  "code": 14004,
  "message": "普通工单 staffId 为空;非自动流转且 staffId=-1 时未解析出有效受理目标;uniqueId 超过 32 字符;附件数量/大小超限;JSON 格式错误"
}
{
  "code": 14100,
  "message": "staffId/targetStaffId 不存在或已停用"
}
{
  "code": 14101,
  "message": "typeId 无效或不存在"
}
{
  "code": 14102,
  "message": "targetGroupId 无效"
}
{
  "code": 14103,
  "message": "附件数量超限"
}
{
  "code": 14104,
  "message": "单个附件超限"
}
{
  "code": 14107,
  "message": "附件总大小超限"
}
{
  "code": 14108,
  "message": "uniqueId 重复,返回已有工单 ID"
}
{
  "code": 14109,
  "message": "uniqueId 超长"
}
{
  "code": 14500,
  "message": "服务内部异常"
}
{
  "code": 16001,
  "message": "企业工单服务不可用"
}
{
  "code": 19254,
  "message": "坐席无工单权限"
}

这篇文档有帮助吗?