diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinKfExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinKfExtensions.cs
index 4dc37d29..522a640e 100644
--- a/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinKfExtensions.cs
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinKfExtensions.cs
@@ -312,6 +312,170 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
}
#endregion
+ #region KnowledgeGroup
+ ///
+ /// 异步调用 [POST] /cgi-bin/kf/knowledge/add_group 接口。
+ /// REF: https://developer.work.weixin.qq.com/document/path/95971
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteCgibinKfKnowledgeAddGroupAsync(this WechatWorkClient client, Models.CgibinKfKnowledgeAddGroupRequest request, CancellationToken cancellationToken = default)
+ {
+ if (client is null) throw new ArgumentNullException(nameof(client));
+ if (request is null) throw new ArgumentNullException(nameof(request));
+
+ IFlurlRequest flurlReq = client
+ .CreateRequest(request, HttpMethod.Post, "cgi-bin", "kf", "knowledge", "add_group")
+ .SetQueryParam("access_token", request.AccessToken);
+
+ return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
+ }
+
+ ///
+ /// 异步调用 [POST] /cgi-bin/kf/knowledge/mod_group 接口。
+ /// REF: https://developer.work.weixin.qq.com/document/path/95971
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteCgibinKfKnowledgeModifyGroupAsync(this WechatWorkClient client, Models.CgibinKfKnowledgeModifyGroupRequest request, CancellationToken cancellationToken = default)
+ {
+ if (client is null) throw new ArgumentNullException(nameof(client));
+ if (request is null) throw new ArgumentNullException(nameof(request));
+
+ IFlurlRequest flurlReq = client
+ .CreateRequest(request, HttpMethod.Post, "cgi-bin", "kf", "knowledge", "mod_group")
+ .SetQueryParam("access_token", request.AccessToken);
+
+ return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
+ }
+
+ ///
+ /// 异步调用 [POST] /cgi-bin/kf/knowledge/del_group 接口。
+ /// REF: https://developer.work.weixin.qq.com/document/path/95971
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteCgibinKfKnowledgeDeleteGroupAsync(this WechatWorkClient client, Models.CgibinKfKnowledgeDeleteGroupRequest request, CancellationToken cancellationToken = default)
+ {
+ if (client is null) throw new ArgumentNullException(nameof(client));
+ if (request is null) throw new ArgumentNullException(nameof(request));
+
+ IFlurlRequest flurlReq = client
+ .CreateRequest(request, HttpMethod.Post, "cgi-bin", "kf", "knowledge", "del_group")
+ .SetQueryParam("access_token", request.AccessToken);
+
+ return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
+ }
+
+ ///
+ /// 异步调用 [POST] /cgi-bin/kf/knowledge/list_group 接口。
+ /// REF: https://developer.work.weixin.qq.com/document/path/95971
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteCgibinKfKnowledgeListGroupAsync(this WechatWorkClient client, Models.CgibinKfKnowledgeListGroupRequest request, CancellationToken cancellationToken = default)
+ {
+ if (client is null) throw new ArgumentNullException(nameof(client));
+ if (request is null) throw new ArgumentNullException(nameof(request));
+
+ IFlurlRequest flurlReq = client
+ .CreateRequest(request, HttpMethod.Post, "cgi-bin", "kf", "knowledge", "list_group")
+ .SetQueryParam("access_token", request.AccessToken);
+
+ return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
+ }
+ #endregion
+
+ #region KnowledgeIntent
+ ///
+ /// 异步调用 [POST] /cgi-bin/kf/knowledge/add_intent 接口。
+ /// REF: https://developer.work.weixin.qq.com/document/path/95972
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteCgibinKfKnowledgeAddIntentAsync(this WechatWorkClient client, Models.CgibinKfKnowledgeAddIntentRequest request, CancellationToken cancellationToken = default)
+ {
+ if (client is null) throw new ArgumentNullException(nameof(client));
+ if (request is null) throw new ArgumentNullException(nameof(request));
+
+ IFlurlRequest flurlReq = client
+ .CreateRequest(request, HttpMethod.Post, "cgi-bin", "kf", "knowledge", "add_intent")
+ .SetQueryParam("access_token", request.AccessToken);
+
+ return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
+ }
+
+ ///
+ /// 异步调用 [POST] /cgi-bin/kf/knowledge/mod_intent 接口。
+ /// REF: https://developer.work.weixin.qq.com/document/path/95972
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteCgibinKfKnowledgeModifyIntentAsync(this WechatWorkClient client, Models.CgibinKfKnowledgeModifyIntentRequest request, CancellationToken cancellationToken = default)
+ {
+ if (client is null) throw new ArgumentNullException(nameof(client));
+ if (request is null) throw new ArgumentNullException(nameof(request));
+
+ IFlurlRequest flurlReq = client
+ .CreateRequest(request, HttpMethod.Post, "cgi-bin", "kf", "knowledge", "mod_intent")
+ .SetQueryParam("access_token", request.AccessToken);
+
+ return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
+ }
+
+ ///
+ /// 异步调用 [POST] /cgi-bin/kf/knowledge/del_intent 接口。
+ /// REF: https://developer.work.weixin.qq.com/document/path/95972
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteCgibinKfKnowledgeDeleteIntentAsync(this WechatWorkClient client, Models.CgibinKfKnowledgeDeleteIntentRequest request, CancellationToken cancellationToken = default)
+ {
+ if (client is null) throw new ArgumentNullException(nameof(client));
+ if (request is null) throw new ArgumentNullException(nameof(request));
+
+ IFlurlRequest flurlReq = client
+ .CreateRequest(request, HttpMethod.Post, "cgi-bin", "kf", "knowledge", "del_intent")
+ .SetQueryParam("access_token", request.AccessToken);
+
+ return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
+ }
+
+ ///
+ /// 异步调用 [POST] /cgi-bin/kf/knowledge/list_intent 接口。
+ /// REF: https://developer.work.weixin.qq.com/document/path/95972
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteCgibinKfKnowledgeListIntentAsync(this WechatWorkClient client, Models.CgibinKfKnowledgeListIntentRequest request, CancellationToken cancellationToken = default)
+ {
+ if (client is null) throw new ArgumentNullException(nameof(client));
+ if (request is null) throw new ArgumentNullException(nameof(request));
+
+ IFlurlRequest flurlReq = client
+ .CreateRequest(request, HttpMethod.Post, "cgi-bin", "kf", "knowledge", "list_intent")
+ .SetQueryParam("access_token", request.AccessToken);
+
+ return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
+ }
+ #endregion
+
///
/// 异步调用 [POST] /cgi-bin/kf/send_msg 接口。
/// REF: https://developer.work.weixin.qq.com/document/path/94677
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/KnowledgeGroup/CgibinKfKnowledgeAddGroupRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/KnowledgeGroup/CgibinKfKnowledgeAddGroupRequest.cs
new file mode 100644
index 00000000..da120e82
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/KnowledgeGroup/CgibinKfKnowledgeAddGroupRequest.cs
@@ -0,0 +1,15 @@
+namespace SKIT.FlurlHttpClient.Wechat.Work.Models
+{
+ ///
+ /// 表示 [POST] /cgi-bin/kf/knowledge/add_group 接口的请求。
+ ///
+ public class CgibinKfKnowledgeAddGroupRequest : WechatWorkRequest
+ {
+ ///
+ /// 获取或设置分组名。
+ ///
+ [Newtonsoft.Json.JsonProperty("name")]
+ [System.Text.Json.Serialization.JsonPropertyName("name")]
+ public string Name { get; set; } = string.Empty;
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/KnowledgeGroup/CgibinKfKnowledgeAddGroupResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/KnowledgeGroup/CgibinKfKnowledgeAddGroupResponse.cs
new file mode 100644
index 00000000..1c432919
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/KnowledgeGroup/CgibinKfKnowledgeAddGroupResponse.cs
@@ -0,0 +1,15 @@
+namespace SKIT.FlurlHttpClient.Wechat.Work.Models
+{
+ ///
+ /// 表示 [POST] /cgi-bin/kf/knowledge/add_group 接口的响应。
+ ///
+ public class CgibinKfKnowledgeAddGroupResponse : WechatWorkResponse
+ {
+ ///
+ /// 获取或设置分组 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("group_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("group_id")]
+ public string GroupId { get; set; } = default!;
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/KnowledgeGroup/CgibinKfKnowledgeDeleteGroupRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/KnowledgeGroup/CgibinKfKnowledgeDeleteGroupRequest.cs
new file mode 100644
index 00000000..07e51a89
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/KnowledgeGroup/CgibinKfKnowledgeDeleteGroupRequest.cs
@@ -0,0 +1,15 @@
+namespace SKIT.FlurlHttpClient.Wechat.Work.Models
+{
+ ///
+ /// 表示 [POST] /cgi-bin/kf/knowledge/del_group 接口的请求。
+ ///
+ public class CgibinKfKnowledgeDeleteGroupRequest : WechatWorkRequest
+ {
+ ///
+ /// 获取或设置分组 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("group_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("group_id")]
+ public string GroupId { get; set; } = string.Empty;
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/KnowledgeGroup/CgibinKfKnowledgeDeleteGroupResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/KnowledgeGroup/CgibinKfKnowledgeDeleteGroupResponse.cs
new file mode 100644
index 00000000..62446329
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/KnowledgeGroup/CgibinKfKnowledgeDeleteGroupResponse.cs
@@ -0,0 +1,9 @@
+namespace SKIT.FlurlHttpClient.Wechat.Work.Models
+{
+ ///
+ /// 表示 [POST] /cgi-bin/kf/knowledge/del_group 接口的响应。
+ ///
+ public class CgibinKfKnowledgeDeleteGroupResponse : WechatWorkResponse
+ {
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/KnowledgeGroup/CgibinKfKnowledgeListGroupRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/KnowledgeGroup/CgibinKfKnowledgeListGroupRequest.cs
new file mode 100644
index 00000000..16f58726
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/KnowledgeGroup/CgibinKfKnowledgeListGroupRequest.cs
@@ -0,0 +1,29 @@
+namespace SKIT.FlurlHttpClient.Wechat.Work.Models
+{
+ ///
+ /// 表示 [POST] /cgi-bin/kf/knowledge/list_group 接口的请求。
+ ///
+ public class CgibinKfKnowledgeListGroupRequest : WechatWorkRequest
+ {
+ ///
+ /// 获取或设置分组 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("group_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("group_id")]
+ public string? GroupId { get; set; }
+
+ ///
+ /// 获取或设置翻页标记。
+ ///
+ [Newtonsoft.Json.JsonProperty("cursor")]
+ [System.Text.Json.Serialization.JsonPropertyName("cursor")]
+ public string? Cursor { get; set; }
+
+ ///
+ /// 获取或设置分页每页数量。
+ ///
+ [Newtonsoft.Json.JsonProperty("limit")]
+ [System.Text.Json.Serialization.JsonPropertyName("limit")]
+ public int? Limit { get; set; }
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/KnowledgeGroup/CgibinKfKnowledgeListGroupResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/KnowledgeGroup/CgibinKfKnowledgeListGroupResponse.cs
new file mode 100644
index 00000000..a6cc6455
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/KnowledgeGroup/CgibinKfKnowledgeListGroupResponse.cs
@@ -0,0 +1,60 @@
+namespace SKIT.FlurlHttpClient.Wechat.Work.Models
+{
+ ///
+ /// 表示 [POST] /cgi-bin/kf/knowledge/list_group 接口的响应。
+ ///
+ public class CgibinKfKnowledgeListGroupResponse : WechatWorkResponse
+ {
+ public static class Types
+ {
+ public class Group
+ {
+ ///
+ /// 获取或设置分组 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("group_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("group_id")]
+ public string GroupId { get; set; } = default!;
+
+ ///
+ /// 获取或设置分组名。
+ ///
+ [Newtonsoft.Json.JsonProperty("name")]
+ [System.Text.Json.Serialization.JsonPropertyName("name")]
+ public string Name { get; set; } = default!;
+
+ ///
+ /// 获取或设置是否为默认分组。
+ ///
+ [Newtonsoft.Json.JsonProperty("is_default")]
+ [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.NumericalBooleanConverter))]
+ [System.Text.Json.Serialization.JsonPropertyName("is_default")]
+ [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.NumericalBooleanConverter))]
+ public bool IsDefault { get; set; }
+ }
+ }
+
+ ///
+ /// 获取或设置分组列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("group_list")]
+ [System.Text.Json.Serialization.JsonPropertyName("group_list")]
+ public Types.Group[] GroupList { get; set; } = default!;
+
+ ///
+ /// 获取或设置是否还有更多数据。
+ ///
+ [Newtonsoft.Json.JsonProperty("has_more")]
+ [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.NumericalBooleanConverter))]
+ [System.Text.Json.Serialization.JsonPropertyName("has_more")]
+ [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.NumericalBooleanConverter))]
+ public bool HasMore { get; set; }
+
+ ///
+ /// 获取或设置翻页标记。
+ ///
+ [Newtonsoft.Json.JsonProperty("next_cursor")]
+ [System.Text.Json.Serialization.JsonPropertyName("next_cursor")]
+ public string? NextCursor { get; set; }
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/KnowledgeGroup/CgibinKfKnowledgeModifyGroupRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/KnowledgeGroup/CgibinKfKnowledgeModifyGroupRequest.cs
new file mode 100644
index 00000000..5c7acd4b
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/KnowledgeGroup/CgibinKfKnowledgeModifyGroupRequest.cs
@@ -0,0 +1,22 @@
+namespace SKIT.FlurlHttpClient.Wechat.Work.Models
+{
+ ///
+ /// 表示 [POST] /cgi-bin/kf/knowledge/mod_group 接口的请求。
+ ///
+ public class CgibinKfKnowledgeModifyGroupRequest : WechatWorkRequest
+ {
+ ///
+ /// 获取或设置分组 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("group_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("group_id")]
+ public string GroupId { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置分组名。
+ ///
+ [Newtonsoft.Json.JsonProperty("name")]
+ [System.Text.Json.Serialization.JsonPropertyName("name")]
+ public string Name { get; set; } = string.Empty;
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/KnowledgeGroup/CgibinKfKnowledgeModifyGroupResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/KnowledgeGroup/CgibinKfKnowledgeModifyGroupResponse.cs
new file mode 100644
index 00000000..5755f985
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/KnowledgeGroup/CgibinKfKnowledgeModifyGroupResponse.cs
@@ -0,0 +1,9 @@
+namespace SKIT.FlurlHttpClient.Wechat.Work.Models
+{
+ ///
+ /// 表示 [POST] /cgi-bin/kf/knowledge/mod_group 接口的响应。
+ ///
+ public class CgibinKfKnowledgeModifyGroupResponse : WechatWorkResponse
+ {
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/KnowledgeIntent/CgibinKfKnowledgeAddIntentRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/KnowledgeIntent/CgibinKfKnowledgeAddIntentRequest.cs
new file mode 100644
index 00000000..2b48056e
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/KnowledgeIntent/CgibinKfKnowledgeAddIntentRequest.cs
@@ -0,0 +1,221 @@
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Work.Models
+{
+ ///
+ /// 表示 [POST] /cgi-bin/kf/knowledge/add_intent 接口的请求。
+ ///
+ public class CgibinKfKnowledgeAddIntentRequest : WechatWorkRequest
+ {
+ public static class Types
+ {
+ public class Text
+ {
+ ///
+ /// 获取或设置文本内容。
+ ///
+ [Newtonsoft.Json.JsonProperty("content")]
+ [System.Text.Json.Serialization.JsonPropertyName("content")]
+ public string Content { get; set; } = string.Empty;
+ }
+
+ public class Attachment
+ {
+ public static class Types
+ {
+ public class Image
+ {
+ ///
+ /// 获取或设置图片 MediaId。
+ ///
+ [Newtonsoft.Json.JsonProperty("media_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("media_id")]
+ public string MediaId { get; set; } = string.Empty;
+ }
+
+ public class Link
+ {
+ ///
+ /// 获取或设置图文消息标题。
+ ///
+ [Newtonsoft.Json.JsonProperty("title")]
+ [System.Text.Json.Serialization.JsonPropertyName("title")]
+ public string Title { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置图文消息描述。
+ ///
+ [Newtonsoft.Json.JsonProperty("desc")]
+ [System.Text.Json.Serialization.JsonPropertyName("desc")]
+ public string? Description { get; set; }
+
+ ///
+ /// 获取或设置图文消息 URL。
+ ///
+ [Newtonsoft.Json.JsonProperty("url")]
+ [System.Text.Json.Serialization.JsonPropertyName("url")]
+ public string Url { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置图文消息封面 URL。
+ ///
+ [Newtonsoft.Json.JsonProperty("pic_url")]
+ [System.Text.Json.Serialization.JsonPropertyName("pic_url")]
+ public string? PictureUrl { get; set; }
+ }
+
+ public class Video
+ {
+ ///
+ /// 获取或设置视频 MediaId。
+ ///
+ [Newtonsoft.Json.JsonProperty("media_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("media_id")]
+ public string MediaId { get; set; } = string.Empty;
+ }
+
+ public class MiniProgram
+ {
+ ///
+ /// 获取或设置小程序 AppId。
+ ///
+ [Newtonsoft.Json.JsonProperty("appid")]
+ [System.Text.Json.Serialization.JsonPropertyName("appid")]
+ public string AppId { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置小程序页面路径。
+ ///
+ [Newtonsoft.Json.JsonProperty("pagepath")]
+ [System.Text.Json.Serialization.JsonPropertyName("pagepath")]
+ public string PagePath { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置小程序标题。
+ ///
+ [Newtonsoft.Json.JsonProperty("title")]
+ [System.Text.Json.Serialization.JsonPropertyName("title")]
+ public string? Title { get; set; }
+
+ ///
+ /// 获取或设置小程序封面 MediaId。
+ ///
+ [Newtonsoft.Json.JsonProperty("thumb_media_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("thumb_media_id")]
+ public string? ThumbnailMediaId { get; set; }
+ }
+ }
+
+ ///
+ /// 获取或设置附件类型。
+ ///
+ [Newtonsoft.Json.JsonProperty("msgtype")]
+ [System.Text.Json.Serialization.JsonPropertyName("msgtype")]
+ public string Type { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置图片附件信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("image")]
+ [System.Text.Json.Serialization.JsonPropertyName("image")]
+ public Types.Image? Image { get; set; }
+
+ ///
+ /// 获取或设置图文消息附件信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("link")]
+ [System.Text.Json.Serialization.JsonPropertyName("link")]
+ public Types.Link? Link { get; set; }
+
+ ///
+ /// 获取或设置视频附件信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("video")]
+ [System.Text.Json.Serialization.JsonPropertyName("video")]
+ public Types.Video? Video { get; set; }
+
+ ///
+ /// 获取或设置小程序附件信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("miniprogram")]
+ [System.Text.Json.Serialization.JsonPropertyName("miniprogram")]
+ public Types.MiniProgram? MiniProgram { get; set; }
+ }
+
+ public class Question
+ {
+ ///
+ /// 获取或设置主问题文本信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("text")]
+ [System.Text.Json.Serialization.JsonPropertyName("text")]
+ public Text Text { get; set; } = new Text();
+ }
+
+ public class SimilarQuestionList
+ {
+ ///
+ /// 获取或设置相似问题列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("items")]
+ [System.Text.Json.Serialization.JsonPropertyName("items")]
+ public IList Items { get; set; } = new List();
+ }
+
+ public class SimilarQuestionItem
+ {
+ ///
+ /// 获取或设置相似问题文本信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("text")]
+ [System.Text.Json.Serialization.JsonPropertyName("text")]
+ public Text Text { get; set; } = new Text();
+ }
+
+ public class Answer
+ {
+ ///
+ /// 获取或设置回答文本信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("text")]
+ [System.Text.Json.Serialization.JsonPropertyName("text")]
+ public Text Text { get; set; } = new Text();
+
+ ///
+ /// 获取或设置附件列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("attachments")]
+ [System.Text.Json.Serialization.JsonPropertyName("attachments")]
+ public IList AttachmentList { get; set; } = new List();
+ }
+ }
+
+ ///
+ /// 获取或设置分组 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("group_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("group_id")]
+ public string GroupId { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置主问题信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("question")]
+ [System.Text.Json.Serialization.JsonPropertyName("question")]
+ public Types.Question Question { get; set; } = new Types.Question();
+
+ ///
+ /// 获取或设置相似问题列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("similar_questions")]
+ [System.Text.Json.Serialization.JsonPropertyName("similar_questions")]
+ public Types.SimilarQuestionList? SimilarQuestionList { get; set; }
+
+ ///
+ /// 获取或设置回答列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("answers")]
+ [System.Text.Json.Serialization.JsonPropertyName("answers")]
+ public IList AnswerList { get; set; } = new List();
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/KnowledgeIntent/CgibinKfKnowledgeAddIntentResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/KnowledgeIntent/CgibinKfKnowledgeAddIntentResponse.cs
new file mode 100644
index 00000000..d3612c69
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/KnowledgeIntent/CgibinKfKnowledgeAddIntentResponse.cs
@@ -0,0 +1,15 @@
+namespace SKIT.FlurlHttpClient.Wechat.Work.Models
+{
+ ///
+ /// 表示 [POST] /cgi-bin/kf/knowledge/add_intent 接口的响应。
+ ///
+ public class CgibinKfKnowledgeAddIntentResponse : WechatWorkResponse
+ {
+ ///
+ /// 获取或设置问答 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("intent_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("intent_id")]
+ public string IntentId { get; set; } = default!;
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/KnowledgeIntent/CgibinKfKnowledgeDeleteIntentRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/KnowledgeIntent/CgibinKfKnowledgeDeleteIntentRequest.cs
new file mode 100644
index 00000000..d53d0794
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/KnowledgeIntent/CgibinKfKnowledgeDeleteIntentRequest.cs
@@ -0,0 +1,15 @@
+namespace SKIT.FlurlHttpClient.Wechat.Work.Models
+{
+ ///
+ /// 表示 [POST] /cgi-bin/kf/knowledge/del_intent 接口的请求。
+ ///
+ public class CgibinKfKnowledgeDeleteIntentRequest : WechatWorkRequest
+ {
+ ///
+ /// 获取或设置问答 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("intent_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("intent_id")]
+ public string IntentId { get; set; } = string.Empty;
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/KnowledgeIntent/CgibinKfKnowledgeDeleteIntentResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/KnowledgeIntent/CgibinKfKnowledgeDeleteIntentResponse.cs
new file mode 100644
index 00000000..6ca19c6c
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/KnowledgeIntent/CgibinKfKnowledgeDeleteIntentResponse.cs
@@ -0,0 +1,9 @@
+namespace SKIT.FlurlHttpClient.Wechat.Work.Models
+{
+ ///
+ /// 表示 [POST] /cgi-bin/kf/knowledge/del_intent 接口的响应。
+ ///
+ public class CgibinKfKnowledgeDeleteIntentResponse : WechatWorkResponse
+ {
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/KnowledgeIntent/CgibinKfKnowledgeListIntentRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/KnowledgeIntent/CgibinKfKnowledgeListIntentRequest.cs
new file mode 100644
index 00000000..b6aa6ae2
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/KnowledgeIntent/CgibinKfKnowledgeListIntentRequest.cs
@@ -0,0 +1,36 @@
+namespace SKIT.FlurlHttpClient.Wechat.Work.Models
+{
+ ///
+ /// 表示 [POST] /cgi-bin/kf/knowledge/list_intent 接口的请求。
+ ///
+ public class CgibinKfKnowledgeListIntentRequest : WechatWorkRequest
+ {
+ ///
+ /// 获取或设置分组 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("group_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("group_id")]
+ public string? GroupId { get; set; }
+
+ ///
+ /// 获取或设置问答 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("intent_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("intent_id")]
+ public string? IntentId { get; set; }
+
+ ///
+ /// 获取或设置翻页标记。
+ ///
+ [Newtonsoft.Json.JsonProperty("cursor")]
+ [System.Text.Json.Serialization.JsonPropertyName("cursor")]
+ public string? Cursor { get; set; }
+
+ ///
+ /// 获取或设置分页每页数量。
+ ///
+ [Newtonsoft.Json.JsonProperty("limit")]
+ [System.Text.Json.Serialization.JsonPropertyName("limit")]
+ public int? Limit { get; set; }
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/KnowledgeIntent/CgibinKfKnowledgeListIntentResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/KnowledgeIntent/CgibinKfKnowledgeListIntentResponse.cs
new file mode 100644
index 00000000..44f0585d
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/KnowledgeIntent/CgibinKfKnowledgeListIntentResponse.cs
@@ -0,0 +1,248 @@
+namespace SKIT.FlurlHttpClient.Wechat.Work.Models
+{
+ ///
+ /// 表示 [POST] /cgi-bin/kf/knowledge/list_intent 接口的响应。
+ ///
+ public class CgibinKfKnowledgeListIntentResponse : WechatWorkResponse
+ {
+ public static class Types
+ {
+ public class Intent
+ {
+ public static class Types
+ {
+ public class Text
+ {
+ ///
+ /// 获取或设置文本内容。
+ ///
+ [Newtonsoft.Json.JsonProperty("content")]
+ [System.Text.Json.Serialization.JsonPropertyName("content")]
+ public string Content { get; set; } = default!;
+ }
+
+ public class Attachment
+ {
+ public static class Types
+ {
+ public class Image
+ {
+ ///
+ /// 获取或设置图片文件名。
+ ///
+ [Newtonsoft.Json.JsonProperty("name")]
+ [System.Text.Json.Serialization.JsonPropertyName("name")]
+ public string Name { get; set; } = default!;
+ }
+
+ public class Link
+ {
+ ///
+ /// 获取或设置图文消息标题。
+ ///
+ [Newtonsoft.Json.JsonProperty("title")]
+ [System.Text.Json.Serialization.JsonPropertyName("title")]
+ public string Title { get; set; } = default!;
+
+ ///
+ /// 获取或设置图文消息描述。
+ ///
+ [Newtonsoft.Json.JsonProperty("desc")]
+ [System.Text.Json.Serialization.JsonPropertyName("desc")]
+ public string? Description { get; set; }
+
+ ///
+ /// 获取或设置图文消息 URL。
+ ///
+ [Newtonsoft.Json.JsonProperty("url")]
+ [System.Text.Json.Serialization.JsonPropertyName("url")]
+ public string Url { get; set; } = default!;
+
+ ///
+ /// 获取或设置图文消息封面 URL。
+ ///
+ [Newtonsoft.Json.JsonProperty("pic_url")]
+ [System.Text.Json.Serialization.JsonPropertyName("pic_url")]
+ public string? PictureUrl { get; set; }
+ }
+
+ public class Video
+ {
+ ///
+ /// 获取或设置视频文件名。
+ ///
+ [Newtonsoft.Json.JsonProperty("name")]
+ [System.Text.Json.Serialization.JsonPropertyName("name")]
+ public string Name { get; set; } = default!;
+ }
+
+ public class MiniProgram
+ {
+ ///
+ /// 获取或设置小程序 AppId。
+ ///
+ [Newtonsoft.Json.JsonProperty("appid")]
+ [System.Text.Json.Serialization.JsonPropertyName("appid")]
+ public string AppId { get; set; } = default!;
+
+ ///
+ /// 获取或设置小程序页面路径。
+ ///
+ [Newtonsoft.Json.JsonProperty("pagepath")]
+ [System.Text.Json.Serialization.JsonPropertyName("pagepath")]
+ public string PagePath { get; set; } = default!;
+
+ ///
+ /// 获取或设置小程序标题。
+ ///
+ [Newtonsoft.Json.JsonProperty("title")]
+ [System.Text.Json.Serialization.JsonPropertyName("title")]
+ public string? Title { get; set; }
+ }
+ }
+
+ ///
+ /// 获取或设置附件类型。
+ ///
+ [Newtonsoft.Json.JsonProperty("msgtype")]
+ [System.Text.Json.Serialization.JsonPropertyName("msgtype")]
+ public string Type { get; set; } = default!;
+
+ ///
+ /// 获取或设置图片附件信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("image")]
+ [System.Text.Json.Serialization.JsonPropertyName("image")]
+ public Types.Image? Image { get; set; }
+
+ ///
+ /// 获取或设置图文消息附件信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("link")]
+ [System.Text.Json.Serialization.JsonPropertyName("link")]
+ public Types.Link? Link { get; set; }
+
+ ///
+ /// 获取或设置视频附件信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("video")]
+ [System.Text.Json.Serialization.JsonPropertyName("video")]
+ public Types.Video? Video { get; set; }
+
+ ///
+ /// 获取或设置小程序附件信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("miniprogram")]
+ [System.Text.Json.Serialization.JsonPropertyName("miniprogram")]
+ public Types.MiniProgram? MiniProgram { get; set; }
+ }
+
+ public class Question
+ {
+ ///
+ /// 获取或设置主问题文本信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("text")]
+ [System.Text.Json.Serialization.JsonPropertyName("text")]
+ public Text Text { get; set; } = default!;
+ }
+
+ public class SimilarQuestionList
+ {
+ ///
+ /// 获取或设置相似问题列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("items")]
+ [System.Text.Json.Serialization.JsonPropertyName("items")]
+ public SimilarQuestionItem[] Items { get; set; } = default!;
+ }
+
+ public class SimilarQuestionItem
+ {
+ ///
+ /// 获取或设置相似问题文本信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("text")]
+ [System.Text.Json.Serialization.JsonPropertyName("text")]
+ public Text Text { get; set; } = default!;
+ }
+
+ public class Answer
+ {
+ ///
+ /// 获取或设置回答文本信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("text")]
+ [System.Text.Json.Serialization.JsonPropertyName("text")]
+ public Text Text { get; set; } = default!;
+
+ ///
+ /// 获取或设置附件列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("attachments")]
+ [System.Text.Json.Serialization.JsonPropertyName("attachments")]
+ public Attachment[] AttachmentList { get; set; } = default!;
+ }
+ }
+
+ ///
+ /// 获取或设置分组 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("group_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("group_id")]
+ public string GroupId { get; set; } = default!;
+
+ ///
+ /// 获取或设置问答 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("intent_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("intent_id")]
+ public string IntentId { get; set; } = default!;
+
+ ///
+ /// 获取或设置主问题信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("question")]
+ [System.Text.Json.Serialization.JsonPropertyName("question")]
+ public Types.Question Question { get; set; } = default!;
+
+ ///
+ /// 获取或设置相似问题列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("similar_questions")]
+ [System.Text.Json.Serialization.JsonPropertyName("similar_questions")]
+ public Types.SimilarQuestionList? SimilarQuestionList { get; set; }
+
+ ///
+ /// 获取或设置回答列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("answers")]
+ [System.Text.Json.Serialization.JsonPropertyName("answers")]
+ public Types.Answer[] AnswerList { get; set; } = default!;
+ }
+ }
+
+ ///
+ /// 获取或设置问答列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("intent_list")]
+ [System.Text.Json.Serialization.JsonPropertyName("intent_list")]
+ public Types.Intent[] IntentList { get; set; } = default!;
+
+ ///
+ /// 获取或设置是否还有更多数据。
+ ///
+ [Newtonsoft.Json.JsonProperty("has_more")]
+ [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.NumericalBooleanConverter))]
+ [System.Text.Json.Serialization.JsonPropertyName("has_more")]
+ [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.NumericalBooleanConverter))]
+ public bool HasMore { get; set; }
+
+ ///
+ /// 获取或设置翻页标记。
+ ///
+ [Newtonsoft.Json.JsonProperty("next_cursor")]
+ [System.Text.Json.Serialization.JsonPropertyName("next_cursor")]
+ public string? NextCursor { get; set; }
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/KnowledgeIntent/CgibinKfKnowledgeModifyIntentRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/KnowledgeIntent/CgibinKfKnowledgeModifyIntentRequest.cs
new file mode 100644
index 00000000..b8859e1b
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/KnowledgeIntent/CgibinKfKnowledgeModifyIntentRequest.cs
@@ -0,0 +1,142 @@
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Work.Models
+{
+ ///
+ /// 表示 [POST] /cgi-bin/kf/knowledge/mod_intent 接口的请求。
+ ///
+ public class CgibinKfKnowledgeModifyIntentRequest : WechatWorkRequest
+ {
+ public static class Types
+ {
+ public class Text : CgibinKfKnowledgeAddIntentRequest.Types.Text
+ {
+ }
+
+ public class Attachment : CgibinKfKnowledgeAddIntentRequest.Types.Attachment
+ {
+ public new static class Types
+ {
+ public class Image : CgibinKfKnowledgeAddIntentRequest.Types.Attachment.Types.Image
+ {
+ }
+
+ public class Link : CgibinKfKnowledgeAddIntentRequest.Types.Attachment.Types.Link
+ {
+ }
+
+ public class Video : CgibinKfKnowledgeAddIntentRequest.Types.Attachment.Types.Video
+ {
+ }
+
+ public class MiniProgram : CgibinKfKnowledgeAddIntentRequest.Types.Attachment.Types.MiniProgram
+ {
+ }
+ }
+
+ ///
+ /// 获取或设置图片附件信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("image")]
+ [System.Text.Json.Serialization.JsonPropertyName("image")]
+ public new Types.Image? Image { get; set; }
+
+ ///
+ /// 获取或设置图文消息附件信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("link")]
+ [System.Text.Json.Serialization.JsonPropertyName("link")]
+ public new Types.Link? Link { get; set; }
+
+ ///
+ /// 获取或设置视频附件信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("video")]
+ [System.Text.Json.Serialization.JsonPropertyName("video")]
+ public new Types.Video? Video { get; set; }
+
+ ///
+ /// 获取或设置小程序附件信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("miniprogram")]
+ [System.Text.Json.Serialization.JsonPropertyName("miniprogram")]
+ public new Types.MiniProgram? MiniProgram { get; set; }
+ }
+
+ public class Question : CgibinKfKnowledgeAddIntentRequest.Types.Question
+ {
+ ///
+ /// 获取或设置主问题文本信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("text")]
+ [System.Text.Json.Serialization.JsonPropertyName("text")]
+ public new Text? Text { get; set; }
+ }
+
+ public class SimilarQuestionList : CgibinKfKnowledgeAddIntentRequest.Types.SimilarQuestionList
+ {
+ ///
+ /// 获取或设置相似问题列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("items")]
+ [System.Text.Json.Serialization.JsonPropertyName("items")]
+ public new IList Items { get; set; } = new List();
+ }
+
+ public class SimilarQuestionItem : CgibinKfKnowledgeAddIntentRequest.Types.SimilarQuestionItem
+ {
+ ///
+ /// 获取或设置相似问题文本信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("text")]
+ [System.Text.Json.Serialization.JsonPropertyName("text")]
+ public new Text? Text { get; set; }
+ }
+
+ public class Answer : CgibinKfKnowledgeAddIntentRequest.Types.Answer
+ {
+ ///
+ /// 获取或设置回答文本信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("text")]
+ [System.Text.Json.Serialization.JsonPropertyName("text")]
+ public new Text? Text { get; set; }
+
+ ///
+ /// 获取或设置附件列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("attachments")]
+ [System.Text.Json.Serialization.JsonPropertyName("attachments")]
+ public new IList? AttachmentList { get; set; }
+ }
+ }
+
+ ///
+ /// 获取或设置问答 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("intent_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("intent_id")]
+ public string IntentId { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置主问题信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("question")]
+ [System.Text.Json.Serialization.JsonPropertyName("question")]
+ public Types.Question? Question { get; set; }
+
+ ///
+ /// 获取或设置相似问题列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("similar_questions")]
+ [System.Text.Json.Serialization.JsonPropertyName("similar_questions")]
+ public Types.SimilarQuestionList? SimilarQuestionList { get; set; }
+
+ ///
+ /// 获取或设置回答列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("answers")]
+ [System.Text.Json.Serialization.JsonPropertyName("answers")]
+ public IList? AnswerList { get; set; }
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/KnowledgeIntent/CgibinKfKnowledgeModifyIntentResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/KnowledgeIntent/CgibinKfKnowledgeModifyIntentResponse.cs
new file mode 100644
index 00000000..449e2d19
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/KnowledgeIntent/CgibinKfKnowledgeModifyIntentResponse.cs
@@ -0,0 +1,9 @@
+namespace SKIT.FlurlHttpClient.Wechat.Work.Models
+{
+ ///
+ /// 表示 [POST] /cgi-bin/kf/knowledge/mod_intent 接口的响应。
+ ///
+ public class CgibinKfKnowledgeModifyIntentResponse : WechatWorkResponse
+ {
+ }
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/KnowledgeGroup/CgibinKfKnowledgeAddGroupRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/KnowledgeGroup/CgibinKfKnowledgeAddGroupRequest.json
new file mode 100644
index 00000000..1c9088b6
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/KnowledgeGroup/CgibinKfKnowledgeAddGroupRequest.json
@@ -0,0 +1,3 @@
+{
+ "name": "分组名"
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/KnowledgeGroup/CgibinKfKnowledgeAddGroupResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/KnowledgeGroup/CgibinKfKnowledgeAddGroupResponse.json
new file mode 100644
index 00000000..9b11b23d
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/KnowledgeGroup/CgibinKfKnowledgeAddGroupResponse.json
@@ -0,0 +1,5 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "group_id": "GROUP_ID"
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/KnowledgeGroup/CgibinKfKnowledgeDeleteGroupRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/KnowledgeGroup/CgibinKfKnowledgeDeleteGroupRequest.json
new file mode 100644
index 00000000..6bcfc8a9
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/KnowledgeGroup/CgibinKfKnowledgeDeleteGroupRequest.json
@@ -0,0 +1,3 @@
+{
+ "group_id": "GROUP_ID"
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/KnowledgeGroup/CgibinKfKnowledgeListGroupRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/KnowledgeGroup/CgibinKfKnowledgeListGroupRequest.json
new file mode 100644
index 00000000..9e27c608
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/KnowledgeGroup/CgibinKfKnowledgeListGroupRequest.json
@@ -0,0 +1,5 @@
+{
+ "cursor": "CURSOR",
+ "limit": 100,
+ "group_id": "GROUP_ID"
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/KnowledgeGroup/CgibinKfKnowledgeListGroupResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/KnowledgeGroup/CgibinKfKnowledgeListGroupResponse.json
new file mode 100644
index 00000000..71460e67
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/KnowledgeGroup/CgibinKfKnowledgeListGroupResponse.json
@@ -0,0 +1,18 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "next_cursor": "NEXT_CURSOR",
+ "has_more": 1,
+ "group_list": [
+ {
+ "group_id": "GROUP_ID",
+ "name": "NAME",
+ "is_default": 1
+ },
+ {
+ "group_id": "GROUP_ID",
+ "name": "NAME",
+ "is_default": 0
+ }
+ ]
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/KnowledgeGroup/CgibinKfKnowledgeModifyGroupRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/KnowledgeGroup/CgibinKfKnowledgeModifyGroupRequest.json
new file mode 100644
index 00000000..32d38531
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/KnowledgeGroup/CgibinKfKnowledgeModifyGroupRequest.json
@@ -0,0 +1,4 @@
+{
+ "group_id": "GROUP_ID",
+ "name": "分组名"
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/KnowledgeIntent/CgibinKfKnowledgeAddIntentRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/KnowledgeIntent/CgibinKfKnowledgeAddIntentRequest.json
new file mode 100644
index 00000000..3a8f95fe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/KnowledgeIntent/CgibinKfKnowledgeAddIntentRequest.json
@@ -0,0 +1,61 @@
+{
+ "group_id": "GROUP_ID",
+ "question": {
+ "text": {
+ "content": "主问题"
+ }
+ },
+ "similar_questions": {
+ "items": [
+ {
+ "text": {
+ "content": "相似问题1"
+ }
+ },
+ {
+ "text": {
+ "content": "相似问题2"
+ }
+ }
+ ]
+ },
+ "answers": [
+ {
+ "text": {
+ "content": "问题的回复"
+ },
+ "attachments": [
+ {
+ "msgtype": "image",
+ "image": {
+ "media_id": "MEDIA_ID"
+ }
+ },
+ {
+ "msgtype": "video",
+ "video": {
+ "media_id": "MEDIA_ID"
+ }
+ },
+ {
+ "msgtype": "link",
+ "link": {
+ "title": "消息标题",
+ "pic_url": "https://example.pic.com/path",
+ "desc": "消息描述",
+ "url": "https://example.link.com/path"
+ }
+ },
+ {
+ "msgtype": "miniprogram",
+ "miniprogram": {
+ "title": "欢迎报名夏令营",
+ "thumb_media_id": "THUMB_MEDIA_ID",
+ "appid": "wx8bd80126147dfAAA",
+ "pagepath": "/path/index.html"
+ }
+ }
+ ]
+ }
+ ]
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/KnowledgeIntent/CgibinKfKnowledgeAddIntentResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/KnowledgeIntent/CgibinKfKnowledgeAddIntentResponse.json
new file mode 100644
index 00000000..0c764579
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/KnowledgeIntent/CgibinKfKnowledgeAddIntentResponse.json
@@ -0,0 +1,5 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "intent_id": "INTENT_ID"
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/KnowledgeIntent/CgibinKfKnowledgeDeleteIntentRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/KnowledgeIntent/CgibinKfKnowledgeDeleteIntentRequest.json
new file mode 100644
index 00000000..67cd39ce
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/KnowledgeIntent/CgibinKfKnowledgeDeleteIntentRequest.json
@@ -0,0 +1,3 @@
+{
+ "intent_id": "INTENT_ID"
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/KnowledgeIntent/CgibinKfKnowledgeListIntentRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/KnowledgeIntent/CgibinKfKnowledgeListIntentRequest.json
new file mode 100644
index 00000000..2db65ce2
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/KnowledgeIntent/CgibinKfKnowledgeListIntentRequest.json
@@ -0,0 +1,6 @@
+{
+ "cursor": "CURSOR",
+ "limit": 100,
+ "group_id": "GROUP_ID",
+ "intent_id": "INTENT_ID"
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/KnowledgeIntent/CgibinKfKnowledgeListIntentResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/KnowledgeIntent/CgibinKfKnowledgeListIntentResponse.json
new file mode 100644
index 00000000..b2b34de2
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/KnowledgeIntent/CgibinKfKnowledgeListIntentResponse.json
@@ -0,0 +1,69 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "next_cursor": "NEXT_CURSOR",
+ "has_more": 1,
+ "intent_list": [
+ {
+ "group_id": "GROUP_ID",
+ "intent_id": "INTENT_ID",
+ "question": {
+ "text": {
+ "content": "主问题"
+ }
+ },
+ "similar_questions": {
+ "items": [
+ {
+ "text": {
+ "content": "相似问题1"
+ }
+ },
+ {
+ "text": {
+ "content": "相似问题2"
+ }
+ }
+ ]
+ },
+ "answers": [
+ {
+ "text": {
+ "content": "问题的回复"
+ },
+ "attachments": [
+ {
+ "msgtype": "image",
+ "image": {
+ "name": "图片(仅返回名字).jpg"
+ }
+ },
+ {
+ "msgtype": "video",
+ "video": {
+ "name": "视频的文件名"
+ }
+ },
+ {
+ "msgtype": "link",
+ "link": {
+ "title": "消息标题",
+ "pic_url": "https://example.pic.com/path",
+ "desc": "消息描述",
+ "url": "https://example.link.com/path"
+ }
+ },
+ {
+ "msgtype": "miniprogram",
+ "miniprogram": {
+ "title": "欢迎报名夏令营",
+ "appid": "wx8bd80126147dfAAA",
+ "pagepath": "/path/index.html"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/KnowledgeIntent/CgibinKfKnowledgeModifyIntentRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/KnowledgeIntent/CgibinKfKnowledgeModifyIntentRequest.json
new file mode 100644
index 00000000..bc60c0bd
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/KnowledgeIntent/CgibinKfKnowledgeModifyIntentRequest.json
@@ -0,0 +1,61 @@
+{
+ "intent_id": "INTENT_ID",
+ "question": {
+ "text": {
+ "content": "主问题"
+ }
+ },
+ "similar_questions": {
+ "items": [
+ {
+ "text": {
+ "content": "相似问题1"
+ }
+ },
+ {
+ "text": {
+ "content": "相似问题2"
+ }
+ }
+ ]
+ },
+ "answers": [
+ {
+ "text": {
+ "content": "问题的回复"
+ },
+ "attachments": [
+ {
+ "msgtype": "image",
+ "image": {
+ "media_id": "MEDIA_ID"
+ }
+ },
+ {
+ "msgtype": "video",
+ "video": {
+ "media_id": "MEDIA_ID"
+ }
+ },
+ {
+ "msgtype": "link",
+ "link": {
+ "title": "消息标题",
+ "pic_url": "https://example.pic.com/path",
+ "desc": "消息描述",
+ "url": "https://example.link.com/path"
+ }
+ },
+ {
+ "msgtype": "miniprogram",
+ "miniprogram": {
+ "title": "欢迎报名夏令营",
+ "thumb_media_id": "THUMB_MEDIA_ID",
+ "appid": "wx8bd80126147dfAAA",
+ "pagepath": "/path/index.html"
+ }
+ }
+ ]
+ }
+ ]
+}