工单系统工单回调与开放能力
工单推送详细说明
工单事件推送的元数据、请求体结构、事件类型、状态和自定义字段说明。
工单推送
调用说明
- 工单推送: 七鱼向企业(以下称第三方)接口 推送工单变更事件
- 推送时机: 当某一工单被回复、完结等等操作时进行实时推送
- 接收地址: 第三方应该提供一个 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 = _ // 工单状态
}这篇文档有帮助吗?