From c920b56c75c3bc2dec13963acefeb9666a275836 Mon Sep 17 00:00:00 2001 From: bicijinlian Date: Sat, 13 Jul 2019 13:18:36 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=9F=E8=83=BD=E5=88=9D=E6=AD=A5=E5=AE=8C?= =?UTF-8?q?=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SendMessageTest.cs | 158 +++++++++++++++++- .../Message/FeedCardMessage.cs | 45 +++++ .../Message/LinkMessage.cs | 45 +++++ .../Message/MarkdownMessage.cs | 45 +++++ .../{ => Message}/MessageBase.cs | 0 .../Message/MultiCardMessage.cs | 45 +++++ .../{ => Message}/TextMessage.cs | 0 .../Message/WholeCardMessage.cs | 45 +++++ .../Option/FeedCardOption.cs | 20 +++ Tianyi.DingtalkRobotKit/Option/LinkOption.cs | 14 ++ .../Option/MarkdownOption.cs | 13 ++ .../Option/MultiCardOption.cs | 23 +++ .../{ => Option}/TextOption.cs | 0 .../Option/WholeCardOption.cs | 16 ++ 14 files changed, 468 insertions(+), 1 deletion(-) create mode 100644 Tianyi.DingtalkRobotKit/Message/FeedCardMessage.cs create mode 100644 Tianyi.DingtalkRobotKit/Message/LinkMessage.cs create mode 100644 Tianyi.DingtalkRobotKit/Message/MarkdownMessage.cs rename Tianyi.DingtalkRobotKit/{ => Message}/MessageBase.cs (100%) create mode 100644 Tianyi.DingtalkRobotKit/Message/MultiCardMessage.cs rename Tianyi.DingtalkRobotKit/{ => Message}/TextMessage.cs (100%) create mode 100644 Tianyi.DingtalkRobotKit/Message/WholeCardMessage.cs create mode 100644 Tianyi.DingtalkRobotKit/Option/FeedCardOption.cs create mode 100644 Tianyi.DingtalkRobotKit/Option/LinkOption.cs create mode 100644 Tianyi.DingtalkRobotKit/Option/MarkdownOption.cs create mode 100644 Tianyi.DingtalkRobotKit/Option/MultiCardOption.cs rename Tianyi.DingtalkRobotKit/{ => Option}/TextOption.cs (100%) create mode 100644 Tianyi.DingtalkRobotKit/Option/WholeCardOption.cs diff --git a/Tianyi.DingtalkRobotKit.Test/SendMessageTest.cs b/Tianyi.DingtalkRobotKit.Test/SendMessageTest.cs index 5999a42..ee59d74 100644 --- a/Tianyi.DingtalkRobotKit.Test/SendMessageTest.cs +++ b/Tianyi.DingtalkRobotKit.Test/SendMessageTest.cs @@ -8,7 +8,7 @@ namespace Tianyi.DingtalkRobotKit.Test public class SendMessageTest { [Fact] - public void Test() + public void TextMessage_Test() { var textMsg = new TextMessage("明天是美好的一天"); textMsg.at.isAtAll = true; @@ -17,5 +17,161 @@ namespace Tianyi.DingtalkRobotKit.Test Assert.Equal(0, result.errcode); } + + [Fact] + public void SendLinkMessage_Test() + { + LinkOption option = new LinkOption() + { + title = "上海防火门厂家", + text = "从事防火门和防火窗生产多年,是一家集设计、加工、销售、安装为一体的公司。", + picUrl = "http://www.ifiredoor.com/WebUpload/Images/Banner/20140414132822-18985320.jpg", + messageUrl = "http://www.ifiredoor.com/" + }; + + at linkAt = new at() + { + atMobiles = new List() { "15601716045" }, + isAtAll = true + }; + + var linkMsg = new LinkMessage(option, linkAt); + + var result = SendMessage.Send(linkMsg); + + Assert.Equal(0, result.errcode); + } + + [Fact] + public void MarkdownMessage_Test() + { + MarkdownOption option = new MarkdownOption() + { + title = "防火门厂家新闻", + text = "#### 防火门厂家降价活动进行中 @15601716045 \n > 活动火热进行中... \n> ![热销中](http://www.ifiredoor.com/WebUpload/Images/Banner/20140908191900-97404602.jpg) \n > ###### 发布公司:[防火门厂家](http://www.ifiredoor.com/) " + }; + + at linkAt = new at() + { + atMobiles = new List() { "15601716045" }, + isAtAll = true + }; + + var mdMsg = new MarkdownMessage(option, linkAt); + + var result = SendMessage.Send(mdMsg); + + Assert.Equal(0, result.errcode); + } + + [Fact] + public void WholeCardMessage_Test() + { + WholeCardOption option = new WholeCardOption() + { + title = "最新产品推荐", + text = "![screenshot](http://www.ifiredoor.com/WebUpload/Images/Banner/20180417215356-93814998.png) \n ### 钢质开启固定防火窗、钢制超大防火门,温控防火窗、钢制上旋防火窗,钢质防火逃生门、不锈钢防火门、不锈钢大玻璃门、钢质大玻璃门、防火卷帘门、木质防火门、实木门、钢制保温门、钢木门等,防火证书资质齐全生产链遍布各地,并通过 ISO9001-2008 国际体系认证.", + hideAvatar = "1", + btnOrientation = "1", + singleTitle = "阅读全文", + singleURL = "http://www.ifiredoor.com/Price.aspx?ItemID=22" + }; + + at linkAt = new at() + { + atMobiles = new List() { "15601716045" }, + isAtAll = true + }; + + var mdMsg = new WholeCardMessage(option, linkAt); + + var result = SendMessage.Send(mdMsg); + + Assert.Equal(0, result.errcode); + } + + [Fact] + public void MultiCardMessage_Test() + { + MultiCardOption option = new MultiCardOption() + { + title = "典型客户案例", + text = "![screenshot](http://www.ifiredoor.com/WebUpload/Images/Product/20140415095636-39838472.jpg) \n ##### 我们的部分近期客户,很大方的哦", + hideAvatar = "1", + btnOrientation = "1", + + btns = new List() + { + new MultiCardButton() + { + title= "江阴隧道", + actionURL= "http://www.ifiredoor.com/CaseShow.aspx?ID=6" + }, + new MultiCardButton() + { + title= "绍兴玉澜花园", + actionURL= "http://www.ifiredoor.com/CaseShow.aspx?ID=4" + }, + new MultiCardButton() + { + title= "石油局防火门工程", + actionURL= "http://www.ifiredoor.com/CaseShow.aspx?ID=14" + } + } + }; + + at linkAt = new at() + { + atMobiles = new List() { "15601716045" }, + isAtAll = true + }; + + var mdMsg = new MultiCardMessage(option, linkAt); + + var result = SendMessage.Send(mdMsg); + + Assert.Equal(0, result.errcode); + } + + [Fact] + public void FeedCardMessage_Test() + { + FeedCardOption option = new FeedCardOption() + { + links = new List() + { + new FeedCardLink() + { + title= "江阴隧道", + messageURL= "http://www.ifiredoor.com/CaseShow.aspx?ID=6", + picURL= "http://www.ifiredoor.com/WebUpload/Images/Case/20140416112608-10209867.jpg" + }, + new FeedCardLink() + { + title= "绍兴玉澜花园", + messageURL= "http://www.ifiredoor.com/CaseShow.aspx?ID=4", + picURL= "http://www.ifiredoor.com/WebUpload/Images/Case/20140416133216-27355348.jpg" + }, + new FeedCardLink() + { + title= "宁波宜家", + messageURL= "http://www.ifiredoor.com/CaseShow.aspx?ID=3", + picURL= "http://www.ifiredoor.com/WebUpload/Images/Case/20140416112252-61506570.jpg" + } + } + }; + + at linkAt = new at() + { + atMobiles = new List() { "15601716045" }, + isAtAll = true + }; + + var mdMsg = new FeedCardMessage(option, linkAt); + + var result = SendMessage.Send(mdMsg); + + Assert.Equal(0, result.errcode); + } } } diff --git a/Tianyi.DingtalkRobotKit/Message/FeedCardMessage.cs b/Tianyi.DingtalkRobotKit/Message/FeedCardMessage.cs new file mode 100644 index 0000000..f55f017 --- /dev/null +++ b/Tianyi.DingtalkRobotKit/Message/FeedCardMessage.cs @@ -0,0 +1,45 @@ +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Text; + +namespace Tianyi.DingtalkRobotKit +{ + public class FeedCardMessage : MessageBase + { + public FeedCardMessage(FeedCardOption option) : base() + { + this.feedCard = option; + } + + public FeedCardMessage(FeedCardOption option, at linkAt) : base() + { + this.feedCard = option; + this.at = linkAt; + } + + public FeedCardOption feedCard { get; set; } + + /// + /// 消息类型 + /// + public override string msgtype { get => "feedCard"; } + + /// + /// 转换为json字符串 + /// + public override string ToJson() + { + var meaasge = new + { + msgtype = this.msgtype, + feedCard = this.feedCard, + at = this.at + }; + + string messageJson = JsonConvert.SerializeObject(meaasge); + + return messageJson; + } + } +} diff --git a/Tianyi.DingtalkRobotKit/Message/LinkMessage.cs b/Tianyi.DingtalkRobotKit/Message/LinkMessage.cs new file mode 100644 index 0000000..6d10b0a --- /dev/null +++ b/Tianyi.DingtalkRobotKit/Message/LinkMessage.cs @@ -0,0 +1,45 @@ +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Text; + +namespace Tianyi.DingtalkRobotKit +{ + public class LinkMessage : MessageBase + { + public LinkMessage(LinkOption option) : base() + { + this.link = option; + } + + public LinkMessage(LinkOption option,at linkAt) : base() + { + this.link = option; + this.at = linkAt; + } + + public LinkOption link { get; set; } + + /// + /// 消息类型 + /// + public override string msgtype { get => "link"; } + + /// + /// 转换为json字符串 + /// + public override string ToJson() + { + var meaasge = new + { + msgtype = this.msgtype, + link = this.link, + at = this.at + }; + + string messageJson = JsonConvert.SerializeObject(meaasge); + + return messageJson; + } + } +} diff --git a/Tianyi.DingtalkRobotKit/Message/MarkdownMessage.cs b/Tianyi.DingtalkRobotKit/Message/MarkdownMessage.cs new file mode 100644 index 0000000..e5e087e --- /dev/null +++ b/Tianyi.DingtalkRobotKit/Message/MarkdownMessage.cs @@ -0,0 +1,45 @@ +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Text; + +namespace Tianyi.DingtalkRobotKit +{ + public class MarkdownMessage : MessageBase + { + public MarkdownMessage(MarkdownOption option) : base() + { + this.markdown = option; + } + + public MarkdownMessage(MarkdownOption option, at linkAt) : base() + { + this.markdown = option; + this.at = linkAt; + } + + public MarkdownOption markdown { get; set; } + + /// + /// 消息类型 + /// + public override string msgtype { get => "markdown"; } + + /// + /// 转换为json字符串 + /// + public override string ToJson() + { + var meaasge = new + { + msgtype = this.msgtype, + markdown = this.markdown, + at = this.at + }; + + string messageJson = JsonConvert.SerializeObject(meaasge); + + return messageJson; + } + } +} diff --git a/Tianyi.DingtalkRobotKit/MessageBase.cs b/Tianyi.DingtalkRobotKit/Message/MessageBase.cs similarity index 100% rename from Tianyi.DingtalkRobotKit/MessageBase.cs rename to Tianyi.DingtalkRobotKit/Message/MessageBase.cs diff --git a/Tianyi.DingtalkRobotKit/Message/MultiCardMessage.cs b/Tianyi.DingtalkRobotKit/Message/MultiCardMessage.cs new file mode 100644 index 0000000..67d49ee --- /dev/null +++ b/Tianyi.DingtalkRobotKit/Message/MultiCardMessage.cs @@ -0,0 +1,45 @@ +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Text; + +namespace Tianyi.DingtalkRobotKit +{ + public class MultiCardMessage : MessageBase + { + public MultiCardMessage(MultiCardOption option) : base() + { + this.actionCard = option; + } + + public MultiCardMessage(MultiCardOption option, at linkAt) : base() + { + this.actionCard = option; + this.at = linkAt; + } + + public MultiCardOption actionCard { get; set; } + + /// + /// 消息类型 + /// + public override string msgtype { get => "actionCard"; } + + /// + /// 转换为json字符串 + /// + public override string ToJson() + { + var meaasge = new + { + msgtype = this.msgtype, + actionCard = this.actionCard, + at = this.at + }; + + string messageJson = JsonConvert.SerializeObject(meaasge); + + return messageJson; + } + } +} diff --git a/Tianyi.DingtalkRobotKit/TextMessage.cs b/Tianyi.DingtalkRobotKit/Message/TextMessage.cs similarity index 100% rename from Tianyi.DingtalkRobotKit/TextMessage.cs rename to Tianyi.DingtalkRobotKit/Message/TextMessage.cs diff --git a/Tianyi.DingtalkRobotKit/Message/WholeCardMessage.cs b/Tianyi.DingtalkRobotKit/Message/WholeCardMessage.cs new file mode 100644 index 0000000..76dc569 --- /dev/null +++ b/Tianyi.DingtalkRobotKit/Message/WholeCardMessage.cs @@ -0,0 +1,45 @@ +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Text; + +namespace Tianyi.DingtalkRobotKit +{ + public class WholeCardMessage : MessageBase + { + public WholeCardMessage(WholeCardOption option) : base() + { + this.actionCard = option; + } + + public WholeCardMessage(WholeCardOption option, at linkAt) : base() + { + this.actionCard = option; + this.at = linkAt; + } + + public WholeCardOption actionCard { get; set; } + + /// + /// 消息类型 + /// + public override string msgtype { get => "actionCard"; } + + /// + /// 转换为json字符串 + /// + public override string ToJson() + { + var meaasge = new + { + msgtype = this.msgtype, + actionCard = this.actionCard, + at = this.at + }; + + string messageJson = JsonConvert.SerializeObject(meaasge); + + return messageJson; + } + } +} diff --git a/Tianyi.DingtalkRobotKit/Option/FeedCardOption.cs b/Tianyi.DingtalkRobotKit/Option/FeedCardOption.cs new file mode 100644 index 0000000..f15eb09 --- /dev/null +++ b/Tianyi.DingtalkRobotKit/Option/FeedCardOption.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Tianyi.DingtalkRobotKit +{ + public class FeedCardOption + { + public List links { get; set; } + } + + public class FeedCardLink + { + public string title { get; set; } + + public string messageURL { get; set; } + + public string picURL { get; set; } + } +} diff --git a/Tianyi.DingtalkRobotKit/Option/LinkOption.cs b/Tianyi.DingtalkRobotKit/Option/LinkOption.cs new file mode 100644 index 0000000..9e49ba6 --- /dev/null +++ b/Tianyi.DingtalkRobotKit/Option/LinkOption.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Tianyi.DingtalkRobotKit +{ + public class LinkOption + { + public string text { get; set; } + public string title { get; set; } + public string picUrl { get; set; } + public string messageUrl { get; set; } + } +} diff --git a/Tianyi.DingtalkRobotKit/Option/MarkdownOption.cs b/Tianyi.DingtalkRobotKit/Option/MarkdownOption.cs new file mode 100644 index 0000000..7093758 --- /dev/null +++ b/Tianyi.DingtalkRobotKit/Option/MarkdownOption.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Tianyi.DingtalkRobotKit +{ + public class MarkdownOption + { + public string title { get; set; } + + public string text { get; set; } + } +} diff --git a/Tianyi.DingtalkRobotKit/Option/MultiCardOption.cs b/Tianyi.DingtalkRobotKit/Option/MultiCardOption.cs new file mode 100644 index 0000000..9761af1 --- /dev/null +++ b/Tianyi.DingtalkRobotKit/Option/MultiCardOption.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Tianyi.DingtalkRobotKit +{ + public class MultiCardOption + { + public string title { get; set; } + public string text { get; set; } + public string hideAvatar { get; set; } + public string btnOrientation { get; set; } + public List btns { get; set; } + public string singleTitle { get; set; } + public string singleURL { get; set; } + } + + public class MultiCardButton + { + public string title { get; set; } + public string actionURL { get; set; } + } +} diff --git a/Tianyi.DingtalkRobotKit/TextOption.cs b/Tianyi.DingtalkRobotKit/Option/TextOption.cs similarity index 100% rename from Tianyi.DingtalkRobotKit/TextOption.cs rename to Tianyi.DingtalkRobotKit/Option/TextOption.cs diff --git a/Tianyi.DingtalkRobotKit/Option/WholeCardOption.cs b/Tianyi.DingtalkRobotKit/Option/WholeCardOption.cs new file mode 100644 index 0000000..fa0b5af --- /dev/null +++ b/Tianyi.DingtalkRobotKit/Option/WholeCardOption.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Tianyi.DingtalkRobotKit +{ + public class WholeCardOption + { + public string title { get; set; } + public string text { get; set; } + public string hideAvatar { get; set; } + public string btnOrientation { get; set; } + public string singleTitle { get; set; } + public string singleURL { get; set; } + } +}