SendCorpConversationRequest.cs 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475
  1. // Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
  2. //
  3. // 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
  4. //
  5. // 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
  6. using Newtonsoft.Json.Converters;
  7. using System.Text.Json.Serialization;
  8. namespace Admin.NET.Plugin.DingTalk.RequestProxy.Message.DTO;
  9. /// <summary>
  10. /// 发送工作通知
  11. /// </summary>
  12. public class SendCorpConversationRequest
  13. {
  14. /// <summary>
  15. /// 发送消息时使用的微应用的AgentID
  16. /// </summary>
  17. [JsonProperty("agent_id")]
  18. [JsonPropertyName("agent_id")]
  19. public long? AgentId { get; set; }
  20. /// <summary>
  21. /// 接收者的userid列表,最大用户列表长度100
  22. /// </summary>
  23. [JsonProperty("userid_list")]
  24. [JsonPropertyName("userid_list")]
  25. public string? UserIdList { get; set; }
  26. /// <summary>
  27. /// 接收者的部门id列表,最大列表长度20
  28. /// </summary>
  29. [JsonProperty("dept_id_list")]
  30. [JsonPropertyName("dept_id_list")]
  31. public string? DeptIdList { get; set; }
  32. /// <summary>
  33. /// 是否发送给企业全部用户
  34. /// </summary>
  35. [JsonProperty("to_all_user")]
  36. [JsonPropertyName("to_all_user")]
  37. public bool? ToAllUser { get; set; }
  38. /// <summary>
  39. /// 消息内容,最长不超过2048个字节
  40. /// </summary>
  41. [JsonProperty("msg")]
  42. [JsonPropertyName("msg")]
  43. public MsgDomain Msg { get; set; }
  44. }
  45. public class MsgDomain
  46. {
  47. /// <summary>
  48. /// 消息类型
  49. /// </summary>
  50. [JsonProperty("msgtype")]
  51. [JsonPropertyName("msgtype")]
  52. [Newtonsoft.Json.JsonConverter(typeof(StringEnumConverter))]
  53. public SendCorpConversationMsgTypeEnum MsgType { get; set; }
  54. /// <summary>
  55. /// 文本消息
  56. /// </summary>
  57. [JsonProperty("text")]
  58. [JsonPropertyName("text")]
  59. public MsgTextDomain? Text { get; set; }
  60. /// <summary>
  61. /// 图片消息
  62. /// </summary>
  63. [JsonProperty("image")]
  64. [JsonPropertyName("image")]
  65. public MsgImageDomain? Image { get; set; }
  66. /// <summary>
  67. /// 语音消息
  68. /// </summary>
  69. [JsonProperty("voice")]
  70. [JsonPropertyName("voice")]
  71. public MsgVoiceDomain? Voice { get; set; }
  72. /// <summary>
  73. /// 文件消息
  74. /// </summary>
  75. [JsonProperty("file")]
  76. [JsonPropertyName("file")]
  77. public MsgVoiceDomain? File { get; set; }
  78. /// <summary>
  79. /// 链接消息
  80. /// </summary>
  81. [JsonProperty("link")]
  82. [JsonPropertyName("link")]
  83. public MsgLinkDomain? Link { get; set; }
  84. /// <summary>
  85. /// OA消息
  86. /// </summary>
  87. [JsonProperty("oa")]
  88. [JsonPropertyName("oa")]
  89. public MsgOaDomain? Oa { get; set; }
  90. /// <summary>
  91. /// markdown消息
  92. /// </summary>
  93. [JsonProperty("markdown")]
  94. [JsonPropertyName("markdown")]
  95. public MsgMarkdownDomain? Markdown { get; set; }
  96. /// <summary>
  97. /// 卡片消息
  98. /// </summary>
  99. [JsonProperty("action_card")]
  100. [JsonPropertyName("action_card")]
  101. public MsgActionCardDomain? ActionCard { get; set; }
  102. }
  103. /// <summary>
  104. /// 消息类型
  105. /// </summary>
  106. [SuppressSniffer]
  107. [System.Text.Json.Serialization.JsonConverter(typeof(JsonStringEnumConverter))]
  108. public enum SendCorpConversationMsgTypeEnum
  109. {
  110. text, image, voice, file, link, oa, markdown, action_card
  111. }
  112. /// <summary>
  113. /// 文本消息
  114. /// </summary>
  115. public class MsgTextDomain
  116. {
  117. /// <summary>
  118. /// 消息内容,建议500字符以内
  119. /// </summary>
  120. [JsonProperty("content")]
  121. [JsonPropertyName("content")]
  122. public string Content { get; set; }
  123. }
  124. /// <summary>
  125. /// 图片消息
  126. /// </summary>
  127. public class MsgImageDomain
  128. {
  129. /// <summary>
  130. /// 媒体文件mediaid,建议宽600像素 x 400像素,宽高比3 : 2
  131. /// </summary>
  132. [JsonProperty("media_id")]
  133. [JsonPropertyName("media_id")]
  134. public string MediaId { get; set; }
  135. }
  136. /// <summary>
  137. /// 语音消息
  138. /// </summary>
  139. public class MsgVoiceDomain
  140. {
  141. /// <summary>
  142. /// 媒体文件ID
  143. /// </summary>
  144. [JsonProperty("media_id")]
  145. [JsonPropertyName("media_id")]
  146. public string MediaId { get; set; }
  147. /// <summary>
  148. /// 正整数,小于60,表示音频时长
  149. /// </summary>
  150. [JsonProperty("duration")]
  151. [JsonPropertyName("duration")]
  152. public string Duration { get; set; }
  153. }
  154. /// <summary>
  155. /// 文件消息
  156. /// </summary>
  157. public class MsgFileDomain
  158. {
  159. /// <summary>
  160. /// 媒体文件ID,引用的媒体文件最大10MB
  161. /// </summary>
  162. [JsonProperty("media_id")]
  163. [JsonPropertyName("media_id")]
  164. public string MediaId { get; set; }
  165. }
  166. /// <summary>
  167. /// 链接消息
  168. /// </summary>
  169. public class MsgLinkDomain
  170. {
  171. /// <summary>
  172. /// 消息点击链接地址,当发送消息为小程序时支持小程序跳转链接
  173. /// </summary>
  174. [JsonProperty("messageUrl")]
  175. [JsonPropertyName("messageUrl")]
  176. public string MessageUrl { get; set; }
  177. [JsonProperty("picUrl")]
  178. [JsonPropertyName("picUrl")]
  179. public string PicUrl { get; set; }
  180. /// <summary>
  181. /// 消息标题,建议100字符以内
  182. /// </summary>
  183. [JsonProperty("title")]
  184. [JsonPropertyName("title")]
  185. public string Title { get; set; }
  186. /// <summary>
  187. /// 消息描述,建议500字符以内
  188. /// </summary>
  189. [JsonProperty("text")]
  190. [JsonPropertyName("text")]
  191. public string Text { get; set; }
  192. }
  193. /// <summary>
  194. /// OA消息
  195. /// </summary>
  196. public class MsgOaDomain
  197. {
  198. /// <summary>
  199. /// 消息点击链接地址,当发送消息为小程序时支持小程序跳转链接
  200. /// </summary>
  201. [JsonProperty("message_url")]
  202. [JsonPropertyName("message_url")]
  203. public string MessageUrl { get; set; }
  204. /// <summary>
  205. /// PC端点击消息时跳转到的地址
  206. /// </summary>
  207. [JsonProperty("pc_message_url")]
  208. [JsonPropertyName("pc_message_url")]
  209. public string? PcMessageUrl { get; set; }
  210. /// <summary>
  211. /// 消息头部内容
  212. /// </summary>
  213. [JsonProperty("head")]
  214. [JsonPropertyName("head")]
  215. public MsgOaHeadDomain Head { get; set; }
  216. /// <summary>
  217. /// 消息体
  218. /// </summary>
  219. [JsonProperty("body")]
  220. [JsonPropertyName("body")]
  221. public MsgOaBodyDomain Body { get; set; }
  222. /// <summary>
  223. /// 消息状态栏,只支持接收者的userid列表,userid最多不能超过5个人
  224. /// </summary>
  225. [JsonProperty("status_bar")]
  226. [JsonPropertyName("status_bar")]
  227. public MsgOaStatusBarDomain? StatusBar { get; set; }
  228. }
  229. public class MsgOaHeadDomain
  230. {
  231. /// <summary>
  232. /// 消息头部的背景颜色。长度限制为8个英文字符,其中前2为表示透明度,后6位表示颜色值。不要添加0x。
  233. /// </summary>
  234. [JsonProperty("bgcolor")]
  235. [JsonPropertyName("bgcolor")]
  236. public string BgColor { get; set; }
  237. /// <summary>
  238. /// 消息的头部标题
  239. /// </summary>
  240. [JsonProperty("text")]
  241. [JsonPropertyName("text")]
  242. public string Text { get; set; }
  243. }
  244. public class MsgOaStatusBarDomain
  245. {
  246. /// <summary>
  247. /// 状态栏文案
  248. /// </summary>
  249. [JsonProperty("status_value")]
  250. [JsonPropertyName("status_value")]
  251. public string StatusValue { get; set; }
  252. /// <summary>
  253. /// 状态栏背景色,默认为黑色,推荐0xFF加六位颜色值
  254. /// </summary>
  255. [JsonProperty("status_bg")]
  256. [JsonPropertyName("status_bg")]
  257. public string StatusBg { get; set; }
  258. }
  259. public class MsgOaBodyDomain
  260. {
  261. /// <summary>
  262. /// 消息体的标题,建议50个字符以内
  263. /// </summary>
  264. [JsonProperty("title")]
  265. [JsonPropertyName("title")]
  266. public string? Title { get; set; }
  267. /// <summary>
  268. /// 消息体的表单,最多显示6个,超过会被隐藏
  269. /// </summary>
  270. [JsonProperty("form")]
  271. [JsonPropertyName("form")]
  272. public MsgOaBodyFormDomain[]? Form { get; set; }
  273. /// <summary>
  274. /// 单行富文本信息
  275. /// </summary>
  276. [JsonProperty("rich")]
  277. [JsonPropertyName("rich")]
  278. public MsgOaBodyRichDomain? Rich { get; set; }
  279. /// <summary>
  280. /// 消息体的内容,最多显示3行
  281. /// </summary>
  282. [JsonProperty("content")]
  283. [JsonPropertyName("content")]
  284. public string? Content { get; set; }
  285. /// <summary>
  286. /// 消息体中的图片,支持图片资源@mediaId。建议宽600像素 x 400像素,宽高比3 : 2
  287. /// </summary>
  288. [JsonProperty("image")]
  289. [JsonPropertyName("image")]
  290. public string? Image { get; set; }
  291. /// <summary>
  292. /// 自定义的附件数目。此数字仅供显示,钉钉不作验证
  293. /// </summary>
  294. [JsonProperty("file_count")]
  295. [JsonPropertyName("file_count")]
  296. public string? FileCount { get; set; }
  297. /// <summary>
  298. /// 自定义的作者名字
  299. /// </summary>
  300. [JsonProperty("author")]
  301. [JsonPropertyName("author")]
  302. public string? Author { get; set; }
  303. }
  304. public class MsgOaBodyRichDomain
  305. {
  306. /// <summary>
  307. /// 单行富文本信息的数目
  308. /// </summary>
  309. [JsonProperty("num")]
  310. [JsonPropertyName("num")]
  311. public string? Num { get; set; }
  312. /// <summary>
  313. /// 单行富文本信息的单位
  314. /// </summary>
  315. [JsonProperty("unit")]
  316. [JsonPropertyName("unit")]
  317. public string? Unit { get; set; }
  318. }
  319. public class MsgOaBodyFormDomain
  320. {
  321. /// <summary>
  322. /// 消息体的关键字
  323. /// </summary>
  324. [JsonProperty("key")]
  325. [JsonPropertyName("key")]
  326. public string? Key { get; set; }
  327. /// <summary>
  328. /// 消息体的关键字对应的值
  329. /// </summary>
  330. [JsonProperty("value")]
  331. [JsonPropertyName("value")]
  332. public string? Value { get; set; }
  333. }
  334. /// <summary>
  335. /// markdown消息
  336. /// </summary>
  337. public class MsgMarkdownDomain
  338. {
  339. /// <summary>
  340. /// 首屏会话透出的展示内容
  341. /// </summary>
  342. [JsonProperty("title")]
  343. [JsonPropertyName("title")]
  344. public string Title { get; set; }
  345. /// <summary>
  346. /// markdown格式的消息,最大不超过5000字符
  347. /// </summary>
  348. [JsonProperty("text")]
  349. [JsonPropertyName("text")]
  350. public string Text { get; set; }
  351. }
  352. /// <summary>
  353. /// 卡片消息
  354. /// </summary>
  355. public class MsgActionCardDomain
  356. {
  357. /// <summary>
  358. /// 透出到会话列表和通知的文案
  359. /// </summary>
  360. [JsonProperty("title")]
  361. [JsonPropertyName("title")]
  362. public string? Title { get; set; }
  363. /// <summary>
  364. /// 消息内容,支持markdown,语法参考标准markdown语法。建议1000个字符以内
  365. /// </summary>
  366. [JsonProperty("markdown")]
  367. [JsonPropertyName("markdown")]
  368. public string Markdown { get; set; }
  369. /// <summary>
  370. /// 使用整体跳转ActionCard样式时的标题。必须与single_url同时设置,最长20个字符
  371. /// </summary>
  372. [JsonProperty("single_title")]
  373. [JsonPropertyName("single_title")]
  374. public string? SingleTitle { get; set; }
  375. /// <summary>
  376. /// 消息点击链接地址,当发送消息为小程序时支持小程序跳转链接,最长500个字符
  377. /// </summary>
  378. [JsonProperty("single_url")]
  379. [JsonPropertyName("single_url")]
  380. public string? SingleUrl { get; set; }
  381. /// <summary>
  382. /// 使用独立跳转ActionCard样式时的按钮排列方式:0:竖直排列,1:横向排列。必须与btn_json_list同时设置
  383. /// </summary>
  384. [JsonProperty("btn_orientation")]
  385. [JsonPropertyName("btn_orientation")]
  386. public ActionCardBtnOrientationEnum? BtnOrientation { get; set; }
  387. /// <summary>
  388. /// 使用独立跳转ActionCard样式时的按钮列表;必须与btn_orientation同时设置,且长度不超过1000字符
  389. /// </summary>
  390. [JsonProperty("btn_json_list")]
  391. [JsonPropertyName("btn_json_list")]
  392. public MsgActionCardBtnJsonListDomain[]? BtnJsonList { get; set; }
  393. }
  394. /// <summary>
  395. /// 使用独立跳转ActionCard样式时的按钮排列方式
  396. /// </summary>
  397. [SuppressSniffer]
  398. public enum ActionCardBtnOrientationEnum
  399. {
  400. 竖直排列 = 0,
  401. 横向排列 = 1
  402. }
  403. public class MsgActionCardBtnJsonListDomain
  404. {
  405. /// <summary>
  406. /// 使用独立跳转ActionCard样式时的按钮的标题,最长20个字符
  407. /// </summary>
  408. [JsonProperty("title")]
  409. [JsonPropertyName("title")]
  410. public string Title { get; set; }
  411. /// <summary>
  412. /// 使用独立跳转ActionCard样式时的跳转链接,最长700个字符
  413. /// </summary>
  414. [JsonProperty("action_url")]
  415. [JsonPropertyName("action_url")]
  416. public string ActionUrl { get; set; }
  417. }