diff --git a/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Extensions/WechatOpenAIClientExecuteMpExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Extensions/WechatOpenAIClientExecuteMpExtensions.cs index 6bc677c9..7c1a83d9 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Extensions/WechatOpenAIClientExecuteMpExtensions.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Extensions/WechatOpenAIClientExecuteMpExtensions.cs @@ -112,7 +112,7 @@ namespace SKIT.FlurlHttpClient.Wechat.OpenAI using var fileContent = new ByteArrayContent(request.FileBytes ?? Array.Empty()); using var paramContent = new StringContent( Utilities.WxMsgCryptor.AESEncrypt( - plainText: Utilities.XmlUtility.Serialize(request), + plainText: Utilities.XmlUtility.ConvertFromJson(client.JsonSerializer.Serialize(request)), encodingAESKey: client.Credentials.EncodingAESKey!, appId: client.Credentials.AppId! ), diff --git a/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Bot/BatchImportSkillRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Bot/BatchImportSkillRequest.cs index bbf15191..967e3a53 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Bot/BatchImportSkillRequest.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Bot/BatchImportSkillRequest.cs @@ -1,12 +1,10 @@ using System.Collections.Generic; -using System.Xml.Serialization; namespace SKIT.FlurlHttpClient.Wechat.OpenAI.Models { /// /// 表示 [POST] /batchimportskill/{TOKEN} 接口的请求。 /// - [XmlRoot("xml")] public class BatchImportSkillRequest : WechatOpenAIRequest, WechatOpenAIRequest.Serialization.IEncryptedXmlable { public static class Types @@ -16,25 +14,29 @@ namespace SKIT.FlurlHttpClient.Wechat.OpenAI.Models /// /// 获取或设置技能名称。 /// - [XmlElement("skillname")] + [Newtonsoft.Json.JsonProperty("skillname")] + [System.Text.Json.Serialization.JsonPropertyName("skillname")] public string SkillName { get; set; } = string.Empty; /// /// 获取或设置标准问题。 /// - [XmlElement("title")] + [Newtonsoft.Json.JsonProperty("title")] + [System.Text.Json.Serialization.JsonPropertyName("title")] public string Title { get; set; } = string.Empty; /// /// 获取或设置相似问题列表。 /// - [XmlElement("question", Type = typeof(string))] + [Newtonsoft.Json.JsonProperty("question")] + [System.Text.Json.Serialization.JsonPropertyName("question")] public IList QuestionList { get; set; } = new List(); /// /// 获取或设置机器人回答列表。 /// - [XmlElement("answer", Type = typeof(string))] + [Newtonsoft.Json.JsonProperty("answer")] + [System.Text.Json.Serialization.JsonPropertyName("answer")] public IList AnswerList { get; set; } = new List(); } } @@ -42,13 +44,15 @@ namespace SKIT.FlurlHttpClient.Wechat.OpenAI.Models /// /// 获取或设置管理员 ID。 /// - [XmlElement("managerid")] + [Newtonsoft.Json.JsonProperty("managerid")] + [System.Text.Json.Serialization.JsonPropertyName("managerid")] public string ManagetId { get; set; } = string.Empty; /// /// 获取或设置技能列表。 /// - [XmlElement("skill", Type = typeof(Types.Skill))] + [Newtonsoft.Json.JsonProperty("skill")] + [System.Text.Json.Serialization.JsonPropertyName("skill")] public IList SkillList { get; set; } = new List(); } } diff --git a/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Bot/LabelBatchSetRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Bot/LabelBatchSetRequest.cs index 17c590cb..cb5266e6 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Bot/LabelBatchSetRequest.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Bot/LabelBatchSetRequest.cs @@ -1,43 +1,55 @@ using System.Collections.Generic; -using System.Xml.Serialization; namespace SKIT.FlurlHttpClient.Wechat.OpenAI.Models { /// /// 表示 [POST] /label/batchset/{TOKEN} 接口的请求。 /// - [XmlRoot("xml")] public class LabelBatchSetRequest : WechatOpenAIRequest, WechatOpenAIRequest.Serialization.IEncryptedXmlable { + public static class Types + { + public class OpenIdList + { + [Newtonsoft.Json.JsonProperty("openid")] + [System.Text.Json.Serialization.JsonPropertyName("openid")] + public IList Items { get; set; } = new List(); + } + } + /// /// 获取或设置微信 AppId。 /// - [XmlElement("appid")] + [Newtonsoft.Json.JsonProperty("appid")] + [System.Text.Json.Serialization.JsonPropertyName("appid")] public string AppId { get; set; } = string.Empty; /// /// 获取或设置标签名称。 /// - [XmlElement("category")] + [Newtonsoft.Json.JsonProperty("category")] + [System.Text.Json.Serialization.JsonPropertyName("category")] public string Category { get; set; } = string.Empty; /// /// 获取或设置二级标签名称。 /// - [XmlElement("label")] + [Newtonsoft.Json.JsonProperty("label")] + [System.Text.Json.Serialization.JsonPropertyName("label")] public string Label { get; set; } = string.Empty; /// /// 获取或设置标签分类规则。 /// - [XmlElement("desc")] + [Newtonsoft.Json.JsonProperty("desc")] + [System.Text.Json.Serialization.JsonPropertyName("desc")] public string Description { get; set; } = string.Empty; /// /// 获取或设置要设置标签的 OpenId 列表。 /// - [XmlArray("list")] - [XmlArrayItem("openid", Type = typeof(string))] - public IList OpenIdList { get; set; } = new List(); + [Newtonsoft.Json.JsonProperty("list")] + [System.Text.Json.Serialization.JsonPropertyName("list")] + public Types.OpenIdList OpenIdList { get; set; } = new Types.OpenIdList(); } } diff --git a/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Bot/PublishProgressRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Bot/PublishProgressRequest.cs index 900e94f3..2a8f4a5b 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Bot/PublishProgressRequest.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Bot/PublishProgressRequest.cs @@ -1,17 +1,15 @@ -using System.Xml.Serialization; - namespace SKIT.FlurlHttpClient.Wechat.OpenAI.Models { /// /// 表示 [POST] /publish_progress/{TOKEN} 接口的请求。 /// - [XmlRoot("xml")] public class PublishProgressRequest : WechatOpenAIRequest, WechatOpenAIRequest.Serialization.IEncryptedXmlable { /// /// 获取或设置管理员 ID。 /// - [XmlElement("managerid")] + [Newtonsoft.Json.JsonProperty("managerid")] + [System.Text.Json.Serialization.JsonPropertyName("managerid")] public string ManagerId { get; set; } = string.Empty; } } diff --git a/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Bot/PublishRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Bot/PublishRequest.cs index 42b9ead9..9bf4ecbd 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Bot/PublishRequest.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Bot/PublishRequest.cs @@ -1,17 +1,15 @@ -using System.Xml.Serialization; - namespace SKIT.FlurlHttpClient.Wechat.OpenAI.Models { /// /// 表示 [POST] /publish/{TOKEN} 接口的请求。 /// - [XmlRoot("xml")] public class PublishRequest : WechatOpenAIRequest, WechatOpenAIRequest.Serialization.IEncryptedXmlable { /// /// 获取或设置管理员 ID。 /// - [XmlElement("managerid")] + [Newtonsoft.Json.JsonProperty("managerid")] + [System.Text.Json.Serialization.JsonPropertyName("managerid")] public string ManagerId { get; set; } = string.Empty; } } diff --git a/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Bot/SetAutoReplyRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Bot/SetAutoReplyRequest.cs index 5647f9dc..a4c78b0f 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Bot/SetAutoReplyRequest.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Bot/SetAutoReplyRequest.cs @@ -1,43 +1,55 @@ using System.Collections.Generic; -using System.Xml.Serialization; namespace SKIT.FlurlHttpClient.Wechat.OpenAI.Models { /// /// 表示 [POST] /setautoreply/{TOKEN} 接口的请求。 /// - [XmlRoot("xml")] public class SetAutoReplyRequest : WechatOpenAIRequest, WechatOpenAIRequest.Serialization.IEncryptedXmlable { + public static class Types + { + public class QuestionList + { + [Newtonsoft.Json.JsonProperty("question")] + [System.Text.Json.Serialization.JsonPropertyName("question")] + public IList Items { get; set; } = new List(); + } + } + /// /// 获取或设置管理员 ID。 /// - [XmlElement("managerid")] + [Newtonsoft.Json.JsonProperty("managerid")] + [System.Text.Json.Serialization.JsonPropertyName("managerid")] public string ManagetId { get; set; } = string.Empty; /// /// 获取或设置技能名称。 /// - [XmlElement("skillname")] + [Newtonsoft.Json.JsonProperty("skillname")] + [System.Text.Json.Serialization.JsonPropertyName("skillname")] public string SkillName { get; set; } = string.Empty; /// /// 获取或设置标准问题。 /// - [XmlElement("title")] + [Newtonsoft.Json.JsonProperty("title")] + [System.Text.Json.Serialization.JsonPropertyName("title")] public string Title { get; set; } = string.Empty; /// /// 获取或设置自动回答的内容。 /// - [XmlElement("content")] + [Newtonsoft.Json.JsonProperty("content")] + [System.Text.Json.Serialization.JsonPropertyName("content")] public string Content { get; set; } = string.Empty; /// /// 获取或设置相似问题列表。 /// - [XmlArray("list")] - [XmlArrayItem("question", Type = typeof(string))] - public IList QuestionList { get; set; } = new List(); + [Newtonsoft.Json.JsonProperty("list")] + [System.Text.Json.Serialization.JsonPropertyName("list")] + public Types.QuestionList QuestionList { get; set; } = new Types.QuestionList(); } } diff --git a/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Dialog/FeedbackRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Dialog/FeedbackRequest.cs index 0bf3b986..e0d4f039 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Dialog/FeedbackRequest.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Dialog/FeedbackRequest.cs @@ -1,29 +1,29 @@ -using System.Xml.Serialization; - namespace SKIT.FlurlHttpClient.Wechat.OpenAI.Models { /// /// 表示 [POST] /feedback/{TOKEN} 接口的请求。 /// - [XmlRoot("xml")] public class FeedbackRequest : WechatOpenAIRequest, WechatOpenAIRequest.Serialization.IEncryptedXmlable { /// /// 获取或设置消息 ID。 /// - [XmlElement("msgid")] + [Newtonsoft.Json.JsonProperty("msgid")] + [System.Text.Json.Serialization.JsonPropertyName("msgid")] public string MessageId { get; set; } = string.Empty; /// /// 获取或设置反馈结果。 /// - [XmlElement("feedbackResult")] + [Newtonsoft.Json.JsonProperty("feedbackResult")] + [System.Text.Json.Serialization.JsonPropertyName("feedbackResult")] public int FeedbackResult { get; set; } /// /// 获取或设置用户反馈时间戳。 /// - [XmlElement("updateAt")] + [Newtonsoft.Json.JsonProperty("updateAt")] + [System.Text.Json.Serialization.JsonPropertyName("updateAt")] public long UpdateTimestamp { get; set; } } } diff --git a/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Dialog/GetHotQueryDetailRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Dialog/GetHotQueryDetailRequest.cs index b919b612..8e894aa0 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Dialog/GetHotQueryDetailRequest.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Dialog/GetHotQueryDetailRequest.cs @@ -1,67 +1,73 @@ -using System.Xml.Serialization; - namespace SKIT.FlurlHttpClient.Wechat.OpenAI.Models { /// /// 表示 [POST] /gethotquerydetail/{TOKEN} 接口的请求。 /// - [XmlRoot("xml")] public class GetHotQueryDetailRequest : WechatOpenAIRequest, WechatOpenAIRequest.Serialization.IEncryptedXmlable { /// /// 获取或设置分页页数。 /// 默认值:1 /// - [XmlElement("pageNo")] + [Newtonsoft.Json.JsonProperty("pageNo")] + [System.Text.Json.Serialization.JsonPropertyName("pageNo")] public int Page { get; set; } = 1; /// /// 获取或设置分页每页数量。 /// 默认值:10 /// - [XmlElement("pageSize")] + [Newtonsoft.Json.JsonProperty("pageSize")] + [System.Text.Json.Serialization.JsonPropertyName("pageSize")] public int Limit { get; set; } = 10; /// /// 获取或设置命中类型。 /// - [XmlElement("matchType", IsNullable = true)] + [Newtonsoft.Json.JsonProperty("matchType")] + [System.Text.Json.Serialization.JsonPropertyName("matchType")] public int? MatchType { get; set; } /// /// 获取或设置问题类型。 /// - [XmlElement("cluesType", IsNullable = true)] + [Newtonsoft.Json.JsonProperty("cluesType")] + [System.Text.Json.Serialization.JsonPropertyName("cluesType")] public int? ClueType { get; set; } /// /// 获取或设置报告类型。 /// - [XmlElement("reportType", IsNullable = true)] + [Newtonsoft.Json.JsonProperty("reportType")] + [System.Text.Json.Serialization.JsonPropertyName("reportType")] public int? ReportType { get; set; } /// /// 获取或设置日期字符串(格式:yyyy-MM-dd)。 /// - [XmlElement("date")] + [Newtonsoft.Json.JsonProperty("date")] + [System.Text.Json.Serialization.JsonPropertyName("date")] public string DateString { get; set; } = string.Empty; /// /// 获取或设置开发者的 OpenId。 /// - [XmlElement("openid")] + [Newtonsoft.Json.JsonProperty("openid")] + [System.Text.Json.Serialization.JsonPropertyName("openid")] public string OpenId { get; set; } = string.Empty; /// /// 获取或设置聚类结果类别 ID。 /// - [XmlElement("clusterId")] + [Newtonsoft.Json.JsonProperty("clusterId")] + [System.Text.Json.Serialization.JsonPropertyName("clusterId")] public string ClusterId { get; set; } = string.Empty; /// /// 获取或设置聚类结果。 /// - [XmlElement("hotQuesCluster", IsNullable = true)] + [Newtonsoft.Json.JsonProperty("hotQuesCluster")] + [System.Text.Json.Serialization.JsonPropertyName("hotQuesCluster")] public string? HotQuestionCluster { get; set; } } } diff --git a/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Dialog/GetHotQueryListRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Dialog/GetHotQueryListRequest.cs index 125a6f39..738f2437 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Dialog/GetHotQueryListRequest.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Dialog/GetHotQueryListRequest.cs @@ -1,55 +1,59 @@ -using System.Xml.Serialization; - namespace SKIT.FlurlHttpClient.Wechat.OpenAI.Models { /// /// 表示 [POST] /gethotquerylist/{TOKEN} 接口的请求。 /// - [XmlRoot("xml")] public class GetHotQueryListRequest : WechatOpenAIRequest, WechatOpenAIRequest.Serialization.IEncryptedXmlable { /// /// 获取或设置分页页数。 /// 默认值:1 /// - [XmlElement("pageNo")] + [Newtonsoft.Json.JsonProperty("pageNo")] + [System.Text.Json.Serialization.JsonPropertyName("pageNo")] public int Page { get; set; } = 1; /// /// 获取或设置分页每页数量。 /// 默认值:10 /// - [XmlElement("pageSize")] + [Newtonsoft.Json.JsonProperty("pageSize")] + [System.Text.Json.Serialization.JsonPropertyName("pageSize")] public int Limit { get; set; } = 10; /// /// 获取或设置命中类型。 /// - [XmlElement("matchType", IsNullable = true)] + [Newtonsoft.Json.JsonProperty("matchType")] + [System.Text.Json.Serialization.JsonPropertyName("matchType")] public int? MatchType { get; set; } /// /// 获取或设置问题类型。 /// - [XmlElement("cluesType", IsNullable = true)] + [Newtonsoft.Json.JsonProperty("cluesType")] + [System.Text.Json.Serialization.JsonPropertyName("cluesType")] public int? ClueType { get; set; } /// /// 获取或设置报告类型。 /// - [XmlElement("reportType", IsNullable = true)] + [Newtonsoft.Json.JsonProperty("reportType")] + [System.Text.Json.Serialization.JsonPropertyName("reportType")] public int? ReportType { get; set; } /// /// 获取或设置日期字符串(格式:yyyy-MM-dd)。 /// - [XmlElement("date")] + [Newtonsoft.Json.JsonProperty("date")] + [System.Text.Json.Serialization.JsonPropertyName("date")] public string DateString { get; set; } = string.Empty; /// /// 获取或设置开发者的 OpenId。 /// - [XmlElement("openid")] + [Newtonsoft.Json.JsonProperty("openid")] + [System.Text.Json.Serialization.JsonPropertyName("openid")] public string OpenId { get; set; } = string.Empty; } } diff --git a/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Mp/AssetsUploadRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Mp/AssetsUploadRequest.cs index 5512a92c..7ec663d2 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Mp/AssetsUploadRequest.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Mp/AssetsUploadRequest.cs @@ -1,36 +1,38 @@ -using System; -using System.Xml.Serialization; +using System; namespace SKIT.FlurlHttpClient.Wechat.OpenAI.Models { /// /// 表示 [POST] /assetsupload/{TOKEN} 接口的请求。 /// - [XmlRoot("xml")] public class AssetsUploadRequest : WechatOpenAIRequest, WechatOpenAIRequest.Serialization.IEncryptedXmlable { /// /// 获取或设置用户 ID。 /// - [XmlElement("userid")] + [Newtonsoft.Json.JsonProperty("userid")] + [System.Text.Json.Serialization.JsonPropertyName("userid")] public string UserId { get; set; } = string.Empty; /// /// 获取或设置文件字节数组。 /// - [XmlIgnore] + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] public byte[] FileBytes { get; set; } = Array.Empty(); /// /// 获取或设置文件名。如果不指定将由系统自动生成。 /// - [XmlIgnore] + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] public string? FileName { get; set; } /// /// 获取或设置文件 Conent-Type。如果不指定将由系统自动生成。 /// - [XmlIgnore] + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] public string? FileContentType { get; set; } } } diff --git a/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Mp/GetBindLinkRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Mp/GetBindLinkRequest.cs index b3038c8a..811dc064 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Mp/GetBindLinkRequest.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Mp/GetBindLinkRequest.cs @@ -1,17 +1,15 @@ -using System.Xml.Serialization; - namespace SKIT.FlurlHttpClient.Wechat.OpenAI.Models { /// /// 表示 [POST] /getbindlink/{TOKEN} 接口的请求。 /// - [XmlRoot("xml")] public class GetBindLinkRequest : WechatOpenAIRequest, WechatOpenAIRequest.Serialization.IEncryptedXmlable { /// /// 获取或设置直播 ID。 /// - [XmlElement("redirectlink")] - public string RedirectLink { get; set; } = string.Empty; + [Newtonsoft.Json.JsonProperty("redirectlink")] + [System.Text.Json.Serialization.JsonPropertyName("redirectlink")] + public string RedirectUrl { get; set; } = string.Empty; } } diff --git a/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Mp/GetBindLinkResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Mp/GetBindLinkResponse.cs index 13976a44..75038cbd 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Mp/GetBindLinkResponse.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Mp/GetBindLinkResponse.cs @@ -24,6 +24,6 @@ namespace SKIT.FlurlHttpClient.Wechat.OpenAI.Models /// [Newtonsoft.Json.JsonProperty("link")] [System.Text.Json.Serialization.JsonPropertyName("link")] - public string Url { get; set; } = default!; + public string LinkUrl { get; set; } = default!; } } diff --git a/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Mp/GetBindListRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Mp/GetBindListRequest.cs index 6ab10a6b..db589bbf 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Mp/GetBindListRequest.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Mp/GetBindListRequest.cs @@ -1,12 +1,9 @@ -using System.Xml.Serialization; - namespace SKIT.FlurlHttpClient.Wechat.OpenAI.Models { /// /// 表示 [POST] /getbindlist/{TOKEN} 接口的请求。 /// - [XmlRoot("xml")] - public class GetBindListRequest : WechatOpenAIRequest, WechatOpenAIRequest.Serialization.IEncryptedXmlable + public class GetBindListRequest : WechatOpenAIRequest { } } diff --git a/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Mp/GetH5LinkRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Mp/GetH5LinkRequest.cs index 9bf4de85..f3dcc293 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Mp/GetH5LinkRequest.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Mp/GetH5LinkRequest.cs @@ -1,17 +1,15 @@ -using System.Xml.Serialization; - namespace SKIT.FlurlHttpClient.Wechat.OpenAI.Models { /// /// 表示 [POST] /geth5link/{TOKEN} 接口的请求。 /// - [XmlRoot("xml")] public class GetH5LinkRequest : WechatOpenAIRequest, WechatOpenAIRequest.Serialization.IEncryptedXmlable { /// /// 获取或设置页面标题。 /// - [XmlElement("title", IsNullable = true)] + [Newtonsoft.Json.JsonProperty("title")] + [System.Text.Json.Serialization.JsonPropertyName("title")] public string? Title { get; set; } } } diff --git a/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Mp/GetH5LinkResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Mp/GetH5LinkResponse.cs index 137238e7..610aba31 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Mp/GetH5LinkResponse.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Mp/GetH5LinkResponse.cs @@ -24,6 +24,6 @@ namespace SKIT.FlurlHttpClient.Wechat.OpenAI.Models /// [Newtonsoft.Json.JsonProperty("link")] [System.Text.Json.Serialization.JsonPropertyName("link")] - public string Url { get; set; } = default!; + public string LinkUrl { get; set; } = default!; } } diff --git a/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Mp/UnbindMpRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Mp/UnbindMpRequest.cs index c0b8c9b0..f7a71bde 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Mp/UnbindMpRequest.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Mp/UnbindMpRequest.cs @@ -1,17 +1,15 @@ -using System.Xml.Serialization; - namespace SKIT.FlurlHttpClient.Wechat.OpenAI.Models { /// /// 表示 [POST] /unbindmp/{TOKEN} 接口的请求。 /// - [XmlRoot("xml")] public class UnbindMpRequest : WechatOpenAIRequest, WechatOpenAIRequest.Serialization.IEncryptedXmlable { /// /// 获取或设置微信 AppId。 /// - [XmlElement("authorizer_appid")] + [Newtonsoft.Json.JsonProperty("authorizer_appid")] + [System.Text.Json.Serialization.JsonPropertyName("authorizer_appid")] public string AuthorizerAppId { get; set; } = string.Empty; } } diff --git a/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/ThirdKf/KefuStateChangeRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/ThirdKf/KefuStateChangeRequest.cs index 6b9ca515..caef27d4 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/ThirdKf/KefuStateChangeRequest.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/ThirdKf/KefuStateChangeRequest.cs @@ -1,35 +1,36 @@ -using System.Xml.Serialization; - namespace SKIT.FlurlHttpClient.Wechat.OpenAI.Models { /// /// 表示 [POST] /kefustate/change/{TOKEN} 接口的请求。 /// - [XmlRoot("xml")] public class KefuStateChangeRequest : WechatOpenAIRequest, WechatOpenAIRequest.Serialization.IEncryptedXmlable { /// /// 获取或设置微信 AppId。如果不指定将使用构造 时的 参数。 /// - [XmlElement("appid")] + [Newtonsoft.Json.JsonProperty("appid")] + [System.Text.Json.Serialization.JsonPropertyName("appid")] public string? AppId { get; set; } /// /// 获取或设置用户的 OpenId。 /// - [XmlElement("openid")] + [Newtonsoft.Json.JsonProperty("openid")] + [System.Text.Json.Serialization.JsonPropertyName("openid")] public string OpenId { get; set; } = string.Empty; /// /// 获取或设置客服接入状态。 /// - [XmlElement("kefustate")] + [Newtonsoft.Json.JsonProperty("kefustate")] + [System.Text.Json.Serialization.JsonPropertyName("kefustate")] public string KfState { get; set; } = string.Empty; /// /// 获取或设置有效期(单位:秒)。 /// - [XmlElement("expires", IsNullable = true)] + [Newtonsoft.Json.JsonProperty("expires")] + [System.Text.Json.Serialization.JsonPropertyName("expires")] public int? ExpiresIn { get; set; } } } diff --git a/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/ThirdKf/KefuStateGetRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/ThirdKf/KefuStateGetRequest.cs index 0726e038..97555d80 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/ThirdKf/KefuStateGetRequest.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/ThirdKf/KefuStateGetRequest.cs @@ -1,29 +1,29 @@ -using System.Xml.Serialization; - namespace SKIT.FlurlHttpClient.Wechat.OpenAI.Models { /// /// 表示 [POST] /kefustate/get/{TOKEN} 接口的请求。 /// - [XmlRoot("xml")] public class KefuStateGetRequest : WechatOpenAIRequest, WechatOpenAIRequest.Serialization.IEncryptedXmlable { /// /// 获取或设置微信 AppId。如果不指定将使用构造 时的 参数。 /// - [XmlElement("appid")] + [Newtonsoft.Json.JsonProperty("appid")] + [System.Text.Json.Serialization.JsonPropertyName("appid")] public string? AppId { get; set; } /// /// 获取或设置用户的 OpenId。 /// - [XmlElement("openid")] + [Newtonsoft.Json.JsonProperty("openid")] + [System.Text.Json.Serialization.JsonPropertyName("openid")] public string OpenId { get; set; } = string.Empty; /// /// 获取或设置获取类型。 /// - [XmlElement("type", IsNullable = true)] + [Newtonsoft.Json.JsonProperty("type")] + [System.Text.Json.Serialization.JsonPropertyName("type")] public int? Type { get; set; } } } diff --git a/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/ThirdKf/SendMessageRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/ThirdKf/SendMessageRequest.cs index c7e9bbe6..cfb2da92 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/ThirdKf/SendMessageRequest.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/ThirdKf/SendMessageRequest.cs @@ -1,59 +1,64 @@ -using System.Xml.Serialization; - namespace SKIT.FlurlHttpClient.Wechat.OpenAI.Models { /// /// 表示 [POST] /sendmsg/{TOKEN} 接口的请求。 /// - [XmlRoot("xml")] public class SendMessageRequest : WechatOpenAIRequest, WechatOpenAIRequest.Serialization.IEncryptedXmlable { /// /// 获取或设置微信 AppId。如果不指定将使用构造 时的 参数。 /// - [XmlElement("appid")] + [Newtonsoft.Json.JsonProperty("appid")] + [System.Text.Json.Serialization.JsonPropertyName("appid")] public string? AppId { get; set; } /// /// 获取或设置用户的 OpenId。 /// - [XmlElement("openid")] + [Newtonsoft.Json.JsonProperty("openid")] + [System.Text.Json.Serialization.JsonPropertyName("openid")] public string OpenId { get; set; } = string.Empty; /// /// 获取或设置消息内容。 /// - [XmlElement("msg")] + [Newtonsoft.Json.JsonProperty("msg")] + [System.Text.Json.Serialization.JsonPropertyName("msg")] public string Message { get; set; } = string.Empty; /// /// 获取或设置渠道。 /// - [XmlElement("channel")] + [Newtonsoft.Json.JsonProperty("channel")] + [System.Text.Json.Serialization.JsonPropertyName("channel")] public int Channel { get; set; } /// /// 获取或设置事件。 /// - [XmlElement("event", IsNullable = true)] + [Newtonsoft.Json.JsonProperty("event")] + [System.Text.Json.Serialization.JsonPropertyName("event")] public string? Event { get; set; } /// /// 获取或设置客服人员的昵称。 /// - [XmlElement("kefuname", IsNullable = true)] + [Newtonsoft.Json.JsonProperty("kefuname")] + [System.Text.Json.Serialization.JsonPropertyName("kefuname")] public string? KfName { get; set; } /// /// 获取或设置客服人员的头像 URL。 /// - [XmlElement("kefuavatar", IsNullable = true)] + [Newtonsoft.Json.JsonProperty("kefuavatar")] + [System.Text.Json.Serialization.JsonPropertyName("kefuavatar")] public string? KfAvatarUrl { get; set; } /// /// 获取或设置分类或技能名称。 /// - [XmlElement("ans_node_name", IsNullable = true)] + [Newtonsoft.Json.JsonProperty("ans_node_name")] + [System.Text.Json.Serialization.JsonPropertyName("ans_node_name")] public string? AnswerNodeName { get; set; } } } diff --git a/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Utilities/Internal/XmlUtility.cs b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Utilities/Internal/XmlUtility.cs index dc77c7b2..8b67022c 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Utilities/Internal/XmlUtility.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Utilities/Internal/XmlUtility.cs @@ -5,6 +5,7 @@ using System.Text; using System.Text.RegularExpressions; using System.Xml; using System.Xml.Serialization; +using Newtonsoft.Json; namespace SKIT.FlurlHttpClient.Wechat.OpenAI.Utilities { @@ -60,11 +61,6 @@ namespace SKIT.FlurlHttpClient.Wechat.OpenAI.Utilities return Serialize(typeof(T), obj); } - public static string Serialize(object obj) - { - return Serialize(obj.GetType(), obj); - } - public static object Deserialize(Type type, string xml) { using var reader = new StringReader(xml); @@ -77,5 +73,12 @@ namespace SKIT.FlurlHttpClient.Wechat.OpenAI.Utilities { return (T)Deserialize(typeof(T), xml); } + + public static string ConvertFromJson(string json) + { + XmlDocument xmlDocument = JsonConvert.DeserializeXmlNode(json, "xml")!; + string xml = xmlDocument.InnerXml; + return xml; + } } } diff --git a/src/SKIT.FlurlHttpClient.Wechat.OpenAI/WechatOpenAIClient.cs b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/WechatOpenAIClient.cs index ddedf0d7..83e69373 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.OpenAI/WechatOpenAIClient.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/WechatOpenAIClient.cs @@ -102,7 +102,7 @@ namespace SKIT.FlurlHttpClient.Wechat.OpenAI { if (data is WechatOpenAIRequest.Serialization.IEncryptedXmlable) { - string plainXml = Utilities.XmlUtility.Serialize(data); + string plainXml = Utilities.XmlUtility.ConvertFromJson(JsonSerializer.Serialize(data)); string encryptedXml = Utilities.WxMsgCryptor.AESEncrypt(plainText: plainXml, encodingAESKey: Credentials.EncodingAESKey!, appId: Credentials.AppId!); data = new { encrypt = encryptedXml }; } diff --git a/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Bot/BatchImportSkillRequest.json b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Bot/BatchImportSkillRequest.json new file mode 100644 index 00000000..4b632a28 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Bot/BatchImportSkillRequest.json @@ -0,0 +1,28 @@ +{ + "managerid": "平台管理员ID", + "skill": [ + { + "skillname": "技能名称1", + "title": "标准问题2", + "question": [ + "相似问题1", + "相似问题2", + "相似问题3" + ], + "answer": [ + "1", + "2" + ] + }, + { + "skillname": "技能名称1", + "title": "标准问题3", + "question": [ + "相似问题1" + ], + "answer": [ + "1" + ] + } + ] +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Bot/LabelBatchSetRequest.json b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Bot/LabelBatchSetRequest.json new file mode 100644 index 00000000..b7d1453b --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Bot/LabelBatchSetRequest.json @@ -0,0 +1,12 @@ +{ + "appid": "wxxxxx", + "category": "完件", + "label": "完成", + "desc": "在 app 中完成了用户信息", + "list": { + "openid": [ + "openid_1", + "openid_2" + ] + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Bot/PublishProgressRequest.json b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Bot/PublishProgressRequest.json new file mode 100644 index 00000000..2ac6bf5f --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Bot/PublishProgressRequest.json @@ -0,0 +1,3 @@ +{ + "managerid": "平台管理员ID" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Bot/PublishProgressResponse.json b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Bot/PublishProgressResponse.json new file mode 100644 index 00000000..c4c9324b --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Bot/PublishProgressResponse.json @@ -0,0 +1,10 @@ +{ + "errcode": 1001, + "errmsg": "TOKEN is not valid", + "code": 0, + "data": { + "progress": 100, + "status": 1 + }, + "msg": "success" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Bot/PublishRequest.json b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Bot/PublishRequest.json new file mode 100644 index 00000000..2ac6bf5f --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Bot/PublishRequest.json @@ -0,0 +1,3 @@ +{ + "managerid": "平台管理员ID" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Bot/SetAutoReplyRequest.json b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Bot/SetAutoReplyRequest.json new file mode 100644 index 00000000..6324d688 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Bot/SetAutoReplyRequest.json @@ -0,0 +1,12 @@ +{ + "managerid": "平台管理员ID", + "skillname": "技能名称", + "title": "标准问题", + "content": "自动回答的内容", + "list": { + "question": [ + "相似问题1", + "相似问题2" + ] + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Dialog/FeedbackRequest.json b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Dialog/FeedbackRequest.json new file mode 100644 index 00000000..02ec95d0 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Dialog/FeedbackRequest.json @@ -0,0 +1,5 @@ +{ + "msgid": "WtxsA9ENwZtFdjK", + "feedbackResult": 1, + "updateAt": 1653496004 +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Dialog/GetHotQueryDetailRequest.json b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Dialog/GetHotQueryDetailRequest.json new file mode 100644 index 00000000..b8022335 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Dialog/GetHotQueryDetailRequest.json @@ -0,0 +1,11 @@ +{ + "pageNo": 1, + "pageSize": 10, + "matchType": 0, + "cluesType": 0, + "reportType": 0, + "date": "2021-07-19", + "openid": "abcdasdf123123asldjfalsjdf", + "clusterId": "10971,10971,openaiquerycluster_10971_a32bfe917bbae4b6d09b90482c33c4b6", + "hotQuesCluster": "遇到难以解决问题,请轻按此处反馈给我们,我们会第一时间处理。" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Dialog/GetHotQueryListRequest.json b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Dialog/GetHotQueryListRequest.json new file mode 100644 index 00000000..1175e475 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Dialog/GetHotQueryListRequest.json @@ -0,0 +1,9 @@ +{ + "pageNo": 1, + "pageSize": 10, + "matchType": 0, + "cluesType": 0, + "reportType": 0, + "date": "2021-07-19", + "openid": "abcdasdf123123asldjfalsjdf" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Mp/AssetsUploadRequest.json b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Mp/AssetsUploadRequest.json new file mode 100644 index 00000000..06bc6784 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Mp/AssetsUploadRequest.json @@ -0,0 +1,3 @@ +{ + "userid": "xxxxx" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Mp/GetBindLinkRequest.json b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Mp/GetBindLinkRequest.json new file mode 100644 index 00000000..a22be67d --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Mp/GetBindLinkRequest.json @@ -0,0 +1,3 @@ +{ + "redirectlink": "https://xxx.com/xxx" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Mp/GetH5LinkRequest.json b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Mp/GetH5LinkRequest.json new file mode 100644 index 00000000..3e73544a --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Mp/GetH5LinkRequest.json @@ -0,0 +1,3 @@ +{ + "title": "xxx客服" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Mp/UnbindMpRequest.json b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Mp/UnbindMpRequest.json new file mode 100644 index 00000000..c7b03697 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Mp/UnbindMpRequest.json @@ -0,0 +1,3 @@ +{ + "authorizer_appid": "https://xxx.com/xxx" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/ThirdKf/KefuStateChangeRequest.json b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/ThirdKf/KefuStateChangeRequest.json new file mode 100644 index 00000000..0aab4b91 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/ThirdKf/KefuStateChangeRequest.json @@ -0,0 +1,5 @@ +{ + "appid": "wxxxxx", + "openid": "xxxxx", + "kefustate": "needperson" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/ThirdKf/KefuStateGetRequest.json b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/ThirdKf/KefuStateGetRequest.json new file mode 100644 index 00000000..ac447b99 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/ThirdKf/KefuStateGetRequest.json @@ -0,0 +1,4 @@ +{ + "appid": "wxxxxx", + "openid": "xxxxx" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/ThirdKf/SendMessageRequest.json b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/ThirdKf/SendMessageRequest.json new file mode 100644 index 00000000..d007fac0 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/ThirdKf/SendMessageRequest.json @@ -0,0 +1,9 @@ +{ + "appid": "wxxxxx", + "openid": "xxxxx", + "msg": "您好,请问需要什么帮助", + "channel": 0, + "kefuname": "客服昵称", + "kefuavatar": "客服头像图片 URL 地址", + "ans_node_name": "分类或技能名称" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/TestCase_ApiExecuteDialogTests.cs b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/TestCase_ApiExecuteDialogTests.cs new file mode 100644 index 00000000..6c46b7a5 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/TestCase_ApiExecuteDialogTests.cs @@ -0,0 +1,17 @@ +using System.Threading.Tasks; +using Xunit; + +namespace SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests +{ + public class TestCase_ApiExecuteDialogTests + { + [Fact(DisplayName = "测试用例:调用 API [POST] /sign/{TOKEN}")] + public async Task TestExecuteSign() + { + var request = new Models.SignRequest() { UserId = "TEST_USERID" }; + var response = await TestClients.Instance.ExecuteSignAsync(request); + + Assert.NotNull(response.Signature); + } + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/TestCase_ApiExecuteMpTests.cs b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/TestCase_ApiExecuteMpTests.cs new file mode 100644 index 00000000..8ba72381 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/TestCase_ApiExecuteMpTests.cs @@ -0,0 +1,17 @@ +using System.Threading.Tasks; +using Xunit; + +namespace SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests +{ + public class TestCase_ApiExecuteMpTests + { + [Fact(DisplayName = "测试用例:调用 API [POST] /getbindlink/{TOKEN}")] + public async Task TestExecuteSign() + { + var request = new Models.GetBindLinkRequest() { RedirectUrl = "https://example.com" }; + var response = await TestClients.Instance.ExecuteGetBindLinkAsync(request); + + Assert.NotNull(response.LinkUrl); + } + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/TestCase_XmlUtilityTests.cs b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/TestCase_XmlUtilityTests.cs deleted file mode 100644 index 29261088..00000000 --- a/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/TestCase_XmlUtilityTests.cs +++ /dev/null @@ -1,17 +0,0 @@ -using Xunit; - -namespace SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests -{ - public class TestCase_XmlUtilityTests - { - [Fact(DisplayName = "测试用例:XML 序列化派生类")] - public void TestXmlSerializeSubClass() - { - Assert.Null(Record.Exception(() => - { - object obj = new Models.SignRequest() { UserId = "TEST" }; - Utilities.XmlUtility.Serialize(obj); - })); - } - } -}