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.smartbot.msg.push /// public class OapiSmartbotMsgPushRequest : BaseDingTalkRequest { /// /// 接收者的会话chatid列表 /// public string ChatIdList { get; set; } /// /// 消息体,具体见文档 /// public string Msg { get; set; } public MsgDomain Msg_ { set { this.Msg = TopUtils.ObjectToJson(value); } } /// /// 是否发送给企业全部用户,”true“则忽略用户列表和会话列表 /// public Nullable ToAllUser { get; set; } /// /// 接收者的用户userid列表 /// public string UserIdList { get; set; } #region IDingTalkRequest Members public override string GetApiName() { return "dingtalk.oapi.smartbot.msg.push"; } public override string GetApiCallType() { return DingTalkConstants.CALL_TYPE_OAPI; } public override IDictionary GetParameters() { TopDictionary parameters = new TopDictionary(); parameters.Add("chat_id_list", this.ChatIdList); parameters.Add("msg", this.Msg); parameters.Add("to_all_user", this.ToAllUser); parameters.Add("user_id_list", this.UserIdList); if (this.otherParams != null) { parameters.AddAll(this.otherParams); } return parameters; } public override void Validate() { RequestValidator.ValidateMaxListSize("chat_id_list", this.ChatIdList, 500); RequestValidator.ValidateRequired("msg", this.Msg); RequestValidator.ValidateMaxListSize("user_id_list", this.UserIdList, 5000); } /// /// TextDomain Data Structure. /// [Serializable] public class TextDomain : TopObject { /// /// 文本消息 /// [XmlElement("content")] public string Content { get; set; } } /// /// MarkdownDomain Data Structure. /// [Serializable] public class MarkdownDomain : TopObject { /// /// markdown格式的消息,建议500字符以内 /// [XmlElement("text")] public string Text { get; set; } /// /// 首屏会话透出的展示内容 /// [XmlElement("title")] public string Title { get; set; } } /// /// BtnJsonDomain Data Structure. /// [Serializable] public class BtnJsonDomain : 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样式时的按钮列表;必须与btn_orientation同时设置 /// [XmlArray("btn_json_list")] [XmlArrayItem("btn_json")] public List BtnJsonList { get; set; } /// /// 使用独立跳转ActionCard样式时的按钮排列方式,竖直排列(0),横向排列(1);必须与btn_json_list同时设置 /// [XmlElement("btn_orientation")] public string BtnOrientation { 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; } } /// /// MsgDomain Data Structure. /// [Serializable] public class MsgDomain : TopObject { /// /// 卡片消息 /// [XmlElement("action_card")] public ActionCardDomain ActionCard { get; set; } /// /// markdown消息 /// [XmlElement("markdown")] public MarkdownDomain Markdown { get; set; } /// /// 消息类型 /// [XmlElement("msgtype")] public string Msgtype { get; set; } /// /// 文本消息 /// [XmlElement("text")] public TextDomain Text { get; set; } } #endregion } }