Skip to content

Commit ad30cb4

Browse files
committed
feat: 微信客服支持发送欢迎语
1 parent fdbd43c commit ad30cb4

File tree

3 files changed

+51
-1
lines changed

3 files changed

+51
-1
lines changed

other.go

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package WeChatCustomerServiceSDK
2+
3+
import (
4+
"encoding/json"
5+
"fmt"
6+
"github.com/NICEXAI/WeChatCustomerServiceSDK/util"
7+
)
8+
9+
const (
10+
//获取视频号绑定状态
11+
corpQualification = "https://qyapi.weixin.qq.com/cgi-bin/kf/get_corp_qualification?access_token=%s"
12+
)
13+
14+
// CorpQualificationSchema 获取视频号绑定状态响应内容
15+
type CorpQualificationSchema struct {
16+
BaseModel
17+
WechatChannelsBinding bool `json:"wechat_channels_binding"` // 当企业具有绑定成功的视频号时,返回true,否则返回false。 1. 企业申请绑定视频号且由视频号管理员确认后,才为绑定成功状态 2. 至少有一个绑定成功的视频号就会返回true
18+
}
19+
20+
// GetCorpQualification 获取视频号绑定状态
21+
// 微信客服可接待的客户数,和企业是否已完成主体验证、是否绑定视频号相关。
22+
//
23+
// 企业未完成主体验证时,微信客服仅可累计接待100位客户
24+
// 企业已验证但未绑定视频号时,微信客服仅可累计接待10000位客户
25+
// 企业已验证且已绑定视频号时,微信客服可接待的客户数不受限制
26+
//
27+
// 开发者可获取状态后,在应用等地方提示企业去完成主体验证或绑定视频号。
28+
func (r *Client) GetCorpQualification() (info CorpQualificationSchema, err error) {
29+
data, err := util.HttpGet(fmt.Sprintf(corpQualification, r.accessToken))
30+
if err != nil {
31+
return info, err
32+
}
33+
_ = json.Unmarshal(data, &info)
34+
if info.ErrCode != 0 {
35+
return info, NewSDKErr(info.ErrCode, info.ErrMsg)
36+
}
37+
return info, nil
38+
}

sendmsgonevent.go

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,20 @@ type SendMsgOnEventSchema struct {
1818
}
1919

2020
// SendMsgOnEvent 发送事件响应消息
21+
// 当特定的事件回调消息包含code字段,或通过接口变更到特定的会话状态,会返回code字段。
22+
// 开发者可以此code为凭证,调用该接口给用户发送相应事件场景下的消息,如客服欢迎语、客服提示语和会话结束语等。
23+
// 除”用户进入会话事件”以外,响应消息仅支持会话处于获取该code的会话状态时发送,如将会话转入待接入池时获得的code仅能在会话状态为”待接入池排队中“时发送。
24+
//
25+
// 目前支持的事件场景和相关约束如下:
26+
//
27+
// 事件场景 允许下发条数 code有效期 支持的消息类型 获取code途径
28+
// 用户进入会话,用于发送客服欢迎语 1条 20秒 文本、菜单 事件回调
29+
// 进入接待池,用于发送排队提示语等 1条 48小时 文本 转接会话接口
30+
// 从接待池接入会话,用于发送非工作时间的提示语或超时未回复的提示语等 1条 48小时 文本 事件回调、转接会话接口
31+
// 结束会话,用于发送结束会话提示语或满意度评价等 1条 20秒 文本、菜单 事件回调、转接会话接口
32+
//
2133
//「进入会话事件」响应消息:
2234
// 如果满足通过API下发欢迎语条件(条件为:1. 企业没有在管理端配置了原生欢迎语;2. 用户在过去48小时里未收过欢迎语,且未向该用户发过消息),则用户进入会话事件会额外返回一个welcome_code,开发者以此为凭据调用接口(填到该接口code参数),即可向客户发送客服欢迎语。
23-
// 为了保证用户体验以及避免滥用,开发者仅可在收到相关事件后20秒内调用,且只可调用一次。
2435
func (r *Client) SendMsgOnEvent(options interface{}) (info SendMsgOnEventSchema, err error) {
2536
data, err := util.HttpPost(fmt.Sprintf(sendMsgOnEventAddr, r.accessToken), options)
2637
if err != nil {

syncmsg/message.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,5 +159,6 @@ type SessionStatusChangeEvent struct {
159159
ChangeType uint32 `json:"change_type"` // 变更类型。1-从接待池接入会话 2-转接会话 3-结束会话
160160
OldReceptionistUserID string `json:"old_servicer_userid"` // 老的客服人员userid。仅change_type为2和3有值
161161
NewReceptionistUserID string `json:"new_servicer_userid"` // 新的客服人员userid。仅change_type为1和2有值
162+
MsgCode string `json:"msg_code"` // 用于发送事件响应消息的code,仅change_type为1和3时,会返回该字段。可用该msg_code调用发送事件响应消息接口给客户发送回复语或结束语。
162163
} `json:"event"` // 事件消息
163164
}

0 commit comments

Comments
 (0)