contact_way.go 6.8 KB

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