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

工单推送详细说明

工单事件推送的元数据、请求体结构、事件类型、状态和自定义字段说明。

工单推送

调用说明​

  • 工单推送: 七鱼向企业(以下称第三方)接口 推送工单变更事件
  • 推送时机: 当某一工单被回复、完结等等操作时进行实时推送
  • 接收地址: 第三方应该提供一个 http 格式的 url 作为事件接收的地址,如: http://xxxx/receive。 请求的Content-Type:application/json;charset=utf-8
  • 接收参数: 七鱼会以【POST】方式推送数据,且所有数据在请求体内,因此你需要看以下关于数据的说明。
  • 注: 当七鱼发现某一工单发生事件变更时会进行实时推送,但是由于数据包在网络中传输等各种原因,因此第三方企业不能以七鱼推送事件的顺序作为工单变更的顺序。应以请求体中的time字段描述的时间为准.

请求体说明

以下是推送数据的定义

元数据

目前支持的工单事件及定义
object WorksheetEvent {
  val UNDEFINED = -1      // 未定义
  val CREATE = 0          // 创建工单
  val REPLY = 1           // 回复工单
  val FINISH = 2          // 完结工单
  val TRANSMIT = 3        // 转交工单
  val MODIFY = 4          // 修改工单
  val APPLY = 5           // 申领(分配)工单
  val AUTO_APPLY = 6      // 系统分配工单
  val REBORN = 7          // 重新发起
  val APPROVE = 8         // 批准工单
  val REJECT = 9          // 驳回工单
  val REOPEN = 10         // 重新打开工单
  val REMINDER = 11       // 催单
  val CREATE_CROSS = 12   // 创建跨企业
  val TRANSMIT_CROSS = 13 // 转交跨企业
  val DELETE = 14 //删除工单
  val SLA_PUSH = 15;//SLA推送
  val EVALUATE=35 //工单满意度评价结果
  val PENDING=40 //工单挂起
  val CANCEL_PENDING=41 //工单取消挂起
}

细分的工单事件及定义
object WorksheetSubEvent {
    val UNDEFINED = -1                                   // 未定义
    val CREATE = 0                                       // 创建
    val REBORN_TO_STAFF = 10                             // 重新发起工单给客服
    val REBORN_TO_GROUP = 11                             // 重新发起工单给客服组
    val APPROVE_FLOW_TO_STAFF = 20                       // 批准工单自动流转到客服
    val APPROVE_FLOW_TO_GROUP = 21                       // 批准工单自动流转到客服组
    val APPROVE_UPDATE_PATH_NODE_TO_STAFF = 22           // 自动流转节点变更到客服
    val TRANSMIT_DISPATCH_TO_STAFF = 30                  // 转交给客服
    val TRANSMIT_DISPATCH_TO_GROUP = 31                  // 转交给客服组
    val TRANSMIT_DISPATCH_TO_GROUP_WITH_STAFF = 32       // 转交时指定了客服组组和客服
    val AUTO_APPLY_CREATE = 40                           // 创建时
    val AUTO_APPLY_DISPATCH_TO_GROUP = 41                // 因为自动分配到组导致的自动分配
    val AUTO_APPLY_UPDATE_PATH_NODE_TO_GROUP = 42        // 因为更新模板路径自动分配到组导致的自动分配
    val AUTO_APPLY_REOPEN_TO_GROUP = 43                  // reopen 到组导致的自动分配
    val AUTO_APPLY_CROSS_TO_GROUP = 44                   // 跨企业工单重新打开时候,如果此时之前受理人已被删除,则会触发重新分配的逻辑。
    val MODIFY_CUSTOM = 50                               // 修改自定义字段
    val MODIFY_TITLE = 51                                // 修改标题
    val MODIFY_PRIORITY = 52                             // 修改工单优先级
    val MODIFY_TYPE = 53                                 // 修改工单分类
    val MODIFY_USER_NAME = 54                            // 修改用户信息,姓名
    val MODIFY_USER_PHONE = 55                           // 修改用户信息,手机号
    val MODIFY_USER_EMAIL = 56                           // 修改用户信息,邮箱
    val MODIFY_CONTENT = 57								 // 修改工单内容
    val MODIFY_REPLY = 58 								 // 修改工单回复
   	val ADD_RELATION_TAG = 60							 // 添加关联工单标签
    val DELETE_RELATION_TAG = 61						 // 取消关联工单标签
    val REPLACE_RELATION_TAG = 62						 // 替换关联工单标签
}

object Status {
  val UNDEFINED = 0                    // 未定义
  val COMMITTED = 1                    // 已提交
  val WAITING_FOR_BEING_APPLIED = 5;   // 已分配待申领,未受理
  val APPLIED = 10;                    // 已领取/已受理/处理中
  val FINISHED = 20;                   // 完结
  val REJECTED = 25;                   // 已驳回
  val PENDING = 50;                   // 已挂起
}

工单中指定的User对象
class UserVO {
  var name: String = _    // 姓名
  var phone: String = _   // 手机号
  var email: String = _   // 邮箱地址
}

客服对象
class StaffVO {
  var corpId: Long = _    // 企业id
  var id: Long = _        // 客服id
  var name: String = _    // 客服名字
}

客服组对象
class GroupVO {
  var corpId: Long = _    // 企业id
  var id: Long = _        // 组id
  var name: String = _    // 组名字
}

企业对象
class CorpVO {
  var id: Long = _        // 企业id
  var name: String = _    // 企业名字
}


自定义字段对象
class CustomFiledVO {
  var key: String = _      // 字段名
  var value: String = _    // 字段值
}
其中自定义字段如果是级联类型的,其fieldValue格式如:
{
  "path": "1级/1.1级",  // 每一级的完整名称
  "idpath": [1555974, 1555977], // 每一级对应的ID
  "id": 1555977 //级联自定义字段ID
}

工单分类对象
class CategoryVO {
  var id: Long = _        // 分类id
  var name: String = _    // 分类名字
}

模板对象
class TemplateVO {
  var id: Long = _        // 模板id
  var name: String = _    // 模板名字
}

请求体

创建工单时推送的对象
class WorksheetVO{
  val event: Int = WorksheetEvent.CREATE         // 事件类型
  var sheetId: Long = _                          // 工单id
  var title: String = _                          // 工单标题
  var content: String = _                        // 工单内容
  var attachList: List[String] = _               // 附件地址列表
  var creator: StaffVO = _                       // 创建的客服
  var priority: Int = _                          // 优先级
  var toStaff: StaffVO = _                       // 被分配的客服
  var toGroup: GroupVO = _                       // 被分配的组
  var category: CategoryVO = _                   // 工单分类
  var template: TemplateVO = _                   // 工单模板
  var time: Long = _                             // 事件发生的时间
  var user: UserVO = _                           // user对象
  var customFiledList: List[CustomFiledVO] = _   // 自定义字段
  var crmId: String = _                          // 七鱼的客户中心Id
  var status: Int = _                            // 工单状态
  var connectionType: Int = _                    // 关联类型 0=无关联、1=关联会话、2=社媒渠道
  var connectionId: Long = _                     // 关联id
}

跨企业工单 -- 创建工单时推送的对象
class CrossWorksheetVO {
  // 事件类型
  val event: Int = WorksheetEvent.CREATE_CROSS
  // 工单id
  var sheetId: Long = _
  // 工单标题
  var title: String = _
  // 工单内容
  var content: String = _
  // 附件地址列表
  var attachList: util.List[String] = _
  // 创建的客服
  var creator: StaffVO = _
  // 工单状态
  var status: Int = _
  // 优先级
  var priority: Int = _
  // 被分配的企业
  var toCorp: CorpVO = _
  // 被分配的客服
  var toStaff: StaffVO = _
  // 被分配的组
  var toGroup: GroupVO = _
  // 工单分类
  var category: CategoryVO = _
  // 工单模板
  var template: TemplateVO = _
  // 事件发生的时间
  var time: Long = _
  // user对象
  var user: UserVO = _
  // 自定义字段
  var customFiledList: util.List[CustomFiledVO] = _
  // crmId
  var crmId: String = _
  // foreignId
  var foreignId: String = _

  // 上一节点所属企业
  var preCorp: CorpVO = _
  // 上一节点所属客服
  var preStaff: StaffVO = _
  // 上一节点所属分组
  var preGroup: GroupVO = _
}

回复工单事件
class ReplyVO{
  val event: Int = WorksheetEvent.REPLY          // 事件类型
  var sheetId: Long = _                          // 工单id
  var operator: StaffVO = _                      // 事件操作者
  var remark: String = _                         // 备注
  var attachList: List[String] = _               // 附件
  var time: Long = _                             // 事件发生的时间
  var status: Int = _                            // 工单状态
  var customerSee: Boolean = _                        // 是否访客可见
}

修改工单事件
class ModifyVO{
  val event: Int = WorksheetEvent.MODIFY
  var sheetId: Long = _
  var operator: StaffVO = _
  var time: Long = _
  var fieldId: Long = _                         // 自定义字段ID
  var pre: java.lang.Object = _                 // 修改前的值
  var after: java.lang.Object = _               // 修改后的值
  var status: Int = _                           // 工单状态
  var supEvent: Int = _                         // WorksheetSubEvent
  var customerSee: java.lang.Boolean = _  		// 是否访客可见(针对回复)
}

申领(分配)工单事件
class ApplyVO{
  val event: Int = WorksheetEvent.APPLY
  var sheetId: Long = _
  var operator: StaffVO = _
  var time: Long = _
  var status: Int = _
}

自动分配工单事件
class AutoApplyVO{
  val event: Int = WorksheetEvent.AUTO_APPLY
  var supEvent: Int = _   // WorksheetSubEvent
  var sheetId: Long = _
  var time: Long = _
  var toStaff: StaffVO = _
  var status: Int = _
}

转交工单事件
class TransmitVO{
  val event: Int = WorksheetEvent.TRANSMIT
  var sheetId: Long = _
  var toStaff: StaffVO = _
  var toGroup: GroupVO = _
  var operator: StaffVO = _
  var attachList: List[String] = _
  var remark: String = _
  var time: Long = _
  var status: Int = _
  var foreignId: String = _
}

转交工单事件 -  跨企业工单
class CorpTransmitVO {
  val event: Int = WorksheetEvent.TRANSMIT_CROSS
  var corpId: Long = _
  var sheetId: Long = _
  var operator: StaffVO = _
  var attachList: util.List[String] = _
  var remark: String = _
  var time: Long = _
  //非必然返回,无返回则表示未涉及
  var toCorp: CorpVO = _      //下一个节点所属企业
  var toStaff: StaffVO = _    //下一个节点所属客服
  var toGroup: GroupVO = _    //下一个节点所属分组
  //非必然返回,无返回则表示未涉及
  var preCorp: CorpVO = _     //上一个节点所属企业
  var preStaff: StaffVO = _   //上一个节点所属客服
  var preGroup: GroupVO = _   //上一个节点所属分组
  //工单状态
  var status: Int = _
}

批准工单事件
class ApproveVO{
  val event: Int = WorksheetEvent.APPROVE
  var supEvent: Int = _   // WorksheetSubEvent
  var sheetId: Long = _
  var time: Long = _
  var operator: StaffVO = _
  var toStaff: StaffVO = _
  var toGroup: GroupVO = _
  var attachList: List[String] = _
  var remark: String = _
  var status: Int = _
}

驳回工单事件
class RejectVO{
  val event: Int = WorksheetEvent.REJECT
  var sheetId: Long = _
  var time: Long = _
  var operator: StaffVO = _
  var toStaff: StaffVO = _
  var attachList: List[String] = _
  var remark: String = _
  var status: Int = _
}

已驳回工单发起者重新发起
class RebornVO{
  val event: Int = WorksheetEvent.REBORN
  var supEvent: Int = _   // WorksheetSubEvent
  var sheetId: Long = _
  var time: Long = _
  var operator: StaffVO = _
  var toStaff: StaffVO = _
  var toGroup: GroupVO = _
  var attachList: List[String] = _
  var remark: String = _
  var status: Int = _
}

完结工单事件
class FinishVO{
  val event: Int = WorksheetEvent.FINISH
  var sheetId: Long = _
  var operator: StaffVO = _
  var remark: String = _
  var attachList: List[String] = _
  var time: Long = _
  var status: Int = _
}

已完结工单重新打开
class ReopenVO{
  val event: Int = WorksheetEvent.REOPEN
  var sheetId: Long = _
  var time: Long = _
  var operator: StaffVO = _
  var toStaff: StaffVO = _
  var toGroup: GroupVO = _
  var remark: String = _
  var status: Int = _
  //跨企业工单重新打开-再分配的企业
  var toCorp: CorpVO = _
  //跨企业工单重新打开-再分配前的企业、客服组、客服
  var preCorp: CorpVO = _
  var preStaff: StaffVO = _
  var preGroup: GroupVO = _
}

催单事件
class ReminderVO{
  val event: Int = WorksheetEvent.REMINDER
  var sheetId: Long = _
  var operator: StaffVO = _
  var remark: String = _
  var attachList: util.List[String] = _
  var time: Long = _
  var status: Int = _
}

删除工单事件
class DeleteVO{
  val event: Int = WorksheetEvent.DELETE
  var sheetId: Long = _
  var operator: StaffVO = _
  var remark: String = _
  var time: Long = _
}

工单满意度评价结果
class EvaluateVO {
  val event: Int = WorksheetEvent.EVALUATE   //事件类型
  var sheetId:Long = _                       //工单ID
  var evaluationModel: Int = _               //评价模式
  var evaluationValue: Int = _               //评价结果
  var evaluationTags:String = _              //评价标签
  var evaluationContent:String = _           //评价内容
  var isSolved: Int = _                      //是否解决
}

class SLAPushVO {
  // 事件类型
  val event: Int = WorksheetEvent.SLA_PUSH
  // 工单id
  var sheetId: Long = _
  // SLA ID
  var slaId: Long = _
  // slaName
  var slaName: String = _
  //工单状态
  var status: Int = _
}

// 挂起工单事件
class PendingVO {
  val event: Int = WorksheetEvent.PENDING   //事件类型
  var sheetId: Long = _                     //工单ID
  var operator: StaffVO = _					// 事件操作者
  var remark: String = _					// 备注
  var attachList: List[String] = _			// 附件
  var time: Long = _						// 事件发生的时间
  var status: Int = _						// 工单状态
}

// 取消挂起工单事件
class CancelPendingVO {
  val event: Int = WorksheetEvent.CANCEL_PENDING 		//事件类型
  var sheetId: Long = _									//工单ID
  var operator: StaffVO = _								// 事件操作者
  var remark: String = _								// 备注
  var attachList: List[String] = _						// 附件
  var time: Long = _									// 事件发生的时间
  var status: Int = _									// 工单状态
}

这篇文档有帮助吗?

目录