MessageRequest.cs 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. // Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
  2. //
  3. // 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
  4. //
  5. // 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
  6. using Admin.NET.Plugin.DingTalk.RequestProxy.Message.DTO;
  7. using NewLife;
  8. namespace Admin.NET.Plugin.DingTalk.RequestProxy.Message;
  9. public class MessageRequest : IScoped
  10. {
  11. private readonly IMessageRequestProxy _request;
  12. public MessageRequest(IMessageRequestProxy request)
  13. {
  14. _request = request;
  15. }
  16. /// <summary>
  17. /// 发送工作通知 -- markdown消息
  18. /// </summary>
  19. /// <param name="accessToken"></param>
  20. /// <param name="agentId">发送消息时使用的微应用的AgentID</param>
  21. /// <param name="useridList">接收者的userid列表,最大用户列表长度100</param>
  22. /// <param name="deptIdList">接收者的部门id列表,最大列表长度20。接收者是部门ID时,包括子部门下的所有用户</param>
  23. /// <param name="mdTitle">首屏会话透出的展示内容</param>
  24. /// <param name="mdText">markdown格式的消息,最大不超过5000字符</param>
  25. /// <param name="toAllUser">是否发送给企业全部用户</param>
  26. /// <returns></returns>
  27. public async Task<SendCorpConversationResponse> SendCorpMarkdown(string accessToken, long agentId, List<string>? useridList, List<long> deptIdList
  28. , string mdTitle, string mdText, bool toAllUser = false)
  29. {
  30. var resStr = await _request.SendCorpConversation(accessToken, new SendCorpConversationRequest
  31. {
  32. AgentId = agentId,
  33. UserIdList = useridList?.ToArray().Join(),
  34. DeptIdList = deptIdList?.ToArray().Join(),
  35. ToAllUser = toAllUser,
  36. Msg = new MsgDomain
  37. {
  38. MsgType = SendCorpConversationMsgTypeEnum.markdown,
  39. Markdown = new MsgMarkdownDomain
  40. {
  41. Title = mdTitle,
  42. Text = mdText,
  43. }
  44. }
  45. });
  46. var res = resStr.ToObject<SendCorpConversationResponse>();
  47. return res;
  48. }
  49. /// <summary>
  50. /// 发送工作通知 -- 卡片消息
  51. /// </summary>
  52. /// <param name="accessToken"></param>
  53. /// <param name="agentId">发送消息时使用的微应用的AgentID</param>
  54. /// <param name="useridList">接收者的userid列表,最大用户列表长度100</param>
  55. /// <param name="deptIdList">接收者的部门id列表,最大列表长度20。接收者是部门ID时,包括子部门下的所有用户</param>
  56. /// <param name="markdown">消息内容,支持markdown,语法参考标准markdown语法。建议1000个字符以内</param>
  57. /// <param name="title">透出到会话列表和通知的文案</param>
  58. /// <param name="singleTitle">使用整体跳转ActionCard样式时的标题。必须与single_url同时设置,最长20个字符</param>
  59. /// <param name="singleUrl">消息点击链接地址,当发送消息为小程序时支持小程序跳转链接,最长500个字符</param>
  60. /// <param name="btnOrientation">使用独立跳转ActionCard样式时的按钮排列方式</param>
  61. /// <param name="btnJsonList">使用独立跳转ActionCard样式时的按钮列表;必须与btn_orientation同时设置,且长度不超过1000字符</param>
  62. /// <param name="toAllUser">是否发送给企业全部用户</param>
  63. /// <returns></returns>
  64. public async Task<SendCorpConversationResponse> SendCorpActionCard(string accessToken, long agentId, List<string>? useridList, List<long>? deptIdList
  65. , string markdown, string? title = null, string? singleTitle = null, string? singleUrl = null
  66. , ActionCardBtnOrientationEnum? btnOrientation = null, MsgActionCardBtnJsonListDomain[]? btnJsonList = null
  67. , bool toAllUser = false)
  68. {
  69. var resStr = await _request.SendCorpConversation(accessToken, new SendCorpConversationRequest
  70. {
  71. AgentId = agentId,
  72. UserIdList = useridList?.ToArray().Join(),
  73. DeptIdList = deptIdList?.ToArray().Join(),
  74. ToAllUser = toAllUser,
  75. Msg = new MsgDomain
  76. {
  77. MsgType = SendCorpConversationMsgTypeEnum.action_card,
  78. ActionCard = new MsgActionCardDomain
  79. {
  80. Markdown = markdown,
  81. Title = title,
  82. SingleTitle = singleTitle,
  83. SingleUrl = singleUrl,
  84. BtnOrientation = btnOrientation,
  85. BtnJsonList = btnJsonList
  86. }
  87. }
  88. });
  89. var res = resStr.ToObject<SendCorpConversationResponse>();
  90. return res;
  91. }
  92. }