WxCpExternalContactService.java 53 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148
  1. package me.chanjar.weixin.cp.api;
  2. import me.chanjar.weixin.common.bean.result.WxMediaUploadResult;
  3. import me.chanjar.weixin.common.error.WxErrorException;
  4. import me.chanjar.weixin.cp.bean.WxCpBaseResp;
  5. import me.chanjar.weixin.cp.bean.external.*;
  6. import me.chanjar.weixin.cp.bean.external.contact.*;
  7. import me.chanjar.weixin.cp.bean.external.interceptrule.WxCpInterceptRule;
  8. import me.chanjar.weixin.cp.bean.external.interceptrule.WxCpInterceptRuleAddRequest;
  9. import java.io.File;
  10. import java.io.IOException;
  11. import java.io.InputStream;
  12. import java.util.Date;
  13. import java.util.List;
  14. /**
  15. * <pre>
  16. * 外部联系人管理接口,企业微信的外部联系人的接口和通讯录接口已经拆离
  17. * Created by Joe Cao on 2019/6/14
  18. * </pre>
  19. *
  20. * @author <a href="https://github.com/JoeCao">JoeCao</a>
  21. */
  22. public interface WxCpExternalContactService {
  23. /**
  24. * 配置客户联系「联系我」方式
  25. * <pre>
  26. * 企业可以在管理后台-客户联系中配置成员的「联系我」的二维码或者小程序按钮,客户通过扫描二维码或点击小程序上的按钮,即可获取成员联系方式,主动联系到成员。
  27. * 企业可通过此接口为具有客户联系功能的成员生成专属的「联系我」二维码或者「联系我」按钮。
  28. * 如果配置的是「联系我」按钮,需要开发者的小程序接入小程序插件。
  29. *
  30. * 注意:
  31. * 通过API添加的「联系我」不会在管理端进行展示,每个企业可通过API最多配置50万个「联系我」。
  32. * 用户需要妥善存储返回的config_id,config_id丢失可能导致用户无法编辑或删除「联系我」。
  33. * 临时会话模式不占用「联系我」数量,但每日最多添加10万个,并且仅支持单人。
  34. * 临时会话模式的二维码,添加好友完成后该二维码即刻失效。
  35. * </pre>
  36. *
  37. * @param info 客户联系「联系我」方式
  38. * @return wx cp contact way result
  39. * @throws WxErrorException the wx error exception
  40. */
  41. WxCpContactWayResult addContactWay(WxCpContactWayInfo info) throws WxErrorException;
  42. /**
  43. * 获取企业已配置的「联系我」方式
  44. *
  45. * <pre>
  46. * <b>批量</b>获取企业配置的「联系我」二维码和「联系我」小程序按钮。
  47. * </pre>
  48. *
  49. * @param configId 联系方式的配置id,必填
  50. * @return contact way
  51. * @throws WxErrorException the wx error exception
  52. */
  53. WxCpContactWayInfo getContactWay(String configId) throws WxErrorException;
  54. /**
  55. * 更新企业已配置的「联系我」方式
  56. *
  57. * <pre>
  58. * 更新企业配置的「联系我」二维码和「联系我」小程序按钮中的信息,如使用人员和备注等。
  59. * </pre>
  60. *
  61. * @param info 客户联系「联系我」方式
  62. * @return wx cp base resp
  63. * @throws WxErrorException the wx error exception
  64. */
  65. WxCpBaseResp updateContactWay(WxCpContactWayInfo info) throws WxErrorException;
  66. /**
  67. * 删除企业已配置的「联系我」方式
  68. *
  69. * <pre>
  70. * 删除一个已配置的「联系我」二维码或者「联系我」小程序按钮。
  71. * </pre>
  72. *
  73. * @param configId 企业联系方式的配置id,必填
  74. * @return wx cp base resp
  75. * @throws WxErrorException the wx error exception
  76. */
  77. WxCpBaseResp deleteContactWay(String configId) throws WxErrorException;
  78. /**
  79. * 结束临时会话
  80. *
  81. * <pre>
  82. * 将指定的企业成员和客户之前的临时会话断开,断开前会自动下发已配置的结束语。
  83. *
  84. * 注意:请保证传入的企业成员和客户之间有仍然有效的临时会话, 通过<b>其他方式的添加外部联系人无法通过此接口关闭会话</b>。
  85. * </pre>
  86. *
  87. * @param userId the user id
  88. * @param externalUserId the external user id
  89. * @return wx cp base resp
  90. * @throws WxErrorException the wx error exception
  91. */
  92. WxCpBaseResp closeTempChat(String userId, String externalUserId) throws WxErrorException;
  93. /**
  94. * 获取外部联系人详情.
  95. * <pre>
  96. * 企业可通过此接口,根据外部联系人的userid,拉取外部联系人详情。权限说明:
  97. * 企业需要使用外部联系人管理secret所获取的accesstoken来调用
  98. * 第三方应用需拥有“企业客户”权限。
  99. * 第三方应用调用时,返回的跟进人follow_user仅包含应用可见范围之内的成员。
  100. * </pre>
  101. *
  102. * @param userId 外部联系人的userid
  103. * @return . external contact
  104. * @throws WxErrorException the wx error exception
  105. * @deprecated 建议使用 {@link #getContactDetail(String, String)}
  106. */
  107. @Deprecated
  108. WxCpExternalContactInfo getExternalContact(String userId) throws WxErrorException;
  109. /**
  110. * 获取客户详情.
  111. * <pre>
  112. *
  113. * 企业可通过此接口,根据外部联系人的userid(如何获取?),拉取客户详情。
  114. *
  115. * 请求方式:GET(HTTPS)
  116. * 请求地址:https://qyapi.weixin.qq.com/cgi-bin/externalcontact/get?access_token=ACCESS_TOKEN&external_userid=EXTERNAL_USERID
  117. *
  118. * 权限说明:
  119. *
  120. * 企业需要使用“客户联系”secret或配置到“可调用应用”列表中的自建应用secret所获取的accesstoken来调用(accesstoken如何获取?);
  121. * 第三方/自建应用调用时,返回的跟进人follow_user仅包含应用可见范围之内的成员。
  122. * </pre>
  123. *
  124. * @param userId 外部联系人的userid,注意不是企业成员的帐号
  125. * @param cursor 用于分页查询的游标,字符串类型,由上一次调用返回,首次调用可不填
  126. * @return . contact detail
  127. * @throws WxErrorException .
  128. */
  129. WxCpExternalContactInfo getContactDetail(String userId, String cursor) throws WxErrorException;
  130. /**
  131. * 企业和服务商可通过此接口,将微信外部联系人的userid转为微信openid,用于调用支付相关接口。暂不支持企业微信外部联系人(ExternalUserid为wo开头)的userid转openid。
  132. *
  133. * @param externalUserid 微信外部联系人的userid
  134. * @return 该企业的外部联系人openid string
  135. * @throws WxErrorException .
  136. */
  137. String convertToOpenid(String externalUserid) throws WxErrorException;
  138. /**
  139. * 服务商为企业代开发微信小程序的场景,服务商可通过此接口,将微信客户的unionid转为external_userid。
  140. * <pre>
  141. *
  142. * 文档地址:https://work.weixin.qq.com/api/doc/90001/90143/93274
  143. *
  144. * 服务商代开发小程序指企业使用的小程序为企业主体的,非服务商主体的小程序。
  145. * 场景:企业客户在微信端从企业主体的小程序(非服务商应用)登录,同时企业在企业微信安装了服务商的第三方应用,服务商可以调用该接口将登录用户的unionid转换为服务商全局唯一的外部联系人id
  146. *
  147. * 权限说明:
  148. *
  149. * 仅认证企业可调用
  150. * unionid必须是企业主体下的unionid。即unionid的主体(为绑定了该小程序的微信开放平台账号主体)需与当前企业的主体一致。
  151. * unionid的主体(即微信开放平台账号主体)需认证
  152. * 该客户的跟进人必须在应用的可见范围之内
  153. * </pre>
  154. *
  155. * @param unionid 微信客户的unionid
  156. * @param openid the openid
  157. * @return 该企业的外部联系人ID string
  158. * @throws WxErrorException .
  159. */
  160. String unionidToExternalUserid(String unionid, String openid) throws WxErrorException;
  161. /**
  162. * 配置客户群进群方式
  163. * 企业可以在管理后台-客户联系中配置「加入群聊」的二维码或者小程序按钮,客户通过扫描二维码或点击小程序上的按钮,即可加入特定的客户群。
  164. * 企业可通过此接口为具有客户联系功能的成员生成专属的二维码或者小程序按钮。
  165. * 如果配置的是小程序按钮,需要开发者的小程序接入小程序插件。
  166. * 注意:
  167. * 通过API添加的配置不会在管理端进行展示,每个企业可通过API最多配置50万个「加入群聊」(与「联系我」共用50万的额度)。
  168. * 文档地址:https://developer.work.weixin.qq.com/document/path/92229
  169. *
  170. * @param wxCpGroupJoinWayInfo the wx cp group join way info
  171. * @return {@link WxCpGroupJoinWayResult}
  172. * @throws WxErrorException the wx error exception
  173. */
  174. WxCpGroupJoinWayResult addJoinWay(WxCpGroupJoinWayInfo wxCpGroupJoinWayInfo) throws WxErrorException;
  175. /**
  176. * 更新客户群进群方式配置
  177. * 更新进群方式配置信息。注意:使用覆盖的方式更新。
  178. * 文档地址:https://developer.work.weixin.qq.com/document/path/92229
  179. *
  180. * @param wxCpGroupJoinWayInfo the wx cp group join way info
  181. * @return wx cp base resp
  182. * @throws WxErrorException the wx error exception
  183. */
  184. WxCpBaseResp updateJoinWay(WxCpGroupJoinWayInfo wxCpGroupJoinWayInfo) throws WxErrorException;
  185. /**
  186. * 获取客户群进群方式配置
  187. * 获取企业配置的群二维码或小程序按钮。
  188. * 文档地址:https://developer.work.weixin.qq.com/document/path/92229
  189. *
  190. * @param configId the config id
  191. * @return join way
  192. * @throws WxErrorException the wx error exception
  193. */
  194. WxCpGroupJoinWayInfo getJoinWay(String configId) throws WxErrorException;
  195. /**
  196. * 删除客户群进群方式配置
  197. * 文档地址:https://developer.work.weixin.qq.com/document/path/92229
  198. *
  199. * @param configId the config id
  200. * @return wx cp base resp
  201. * @throws WxErrorException the wx error exception
  202. */
  203. WxCpBaseResp delJoinWay(String configId) throws WxErrorException;
  204. /**
  205. * 代开发应用external_userid转换
  206. * <pre>
  207. *
  208. * 文档地址:https://work.weixin.qq.com/api/doc/90001/90143/95195
  209. *
  210. * 企业同时安装服务商第三方应用以及授权代开发自建应用的时,服务商可使用该接口将代开发应用获取到的外部联系人id跟第三方应用的id进行关联,
  211. * 该接口可将代开发自建应用获取到的external_userid转换为服务商第三方应用的external_userid。
  212. *
  213. * 权限说明:
  214. *
  215. * 该企业授权了该服务商第三方应用,且授权的第三方应用具备“企业客户权限->客户基础信息”权限
  216. * 该客户的跟进人必须在应用的可见范围之内
  217. * 应用需具备“企业客户权限->客户基础信息”权限
  218. * </pre>
  219. *
  220. * @param externalUserid 代开发自建应用获取到的外部联系人ID
  221. * @return 该服务商第三方应用下的企业的外部联系人ID string
  222. * @throws WxErrorException .
  223. */
  224. String toServiceExternalUserid(String externalUserid) throws WxErrorException;
  225. /**
  226. * 将代开发应用或第三方应用获取的externaluserid转换成自建应用的externaluserid
  227. * <pre>
  228. * 文档地址:https://developer.work.weixin.qq.com/document/path/95884#external-userid%E8%BD%AC%E6%8D%A2
  229. *
  230. * 权限说明:
  231. *
  232. * 需要使用自建应用或基础应用的access_token
  233. * 客户的跟进人,或者用户所在客户群的群主,需要同时在access_token和source_agentid所对应应用的可见范围内
  234. * </pre>
  235. *
  236. * @param externalUserid 服务商主体的external_userid,必须是source_agentid对应的应用所获取
  237. * @param sourceAgentId 企业授权的代开发自建应用或第三方应用的agentid
  238. * @return
  239. * @throws WxErrorException
  240. */
  241. String fromServiceExternalUserid(String externalUserid, String sourceAgentId) throws WxErrorException;
  242. /**
  243. * 企业客户微信unionid的升级 - unionid查询external_userid
  244. * <pre>
  245. *
  246. * 文档地址:https://open.work.weixin.qq.com/api/doc/35863#4.2%20unionid%E6%9F%A5%E8%AF%A2external_userid
  247. *
  248. * 当微信用户在微信中使用第三方应用的小程序或公众号时,第三方可将获取到的unionid与openid,调用此接口转换为企业客户external_userid。
  249. * 该接口调用频次有限,每个服务商每小时仅可调用1万次,仅用于微信用户主动使用第三方应用的场景来调用,服务商切不可滥用。
  250. * 同时建议服务商的小程序路径或公众号页面链接带上corpid参数,如此可明确地转换出该企业对应的external_userid,以获得更好的性能。
  251. *
  252. * 权限说明:
  253. *
  254. * 该企业授权了该服务商第三方应用
  255. * 调用频率最大为10000次/小时
  256. * unionid和openid的主体需与服务商的主体一致
  257. * openid与unionid必须是在同一个小程序或同一个公众号获取到的
  258. * </pre>
  259. *
  260. * @param unionid 微信客户的unionid
  261. * @param openid 微信客户的openid
  262. * @param corpid 需要换取的企业corpid,不填则拉取所有企业
  263. * @return 该服务商第三方应用下的企业的外部联系人ID wx cp external user id list
  264. * @throws WxErrorException .
  265. */
  266. WxCpExternalUserIdList unionidToExternalUserid3rd(String unionid, String openid, String corpid) throws WxErrorException;
  267. /**
  268. * 转换external_userid
  269. * <pre>
  270. *
  271. * 文档地址:https://open.work.weixin.qq.com/api/doc/35863#转换external_userid
  272. *
  273. * 对于历史已授权的企业,在2022年3月1号之前,所有接口与回调返回的external_userid仍然为旧的external_userid,
  274. * 从2022年3月1号0点开始,所有输入与返回的external_userid字段,将启用升级后的external_userid。
  275. * 所以服务商需要在此之前完成历史数据的迁移整改
  276. *
  277. * 权限说明:
  278. *
  279. * 该企业授权了该服务商第三方应用
  280. * external_userid对应的跟进人需要在应用可见范围内
  281. * </pre>
  282. *
  283. * @param externalUserIdList 微信客户的unionid
  284. * @return List<String> 新外部联系人id
  285. * @throws WxErrorException .
  286. */
  287. WxCpNewExternalUserIdList getNewExternalUserId(String[] externalUserIdList) throws WxErrorException;
  288. /**
  289. * 设置迁移完成
  290. * <pre>
  291. *
  292. * 文档地址:https://open.work.weixin.qq.com/api/doc/35863#转换external_userid
  293. *
  294. * 企业授权确认之后,且服务商完成了新旧external_userid的迁移,即可主动将该企业设置为“迁移完成”,
  295. * 设置之后,从该企业获取到的将是新的external_userid。注意,该接口需要使用provider_access_token来调用,
  296. * 对于有多个应用的服务商,可逐个应用进行external_userid的转换,最后再使用provider_access_token调用该接口完成设置。
  297. *
  298. * 权限说明:
  299. *
  300. * 该企业授权了该服务商第三方应用
  301. * </pre>
  302. *
  303. * @param corpid 企业corpid
  304. * @return wx cp base resp
  305. * @throws WxErrorException .
  306. */
  307. WxCpBaseResp finishExternalUserIdMigration(String corpid) throws WxErrorException;
  308. /**
  309. * 客户群opengid转换
  310. * <pre>
  311. *
  312. * 文档地址:https://open.work.weixin.qq.com/api/doc/90000/90135/94822
  313. *
  314. * 用户在微信里的客户群里打开小程序时,某些场景下可以获取到群的opengid,如果该群是企业微信的客户群,
  315. * 则企业或第三方可以调用此接口将一个opengid转换为客户群chat_id
  316. *
  317. * 权限说明:
  318. *
  319. * 企业需要使用“客户联系”secret或配置到“可调用应用”列表中的自建应用secret所获取的accesstoken来调用(accesstoken如何获取?)
  320. * 第三方应用需具有“企业客户权限->客户基础信息”权限
  321. * 对于第三方/自建应用,群主必须在应用的可见范围
  322. * 仅支持企业服务人员创建的客户群
  323. * 仅可转换出自己企业下的客户群chat_id
  324. * </pre>
  325. *
  326. * @param opengid 小程序在微信获取到的群ID,参见wx.getGroupEnterInfo(https://developers.weixin.qq
  327. * .com/miniprogram/dev/api/open-api/group/wx.getGroupEnterInfo.html)
  328. * @return 客户群ID ,可以用来调用获取客户群详情
  329. * @throws WxErrorException .
  330. */
  331. String opengidToChatid(String opengid) throws WxErrorException;
  332. /**
  333. * 批量获取客户详情.
  334. * <pre>
  335. *
  336. * 企业/第三方可通过此接口获取指定成员添加的客户信息列表。
  337. *
  338. * 请求方式:POST(HTTPS)
  339. * 请求地址:https://qyapi.weixin.qq.com/cgi-bin/externalcontact/batch/get_by_user?access_token=ACCESS_TOKEN
  340. *
  341. * 权限说明:
  342. *
  343. * 企业需要使用“客户联系”secret或配置到“可调用应用”列表中的自建应用secret所获取的accesstoken来调用(accesstoken如何获取?);
  344. * 第三方/自建应用调用时,返回的跟进人follow_user仅包含应用可见范围之内的成员。
  345. * </pre>
  346. *
  347. * @param userIdList 企业成员的userid列表,注意不是外部联系人的帐号
  348. * @param cursor the cursor
  349. * @param limit the limit
  350. * @return wx cp user external contact batch info
  351. * @throws WxErrorException .
  352. */
  353. WxCpExternalContactBatchInfo getContactDetailBatch(String[] userIdList, String cursor,
  354. Integer limit)
  355. throws WxErrorException;
  356. /**
  357. * 修改客户备注信息.
  358. * <pre>
  359. * 企业可通过此接口修改指定用户添加的客户的备注信息。
  360. * 请求方式: POST(HTTP)
  361. * 请求地址:https://qyapi.weixin.qq.com/cgi-bin/externalcontact/remark?access_token=ACCESS_TOKEN
  362. * 文档地址:https://work.weixin.qq.com/api/doc/90000/90135/92115
  363. * </pre>
  364. *
  365. * @param request 备注信息请求
  366. * @throws WxErrorException .
  367. */
  368. void updateRemark(WxCpUpdateRemarkRequest request) throws WxErrorException;
  369. /**
  370. * 获取客户列表.
  371. * <pre>
  372. * 企业可通过此接口获取指定成员添加的客户列表。客户是指配置了客户联系功能的成员所添加的外部联系人。没有配置客户联系功能的成员,所添加的外部联系人将不会作为客户返回。
  373. *
  374. * 请求方式:GET(HTTPS)
  375. * 请求地址:https://qyapi.weixin.qq.com/cgi-bin/externalcontact/list?access_token=ACCESS_TOKEN&userid=USERID
  376. *
  377. * 权限说明:
  378. *
  379. * 企业需要使用“客户联系”secret或配置到“可调用应用”列表中的自建应用secret所获取的accesstoken来调用(accesstoken如何获取?);
  380. * 第三方应用需拥有“企业客户”权限。
  381. * 第三方/自建应用只能获取到可见范围内的配置了客户联系功能的成员。
  382. * </pre>
  383. *
  384. * @param userId 企业成员的userid
  385. * @return List of External wx id
  386. * @throws WxErrorException .
  387. */
  388. List<String> listExternalContacts(String userId) throws WxErrorException;
  389. /**
  390. * 企业和第三方服务商可通过此接口获取配置了客户联系功能的成员(Customer Contact)列表。
  391. * <pre>
  392. * 企业需要使用外部联系人管理secret所获取的accesstoken来调用(accesstoken如何获取?);
  393. * 第三方应用需拥有“企业客户”权限。
  394. * 第三方应用只能获取到可见范围内的配置了客户联系功能的成员
  395. * </pre>
  396. *
  397. * @return List of CpUser id
  398. * @throws WxErrorException .
  399. */
  400. List<String> listFollowers() throws WxErrorException;
  401. /**
  402. * 获取待分配的离职成员列表
  403. * 企业和第三方可通过此接口,获取所有离职成员的客户列表,并可进一步调用分配离职成员的客户接口将这些客户重新分配给其他企业成员。
  404. * <p>
  405. * 请求方式:POST(HTTPS)
  406. * 请求地址:https://qyapi.weixin.qq.com/cgi-bin/externalcontact/get_unassigned_list?access_token=ACCESS_TOKEN
  407. *
  408. * @param pageId 分页查询,要查询页号,从0开始
  409. * @param cursor 分页查询游标,字符串类型,适用于数据量较大的情况,如果使用该参数则无需填写page_id,该参数由上一次调用返回
  410. * @param pageSize 每次返回的最大记录数,默认为1000,最大值为1000
  411. * @return wx cp user external unassign list
  412. * @throws WxErrorException the wx error exception
  413. */
  414. WxCpUserExternalUnassignList listUnassignedList(Integer pageId, String cursor, Integer pageSize) throws WxErrorException;
  415. /**
  416. * 企业可通过此接口,将已离职成员的外部联系人分配给另一个成员接替联系。
  417. *
  418. * @param externalUserid the external userid
  419. * @param handOverUserid the hand over userid
  420. * @param takeOverUserid the take over userid
  421. * @return wx cp base resp
  422. * @throws WxErrorException the wx error exception
  423. * @deprecated 此后续将不再更新维护, 建议使用 {@link #transferCustomer(WxCpUserTransferCustomerReq)}
  424. */
  425. @Deprecated
  426. WxCpBaseResp transferExternalContact(String externalUserid, String handOverUserid, String takeOverUserid) throws WxErrorException;
  427. /**
  428. * 企业可通过此接口,转接在职成员的客户给其他成员。
  429. * <per>
  430. * external_userid必须是handover_userid的客户(即配置了客户联系功能的成员所添加的联系人)。
  431. * 在职成员的每位客户最多被分配2次。客户被转接成功后,将有90个自然日的服务关系保护期,保护期内的客户无法再次被分配。
  432. * <p>
  433. * 权限说明:
  434. * * 企业需要使用“客户联系”secret或配置到“可调用应用”列表中的自建应用secret所获取的accesstoken来调用(accesstoken如何获取?)。
  435. * 第三方应用需拥有“企业客户权限->客户联系->在职继承”权限
  436. * 接替成员必须在此第三方应用或自建应用的可见范围内。
  437. * 接替成员需要配置了客户联系功能。
  438. * 接替成员需要在企业微信激活且已经过实名认证。
  439. * </per>
  440. *
  441. * @param req 转接在职成员的客户给其他成员请求实体
  442. * @return wx cp base resp
  443. * @throws WxErrorException the wx error exception
  444. */
  445. WxCpUserTransferCustomerResp transferCustomer(WxCpUserTransferCustomerReq req) throws WxErrorException;
  446. /**
  447. * 企业和第三方可通过此接口查询在职成员的客户转接情况。
  448. * <per>
  449. * 权限说明:
  450. * <p>
  451. * 企业需要使用“客户联系”secret或配置到“可调用应用”列表中的自建应用secret所获取的accesstoken来调用(accesstoken如何获取?)。
  452. * 第三方应用需拥有“企业客户权限->客户联系->在职继承”权限
  453. * 接替成员必须在此第三方应用或自建应用的可见范围内。
  454. * </per>
  455. *
  456. * @param handOverUserid 原添加成员的userid
  457. * @param takeOverUserid 接替成员的userid
  458. * @param cursor 分页查询的cursor,每个分页返回的数据不会超过1000条;不填或为空表示获取第一个分页;
  459. * @return 客户转接接口实体 wx cp user transfer result resp
  460. * @throws WxErrorException the wx error exception
  461. */
  462. WxCpUserTransferResultResp transferResult(String handOverUserid, String takeOverUserid,
  463. String cursor) throws WxErrorException;
  464. /**
  465. * 企业可通过此接口,分配离职成员的客户给其他成员。
  466. * <per>
  467. * handover_userid必须是已离职用户。
  468. * external_userid必须是handover_userid的客户(即配置了客户联系功能的成员所添加的联系人)。
  469. * 在职成员的每位客户最多被分配2次。客户被转接成功后,将有90个自然日的服务关系保护期,保护期内的客户无法再次被分配。
  470. * <p>
  471. * 权限说明:
  472. * <p>
  473. * 企业需要使用“客户联系”secret或配置到“可调用应用”列表中的自建应用secret所获取的accesstoken来调用(accesstoken如何获取?)。
  474. * 第三方应用需拥有“企业客户权限->客户联系->离职分配”权限
  475. * 接替成员必须在此第三方应用或自建应用的可见范围内。
  476. * 接替成员需要配置了客户联系功能。
  477. * 接替成员需要在企业微信激活且已经过实名认证。
  478. * </per>
  479. *
  480. * @param req 转接在职成员的客户给其他成员请求实体
  481. * @return wx cp base resp
  482. * @throws WxErrorException the wx error exception
  483. */
  484. WxCpUserTransferCustomerResp resignedTransferCustomer(WxCpUserTransferCustomerReq req) throws WxErrorException;
  485. /**
  486. * 企业和第三方可通过此接口查询离职成员的客户分配情况。
  487. * <per>
  488. * 权限说明:
  489. * <p>
  490. * 企业需要使用“客户联系”secret或配置到“可调用应用”列表中的自建应用secret所获取的accesstoken来调用(accesstoken如何获取?)。
  491. * 第三方应用需拥有“企业客户权限->客户联系->在职继承”权限
  492. * 接替成员必须在此第三方应用或自建应用的可见范围内。
  493. * </per>
  494. *
  495. * @param handOverUserid 原添加成员的userid
  496. * @param takeOverUserid 接替成员的userid
  497. * @param cursor 分页查询的cursor,每个分页返回的数据不会超过1000条;不填或为空表示获取第一个分页;
  498. * @return 客户转接接口实体 wx cp user transfer result resp
  499. * @throws WxErrorException the wx error exception
  500. */
  501. WxCpUserTransferResultResp resignedTransferResult(String handOverUserid, String takeOverUserid,
  502. String cursor) throws WxErrorException;
  503. /**
  504. * <pre>
  505. * 该接口用于获取配置过客户群管理的客户群列表。
  506. * 企业需要使用“客户联系”secret或配置到“可调用应用”列表中的自建应用secret所获取的accesstoken来调用(accesstoken如何获取?)。
  507. * 暂不支持第三方调用。
  508. * 微信文档:https://work.weixin.qq.com/api/doc/90000/90135/92119
  509. * </pre>
  510. *
  511. * @param pageIndex the page index
  512. * @param pageSize the page size
  513. * @param status the status
  514. * @param userIds the user ids
  515. * @param partyIds the party ids
  516. * @return the wx cp user external group chat list
  517. * @throws WxErrorException the wx error exception
  518. * @deprecated 请使用 {@link WxCpExternalContactService#listGroupChat(Integer, String, int, String[])}
  519. */
  520. @Deprecated
  521. WxCpUserExternalGroupChatList listGroupChat(Integer pageIndex, Integer pageSize, int status, String[] userIds,
  522. String[] partyIds) throws WxErrorException;
  523. /**
  524. * <pre>
  525. * 该接口用于获取配置过客户群管理的客户群列表。
  526. * 企业需要使用“客户联系”secret或配置到“可调用应用”列表中的自建应用secret所获取的accesstoken来调用(accesstoken如何获取?)。
  527. * 暂不支持第三方调用。
  528. * 微信文档:https://work.weixin.qq.com/api/doc/90000/90135/92119
  529. * </pre>
  530. *
  531. * @param limit 分页,预期请求的数据量,取值范围 1 ~ 1000
  532. * @param cursor 用于分页查询的游标,字符串类型,由上一次调用返回,首次调用不填
  533. * @param status 客户群跟进状态过滤。0 - 所有列表(即不过滤) 1 - 离职待继承 2 - 离职继承中 3 - 离职继承完成 默认为0
  534. * @param userIds 群主过滤。如果不填,表示获取应用可见范围内全部群主的数据(但是不建议这么用,如果可见范围人数超过1000人,为了防止数据包过大,会报错 81017);用户ID列表。最多100个
  535. * @return the wx cp user external group chat list
  536. * @throws WxErrorException the wx error exception
  537. */
  538. WxCpUserExternalGroupChatList listGroupChat(Integer limit, String cursor, int status, String[] userIds) throws WxErrorException;
  539. /**
  540. * <pre>
  541. * 通过客户群ID,获取详情。包括群名、群成员列表、群成员入群时间、入群方式。(客户群是由具有客户群使用权限的成员创建的外部群)
  542. * 企业需要使用“客户联系”secret或配置到“可调用应用”列表中的自建应用secret所获取的accesstoken来调用(accesstoken如何获取?)。
  543. * 暂不支持第三方调用。
  544. * 微信文档:https://work.weixin.qq.com/api/doc/90000/90135/92122
  545. * </pre>
  546. *
  547. * @param chatId the chat id
  548. * @param needName the need name
  549. * @return group chat
  550. * @throws WxErrorException the wx error exception
  551. */
  552. WxCpUserExternalGroupChatInfo getGroupChat(String chatId, Integer needName) throws WxErrorException;
  553. /**
  554. * 企业可通过此接口,将已离职成员为群主的群,分配给另一个客服成员。
  555. *
  556. * <per>
  557. * 注意::
  558. * <p>
  559. * 群主离职了的客户群,才可继承
  560. * 继承给的新群主,必须是配置了客户联系功能的成员
  561. * 继承给的新群主,必须有设置实名
  562. * 继承给的新群主,必须有激活企业微信
  563. * 同一个人的群,限制每天最多分配300个给新群主
  564. * <p>
  565. * 权限说明:
  566. * <p>
  567. * 企业需要使用“客户联系”secret或配置到“可调用应用”列表中的自建应用secret所获取的accesstoken来调用(accesstoken如何获取?)。
  568. * 第三方应用需拥有“企业客户权限->客户联系->分配离职成员的客户群”权限
  569. * 对于第三方/自建应用,群主必须在应用的可见范围。
  570. * </per>
  571. *
  572. * @param chatIds 需要转群主的客户群ID列表。取值范围: 1 ~ 100
  573. * @param newOwner 新群主ID
  574. * @return 分配结果 ,主要是分配失败的群列表
  575. * @throws WxErrorException the wx error exception
  576. */
  577. WxCpUserExternalGroupChatTransferResp transferGroupChat(String[] chatIds, String newOwner) throws WxErrorException;
  578. /**
  579. * 企业可通过此接口,将在职成员为群主的群,分配给另一个客服成员。
  580. * <per>
  581. * 注意:
  582. * 继承给的新群主,必须是配置了客户联系功能的成员
  583. * 继承给的新群主,必须有设置实名
  584. * 继承给的新群主,必须有激活企业微信
  585. * 同一个人的群,限制每天最多分配300个给新群主
  586. * 为保障客户服务体验,90个自然日内,在职成员的每个客户群仅可被转接2次。
  587. * </pre>
  588. *
  589. * @param chatIds 需要转群主的客户群ID列表。取值范围: 1 ~ 100
  590. * @param newOwner 新群主ID
  591. * @return 分配结果 ,主要是分配失败的群列表
  592. * @throws WxErrorException the wx error exception
  593. */
  594. WxCpUserExternalGroupChatTransferResp onjobTransferGroupChat(String[] chatIds, String newOwner) throws WxErrorException;
  595. /**
  596. * <pre>
  597. * 企业可通过此接口获取成员联系客户的数据,包括发起申请数、新增客户数、聊天数、发送消息数和删除/拉黑成员的客户数等指标。
  598. * 企业需要使用“客户联系”secret或配置到“可调用应用”列表中的自建应用secret所获取的accesstoken来调用(accesstoken如何获取?)。
  599. * 第三方应用需拥有“企业客户”权限。
  600. * 第三方/自建应用调用时传入的userid和partyid要在应用的可见范围内;
  601. * </pre>
  602. *
  603. * @param startTime the start time
  604. * @param endTime the end time
  605. * @param userIds the user ids
  606. * @param partyIds the party ids
  607. * @return user behavior statistic
  608. * @throws WxErrorException the wx error exception
  609. */
  610. WxCpUserExternalUserBehaviorStatistic getUserBehaviorStatistic(Date startTime, Date endTime, String[] userIds,
  611. String[] partyIds) throws WxErrorException;
  612. /**
  613. * <pre>
  614. * 获取指定日期全天的统计数据。注意,企业微信仅存储60天的数据。
  615. * 企业需要使用“客户联系”secret或配置到“可调用应用”列表中的自建应用secret所获取的accesstoken来调用(accesstoken如何获取?)。
  616. * 暂不支持第三方调用。
  617. * </pre>
  618. *
  619. * @param startTime the start time
  620. * @param orderBy the order by
  621. * @param orderAsc the order asc
  622. * @param pageIndex the page index
  623. * @param pageSize the page size
  624. * @param userIds the user ids
  625. * @param partyIds the party ids
  626. * @return group chat statistic
  627. * @throws WxErrorException the wx error exception
  628. */
  629. WxCpUserExternalGroupChatStatistic getGroupChatStatistic(Date startTime, Integer orderBy, Integer orderAsc,
  630. Integer pageIndex, Integer pageSize, String[] userIds,
  631. String[] partyIds) throws WxErrorException;
  632. /**
  633. * 添加企业群发消息任务
  634. * 企业可通过此接口添加企业群发消息的任务并通知客服人员发送给相关客户或客户群。(注:企业微信终端需升级到2.7.5版本及以上)
  635. * 注意:调用该接口并不会直接发送消息给客户/客户群,需要相关的客服人员操作以后才会实际发送(客服人员的企业微信需要升级到2.7.5及以上版本)
  636. * 同一个企业每个自然月内仅可针对一个客户/客户群发送4条消息,超过限制的用户将会被忽略。
  637. * <p>
  638. * 请求方式: POST(HTTP)
  639. * <p>
  640. * 请求地址:https://qyapi.weixin.qq.com/cgi-bin/externalcontact/add_msg_template?access_token=ACCESS_TOKEN
  641. * <p>
  642. * <a href="https://work.weixin.qq.com/api/doc/90000/90135/92135">文档地址</a>
  643. *
  644. * @param wxCpMsgTemplate the wx cp msg template
  645. * @return the wx cp msg template add result
  646. * @throws WxErrorException the wx error exception
  647. */
  648. WxCpMsgTemplateAddResult addMsgTemplate(WxCpMsgTemplate wxCpMsgTemplate) throws WxErrorException;
  649. /**
  650. * 发送新客户欢迎语
  651. * <pre>
  652. * 企业微信在向企业推送添加外部联系人事件时,会额外返回一个welcome_code,企业以此为凭据调用接口,即可通过成员向新添加的客户发送个性化的欢迎语。
  653. * 为了保证用户体验以及避免滥用,企业仅可在收到相关事件后20秒内调用,且只可调用一次。
  654. * 如果企业已经在管理端为相关成员配置了可用的欢迎语,则推送添加外部联系人事件时不会返回welcome_code。
  655. * 每次添加新客户时可能有多个企业自建应用/第三方应用收到带有welcome_code的回调事件,但仅有最先调用的可以发送成功。后续调用将返回41051(externaluser has started chatting)错误,请用户根据实际使用需求,合理设置应用可见范围,避免冲突。
  656. * 请求方式: POST(HTTP)
  657. *
  658. * 请求地址:https://qyapi.weixin.qq.com/cgi-bin/externalcontact/send_welcome_msg?access_token=ACCESS_TOKEN
  659. *
  660. * <a href="https://work.weixin.qq.com/api/doc/90000/90135/92137">文档地址</a>
  661. * </pre>
  662. *
  663. * @param msg .
  664. * @throws WxErrorException .
  665. */
  666. void sendWelcomeMsg(WxCpWelcomeMsg msg) throws WxErrorException;
  667. /**
  668. * <pre>
  669. * 企业可通过此接口获取企业客户标签详情。
  670. * </pre>
  671. *
  672. * @param tagId the tag id
  673. * @return corp tag list
  674. * @throws WxErrorException the wx error exception
  675. */
  676. WxCpUserExternalTagGroupList getCorpTagList(String[] tagId) throws WxErrorException;
  677. /**
  678. * <pre>
  679. * 企业可通过此接口获取企业客户标签详情。
  680. * 若tag_id和group_id均为空,则返回所有标签。
  681. * 同时传递tag_id和group_id时,忽略tag_id,仅以group_id作为过滤条件。
  682. * </pre>
  683. *
  684. * @param tagId the tag id
  685. * @param groupId the tagGroup id
  686. * @return corp tag list
  687. * @throws WxErrorException the wx error exception
  688. */
  689. WxCpUserExternalTagGroupList getCorpTagList(String[] tagId, String[] groupId) throws WxErrorException;
  690. /**
  691. * <pre>
  692. * 企业可通过此接口向客户标签库中添加新的标签组和标签,每个企业最多可配置3000个企业标签。
  693. * 暂不支持第三方调用。
  694. * </pre>
  695. *
  696. * @param tagGroup the tag group
  697. * @return wx cp user external tag group info
  698. * @throws WxErrorException the wx error exception
  699. */
  700. WxCpUserExternalTagGroupInfo addCorpTag(WxCpUserExternalTagGroupInfo tagGroup) throws WxErrorException;
  701. /**
  702. * <pre>
  703. * 企业可通过此接口编辑客户标签/标签组的名称或次序值。
  704. * 暂不支持第三方调用。
  705. * </pre>
  706. *
  707. * @param id the id
  708. * @param name the name
  709. * @param order the order
  710. * @return wx cp base resp
  711. * @throws WxErrorException the wx error exception
  712. */
  713. WxCpBaseResp editCorpTag(String id, String name, Integer order) throws WxErrorException;
  714. /**
  715. * <pre>
  716. * 企业可通过此接口删除客户标签库中的标签,或删除整个标签组。
  717. * 暂不支持第三方调用。
  718. * </pre>
  719. *
  720. * @param tagId the tag id
  721. * @param groupId the group id
  722. * @return wx cp base resp
  723. * @throws WxErrorException the wx error exception
  724. */
  725. WxCpBaseResp delCorpTag(String[] tagId, String[] groupId) throws WxErrorException;
  726. /**
  727. * <pre>
  728. * 企业可通过此接口为指定成员的客户添加上由企业统一配置的标签。
  729. * <a href="https://work.weixin.qq.com/api/doc/90000/90135/92117">文档地址</a>
  730. * </pre>
  731. *
  732. * @param userid the userid
  733. * @param externalUserid the external userid
  734. * @param addTag the add tag
  735. * @param removeTag the remove tag
  736. * @return wx cp base resp
  737. * @throws WxErrorException the wx error exception
  738. */
  739. WxCpBaseResp markTag(String userid, String externalUserid, String[] addTag, String[] removeTag) throws WxErrorException;
  740. /**
  741. * <pre>
  742. * 企业和第三方应用可通过该接口创建客户朋友圈的发表任务。
  743. * <a href="https://open.work.weixin.qq.com/api/doc/90000/90135/95094">文档地址</a>
  744. * </pre>
  745. *
  746. * @param task the task
  747. * @return wx cp add moment result
  748. * @throws WxErrorException the wx error exception
  749. */
  750. WxCpAddMomentResult addMomentTask(WxCpAddMomentTask task) throws WxErrorException;
  751. /**
  752. * <pre>
  753. * 由于发表任务的创建是异步执行的,应用需要再调用该接口以获取创建的结果。
  754. * <a href="https://open.work.weixin.qq.com/api/doc/90000/90135/95094">文档地址</a>
  755. * </pre>
  756. *
  757. * @param jobId 异步任务id,最大长度为64字节,由创建发表内容到客户朋友圈任务接口获取
  758. * @return moment task result
  759. * @throws WxErrorException the wx error exception
  760. */
  761. WxCpGetMomentTaskResult getMomentTaskResult(String jobId) throws WxErrorException;
  762. /**
  763. * <pre>
  764. * 获取客户朋友圈全部的发表记录 获取企业全部的发表列表
  765. * <a href="https://open.work.weixin.qq.com/api/doc/90000/90135/93333">文档地址</a>
  766. * </pre>
  767. *
  768. * @param startTime 朋友圈记录开始时间。Unix时间戳
  769. * @param endTime 朋友圈记录结束时间。Unix时间戳
  770. * @param creator 朋友圈创建人的userid
  771. * @param filterType 朋友圈类型。0:企业发表 1:个人发表 2:所有,包括个人创建以及企业创建,默认情况下为所有类型
  772. * @param cursor 用于分页查询的游标,字符串类型,由上一次调用返回,首次调用可不填
  773. * @param limit 返回的最大记录数,整型,最大值100,默认值100,超过最大值时取默认值
  774. * @return moment list
  775. * @throws WxErrorException the wx error exception
  776. */
  777. WxCpGetMomentList getMomentList(Long startTime, Long endTime, String creator, Integer filterType,
  778. String cursor, Integer limit) throws WxErrorException;
  779. /**
  780. * <pre>
  781. * 获取客户朋友圈全部的发表记录 获取客户朋友圈企业发表的列表
  782. * <a href="https://open.work.weixin.qq.com/api/doc/90000/90135/93333">文档地址</a>
  783. * </pre>
  784. *
  785. * @param momentId 朋友圈id,仅支持企业发表的朋友圈id
  786. * @param cursor 用于分页查询的游标,字符串类型,由上一次调用返回,首次调用可不填
  787. * @param limit 返回的最大记录数,整型,最大值1000,默认值500,超过最大值时取默认值
  788. * @return moment task
  789. * @throws WxErrorException the wx error exception
  790. */
  791. WxCpGetMomentTask getMomentTask(String momentId, String cursor, Integer limit)
  792. throws WxErrorException;
  793. /**
  794. * <pre>
  795. * 获取客户朋友圈全部的发表记录 获取客户朋友圈发表时选择的可见范围
  796. * <a href="https://open.work.weixin.qq.com/api/doc/90000/90135/93333">文档地址</a>
  797. * </pre>
  798. *
  799. * @param momentId 朋友圈id
  800. * @param userId 企业发表成员userid,如果是企业创建的朋友圈,可以通过获取客户朋友圈企业发表的
  801. * 列表获取已发表成员userid,如果是个人创建的朋友圈,创建人userid就是企业发表成员userid
  802. * @param cursor 用于分页查询的游标,字符串类型,由上一次调用返回,首次调用可不填
  803. * @param limit 返回的最大记录数,整型,最大值1000,默认值500,超过最大值时取默认值
  804. * @return moment customer list
  805. * @throws WxErrorException the wx error exception
  806. */
  807. WxCpGetMomentCustomerList getMomentCustomerList(String momentId, String userId,
  808. String cursor, Integer limit) throws WxErrorException;
  809. /**
  810. * <pre>
  811. * 获取客户朋友圈全部的发表记录 获取客户朋友圈发表后的可见客户列表
  812. * <a href="https://open.work.weixin.qq.com/api/doc/90000/90135/93333">文档地址</a>
  813. * </pre>
  814. *
  815. * @param momentId 朋友圈id
  816. * @param userId 企业发表成员userid,如果是企业创建的朋友圈,可以通过获取客户朋友圈企业发表的列表获取已发表成员userid,
  817. * 如果是个人创建的朋友圈,创建人userid就是企业发表成员userid
  818. * @param cursor 用于分页查询的游标,字符串类型,由上一次调用返回,首次调用可不填
  819. * @param limit 返回的最大记录数,整型,最大值5000,默认值3000,超过最大值时取默认值
  820. * @return moment send result
  821. * @throws WxErrorException the wx error exception
  822. */
  823. WxCpGetMomentSendResult getMomentSendResult(String momentId, String userId,
  824. String cursor, Integer limit) throws WxErrorException;
  825. /**
  826. * <pre>
  827. * 获取客户朋友圈全部的发表记录 获取客户朋友圈的互动数据
  828. * <a href="https://open.work.weixin.qq.com/api/doc/90000/90135/93333">文档地址</a>
  829. * </pre>
  830. *
  831. * @param momentId 朋友圈id
  832. * @param userId 企业发表成员userid,如果是企业创建的朋友圈,可以通过获取客户朋友圈企业发表的列表获取已发表成员userid,
  833. * 如果是个人创建的朋友圈,创建人userid就是企业发表成员userid
  834. * @return moment comments
  835. * @throws WxErrorException the wx error exception
  836. */
  837. WxCpGetMomentComments getMomentComments(String momentId, String userId)
  838. throws WxErrorException;
  839. /**
  840. * <pre>
  841. * 企业和第三方应用可通过此接口获取企业与成员的群发记录。
  842. * <a href="https://work.weixin.qq.com/api/doc/90000/90135/93338">文档地址</a>
  843. * </pre>
  844. *
  845. * @param chatType 群发任务的类型,默认为single,表示发送给客户,group表示发送给客户群
  846. * @param startTime 群发任务记录开始时间
  847. * @param endTime 群发任务记录结束时间
  848. * @param creator 群发任务创建人企业账号id
  849. * @param filterType 创建人类型。0:企业发表 1:个人发表 2:所有,包括个人创建以及企业创建,默认情况下为所有类型
  850. * @param limit 返回的最大记录数,整型,最大值100,默认值50,超过最大值时取默认值
  851. * @param cursor 用于分页查询的游标,字符串类型,由上一次调用返回,首次调用可不填
  852. * @return wx cp base resp
  853. * @throws WxErrorException the wx error exception
  854. */
  855. WxCpGroupMsgListResult getGroupMsgListV2(String chatType, Date startTime, Date endTime,
  856. String creator, Integer filterType, Integer limit, String cursor) throws WxErrorException;
  857. /**
  858. * <pre>
  859. * 企业和第三方应用可通过此接口获取企业与成员的群发记录。
  860. * <a href="https://work.weixin.qq.com/api/doc/90000/90135/93338#获取企业群发成员执行结果">获取企业群发成员执行结果</a>
  861. * </pre>
  862. *
  863. * @param msgid 群发消息的id,通过获取群发记录列表接口返回
  864. * @param userid 发送成员userid,通过获取群发成员发送任务列表接口返回
  865. * @param limit 返回的最大记录数,整型,最大值1000,默认值500,超过最大值时取默认值
  866. * @param cursor 用于分页查询的游标,字符串类型,由上一次调用返回,首次调用可不填
  867. * @return wx cp base resp
  868. * @throws WxErrorException the wx error exception
  869. */
  870. WxCpGroupMsgSendResult getGroupMsgSendResult(String msgid, String userid, Integer limit, String cursor) throws WxErrorException;
  871. /**
  872. * <pre>
  873. * 企业跟第三方应用可通过该接口获取到创建企业群发的群发发送结果。
  874. * <a href="https://work.weixin.qq.com/api/doc/16251">文档</a>
  875. * </pre>
  876. *
  877. * @param msgid 群发消息的id,通过创建企业群发接口返回
  878. * @param limit 返回的最大记录数,整型,最大值10000,默认值10000
  879. * @param cursor 用于分页查询的游标,字符串类型,由上一次调用返回,首次调用可不填
  880. * @return wx cp base resp
  881. * @throws WxErrorException the wx error exception
  882. */
  883. WxCpGroupMsgResult getGroupMsgResult(String msgid, Integer limit, String cursor) throws WxErrorException;
  884. /**
  885. * <pre>
  886. * 获取群发成员发送任务列表。
  887. * <a href="https://work.weixin.qq.com/api/doc/90000/90135/93338#获取群发成员发送任务列表">获取群发成员发送任务列表</a>
  888. * </pre>
  889. *
  890. * @param msgid 群发消息的id,通过获取群发记录列表接口返回
  891. * @param limit 返回的最大记录数,整型,最大值1000,默认值500,超过最大值时取默认值
  892. * @param cursor 用于分页查询的游标,字符串类型,由上一次调用返回,首次调用可不填
  893. * @return wx cp base resp
  894. * @throws WxErrorException the wx error exception
  895. */
  896. WxCpGroupMsgTaskResult getGroupMsgTask(String msgid, Integer limit, String cursor) throws WxErrorException;
  897. /**
  898. * <pre>
  899. * 添加入群欢迎语素材。
  900. * <a href="https://open.work.weixin.qq.com/api/doc/90000/90135/92366#添加入群欢迎语素材">添加入群欢迎语素材</a>
  901. * </pre>
  902. *
  903. * @param template 素材内容
  904. * @return template_id 欢迎语素材id
  905. * @throws WxErrorException the wx error exception
  906. */
  907. String addGroupWelcomeTemplate(WxCpGroupWelcomeTemplateResult template) throws WxErrorException;
  908. /**
  909. * <pre>
  910. * 编辑入群欢迎语素材。
  911. * <a href="https://open.work.weixin.qq.com/api/doc/90000/90135/92366#编辑入群欢迎语素材">编辑入群欢迎语素材</a>
  912. * </pre>
  913. *
  914. * @param template the template
  915. * @return wx cp base resp
  916. * @throws WxErrorException the wx error exception
  917. */
  918. WxCpBaseResp editGroupWelcomeTemplate(WxCpGroupWelcomeTemplateResult template) throws WxErrorException;
  919. /**
  920. * <pre>
  921. * 获取入群欢迎语素材。
  922. * <a href="https://open.work.weixin.qq.com/api/doc/90000/90135/92366#获取入群欢迎语素材">获取入群欢迎语素材</a>
  923. * </pre>
  924. *
  925. * @param templateId 群欢迎语的素材id
  926. * @return wx cp base resp
  927. * @throws WxErrorException the wx error exception
  928. */
  929. WxCpGroupWelcomeTemplateResult getGroupWelcomeTemplate(String templateId) throws WxErrorException;
  930. /**
  931. * <pre>
  932. * 删除入群欢迎语素材。
  933. * 企业可通过此API删除入群欢迎语素材,且仅能删除调用方自己创建的入群欢迎语素材。
  934. * <a href="https://open.work.weixin.qq.com/api/doc/90000/90135/92366#删除入群欢迎语素材">删除入群欢迎语素材</a>
  935. * </pre>
  936. *
  937. * @param templateId 群欢迎语的素材id
  938. * @param agentId the agent id
  939. * @return wx cp base resp
  940. * @throws WxErrorException the wx error exception
  941. */
  942. WxCpBaseResp delGroupWelcomeTemplate(String templateId, String agentId) throws WxErrorException;
  943. /**
  944. * <pre>
  945. * 获取商品图册
  946. * <a href="https://work.weixin.qq.com/api/doc/90000/90135/95096#获取商品图册列表">获取商品图册列表</a>
  947. * </pre>
  948. *
  949. * @param limit 返回的最大记录数,整型,最大值100,默认值50,超过最大值时取默认值
  950. * @param cursor 用于分页查询的游标,字符串类型,由上一次调用返回,首次调用可不填
  951. * @return wx cp base resp
  952. * @throws WxErrorException the wx error exception
  953. */
  954. WxCpProductAlbumListResult getProductAlbumList(Integer limit, String cursor) throws WxErrorException;
  955. /**
  956. * <pre>
  957. * 获取商品图册
  958. * <a href="https://work.weixin.qq.com/api/doc/90000/90135/95096#获取商品图册">获取商品图册</a>
  959. * </pre>
  960. *
  961. * @param productId 商品id
  962. * @return wx cp base resp
  963. * @throws WxErrorException the wx error exception
  964. */
  965. WxCpProductAlbumResult getProductAlbum(String productId) throws WxErrorException;
  966. /**
  967. * <pre>
  968. * 上传附件资源
  969. * <a href="https://open.work.weixin.qq.com/api/doc/90001/90143/95178">...</a>
  970. * </pre>
  971. *
  972. * @param mediaType the media type
  973. * @param fileType the file type
  974. * @param attachmentType the attachment type
  975. * @param inputStream the input stream
  976. * @return wx media upload result
  977. * @throws WxErrorException the wx error exception
  978. * @throws IOException the io exception
  979. */
  980. WxMediaUploadResult uploadAttachment(String mediaType, String fileType, Integer attachmentType,
  981. InputStream inputStream) throws WxErrorException, IOException;
  982. /**
  983. * <pre>
  984. * 上传附件资源
  985. * <a href="https://open.work.weixin.qq.com/api/doc/90001/90143/95178">...</a>
  986. * </pre>
  987. *
  988. * @param mediaType the media type
  989. * @param attachmentType the attachment type
  990. * @param file the file
  991. * @return wx media upload result
  992. * @throws WxErrorException the wx error exception
  993. */
  994. WxMediaUploadResult uploadAttachment(String mediaType, Integer attachmentType, File file)
  995. throws WxErrorException;
  996. /**
  997. * <pre>
  998. * 新建敏感词规则
  999. * 企业和第三方应用可以通过此接口新建敏感词规则
  1000. * 请求方式:POST(HTTPS)
  1001. * 请求地址:https://qyapi.weixin.qq.com/cgi-bin/externalcontact/add_intercept_rule?access_token=ACCESS_TOKEN
  1002. * <pre>
  1003. * @param ruleAddRequest the rule add request
  1004. * @return 规则id
  1005. * @throws WxErrorException the wx error exception
  1006. */
  1007. String addInterceptRule(WxCpInterceptRuleAddRequest ruleAddRequest) throws WxErrorException;
  1008. /**
  1009. * <pre>
  1010. * 修改敏感词规则
  1011. * <a href="https://developer.work.weixin.qq.com/document/path/95097#%E4%BF%AE%E6%94%B9%E6%95%8F%E6%84%9F%E8%AF%8D%E8%A7%84%E5%88%99">文档地址</a>
  1012. * 企业和第三方应用可以通过此接口修改敏感词规则
  1013. * 请求方式:POST(HTTPS)
  1014. * 请求地址:https://qyapi.weixin.qq.com/cgi-bin/externalcontact/update_intercept_rule?access_token=ACCESS_TOKEN
  1015. * <pre>
  1016. * @param interceptRule the rule
  1017. * @throws WxErrorException the wx error exception
  1018. */
  1019. void updateInterceptRule(WxCpInterceptRule interceptRule) throws WxErrorException;
  1020. /**
  1021. * <pre>
  1022. * 删除敏感词规则
  1023. * 企业和第三方应用可以通过此接口修改敏感词规则
  1024. * 请求方式:POST(HTTPS)
  1025. * <a href="https://qyapi.weixin.qq.com/cgi-bin/externalcontact/del_intercept_rule?access_token=ACCESS_TOKEN">请求地址</a>
  1026. * <pre>
  1027. * @param ruleId 规则id
  1028. * @throws WxErrorException the wx error exception
  1029. */
  1030. void delInterceptRule(String ruleId) throws WxErrorException;
  1031. /**
  1032. * <pre>
  1033. * 创建商品图册
  1034. * 企业和第三方应用可以通过此接口增加商品
  1035. * 请求方式:POST(HTTPS)
  1036. * 请求地址:
  1037. * <a href="https://qyapi.weixin.qq.com/cgi-bin/externalcontact/add_product_album?access_token=ACCESS_TOKEN">https://qyapi.weixin.qq.com/cgi-bin/externalcontact/add_product_album?access_token=ACCESS_TOKEN</a>
  1038. * <a href="https://developer.work.weixin.qq.com/document/path/95096#%E5%88%9B%E5%BB%BA%E5%95%86%E5%93%81%E5%9B%BE%E5%86%8C">文档地址</a>
  1039. * <pre>
  1040. * @param wxCpProductAlbumInfo 商品图册信息
  1041. * @return 商品id string
  1042. * @throws WxErrorException the wx error exception
  1043. */
  1044. String addProductAlbum(WxCpProductAlbumInfo wxCpProductAlbumInfo) throws WxErrorException;
  1045. /**
  1046. * <pre>
  1047. * 编辑商品图册
  1048. * 企业和第三方应用可以通过此接口修改商品信息
  1049. * 请求方式:POST(HTTPS)
  1050. * 请求地址:
  1051. * <a href="https://qyapi.weixin.qq.com/cgi-bin/externalcontact/update_product_album?access_token=ACCESS_TOKEN">https://qyapi.weixin.qq.com/cgi-bin/externalcontact/update_product_album?access_token=ACCESS_TOKEN</a>
  1052. * <a href="https://developer.work.weixin.qq.com/document/path/95096#%E7%BC%96%E8%BE%91%E5%95%86%E5%93%81%E5%9B%BE%E5%86%8C">文档地址</a>
  1053. * <pre>
  1054. * @param wxCpProductAlbumInfo 商品图册信息
  1055. * @throws WxErrorException the wx error exception
  1056. */
  1057. void updateProductAlbum(WxCpProductAlbumInfo wxCpProductAlbumInfo) throws WxErrorException;
  1058. /**
  1059. * <pre>
  1060. * 删除商品图册
  1061. * 企业和第三方应用可以通过此接口删除商品信息
  1062. * 请求方式:POST(HTTPS)
  1063. * 请求地址:
  1064. * <a href="https://qyapi.weixin.qq.com/cgi-bin/externalcontact/delete_product_album?access_token=ACCESS_TOKEN">https://qyapi.weixin.qq.com/cgi-bin/externalcontact/delete_product_album?access_token=ACCESS_TOKEN</a>
  1065. *
  1066. * <a href="https://developer.work.weixin.qq.com/document/path/95096#%E5%88%A0%E9%99%A4%E5%95%86%E5%93%81%E5%9B%BE%E5%86%8C">文档地址</a>
  1067. * <pre>
  1068. * @param productId 商品id
  1069. * @throws WxErrorException the wx error exception
  1070. */
  1071. void deleteProductAlbum(String productId) throws WxErrorException;
  1072. }