// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。 // // 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。 // // 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任! using Newtonsoft.Json.Converters; using System.Text.Json.Serialization; namespace Admin.NET.Plugin.DingTalk.RequestProxy.Message.DTO; /// /// 发送工作通知 /// public class SendCorpConversationRequest { /// /// 发送消息时使用的微应用的AgentID /// [JsonProperty("agent_id")] [JsonPropertyName("agent_id")] public long? AgentId { get; set; } /// /// 接收者的userid列表,最大用户列表长度100 /// [JsonProperty("userid_list")] [JsonPropertyName("userid_list")] public string? UserIdList { get; set; } /// /// 接收者的部门id列表,最大列表长度20 /// [JsonProperty("dept_id_list")] [JsonPropertyName("dept_id_list")] public string? DeptIdList { get; set; } /// /// 是否发送给企业全部用户 /// [JsonProperty("to_all_user")] [JsonPropertyName("to_all_user")] public bool? ToAllUser { get; set; } /// /// 消息内容,最长不超过2048个字节 /// [JsonProperty("msg")] [JsonPropertyName("msg")] public MsgDomain Msg { get; set; } } public class MsgDomain { /// /// 消息类型 /// [JsonProperty("msgtype")] [JsonPropertyName("msgtype")] [Newtonsoft.Json.JsonConverter(typeof(StringEnumConverter))] public SendCorpConversationMsgTypeEnum MsgType { get; set; } /// /// 文本消息 /// [JsonProperty("text")] [JsonPropertyName("text")] public MsgTextDomain? Text { get; set; } /// /// 图片消息 /// [JsonProperty("image")] [JsonPropertyName("image")] public MsgImageDomain? Image { get; set; } /// /// 语音消息 /// [JsonProperty("voice")] [JsonPropertyName("voice")] public MsgVoiceDomain? Voice { get; set; } /// /// 文件消息 /// [JsonProperty("file")] [JsonPropertyName("file")] public MsgVoiceDomain? File { get; set; } /// /// 链接消息 /// [JsonProperty("link")] [JsonPropertyName("link")] public MsgLinkDomain? Link { get; set; } /// /// OA消息 /// [JsonProperty("oa")] [JsonPropertyName("oa")] public MsgOaDomain? Oa { get; set; } /// /// markdown消息 /// [JsonProperty("markdown")] [JsonPropertyName("markdown")] public MsgMarkdownDomain? Markdown { get; set; } /// /// 卡片消息 /// [JsonProperty("action_card")] [JsonPropertyName("action_card")] public MsgActionCardDomain? ActionCard { get; set; } } /// /// 消息类型 /// [SuppressSniffer] [System.Text.Json.Serialization.JsonConverter(typeof(JsonStringEnumConverter))] public enum SendCorpConversationMsgTypeEnum { text, image, voice, file, link, oa, markdown, action_card } /// /// 文本消息 /// public class MsgTextDomain { /// /// 消息内容,建议500字符以内 /// [JsonProperty("content")] [JsonPropertyName("content")] public string Content { get; set; } } /// /// 图片消息 /// public class MsgImageDomain { /// /// 媒体文件mediaid,建议宽600像素 x 400像素,宽高比3 : 2 /// [JsonProperty("media_id")] [JsonPropertyName("media_id")] public string MediaId { get; set; } } /// /// 语音消息 /// public class MsgVoiceDomain { /// /// 媒体文件ID /// [JsonProperty("media_id")] [JsonPropertyName("media_id")] public string MediaId { get; set; } /// /// 正整数,小于60,表示音频时长 /// [JsonProperty("duration")] [JsonPropertyName("duration")] public string Duration { get; set; } } /// /// 文件消息 /// public class MsgFileDomain { /// /// 媒体文件ID,引用的媒体文件最大10MB /// [JsonProperty("media_id")] [JsonPropertyName("media_id")] public string MediaId { get; set; } } /// /// 链接消息 /// public class MsgLinkDomain { /// /// 消息点击链接地址,当发送消息为小程序时支持小程序跳转链接 /// [JsonProperty("messageUrl")] [JsonPropertyName("messageUrl")] public string MessageUrl { get; set; } [JsonProperty("picUrl")] [JsonPropertyName("picUrl")] public string PicUrl { get; set; } /// /// 消息标题,建议100字符以内 /// [JsonProperty("title")] [JsonPropertyName("title")] public string Title { get; set; } /// /// 消息描述,建议500字符以内 /// [JsonProperty("text")] [JsonPropertyName("text")] public string Text { get; set; } } /// /// OA消息 /// public class MsgOaDomain { /// /// 消息点击链接地址,当发送消息为小程序时支持小程序跳转链接 /// [JsonProperty("message_url")] [JsonPropertyName("message_url")] public string MessageUrl { get; set; } /// /// PC端点击消息时跳转到的地址 /// [JsonProperty("pc_message_url")] [JsonPropertyName("pc_message_url")] public string? PcMessageUrl { get; set; } /// /// 消息头部内容 /// [JsonProperty("head")] [JsonPropertyName("head")] public MsgOaHeadDomain Head { get; set; } /// /// 消息体 /// [JsonProperty("body")] [JsonPropertyName("body")] public MsgOaBodyDomain Body { get; set; } /// /// 消息状态栏,只支持接收者的userid列表,userid最多不能超过5个人 /// [JsonProperty("status_bar")] [JsonPropertyName("status_bar")] public MsgOaStatusBarDomain? StatusBar { get; set; } } public class MsgOaHeadDomain { /// /// 消息头部的背景颜色。长度限制为8个英文字符,其中前2为表示透明度,后6位表示颜色值。不要添加0x。 /// [JsonProperty("bgcolor")] [JsonPropertyName("bgcolor")] public string BgColor { get; set; } /// /// 消息的头部标题 /// [JsonProperty("text")] [JsonPropertyName("text")] public string Text { get; set; } } public class MsgOaStatusBarDomain { /// /// 状态栏文案 /// [JsonProperty("status_value")] [JsonPropertyName("status_value")] public string StatusValue { get; set; } /// /// 状态栏背景色,默认为黑色,推荐0xFF加六位颜色值 /// [JsonProperty("status_bg")] [JsonPropertyName("status_bg")] public string StatusBg { get; set; } } public class MsgOaBodyDomain { /// /// 消息体的标题,建议50个字符以内 /// [JsonProperty("title")] [JsonPropertyName("title")] public string? Title { get; set; } /// /// 消息体的表单,最多显示6个,超过会被隐藏 /// [JsonProperty("form")] [JsonPropertyName("form")] public MsgOaBodyFormDomain[]? Form { get; set; } /// /// 单行富文本信息 /// [JsonProperty("rich")] [JsonPropertyName("rich")] public MsgOaBodyRichDomain? Rich { get; set; } /// /// 消息体的内容,最多显示3行 /// [JsonProperty("content")] [JsonPropertyName("content")] public string? Content { get; set; } /// /// 消息体中的图片,支持图片资源@mediaId。建议宽600像素 x 400像素,宽高比3 : 2 /// [JsonProperty("image")] [JsonPropertyName("image")] public string? Image { get; set; } /// /// 自定义的附件数目。此数字仅供显示,钉钉不作验证 /// [JsonProperty("file_count")] [JsonPropertyName("file_count")] public string? FileCount { get; set; } /// /// 自定义的作者名字 /// [JsonProperty("author")] [JsonPropertyName("author")] public string? Author { get; set; } } public class MsgOaBodyRichDomain { /// /// 单行富文本信息的数目 /// [JsonProperty("num")] [JsonPropertyName("num")] public string? Num { get; set; } /// /// 单行富文本信息的单位 /// [JsonProperty("unit")] [JsonPropertyName("unit")] public string? Unit { get; set; } } public class MsgOaBodyFormDomain { /// /// 消息体的关键字 /// [JsonProperty("key")] [JsonPropertyName("key")] public string? Key { get; set; } /// /// 消息体的关键字对应的值 /// [JsonProperty("value")] [JsonPropertyName("value")] public string? Value { get; set; } } /// /// markdown消息 /// public class MsgMarkdownDomain { /// /// 首屏会话透出的展示内容 /// [JsonProperty("title")] [JsonPropertyName("title")] public string Title { get; set; } /// /// markdown格式的消息,最大不超过5000字符 /// [JsonProperty("text")] [JsonPropertyName("text")] public string Text { get; set; } } /// /// 卡片消息 /// public class MsgActionCardDomain { /// /// 透出到会话列表和通知的文案 /// [JsonProperty("title")] [JsonPropertyName("title")] public string? Title { get; set; } /// /// 消息内容,支持markdown,语法参考标准markdown语法。建议1000个字符以内 /// [JsonProperty("markdown")] [JsonPropertyName("markdown")] public string Markdown { get; set; } /// /// 使用整体跳转ActionCard样式时的标题。必须与single_url同时设置,最长20个字符 /// [JsonProperty("single_title")] [JsonPropertyName("single_title")] public string? SingleTitle { get; set; } /// /// 消息点击链接地址,当发送消息为小程序时支持小程序跳转链接,最长500个字符 /// [JsonProperty("single_url")] [JsonPropertyName("single_url")] public string? SingleUrl { get; set; } /// /// 使用独立跳转ActionCard样式时的按钮排列方式:0:竖直排列,1:横向排列。必须与btn_json_list同时设置 /// [JsonProperty("btn_orientation")] [JsonPropertyName("btn_orientation")] public ActionCardBtnOrientationEnum? BtnOrientation { get; set; } /// /// 使用独立跳转ActionCard样式时的按钮列表;必须与btn_orientation同时设置,且长度不超过1000字符 /// [JsonProperty("btn_json_list")] [JsonPropertyName("btn_json_list")] public MsgActionCardBtnJsonListDomain[]? BtnJsonList { get; set; } } /// /// 使用独立跳转ActionCard样式时的按钮排列方式 /// [SuppressSniffer] public enum ActionCardBtnOrientationEnum { 竖直排列 = 0, 横向排列 = 1 } public class MsgActionCardBtnJsonListDomain { /// /// 使用独立跳转ActionCard样式时的按钮的标题,最长20个字符 /// [JsonProperty("title")] [JsonPropertyName("title")] public string Title { get; set; } /// /// 使用独立跳转ActionCard样式时的跳转链接,最长700个字符 /// [JsonProperty("action_url")] [JsonPropertyName("action_url")] public string ActionUrl { get; set; } }