MutliServiceAPI.cs 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. /*--------------------------------------------------------------------------
  2. * MutliServiceAPI.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 LYFZ.Weixin.SDK.Helpers;
  15. namespace LYFZ.Weixin.SDK
  16. {
  17. /// <summary>
  18. /// 多客服功能
  19. /// http://mp.weixin.qq.com/wiki/5/ae230189c9bd07a6b221f48619aeef35.html
  20. /// 开发者可根据用户发给公众号的消息内容,选择是转发给客服还是直接回复,
  21. /// 如果是转发给客服,调用本API创建客服消息后回传给微信服务器即可
  22. /// PC客户端自定义插件接口无API包装!!!
  23. /// </summary>
  24. public class MutliServiceAPI
  25. {
  26. /// <summary>
  27. /// 构建多客服消息,用于回复微信服务器提交过来的用户消息
  28. ///
  29. /// </summary>
  30. /// <param name="toUserName">发送方帐号(一个OpenID)</param>
  31. /// <param name="fromUserName">开发者微信号</param>
  32. /// <returns></returns>
  33. public static string BuildTransferCustomerServiceMessage(string toUserName, string fromUserName)
  34. {
  35. return string.Format("<xml>" +
  36. "<ToUserName><![CDATA[{0}]]></ToUserName>" +
  37. "<FromUserName><![CDATA[{1}]]></FromUserName>" +
  38. "<CreateTime>{2}</CreateTime>" +
  39. "<MsgType><![CDATA[transfer_customer_service]]></MsgType>" +
  40. "</xml>", toUserName, Util.CreateTimestamp(), fromUserName);
  41. }
  42. /// <summary>
  43. /// 构建消息转发到指定客服的多客服消息,用于回复微信服务器提交过来的用户消息
  44. /// </summary>
  45. /// <param name="toUserName">发送方帐号(一个OpenID)</param>
  46. /// <param name="fromUserName">开发者微信号</param>
  47. /// <param name="kfAccount">指定会话接入的客服账号</param>
  48. /// <returns></returns>
  49. public static string BuildTransferCustomerServiceMessage(string toUserName, string fromUserName, string kfAccount)
  50. {
  51. return string.Format("<xml>" +
  52. "<ToUserName><![CDATA[{0}]]></ToUserName>" +
  53. "<FromUserName><![CDATA[{1}]]></FromUserName>" +
  54. "<CreateTime>{2}</CreateTime>" +
  55. "<MsgType><![CDATA[transfer_customer_service]]></MsgType>" +
  56. "<TransInfo><KfAccount><![CDATA[{3}]]></KfAccount></TransInfo>" +
  57. "</xml>", toUserName, Util.CreateTimestamp(), fromUserName, kfAccount);
  58. }
  59. /// <summary>
  60. /// 获取客服聊天记录接口
  61. /// </summary>
  62. /// <param name="access_token"></param>
  63. /// <param name="openid"></param>
  64. /// <param name="starttime"></param>
  65. /// <param name="endtime"></param>
  66. /// <param name="pagesize"></param>
  67. /// <param name="pageindex"></param>
  68. /// <returns></returns>
  69. public static dynamic GetChatRecord(string access_token, string openid, int starttime, int endtime, int pagesize, int pageindex)
  70. {
  71. var builder = new StringBuilder();
  72. builder
  73. .Append("{")
  74. .Append('"' + "starttime" + '"' + ":").Append(starttime).Append(",")
  75. .Append('"' + "endtime" + '"' + ":").Append(endtime).Append(",")
  76. .Append('"' + "openid" + '"' + ":").Append(openid).Append(",")
  77. .Append('"' + "pagesize" + '"' + ":").Append(pagesize).Append(",")
  78. .Append('"' + "pageindex" + '"' + ":").Append(pageindex)
  79. .Append("}");
  80. var client = new HttpClient();
  81. var result = client.PostAsync(string.Format("https://api.weixin.qq.com/cgi-bin/customservice/getrecord?access_token={0}", access_token), new StringContent(builder.ToString())).Result;
  82. return DynamicJson.Parse(result.Content.ReadAsStringAsync().Result);
  83. }
  84. /// <summary>
  85. /// 解释聊天记录的opercode的含义
  86. /// </summary>
  87. /// <param name="opercode"></param>
  88. /// <returns></returns>
  89. public static string ExplainOpercode(int opercode)
  90. {
  91. switch (opercode)
  92. {
  93. case 1000:
  94. return "创建未接入会话";
  95. case 1001:
  96. return "接入会话";
  97. case 1002:
  98. return "主动发起会话";
  99. case 1004:
  100. return "关闭会话";
  101. case 1005:
  102. return "抢接会话";
  103. case 2001:
  104. return "公众号收到消息";
  105. case 2002:
  106. return "客服发送消息";
  107. case 2003:
  108. return "客服收到消息";
  109. default:
  110. return "";
  111. }
  112. }
  113. }
  114. }