From e1ef3ea160a853d6c7b377d08d7f9ec933caeb33 Mon Sep 17 00:00:00 2001 From: Afeyer <1500527791@qq.com> Date: Fri, 3 Sep 2021 16:46:44 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E6=9A=B4=E9=9C=B2=E6=8E=A5=E5=BE=85?= =?UTF-8?q?=E4=BA=BA=E5=91=98ID=E5=88=B0=E6=B6=88=E6=81=AF=E5=88=97?= =?UTF-8?q?=E8=A1=A8=20(#461)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 添加微信客服SDK * polish:优化签名函数 * polish:优化注释内容 * polish:复用已有的Token以及CommonError,移除无用的输出 * polish:复用已有的消息加解密 * fix:修复错误信息被覆盖的问题 * polish:go fmt 文件 * polish:客服链接支持自定义参数并更新注释文档内容 * feat:支持微信客服回调请求的校验和消息的解析,复用原有的Signature和DecryptMsg方法 * feat:对外暴露SDKApiForbidden等错误 可以通过调用升级服务相关接口然后根据该错误判断微信客服配置来源 * feat:添加无效的open_kfid错误信息 * fix: 添加SDKApiNotOpen 错误信息 目前主要用于判断客户是否关闭了API授权,如果客户关闭了API功能导致服务异常,则可以引导用户执行相应的操作重新开启改功能 * feat:暴露接待人员ID到消息列表 无需对消息进行序列化即可直接获取接待人员ID,便于处理接待人员的相关业务,例如:统计接待人员当天应答次数 * feat: 添加SDKNotUseInWeCom错误信息 如果SDK输出当前错误,则说明用户在企业微信后台关闭了微信客服功能,需引导用户重新开启该功能 Co-authored-by: Afeyer --- work/kf/error.go | 4 ++++ work/kf/servicer.go | 2 +- work/kf/syncmsg/syncmsg.go | 17 +++++++++-------- 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/work/kf/error.go b/work/kf/error.go index 5c0c1c3..5856def 100644 --- a/work/kf/error.go +++ b/work/kf/error.go @@ -39,6 +39,8 @@ const ( SDKOpenKFIDNotExist Error = "open_kfid 不存在" // SDKWeWorkAlready 错误码:95011 SDKWeWorkAlready Error = "已在企业微信使用微信客服" + // SDKNotUseInWeCom 错误码:95012 + SDKNotUseInWeCom Error = "未在企业微信使用微信客服" // SDKApiNotOpen 错误码:95017 SDKApiNotOpen Error = "API 功能没有被开启" ) @@ -79,6 +81,8 @@ func NewSDKErr(code int64, msgList ...string) Error { return SDKOpenKFIDNotExist case 95011: return SDKWeWorkAlready + case 95012: + return SDKNotUseInWeCom case 95017: return SDKApiNotOpen default: diff --git a/work/kf/servicer.go b/work/kf/servicer.go index d1ba656..5cecaab 100644 --- a/work/kf/servicer.go +++ b/work/kf/servicer.go @@ -19,7 +19,7 @@ const ( // ReceptionistOptions 添加接待人员请求参数 type ReceptionistOptions struct { OpenKFID string `json:"open_kfid"` // 客服帐号ID - UserIDList []string `json:"userid_list"` // 接待人员userid列表 + UserIDList []string `json:"userid_list"` // 接待人员userid列表。第三方应用填密文userid,即open_userid 可填充个数:1 ~ 100。超过100个需分批调用。 } // ReceptionistSchema 添加接待人员响应内容 diff --git a/work/kf/syncmsg/syncmsg.go b/work/kf/syncmsg/syncmsg.go index 96c9a60..43b5e67 100644 --- a/work/kf/syncmsg/syncmsg.go +++ b/work/kf/syncmsg/syncmsg.go @@ -4,14 +4,15 @@ import "encoding/json" // Message 同步的消息内容 type Message struct { - MsgID string `json:"msgid"` // 消息ID - OpenKFID string `json:"open_kfid"` // 客服帐号ID - ExternalUserID string `json:"external_userid"` // 客户UserID - SendTime uint64 `json:"send_time"` // 消息发送时间 - Origin uint32 `json:"origin"` // 消息来源。3-客户回复的消息 4-系统推送的消 息 - MsgType string `json:"msgtype"` // 消息类型 - EventType string `json:"event_type"` // 事件类型 - OriginData []byte `json:"origin_data"` // 原始数据内容 + MsgID string `json:"msgid"` // 消息ID + OpenKFID string `json:"open_kfid"` // 客服帐号ID + ExternalUserID string `json:"external_userid"` // 客户UserID + ReceptionistUserID string `json:"servicer_userid"` // 接待客服userID + SendTime uint64 `json:"send_time"` // 消息发送时间 + Origin uint32 `json:"origin"` // 消息来源。3-客户回复的消息 4-系统推送的消 息 + MsgType string `json:"msgtype"` // 消息类型 + EventType string `json:"event_type"` // 事件类型 + OriginData []byte `json:"origin_data"` // 原始数据内容 } // GetOriginMessage 获取原始消息