Преглед на файлове

feat: 添加获取成员多次收消息详情API (#824)

* feat(media): add getTempFile api

add getTempFile api

* feat: 添加获取成员多次收消息详情API

- 添加customerAcquisitionGetChatInfoURL常量
- 实现GetChatInfo方法及相关请求/响应结构体
- 支持企业微信获客助手多次收消息功能

---------

Co-authored-by: caojing <jingjing.cao@trustbe.cn>
曹晶 преди 1 година
родител
ревизия
cf42cd8d54
променени са 1 файла, в които са добавени 41 реда и са изтрити 0 реда
  1. 41 0
      work/externalcontact/customer_acquisition.go

+ 41 - 0
work/externalcontact/customer_acquisition.go

@@ -23,6 +23,8 @@ const (
 	customerAcquisitionQuotaURL = "https://qyapi.weixin.qq.com/cgi-bin/externalcontact/customer_acquisition_quota?access_token=%s"
 	// customerAcquisitionStatistic 查询链接使用详情
 	customerAcquisitionStatisticURL = "https://qyapi.weixin.qq.com/cgi-bin/externalcontact/customer_acquisition/statistic?access_token=%s"
+	// customerAcquisitionGetChatInfo 获取成员多次收消息详情
+	customerAcquisitionGetChatInfoURL = "https://qyapi.weixin.qq.com/cgi-bin/externalcontact/customer_acquisition/get_chat_info?access_token=%s"
 )
 
 type (
@@ -308,3 +310,42 @@ func (r *Client) CustomerAcquisitionStatistic(req *CustomerAcquisitionStatisticR
 	err = util.DecodeWithError(response, result, "CustomerAcquisitionStatistic")
 	return result, err
 }
+
+type (
+	// GetChatInfoRequest 获取成员多次收消息详情请求
+	GetChatInfoRequest struct {
+		ChatKey string `json:"chat_key"`
+	}
+	// GetChatInfoResponse 获取成员多次收消息详情响应
+	GetChatInfoResponse struct {
+		util.CommonError
+		UserID         string   `json:"userid"`
+		ExternalUserID string   `json:"external_userid"`
+		ChatInfo       ChatInfo `json:"chat_info"`
+	}
+	// ChatInfo 聊天信息
+	ChatInfo struct {
+		RecvMsgCnt int64  `json:"recv_msg_cnt"` // 成员收到的此客户的消息次数
+		LinkID     string `json:"link_id"`      // 成员添加客户的获客链接id
+		State      string `json:"state"`        // 成员添加客户的state
+	}
+)
+
+// GetChatInfo 获取成员多次收消息详情
+// see https://developer.work.weixin.qq.com/document/path/100130
+func (r *Client) GetChatInfo(req *GetChatInfoRequest) (*GetChatInfoResponse, error) {
+	var (
+		accessToken string
+		err         error
+	)
+	if accessToken, err = r.GetAccessToken(); err != nil {
+		return nil, err
+	}
+	var response []byte
+	if response, err = util.PostJSON(fmt.Sprintf(customerAcquisitionGetChatInfoURL, accessToken), req); err != nil {
+		return nil, err
+	}
+	result := &GetChatInfoResponse{}
+	err = util.DecodeWithError(response, result, "GetChatInfo")
+	return result, err
+}