contact_way.go 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. package externalcontact
  2. import (
  3. "fmt"
  4. "github.com/silenceper/wechat/v2/util"
  5. )
  6. const (
  7. // AddContactWayURL 配置客户联系「联系我」方式
  8. AddContactWayURL = "https://qyapi.weixin.qq.com/cgi-bin/externalcontact/add_contact_way?access_token=%s"
  9. // GetContactWayURL 获取企业已配置的「联系我」方式
  10. GetContactWayURL = "https://qyapi.weixin.qq.com/cgi-bin/externalcontact/get_contact_way?access_token=%s"
  11. )
  12. type (
  13. // ConclusionsRequest 结束语请求
  14. ConclusionsRequest struct {
  15. Text ConclusionsText `json:"text"`
  16. Image ConclusionsImageRequest `json:"image"`
  17. Link ConclusionsLink `json:"link"`
  18. MiniProgram ConclusionsMiniProgram `json:"miniprogram"`
  19. }
  20. // ConclusionsText 文本格式结束语
  21. ConclusionsText struct {
  22. Content string `json:"content"`
  23. }
  24. // ConclusionsImageRequest 图片格式结束语请求
  25. ConclusionsImageRequest struct {
  26. MediaID string `json:"media_id"`
  27. }
  28. // ConclusionsLink 链接格式结束语
  29. ConclusionsLink struct {
  30. Title string `json:"title"`
  31. PicURL string `json:"picurl"`
  32. Desc string `json:"desc"`
  33. URL string `json:"url"`
  34. }
  35. // ConclusionsMiniProgram 小程序格式结束语
  36. ConclusionsMiniProgram struct {
  37. Title string `json:"title"`
  38. PicMediaID string `json:"pic_media_id"`
  39. AppID string `json:"appid"`
  40. Page string `json:"page"`
  41. }
  42. // ConclusionsResponse 结束语响应
  43. ConclusionsResponse struct {
  44. Text ConclusionsText `json:"text"`
  45. Image ConclusionsImageResponse `json:"image"`
  46. Link ConclusionsLink `json:"link"`
  47. MiniProgram ConclusionsMiniProgram `json:"miniprogram"`
  48. }
  49. // ConclusionsImageResponse 图片格式结束语响应
  50. ConclusionsImageResponse struct {
  51. PicURL string `json:"pic_url"`
  52. }
  53. )
  54. type (
  55. // AddContactWayRequest 配置客户联系「联系我」方式请求
  56. AddContactWayRequest struct {
  57. Type int `json:"type"`
  58. Scene int `json:"scene"`
  59. Style int `json:"style"`
  60. Remark string `json:"remark"`
  61. SkipVerify bool `json:"skip_verify"`
  62. State string `json:"state"`
  63. User []string `json:"user"`
  64. Party []int `json:"party"`
  65. IsTemp bool `json:"is_temp"`
  66. ExpiresIn int `json:"expires_in"`
  67. ChatExpiresIn int `json:"chat_expires_in"`
  68. UnionID string `json:"unionid"`
  69. Conclusions ConclusionsRequest `json:"conclusions"`
  70. }
  71. // AddContactWayResponse 配置客户联系「联系我」方式响应
  72. AddContactWayResponse struct {
  73. util.CommonError
  74. ConfigID string `json:"config_id"`
  75. QrCode string `json:"qr_code"`
  76. }
  77. )
  78. // AddContactWay 配置客户联系「联系我」方式
  79. // see https://developer.work.weixin.qq.com/document/path/92228
  80. func (r *Client) AddContactWay(req *AddContactWayRequest) (*AddContactWayResponse, error) {
  81. var (
  82. accessToken string
  83. err error
  84. )
  85. if accessToken, err = r.GetAccessToken(); err != nil {
  86. return nil, err
  87. }
  88. var response []byte
  89. if response, err = util.PostJSON(fmt.Sprintf(AddContactWayURL, accessToken), req); err != nil {
  90. return nil, err
  91. }
  92. result := &AddContactWayResponse{}
  93. if err = util.DecodeWithError(response, result, "AddContactWay"); err != nil {
  94. return nil, err
  95. }
  96. return result, nil
  97. }
  98. type (
  99. // GetContactWayRequest 获取企业已配置的「联系我」方式请求
  100. GetContactWayRequest struct {
  101. ConfigID string `json:"config_id"`
  102. }
  103. // GetContactWayResponse 获取企业已配置的「联系我」方式响应
  104. GetContactWayResponse struct {
  105. util.CommonError
  106. ContactWay ContactWay `json:"contact_way"`
  107. }
  108. // ContactWay 「联系我」配置
  109. ContactWay struct {
  110. ConfigID string `json:"config_id"`
  111. Type int `json:"type"`
  112. Scene int `json:"scene"`
  113. Style int `json:"style"`
  114. Remark string `json:"remark"`
  115. SkipVerify bool `json:"skip_verify"`
  116. State string `json:"state"`
  117. QrCode string `json:"qr_code"`
  118. User []string `json:"user"`
  119. Party []int `json:"party"`
  120. IsTemp bool `json:"is_temp"`
  121. ExpiresIn int `json:"expires_in"`
  122. ChatExpiresIn int `json:"chat_expires_in"`
  123. UnionID string `json:"unionid"`
  124. Conclusions ConclusionsResponse `json:"conclusions"`
  125. }
  126. )
  127. // GetContactWay 获取企业已配置的「联系我」方式
  128. // see https://developer.work.weixin.qq.com/document/path/92228
  129. func (r *Client) GetContactWay(req *GetContactWayRequest) (*GetContactWayResponse, error) {
  130. var (
  131. accessToken string
  132. err error
  133. )
  134. if accessToken, err = r.GetAccessToken(); err != nil {
  135. return nil, err
  136. }
  137. var response []byte
  138. if response, err = util.PostJSON(fmt.Sprintf(GetContactWayURL, accessToken), req); err != nil {
  139. return nil, err
  140. }
  141. result := &GetContactWayResponse{}
  142. if err = util.DecodeWithError(response, result, "GetContactWay"); err != nil {
  143. return nil, err
  144. }
  145. return result, nil
  146. }