From 4c64e85686cadd03e2079cf45ae0b0f9aff3b46e Mon Sep 17 00:00:00 2001 From: Fu Diwei Date: Fri, 30 Jul 2021 18:24:44 +0800 Subject: [PATCH] =?UTF-8?q?feat(wxapi):=20=E6=96=B0=E5=A2=9E=E9=83=A8?= =?UTF-8?q?=E5=88=86=E5=BE=AE=E4=BF=A1=E5=9B=9E=E8=B0=83=E9=80=9A=E7=9F=A5?= =?UTF-8?q?=E4=BA=8B=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Events/MpReply/ImageMessageReply.cs | 36 +++++++++++ .../Events/MpReply/MusicMessageReply.cs | 60 ++++++++++++++++++ .../Events/MpReply/NewsMessageReply.cs | 61 +++++++++++++++++++ .../Events/MpReply/TextMessageReply.cs | 24 ++++++++ .../MpReply/TransferCustomerServiceReply.cs | 36 +++++++++++ .../Events/MpReply/VideoMessageReply.cs | 48 +++++++++++++++ .../Events/MpReply/VoiceMessageReply.cs | 36 +++++++++++ 7 files changed, 301 insertions(+) create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Events/MpReply/ImageMessageReply.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Events/MpReply/MusicMessageReply.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Events/MpReply/NewsMessageReply.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Events/MpReply/TextMessageReply.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Events/MpReply/TransferCustomerServiceReply.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Events/MpReply/VideoMessageReply.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Events/MpReply/VoiceMessageReply.cs diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Events/MpReply/ImageMessageReply.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Events/MpReply/ImageMessageReply.cs new file mode 100644 index 00000000..fe0a0138 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Events/MpReply/ImageMessageReply.cs @@ -0,0 +1,36 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Api.Events +{ + /// + /// 表示被动回复图片消息的数据。 + /// REF: https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Passive_user_reply_message.html#1 + /// + public class ImageMessageReply : WechatApiEvent, WechatApiEvent.Types.IXmlSerializable + { + public new static class Types + { + public class Image + { + /// + /// 获取或设置图片 MediaId。 + /// + [System.Xml.Serialization.XmlElement("MediaId")] + public string MediaId { get; set; } = string.Empty; + } + } + + /// + /// 获取或设置图片信息。 + /// + [System.Xml.Serialization.XmlElement("Image")] + public Types.Image Image { get; set; } = new Types.Image(); + + public ImageMessageReply() + { + Event = null; + MessageType = "image"; + } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Events/MpReply/MusicMessageReply.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Events/MpReply/MusicMessageReply.cs new file mode 100644 index 00000000..7d209c1b --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Events/MpReply/MusicMessageReply.cs @@ -0,0 +1,60 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Api.Events +{ + /// + /// 表示被动回复音乐消息的数据。 + /// REF: https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Passive_user_reply_message.html#4 + /// + public class MusicMessageReply : WechatApiEvent, WechatApiEvent.Types.IXmlSerializable + { + public new static class Types + { + public class Music + { + /// + /// 获取或设置音乐链接。 + /// + [System.Xml.Serialization.XmlElement("MusicUrl")] + public string MusicUrl { get; set; } = string.Empty; + + /// + /// 获取或设置高质量音乐链接。 + /// + [System.Xml.Serialization.XmlElement("HQMusicUrl", IsNullable = true)] + public string? HQMusicUrl { get; set; } + + /// + /// 获取或设置音乐封面图片 MediaId。 + /// + [System.Xml.Serialization.XmlElement("ThumbMediaId")] + public string ThumbMediaId { get; set; } = string.Empty; + + /// + /// 获取或设置音乐标题。 + /// + [System.Xml.Serialization.XmlElement("Title")] + public string Title { get; set; } = string.Empty; + + /// + /// 获取或设置音乐描述。 + /// + [System.Xml.Serialization.XmlElement("Description")] + public string Description { get; set; } = string.Empty; + } + } + + /// + /// 获取或设置音乐信息。 + /// + [System.Xml.Serialization.XmlElement("Music")] + public Types.Music Music { get; set; } = new Types.Music(); + + public MusicMessageReply() + { + Event = null; + MessageType = "music"; + } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Events/MpReply/NewsMessageReply.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Events/MpReply/NewsMessageReply.cs new file mode 100644 index 00000000..e33c6814 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Events/MpReply/NewsMessageReply.cs @@ -0,0 +1,61 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Api.Events +{ + /// + /// 表示被动回复图文消息的数据。 + /// REF: https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Passive_user_reply_message.html#5 + /// + public class NewsMessageReply : WechatApiEvent, WechatApiEvent.Types.IXmlSerializable + { + public new static class Types + { + public class Article + { + /// + /// 获取或设置图文链接。 + /// + [System.Xml.Serialization.XmlElement("Url")] + public string Url { get; set; } = string.Empty; + + /// + /// 获取或设置图文封面图片链接。 + /// + [System.Xml.Serialization.XmlElement("PicUrl")] + public string PictureUrl { get; set; } = string.Empty; + + /// + /// 获取或设置图文标题。 + /// + [System.Xml.Serialization.XmlElement("Title")] + public string Title { get; set; } = string.Empty; + + /// + /// 获取或设置图文描述。 + /// + [System.Xml.Serialization.XmlElement("Description")] + public string Description { get; set; } = string.Empty; + } + } + + /// + /// 获取或设置图文数量。 + /// + [System.Xml.Serialization.XmlElement("ArticleCount")] + public int ArticleCount { get; set; } + + /// + /// 获取或设置图文列表。 + /// + [System.Xml.Serialization.XmlArray("Articles")] + [System.Xml.Serialization.XmlArrayItem("item")] + public Types.Article[] ArticleList { get; set; } = new Types.Article[0]; + + public NewsMessageReply() + { + Event = null; + MessageType = "news"; + } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Events/MpReply/TextMessageReply.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Events/MpReply/TextMessageReply.cs new file mode 100644 index 00000000..48d7e515 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Events/MpReply/TextMessageReply.cs @@ -0,0 +1,24 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Api.Events +{ + /// + /// 表示被动回复文本消息的数据。 + /// REF: https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Passive_user_reply_message.html#0 + /// + public class TextMessageReply : WechatApiEvent, WechatApiEvent.Types.IXmlSerializable + { + /// + /// 获取或设置消息内容。 + /// + [System.Xml.Serialization.XmlElement("Content")] + public string Content { get; set; } = string.Empty; + + public TextMessageReply() + { + Event = null; + MessageType = "text"; + } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Events/MpReply/TransferCustomerServiceReply.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Events/MpReply/TransferCustomerServiceReply.cs new file mode 100644 index 00000000..7b3b6edc --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Events/MpReply/TransferCustomerServiceReply.cs @@ -0,0 +1,36 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Api.Events +{ + /// + /// 表示被动回复转发消息的数据。 + /// REF: https://developers.weixin.qq.com/doc/offiaccount/Customer_Service/Forwarding_of_messages_to_service_center.html + /// + public class TransferCustomerServiceReply : WechatApiEvent, WechatApiEvent.Types.IXmlSerializable + { + public new static class Types + { + public class Transfer + { + /// + /// 获取或设置客服账号。 + /// + [System.Xml.Serialization.XmlElement("KfAccount")] + public string KfAccount { get; set; } = string.Empty; + } + } + + /// + /// 获取或设置转发信息。 + /// + [System.Xml.Serialization.XmlElement("TransInfo")] + public Types.Transfer? Transfer { get; set; } + + public TransferCustomerServiceReply() + { + Event = null; + MessageType = "transfer_customer_service"; + } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Events/MpReply/VideoMessageReply.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Events/MpReply/VideoMessageReply.cs new file mode 100644 index 00000000..9e0b0f5f --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Events/MpReply/VideoMessageReply.cs @@ -0,0 +1,48 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Api.Events +{ + /// + /// 表示被动回复视频消息的数据。 + /// REF: https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Passive_user_reply_message.html#3 + /// + public class VideoMessageReply : WechatApiEvent, WechatApiEvent.Types.IXmlSerializable + { + public new static class Types + { + public class Video + { + /// + /// 获取或设置视频 MediaId。 + /// + [System.Xml.Serialization.XmlElement("MediaId")] + public string MediaId { get; set; } = string.Empty; + + /// + /// 获取或设置视频标题。 + /// + [System.Xml.Serialization.XmlElement("Title")] + public string Title { get; set; } = string.Empty; + + /// + /// 获取或设置视频描述。 + /// + [System.Xml.Serialization.XmlElement("Description")] + public string Description { get; set; } = string.Empty; + } + } + + /// + /// 获取或设置视频信息。 + /// + [System.Xml.Serialization.XmlElement("Video")] + public Types.Video Video { get; set; } = new Types.Video(); + + public VideoMessageReply() + { + Event = null; + MessageType = "video"; + } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Events/MpReply/VoiceMessageReply.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Events/MpReply/VoiceMessageReply.cs new file mode 100644 index 00000000..478d0be8 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Events/MpReply/VoiceMessageReply.cs @@ -0,0 +1,36 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Api.Events +{ + /// + /// 表示被动回复语音消息的数据。 + /// REF: https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Passive_user_reply_message.html#2 + /// + public class VoiceMessageReply : WechatApiEvent, WechatApiEvent.Types.IXmlSerializable + { + public new static class Types + { + public class Voice + { + /// + /// 获取或设置语音 MediaId。 + /// + [System.Xml.Serialization.XmlElement("MediaId")] + public string MediaId { get; set; } = string.Empty; + } + } + + /// + /// 获取或设置语音信息。 + /// + [System.Xml.Serialization.XmlElement("Voice")] + public Types.Voice Voice { get; set; } = new Types.Voice(); + + public VoiceMessageReply() + { + Event = null; + MessageType = "voice"; + } + } +}