using System; using System.Xml.Serialization; using System.Collections.Generic; using Top.Api.Util; using Top.Api; using Top.Api.DingTalk; namespace DingTalk.Api.Request { /// /// TOP API: dingtalk.oapi.message.mass.send /// public class OapiMessageMassSendRequest : BaseDingTalkRequest { /// /// 接收者的部门id列表,接收者是部门id下(包括子部门下)的所有用户 /// public string DepIdList { get; set; } /// /// 是否预览推送 /// public Nullable IsPreview { get; set; } /// /// 是否群发给所有订阅者,true-是,false-否 /// public Nullable IsToAll { get; set; } /// /// 消息卡片素材id /// public string MediaId { get; set; } /// /// 消息体 /// public string MsgBody { get; set; } public MessageBodyDomain MsgBody_ { set { this.MsgBody = TopUtils.ObjectToJson(value); } } /// /// msg_type, 消息类型:text,文本类型,此时文本内容填在text_content字段中;news_card,消息卡片,此时的media_id通过消息卡片上传接口得到; image,图片,此时的media_id通过图片上传接口得到 /// public string MsgType { get; set; } /// /// 文本内容,当msg_type为text时有效 /// public string TextContent { get; set; } /// /// 服务号的unionid /// public string Unionid { get; set; } /// /// 接收者的用户userid列表 /// public string UseridList { get; set; } /// /// 调用时填写随机生成的UUID, 防止消息重复发送 /// public string Uuid { get; set; } #region IDingTalkRequest Members public override string GetApiName() { return "dingtalk.oapi.message.mass.send"; } public override string GetApiCallType() { return DingTalkConstants.CALL_TYPE_OAPI; } public override IDictionary GetParameters() { TopDictionary parameters = new TopDictionary(); parameters.Add("dep_id_list", this.DepIdList); parameters.Add("is_preview", this.IsPreview); parameters.Add("is_to_all", this.IsToAll); parameters.Add("media_id", this.MediaId); parameters.Add("msg_body", this.MsgBody); parameters.Add("msg_type", this.MsgType); parameters.Add("text_content", this.TextContent); parameters.Add("unionid", this.Unionid); parameters.Add("userid_list", this.UseridList); parameters.Add("uuid", this.Uuid); if (this.otherParams != null) { parameters.AddAll(this.otherParams); } return parameters; } public override void Validate() { RequestValidator.ValidateMaxListSize("dep_id_list", this.DepIdList, 2000); RequestValidator.ValidateRequired("is_to_all", this.IsToAll); RequestValidator.ValidateMaxLength("media_id", this.MediaId, 256); RequestValidator.ValidateRequired("msg_type", this.MsgType); RequestValidator.ValidateMaxLength("msg_type", this.MsgType, 32); RequestValidator.ValidateMaxLength("text_content", this.TextContent, 65535); RequestValidator.ValidateRequired("unionid", this.Unionid); RequestValidator.ValidateMaxLength("unionid", this.Unionid, 128); RequestValidator.ValidateMaxListSize("userid_list", this.UseridList, 10000); RequestValidator.ValidateRequired("uuid", this.Uuid); RequestValidator.ValidateMaxLength("uuid", this.Uuid, 128); } /// /// VoiceDomain Data Structure. /// [Serializable] public class VoiceDomain : TopObject { /// /// 正整数,小于60,表示音频时长 /// [XmlElement("duration")] public Nullable Duration { get; set; } /// /// 媒体文件id。2MB,播放长度不超过60s,AMR格式 /// [XmlElement("media_id")] public string MediaId { get; set; } } /// /// HeadDomain Data Structure. /// [Serializable] public class HeadDomain : TopObject { /// /// 消息头部的背景颜色。长度限制为8个英文字符,其中前2为表示透明度,后6位表示颜色值。不要添加0x /// [XmlElement("bgcolor")] public string Bgcolor { get; set; } /// /// 消息的头部标题 (向普通会话发送时有效,向企业会话发送时会被替换为微应用的名字),长度限制为最多10个字符 /// [XmlElement("text")] public string Text { get; set; } } /// /// FormItemDomain Data Structure. /// [Serializable] public class FormItemDomain : TopObject { /// /// 消息体的关键字 /// [XmlElement("key")] public string Key { get; set; } /// /// 消息体的关键字对应的值 /// [XmlElement("value")] public string Value { get; set; } } /// /// RichTextDomain Data Structure. /// [Serializable] public class RichTextDomain : TopObject { /// /// 单行富文本信息的数目 /// [XmlElement("num")] public string Num { get; set; } /// /// 单行富文本信息的单位 /// [XmlElement("unit")] public string Unit { get; set; } } /// /// BodyDomain Data Structure. /// [Serializable] public class BodyDomain : TopObject { /// /// 自定义的作者名字 /// [XmlElement("author")] public string Author { get; set; } /// /// 消息体的内容,最多显示3行 /// [XmlElement("content")] public string Content { get; set; } /// /// 自定义的附件数目。此数字仅供显示,钉钉不作验证 /// [XmlElement("file_count")] public Nullable FileCount { get; set; } /// /// 消息体的表单,最多显示6个,超过会被隐藏 /// [XmlArray("form")] [XmlArrayItem("form_item")] public List Form { get; set; } /// /// 消息体中的图片,支持图片资源@mediaId /// [XmlElement("image")] public string Image { get; set; } /// /// 单行富文本信息 /// [XmlElement("rich")] public RichTextDomain Rich { get; set; } /// /// 消息体的标题,建议50个字符以内 /// [XmlElement("title")] public string Title { get; set; } } /// /// OADomain Data Structure. /// [Serializable] public class OADomain : TopObject { /// /// 消息体 /// [XmlElement("body")] public BodyDomain Body { get; set; } /// /// 消息头部内容 /// [XmlElement("head")] public HeadDomain Head { get; set; } /// /// 消息点击链接地址,当发送消息为小程序时支持小程序跳转链接 /// [XmlElement("message_url")] public string MessageUrl { get; set; } /// /// PC端点击消息时跳转到的地址 /// [XmlElement("pc_message_url")] public string PcMessageUrl { get; set; } } /// /// FileDomain Data Structure. /// [Serializable] public class FileDomain : TopObject { /// /// 媒体文件id。引用的媒体文件最大10MB /// [XmlElement("media_id")] public string MediaId { get; set; } } /// /// LinkDomain Data Structure. /// [Serializable] public class LinkDomain : TopObject { /// /// 图片地址 /// [XmlElement("cover_image")] public string CoverImage { get; set; } /// /// 消息点击链接地址,当发送消息为小程序时支持小程序跳转链接 /// [XmlElement("link_url")] public string LinkUrl { get; set; } /// /// 链接打开方式 0 -端外浏览器打开,1-端内浏览器打开 /// [XmlElement("open_type")] public Nullable OpenType { get; set; } /// /// 消息描述,建议500字符以内 /// [XmlElement("summary")] public string Summary { get; set; } /// /// 消息标题,建议100字符以内 /// [XmlElement("title")] public string Title { get; set; } } /// /// MarkdownDomain Data Structure. /// [Serializable] public class MarkdownDomain : TopObject { /// /// markdown格式的消息,建议5000字符以内 /// [XmlElement("text")] public string Text { get; set; } /// /// 首屏会话透出的展示内容 /// [XmlElement("title")] public string Title { get; set; } } /// /// ButtonDomain Data Structure. /// [Serializable] public class ButtonDomain : TopObject { /// /// 消息点击链接地址,当发送消息为小程序时支持小程序跳转链接,最长500个字符 /// [XmlElement("action_url")] public string ActionUrl { get; set; } /// /// 使用独立跳转ActionCard样式时的按钮的标题,最长20个字符 /// [XmlElement("title")] public string Title { get; set; } } /// /// ActionCardDomain Data Structure. /// [Serializable] public class ActionCardDomain : TopObject { /// /// 使用独立跳转ActionCard样式时的按钮排列方式,竖直排列(0),横向排列(1);必须与button_list同时设置 /// [XmlElement("btn_orientation")] public string BtnOrientation { get; set; } /// /// 使用独立跳转ActionCard样式时的按钮列表;必须与btn_orientation同时设置 /// [XmlArray("button_list")] [XmlArrayItem("button")] public List ButtonList { get; set; } /// /// 消息内容,支持markdown,语法参考标准markdown语法。建议1000个字符以内 /// [XmlElement("markdown")] public string Markdown { get; set; } /// /// 使用整体跳转ActionCard样式时的标题,必须与single_url同时设置,最长20个字符 /// [XmlElement("single_title")] public string SingleTitle { get; set; } /// /// 消息点击链接地址,当发送消息为小程序时支持小程序跳转链接,最长500个字符 /// [XmlElement("single_url")] public string SingleUrl { get; set; } /// /// 透出到会话列表和通知的文案,最长64个字符 /// [XmlElement("title")] public string Title { get; set; } } /// /// MessageBodyDomain Data Structure. /// [Serializable] public class MessageBodyDomain : TopObject { /// /// action_card卡片消息 /// [XmlElement("action_card")] public ActionCardDomain ActionCard { get; set; } /// /// 文件消息 /// [XmlElement("file")] public FileDomain File { get; set; } /// /// 链接消息 /// [XmlElement("link")] public LinkDomain Link { get; set; } /// /// markdown消息 /// [XmlElement("markdown")] public MarkdownDomain Markdown { get; set; } /// /// oa消息 /// [XmlElement("oa")] public OADomain Oa { get; set; } /// /// 语音消息 /// [XmlElement("voice")] public VoiceDomain Voice { get; set; } } #endregion } }