// 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; }
}