ServiceAdminAPI.cs 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. /*--------------------------------------------------------------------------
  2. * ServiceAdminAPI.cs
  3. *Auth:deepleo
  4. * Date:2015.01.15
  5. * Email:2586662969@qq.com
  6. * Website:http://www.weixinsdk.net
  7. *--------------------------------------------------------------------------*/
  8. using System;
  9. using System.Collections.Generic;
  10. using System.Linq;
  11. using System.Text;
  12. using System.Net.Http;
  13. using Codeplex.Data;
  14. using System.IO;
  15. namespace LYFZ.Weixin.SDK
  16. {
  17. /// <summary>
  18. /// 客服管理
  19. /// http://mp.weixin.qq.com/wiki/9/6fff6f191ef92c126b043ada035cc935.html
  20. /// </summary>
  21. public class ServiceAdminAPI
  22. {
  23. /// <summary>
  24. /// 获取客服基本信息
  25. /// </summary>
  26. /// <param name="access_token"></param>
  27. /// <returns>success: {"errcode" : 0,"errmsg" : "ok",}; 其他代码请使用ExplainCode解析返回代码含义 </returns>
  28. public static dynamic GetServiceInfo(string access_token)
  29. {
  30. var url = string.Format("https://api.weixin.qq.com/cgi-bin/customservice/getkflist?access_token={0}", access_token);
  31. var client = new HttpClient();
  32. var result = client.GetAsync(url).Result;
  33. return DynamicJson.Parse(result.Content.ReadAsStringAsync().Result);
  34. }
  35. /// <summary>
  36. /// 获取在线客服接待信息
  37. /// kf_account 完整客服账号,格式为:账号前缀@公众号微信号
  38. /// status 客服在线状态 1:pc在线,2:手机在线。若pc和手机同时在线则为 1+2=3
  39. /// kf_id 客服工号
  40. /// auto_accept 客服设置的最大自动接入数
  41. /// accepted_case 客服当前正在接待的会话数
  42. /// </summary>
  43. /// <param name="access_token"></param>
  44. /// <returns>success: {"errcode" : 0,"errmsg" : "ok",}; 其他代码请使用ExplainCode解析返回代码含义 </returns>
  45. public static dynamic GetOnlineServiceInfo(string access_token)
  46. {
  47. var url = string.Format("https://api.weixin.qq.com/cgi-bin/customservice/getonlinekflist?access_token={0}", access_token);
  48. var client = new HttpClient();
  49. var result = client.GetAsync(url).Result;
  50. return DynamicJson.Parse(result.Content.ReadAsStringAsync().Result);
  51. }
  52. /// <summary>
  53. /// 添加客服账号
  54. /// 开发者通过本接口可以为公众号添加客服账号,每个公众号最多添加10个客服账号。
  55. /// </summary>
  56. /// <param name="access_token"></param>
  57. /// <param name="kf_account">完整客服账号,格式为:账号前缀@公众号微信号,账号前缀最多10个字符,必须是英文或者数字字符。如果没有公众号微信号,请前往微信公众平台设置。</param>
  58. /// <param name="nickname">客服昵称,最长6个汉字或12个英文字符</param>
  59. /// <param name="pswmd5">客服账号登录密码,格式为密码明文的32位加密MD5值</param>
  60. /// <returns>success: {"errcode" : 0,"errmsg" : "ok",}; 其他代码请使用ExplainCode解析返回代码含义 </returns>
  61. public static dynamic AddService(string access_token, string kf_account, string nickname, string pswmd5)
  62. {
  63. var url = string.Format("https://api.weixin.qq.com/cgi-bin/media/uploadnews?access_token={0}", access_token);
  64. var builder = new StringBuilder();
  65. builder
  66. .Append("{")
  67. .Append('"' + "kf_account" + '"' + ":").Append(kf_account).Append(",")
  68. .Append('"' + "nickname" + '"' + ":").Append(nickname).Append(",")
  69. .Append('"' + "password" + '"' + ":").Append(pswmd5)
  70. .Append("}");
  71. var client = new HttpClient();
  72. var result = client.PostAsync(url, new StringContent(builder.ToString())).Result;
  73. return DynamicJson.Parse(result.Content.ReadAsStringAsync().Result);
  74. }
  75. /// <summary>
  76. /// 设置客服信息
  77. /// </summary>
  78. /// <param name="access_token"></param>
  79. /// <param name="kf_account">完整客服账号,格式为:账号前缀@公众号微信号,账号前缀最多10个字符,必须是英文或者数字字符。如果没有公众号微信号,请前往微信公众平台设置。</param>
  80. /// <param name="nickname">客服昵称,最长6个汉字或12个英文字符</param>
  81. /// <param name="pswmd5">客服账号登录密码,格式为密码明文的32位加密MD5值</param>
  82. /// <returns>success: {"errcode" : 0,"errmsg" : "ok",}; 其他代码请使用ExplainCode解析返回代码含义 </returns>
  83. public static dynamic UpdateService(string access_token, string kf_account, string nickname, string pswmd5)
  84. {
  85. var url = string.Format("https://api.weixin.qq.com/customservice/kfaccount/update?access_token={0}", access_token);
  86. var builder = new StringBuilder();
  87. builder
  88. .Append("{")
  89. .Append('"' + "kf_account" + '"' + ":").Append(kf_account).Append(",")
  90. .Append('"' + "nickname" + '"' + ":").Append(nickname).Append(",")
  91. .Append('"' + "password" + '"' + ":").Append(pswmd5)
  92. .Append("}");
  93. var client = new HttpClient();
  94. var result = client.PostAsync(url, new StringContent(builder.ToString())).Result;
  95. return DynamicJson.Parse(result.Content.ReadAsStringAsync().Result);
  96. }
  97. /// <summary>
  98. /// 上传客服头像
  99. /// </summary>
  100. /// <param name="access_token"></param>
  101. /// <param name="kf_account">完整客服账号,格式为:账号前缀@公众号微信号</param>
  102. /// <param name="icon"></param>
  103. /// <returns>success: {"errcode" : 0,"errmsg" : "ok",}; 其他代码请使用ExplainCode解析返回代码含义 </returns>
  104. public static dynamic UploadIcon(string access_token, string kf_account, string icon)
  105. {
  106. var url = string.Format("http://api.weixin.qq.com/customservice/kfacount/uploadheadimg?access_token={0}&kf_account={1}", access_token, kf_account);
  107. var client = new HttpClient();
  108. var result = client.PostAsync(url, new StreamContent(new FileStream(icon, FileMode.Open, FileAccess.Read)));
  109. if (!result.Result.IsSuccessStatusCode) return string.Empty;
  110. var media = DynamicJson.Parse(result.Result.Content.ReadAsStringAsync().Result);
  111. return media.media_id;
  112. }
  113. /// <summary>
  114. /// 删除客服账号
  115. /// </summary>
  116. /// <param name="access_token"></param>
  117. /// <param name="kf_account"></param>
  118. /// <returns>success: {"errcode" : 0,"errmsg" : "ok",}; 其他代码请使用ExplainCode解析返回代码含义 </returns>
  119. public static dynamic DeleteService(string access_token, string kf_account)
  120. {
  121. var url = string.Format("https://api.weixin.qq.com/customservice/kfaccount/del?access_token={0}&kf_account={1}", access_token, kf_account);
  122. var client = new HttpClient();
  123. var result = client.GetAsync(url).Result;
  124. return DynamicJson.Parse(result.Content.ReadAsStringAsync().Result);
  125. }
  126. /// <summary>
  127. /// 解释客服管理接口返回码说明
  128. /// </summary>
  129. /// <param name="opercode"></param>
  130. /// <returns></returns>
  131. public static string ExplainCode(int code)
  132. {
  133. switch (code)
  134. {
  135. case 0:
  136. return "成功(no error)";
  137. case 61451:
  138. return "参数错误(invalid parameter)";
  139. case 61452:
  140. return "无效客服账号(invalid kf_account)";
  141. case 61453:
  142. return "账号已存在(kf_account exsited)";
  143. case 61454:
  144. return "账号名长度超过限制(前缀10个英文字符)(invalid kf_acount length)";
  145. case 61455:
  146. return "账号名包含非法字符(英文+数字)(illegal character in kf_account)";
  147. case 61456:
  148. return "账号个数超过限制(10个客服账号)(kf_account count exceeded)";
  149. case 61457:
  150. return "无效头像文件类型(invalid file type)";
  151. default:
  152. return "";
  153. }
  154. }
  155. }
  156. }