statistic.go 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. package kf
  2. import (
  3. "fmt"
  4. "github.com/silenceper/wechat/v2/util"
  5. )
  6. const (
  7. // getCorpStatisticURL 获取「客户数据统计」企业汇总数据
  8. getCorpStatisticURL = "https://qyapi.weixin.qq.com/cgi-bin/kf/get_corp_statistic?access_token=%s"
  9. // getServicerStatisticURL 获取「客户数据统计」接待人员明细数据
  10. getServicerStatisticURL = "https://qyapi.weixin.qq.com/cgi-bin/kf/get_servicer_statistic?access_token=%s"
  11. )
  12. // GetCorpStatisticRequest 获取「客户数据统计」企业汇总数据请求
  13. type GetCorpStatisticRequest struct {
  14. OpenKfID string `json:"open_kfid"`
  15. StartTime int64 `json:"start_time"`
  16. EndTime int64 `json:"end_time"`
  17. }
  18. // GetCorpStatisticResponse 获取「客户数据统计」企业汇总数据响应
  19. type GetCorpStatisticResponse struct {
  20. util.CommonError
  21. StatisticList []CorpStatisticList `json:"statistic_list"`
  22. }
  23. // CorpStatisticList 企业汇总统计数据列表
  24. type CorpStatisticList struct {
  25. StatTime int64 `json:"stat_time"`
  26. Statistic CorpStatistic `json:"statistic"`
  27. }
  28. // CorpStatistic 企业汇总统计一天的统计数据
  29. type CorpStatistic struct {
  30. SessionCnt int64 `json:"session_cnt"`
  31. CustomerCnt int64 `json:"customer_cnt"`
  32. CustomerMsgCnt int64 `json:"customer_msg_cnt"`
  33. UpgradeServiceCustomerCnt int64 `json:"upgrade_service_customer_cnt"`
  34. AiSessionReplyCnt int64 `json:"ai_session_reply_cnt"`
  35. AiTransferRate float64 `json:"ai_transfer_rate"`
  36. AiKnowledgeHitRate float64 `json:"ai_knowledge_hit_rate"`
  37. MsgRejectedCustomerCnt int64 `json:"msg_rejected_customer_cnt"`
  38. }
  39. // GetCorpStatistic 获取「客户数据统计」企业汇总数据
  40. // see https://developer.work.weixin.qq.com/document/path/95489
  41. func (r *Client) GetCorpStatistic(req *GetCorpStatisticRequest) (*GetCorpStatisticResponse, error) {
  42. var (
  43. accessToken string
  44. err error
  45. )
  46. if accessToken, err = r.ctx.GetAccessToken(); err != nil {
  47. return nil, err
  48. }
  49. var response []byte
  50. if response, err = util.PostJSON(fmt.Sprintf(getCorpStatisticURL, accessToken), req); err != nil {
  51. return nil, err
  52. }
  53. result := &GetCorpStatisticResponse{}
  54. if err = util.DecodeWithError(response, result, "GetCorpStatistic"); err != nil {
  55. return nil, err
  56. }
  57. return result, nil
  58. }
  59. // GetServicerStatisticRequest 获取「客户数据统计」接待人员明细数据请求
  60. type GetServicerStatisticRequest struct {
  61. OpenKfID string `json:"open_kfid"`
  62. ServicerUserID string `json:"servicer_userid"`
  63. StartTime int64 `json:"start_time"`
  64. EndTime int64 `json:"end_time"`
  65. }
  66. // GetServicerStatisticResponse 获取「客户数据统计」接待人员明细数据响应
  67. type GetServicerStatisticResponse struct {
  68. util.CommonError
  69. StatisticList []ServicerStatisticList `json:"statistic_list"`
  70. }
  71. // ServicerStatisticList 接待人员明细统计数据列表
  72. type ServicerStatisticList struct {
  73. StatTime int64 `json:"stat_time"`
  74. Statistic ServicerStatistic `json:"statistic"`
  75. }
  76. // ServicerStatistic 接待人员明细统计一天的统计数据
  77. type ServicerStatistic struct {
  78. SessionCnt int64 `json:"session_cnt"`
  79. CustomerCnt int64 `json:"customer_cnt"`
  80. CustomerMsgCnt int64 `json:"customer_msg_cnt"`
  81. ReplyRate float64 `json:"reply_rate"`
  82. FirstReplyAverageSec float64 `json:"first_reply_average_sec"`
  83. SatisfactionInvestgateCnt int64 `json:"satisfaction_investgate_cnt"`
  84. SatisfactionParticipationRate float64 `json:"satisfaction_participation_rate"`
  85. SatisfiedRate float64 `json:"satisfied_rate"`
  86. MiddlingRate float64 `json:"middling_rate"`
  87. DissatisfiedRate float64 `json:"dissatisfied_rate"`
  88. UpgradeServiceCustomerCnt int64 `json:"upgrade_service_customer_cnt"`
  89. UpgradeServiceMemberInviteCnt int64 `json:"upgrade_service_member_invite_cnt"`
  90. UpgradeServiceMemberCustomerCnt int64 `json:"upgrade_service_member_customer_cnt"`
  91. UpgradeServiceGroupChatInviteCnt int64 `json:"upgrade_service_groupchat_invite_cnt"`
  92. UpgradeServiceGroupChatCustomerCnt int64 `json:"upgrade_service_groupchat_customer_cnt"`
  93. MsgRejectedCustomerCnt int64 `json:"msg_rejected_customer_cnt"`
  94. }
  95. // GetServicerStatistic 获取「客户数据统计」接待人员明细数据
  96. // see https://developer.work.weixin.qq.com/document/path/95490
  97. func (r *Client) GetServicerStatistic(req *GetServicerStatisticRequest) (*GetServicerStatisticResponse, error) {
  98. var (
  99. accessToken string
  100. err error
  101. )
  102. if accessToken, err = r.ctx.GetAccessToken(); err != nil {
  103. return nil, err
  104. }
  105. var response []byte
  106. if response, err = util.PostJSON(fmt.Sprintf(getServicerStatisticURL, accessToken), req); err != nil {
  107. return nil, err
  108. }
  109. result := &GetServicerStatisticResponse{}
  110. if err = util.DecodeWithError(response, result, "GetServicerStatistic"); err != nil {
  111. return nil, err
  112. }
  113. return result, nil
  114. }