diff --git a/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Extensions/WechatOpenAIClientExecuteIntentExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Extensions/WechatOpenAIClientExecuteIntentExtensions.cs new file mode 100644 index 00000000..27b1b26e --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Extensions/WechatOpenAIClientExecuteIntentExtensions.cs @@ -0,0 +1,209 @@ +using System; +using System.Collections.Generic; +using System.Net.Http; +using System.Text; +using System.Threading; +using System.Threading.Tasks; +using Flurl; +using Flurl.Http; + +namespace SKIT.FlurlHttpClient.Wechat.OpenAI +{ + public static class WechatOpenAIClientExecuteIntentExtensions + { + /// + /// 异步调用 [POST] /v2/intent/save 接口。 + /// REF: https://developers.weixin.qq.com/doc/aispeech/openapi/api/v2/intent/batch_save.html + /// + /// + /// + /// + /// + public static async Task ExecuteIntentSaveAsync(this WechatOpenAIClient client, Models.IntentSaveRequest 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, "v2", "intent", "save"); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /v2/intent/search 接口。 + /// REF: https://developers.weixin.qq.com/doc/aispeech/openapi/api/v2/intent/search .html + /// + /// + /// + /// + /// + public static async Task ExecuteIntentSearchAsync(this WechatOpenAIClient client, Models.IntentSearchRequest 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, "v2", "intent", "search"); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /v2/intent/get_detail 接口。 + /// REF: https://developers.weixin.qq.com/doc/aispeech/openapi/api/v2/intent/get_detail .html + /// + /// + /// + /// + /// + public static async Task ExecuteIntentGetDetailAsync(this WechatOpenAIClient client, Models.IntentGetDetailRequest 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, "v2", "intent", "get_detail"); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /v2/intent/name_exist 接口。 + /// REF: https://developers.weixin.qq.com/doc/aispeech/openapi/api/v2/intent/name_exist .html + /// + /// + /// + /// + /// + public static async Task ExecuteIntentNameExistAsync(this WechatOpenAIClient client, Models.IntentNameExistRequest 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, "v2", "intent", "name_exist"); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /v2/intent/delete 接口。 + /// REF: https://developers.weixin.qq.com/doc/aispeech/openapi/api/v2/intent/batch_delete.html + /// + /// + /// + /// + /// + public static async Task ExecuteIntentDeleteAsync(this WechatOpenAIClient client, Models.IntentDeleteRequest 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, "v2", "intent", "delete"); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /v1/intent/switch/batch 接口。 + /// REF: https://developers.weixin.qq.com/doc/aispeech/openapi/api/v2/intent/batch_delete.html + /// + /// + /// + /// + /// + public static async Task ExecuteIntentSwitchBatchAsync(this WechatOpenAIClient client, Models.IntentSwitchBatchRequest 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, "v1", "intent", "switch", "batch"); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + #region Config + /// + /// 异步调用 [POST] /v2/intent/config/save 接口。 + /// REF: https://developers.weixin.qq.com/doc/aispeech/openapi/api/v2/intent/save_config.html + /// REF: https://developers.weixin.qq.com/doc/aispeech/openapi/api/v2/intent/save_config_normal_answer_config.html + /// + /// + /// + /// + /// + public static async Task ExecuteIntentConfigSaveAsync(this WechatOpenAIClient client, Models.IntentConfigSaveRequest 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, "v2", "intent", "config", "save"); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /v2/intent/config/get 接口。 + /// REF: https://developers.weixin.qq.com/doc/aispeech/openapi/api/v2/intent/get_config.html + /// + /// + /// + /// + /// + public static async Task ExecuteIntentConfigGetAsync(this WechatOpenAIClient client, Models.IntentConfigGetRequest 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, "v2", "intent", "config", "get"); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + #endregion + + #region Question + /// + /// 异步调用 [POST] /v2/intent/question/save 接口。 + /// REF: https://developers.weixin.qq.com/doc/aispeech/openapi/api/v2/intent/batch_save_question.html + /// + /// + /// + /// + /// + public static async Task ExecuteIntentQuestionSaveAsync(this WechatOpenAIClient client, Models.IntentQuestionSaveRequest 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, "v2", "intent", "question", "save"); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /v2/intent/question/delete 接口。 + /// REF: https://developers.weixin.qq.com/doc/aispeech/openapi/api/v2/intent/batch_delete_question.html + /// + /// + /// + /// + /// + public static async Task ExecuteIntentQuestionDeleteAsync(this WechatOpenAIClient client, Models.IntentQuestionDeleteRequest 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, "v2", "intent", "question", "delete"); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + #endregion + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Intent/Config/IntentConfigGetRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Intent/Config/IntentConfigGetRequest.cs new file mode 100644 index 00000000..e6c9c252 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Intent/Config/IntentConfigGetRequest.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.OpenAI.Models +{ + /// + /// 表示 [POST] /v2/intent/config/get 接口的请求。 + /// + public class IntentConfigGetRequest : WechatOpenAIRequest + { + /// + /// 获取或设置意图 ID。 + /// + [Newtonsoft.Json.JsonProperty("intent_id")] + [System.Text.Json.Serialization.JsonPropertyName("intent_id")] + public long IntentId { get; set; } + + /// + /// 获取或设置技能 ID。 + /// + [Newtonsoft.Json.JsonProperty("skill_id")] + [System.Text.Json.Serialization.JsonPropertyName("skill_id")] + public long SkillId { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Intent/Config/IntentConfigGetResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Intent/Config/IntentConfigGetResponse.cs new file mode 100644 index 00000000..f4f4a836 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Intent/Config/IntentConfigGetResponse.cs @@ -0,0 +1,447 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.OpenAI.Models +{ + /// + /// 表示 [POST] /v2/intent/config/get 接口的响应。 + /// + public class IntentConfigGetResponse : WechatOpenAIResponse + { + public static class Types + { + public class Data + { + public static class Types + { + public class Slot + { + /// + /// 获取或设置语义槽名称。 + /// + [Newtonsoft.Json.JsonProperty("name")] + [System.Text.Json.Serialization.JsonPropertyName("name")] + public string Name { get; set; } = default!; + + /// + /// 获取或设置词典名称列表。 + /// + [Newtonsoft.Json.JsonProperty("dicts")] + [System.Text.Json.Serialization.JsonPropertyName("dicts")] + public string[] DictionaryNameList { get; set; } = default!; + + /// + /// 获取或设置是否追问。 + /// + [Newtonsoft.Json.JsonProperty("keep_ask")] + [System.Text.Json.Serialization.JsonPropertyName("keep_ask")] + public bool IsKeepAsk { get; set; } + + /// + /// 获取或设置追问话术列表。 + /// + [Newtonsoft.Json.JsonProperty("ask_content")] + [System.Text.Json.Serialization.JsonPropertyName("ask_content")] + public string[]? AskContentList { get; set; } = default!; + } + + public class Previous + { + /// + /// 获取或设置意图名称。 + /// + [Newtonsoft.Json.JsonProperty("intent")] + [System.Text.Json.Serialization.JsonPropertyName("intent")] + public string IntentName { get; set; } = default!; + + /// + /// 获取或设置技能名称。 + /// + [Newtonsoft.Json.JsonProperty("skill")] + [System.Text.Json.Serialization.JsonPropertyName("skill")] + public string SkillName { get; set; } = default!; + } + + public class Next : Previous + { + } + + public class NormalAnswerConfig + { + public static class Types + { + public class Answer + { + /// + /// 获取或设置类型。 + /// + [Newtonsoft.Json.JsonProperty("type")] + [System.Text.Json.Serialization.JsonPropertyName("type")] + public int Type { get; set; } + + /// + /// 获取或设置回答内容。 + /// + [Newtonsoft.Json.JsonProperty("content")] + [System.Text.Json.Serialization.JsonPropertyName("content")] + public object Content { get; set; } = default!; + } + } + + /// + /// 获取或设置是否合并。 + /// + [Newtonsoft.Json.JsonProperty("merge_answer")] + [System.Text.Json.Serialization.JsonPropertyName("merge_answer")] + public bool RequireMergeAnswer { get; set; } + + /// + /// 获取或设置回答列表。 + /// + [Newtonsoft.Json.JsonProperty("answer")] + [System.Text.Json.Serialization.JsonPropertyName("answer")] + public Types.Answer[] AnswerList { get; set; } = default!; + } + + public class ApiAnswerConfig + { + public static class Types + { + public class Argument + { + public static class Types + { + public class Item + { + /// + /// 获取或设置参数名称。 + /// + [Newtonsoft.Json.JsonProperty("name")] + [System.Text.Json.Serialization.JsonPropertyName("name")] + public string Name { get; set; } = default!; + + /// + /// 获取或设置是否必填。 + /// + [Newtonsoft.Json.JsonProperty("input")] + [System.Text.Json.Serialization.JsonPropertyName("input")] + public bool IsRequired { get; set; } + + /// + /// 获取或设置参数含义。 + /// + [Newtonsoft.Json.JsonProperty("desc")] + [System.Text.Json.Serialization.JsonPropertyName("desc")] + public string Description { get; set; } = default!; + + /// + /// 获取或设置对应语义槽。 + /// + [Newtonsoft.Json.JsonProperty("slot")] + [System.Text.Json.Serialization.JsonPropertyName("slot")] + public string Slot { get; set; } = default!; + + /// + /// 获取或设置默认值。 + /// + [Newtonsoft.Json.JsonProperty("default_value")] + [System.Text.Json.Serialization.JsonPropertyName("default_value")] + public string DefaultValue { get; set; } = default!; + + /// + /// 获取或设置追问话术列表。 + /// + [Newtonsoft.Json.JsonProperty("ask_content")] + [System.Text.Json.Serialization.JsonPropertyName("ask_content")] + public string[]? AskContentList { get; set; } + } + } + + /// + /// 获取或设置入参列表。 + /// + [Newtonsoft.Json.JsonProperty("input")] + [System.Text.Json.Serialization.JsonPropertyName("input")] + public Types.Item[]? InputArgumentList { get; set; } + + /// + /// 获取或设置出参列表。 + /// + [Newtonsoft.Json.JsonProperty("output")] + [System.Text.Json.Serialization.JsonPropertyName("output")] + public Types.Item[]? OutArgumentList { get; set; } + } + } + + /// + /// 获取或设置服务接口调用 API。 + /// + [Newtonsoft.Json.JsonProperty("api")] + [System.Text.Json.Serialization.JsonPropertyName("api")] + public string Api { get; set; } = default!; + + /// + /// 获取或设置 API 类型。 + /// + [Newtonsoft.Json.JsonProperty("http_method")] + [System.Text.Json.Serialization.JsonPropertyName("http_method")] + public string HttpMethod { get; set; } = default!; + + /// + /// 获取或设置 API 地址。 + /// + [Newtonsoft.Json.JsonProperty("http_url")] + [System.Text.Json.Serialization.JsonPropertyName("http_url")] + public string HttpUrl { get; set; } = default!; + + /// + /// 获取或设置是否征求用户意见。 + /// + [Newtonsoft.Json.JsonProperty("need_confirm")] + [System.Text.Json.Serialization.JsonPropertyName("need_confirm")] + public bool RequireConfirm { get; set; } + + /// + /// 获取或设置征求语句。 + /// + [Newtonsoft.Json.JsonProperty("need_confirm_response")] + [System.Text.Json.Serialization.JsonPropertyName("need_confirm_response")] + public string? ConfirmResponse { get; set; } + + /// + /// 获取或设置参数信息。 + /// + [Newtonsoft.Json.JsonProperty("arguments")] + [System.Text.Json.Serialization.JsonPropertyName("arguments")] + public Types.Argument Argument { get; set; } = default!; + + /// + /// 获取或设置结果列表。 + /// + [Newtonsoft.Json.JsonProperty("result")] + [System.Text.Json.Serialization.JsonPropertyName("result")] + public Result[] ResultList { get; set; } = default!; + } + + public class AskSlotAnswerConfig + { + public static class Types + { + public class Argument + { + /// + /// 获取或设置参数名称。 + /// + [Newtonsoft.Json.JsonProperty("name")] + [System.Text.Json.Serialization.JsonPropertyName("name")] + public string Name { get; set; } = default!; + + /// + /// 获取或设置对应语义槽。 + /// + [Newtonsoft.Json.JsonProperty("slot")] + [System.Text.Json.Serialization.JsonPropertyName("slot")] + public string Slot { get; set; } = default!; + + /// + /// 获取或设置追问话术列表。 + /// + [Newtonsoft.Json.JsonProperty("ask_content")] + [System.Text.Json.Serialization.JsonPropertyName("ask_content")] + public string[]? AskContentList { get; set; } + } + } + + /// + /// 获取或设置语义槽信息追问 API。 + /// + [Newtonsoft.Json.JsonProperty("api")] + [System.Text.Json.Serialization.JsonPropertyName("api")] + public string Api { get; set; } = default!; + + /// + /// 获取或设置参数列表。 + /// + [Newtonsoft.Json.JsonProperty("arguments")] + [System.Text.Json.Serialization.JsonPropertyName("arguments")] + public Types.Argument[]? ArgumentList { get; set; } + + /// + /// 获取或设置结果列表。 + /// + [Newtonsoft.Json.JsonProperty("result")] + [System.Text.Json.Serialization.JsonPropertyName("result")] + public Result[] ResultList { get; set; } = default!; + } + + public class AskAnswerConfig + { + /// + /// 获取或设置机器人提问 API。 + /// + [Newtonsoft.Json.JsonProperty("api")] + [System.Text.Json.Serialization.JsonPropertyName("api")] + public string Api { get; set; } = default!; + + /// + /// 获取或设置问题。 + /// + [Newtonsoft.Json.JsonProperty("question")] + [System.Text.Json.Serialization.JsonPropertyName("question")] + public string Question { get; set; } = default!; + + /// + /// 获取或设置结果列表。 + /// + [Newtonsoft.Json.JsonProperty("result")] + [System.Text.Json.Serialization.JsonPropertyName("result")] + public Result[] ResultList { get; set; } = default!; + } + + public class Result + { + /// + /// 获取或设置错误码。 + /// + [Newtonsoft.Json.JsonProperty("code")] + [System.Text.Json.Serialization.JsonPropertyName("code")] + public string ErrorCode { get; set; } = default!; + + /// + /// 获取或设置错误描述。 + /// + [Newtonsoft.Json.JsonProperty("desc")] + [System.Text.Json.Serialization.JsonPropertyName("desc")] + public string ErrorDescription { get; set; } = default!; + + /// + /// 获取或设置回答配置类型。 + /// + [Newtonsoft.Json.JsonProperty("answer_config_type")] + [System.Text.Json.Serialization.JsonPropertyName("answer_config_type")] + public int AnswerConfigType { get; set; } + + /// + /// 获取或设置回答。 + /// + [Newtonsoft.Json.JsonProperty("answer")] + [System.Text.Json.Serialization.JsonPropertyName("answer")] + public string Answer { get; set; } = default!; + + /// + /// 获取或设置普通技能信息。 + /// + [Newtonsoft.Json.JsonProperty("normal_answer_config")] + [System.Text.Json.Serialization.JsonPropertyName("normal_answer_config")] + public NormalAnswerConfig? AnswerConfigForNormal { get; set; } + + /// + /// 获取或设置服务接口调用信息。 + /// + [Newtonsoft.Json.JsonProperty("api_answer_config")] + [System.Text.Json.Serialization.JsonPropertyName("api_answer_config")] + public ApiAnswerConfig? AnswerConfigForApi { get; set; } + + /// + /// 获取或设置语义槽追问信息。 + /// + [Newtonsoft.Json.JsonProperty("ask_slot_answer_config")] + [System.Text.Json.Serialization.JsonPropertyName("ask_slot_answer_config")] + public AskSlotAnswerConfig? AnswerConfigForAskSlot { get; set; } + + /// + /// 获取或设置机器人提问信息。 + /// + [Newtonsoft.Json.JsonProperty("ask_answer_config")] + [System.Text.Json.Serialization.JsonPropertyName("ask_answer_config")] + public AskAnswerConfig? AnswerConfigForAsk { get; set; } + + /// + /// 获取或设置机器人动态提问信息。 + /// + [Newtonsoft.Json.JsonProperty("dynamic_ask_answer_config")] + [System.Text.Json.Serialization.JsonPropertyName("dynamic_ask_answer_config")] + public AskAnswerConfig? AnswerConfigForAskDynamic { get; set; } + } + } + + /// + /// 获取或设置语义槽列表。 + /// + [Newtonsoft.Json.JsonProperty("slots")] + [System.Text.Json.Serialization.JsonPropertyName("slots")] + public Types.Slot[] IntentQuestionList { get; set; } = default!; + + /// + /// 获取或设置前置对话列表。 + /// + [Newtonsoft.Json.JsonProperty("pre")] + [System.Text.Json.Serialization.JsonPropertyName("pre")] + public Types.Previous[] PreviousList { get; set; } = default!; + + /// + /// 获取或设置后续对话列表。 + /// + [Newtonsoft.Json.JsonProperty("next")] + [System.Text.Json.Serialization.JsonPropertyName("next")] + public Types.Next[] NextList { get; set; } = default!; + + /// + /// 获取或设置是否追问。 + /// + [Newtonsoft.Json.JsonProperty("keep_ask")] + [System.Text.Json.Serialization.JsonPropertyName("keep_ask")] + public bool IsKeepAsk { get; set; } + + /// + /// 获取或设置最大追问次数。 + /// + [Newtonsoft.Json.JsonProperty("keep_ask_num")] + [System.Text.Json.Serialization.JsonPropertyName("keep_ask_num")] + public int KeepAskCount { get; set; } + + /// + /// 获取或设置回答配置类型。 + /// + [Newtonsoft.Json.JsonProperty("answer_config_type")] + [System.Text.Json.Serialization.JsonPropertyName("answer_config_type")] + public int AnswerConfigType { get; set; } + + /// + /// 获取或设置普通技能信息。 + /// + [Newtonsoft.Json.JsonProperty("normal_answer_config")] + [System.Text.Json.Serialization.JsonPropertyName("normal_answer_config")] + public Types.NormalAnswerConfig? AnswerConfigForNormal { get; set; } + + /// + /// 获取或设置服务接口调用信息。 + /// + [Newtonsoft.Json.JsonProperty("api_answer_config")] + [System.Text.Json.Serialization.JsonPropertyName("api_answer_config")] + public Types.ApiAnswerConfig? AnswerConfigForApi { get; set; } + + /// + /// 获取或设置语义槽追问信息。 + /// + [Newtonsoft.Json.JsonProperty("ask_slot_answer_config")] + [System.Text.Json.Serialization.JsonPropertyName("ask_slot_answer_config")] + public Types.AskSlotAnswerConfig? AnswerConfigForAskSlot { get; set; } + + /// + /// 获取或设置机器人提问信息。 + /// + [Newtonsoft.Json.JsonProperty("ask_answer_config")] + [System.Text.Json.Serialization.JsonPropertyName("ask_answer_config")] + public Types.AskAnswerConfig? AnswerConfigForAsk { get; set; } + + /// + /// 获取或设置机器人动态提问信息。 + /// + [Newtonsoft.Json.JsonProperty("dynamic_ask_answer_config")] + [System.Text.Json.Serialization.JsonPropertyName("dynamic_ask_answer_config")] + public Types.AskAnswerConfig? AnswerConfigForAskDynamic { get; set; } + } + } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Intent/Config/IntentConfigSaveRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Intent/Config/IntentConfigSaveRequest.cs new file mode 100644 index 00000000..54298e32 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Intent/Config/IntentConfigSaveRequest.cs @@ -0,0 +1,455 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.OpenAI.Models +{ + /// + /// 表示 [POST] /v2/intent/config/save 接口的请求。 + /// + public class IntentConfigSaveRequest : WechatOpenAIRequest + { + public static class Types + { + public class Slot + { + /// + /// 获取或设置语义槽名称。 + /// + [Newtonsoft.Json.JsonProperty("name")] + [System.Text.Json.Serialization.JsonPropertyName("name")] + public string Name { get; set; } = string.Empty; + + /// + /// 获取或设置词典名称列表。 + /// + [Newtonsoft.Json.JsonProperty("dicts")] + [System.Text.Json.Serialization.JsonPropertyName("dicts")] + public IList DictionaryNameList { get; set; } = new List(); + + /// + /// 获取或设置是否追问。 + /// + [Newtonsoft.Json.JsonProperty("keep_ask")] + [System.Text.Json.Serialization.JsonPropertyName("keep_ask")] + public bool IsKeepAsk { get; set; } + + /// + /// 获取或设置追问话术列表。 + /// + [Newtonsoft.Json.JsonProperty("ask_content")] + [System.Text.Json.Serialization.JsonPropertyName("ask_content")] + public IList? AskContentList { get; set; } + } + + public class Previous + { + /// + /// 获取或设置意图名称。 + /// + [Newtonsoft.Json.JsonProperty("intent")] + [System.Text.Json.Serialization.JsonPropertyName("intent")] + public string IntentName { get; set; } = string.Empty; + + /// + /// 获取或设置技能名称。 + /// + [Newtonsoft.Json.JsonProperty("skill")] + [System.Text.Json.Serialization.JsonPropertyName("skill")] + public string SkillName { get; set; } = string.Empty; + } + + public class Next : Previous + { + } + + public class NormalAnswerConfig + { + public static class Types + { + public class Answer + { + /// + /// 获取或设置类型。 + /// + [Newtonsoft.Json.JsonProperty("type")] + [System.Text.Json.Serialization.JsonPropertyName("type")] + public int Type { get; set; } + + /// + /// 获取或设置回答内容。 + /// + [Newtonsoft.Json.JsonProperty("content")] + [System.Text.Json.Serialization.JsonPropertyName("content")] + public string Content { get; set; } = string.Empty; + } + } + + /// + /// 获取或设置是否合并。 + /// + [Newtonsoft.Json.JsonProperty("merge_answer")] + [System.Text.Json.Serialization.JsonPropertyName("merge_answer")] + public bool RequireMergeAnswer { get; set; } + + /// + /// 获取或设置回答列表。 + /// + [Newtonsoft.Json.JsonProperty("answer")] + [System.Text.Json.Serialization.JsonPropertyName("answer")] + public IList AnswerList { get; set; } = new List(); + } + + public class ApiAnswerConfig + { + public static class Types + { + public class Argument + { + public static class Types + { + public class Item + { + /// + /// 获取或设置参数名称。 + /// + [Newtonsoft.Json.JsonProperty("name")] + [System.Text.Json.Serialization.JsonPropertyName("name")] + public string Name { get; set; } = string.Empty; + + /// + /// 获取或设置是否必填。 + /// + [Newtonsoft.Json.JsonProperty("input")] + [System.Text.Json.Serialization.JsonPropertyName("input")] + public bool IsRequired { get; set; } + + /// + /// 获取或设置参数含义。 + /// + [Newtonsoft.Json.JsonProperty("desc")] + [System.Text.Json.Serialization.JsonPropertyName("desc")] + public string Description { get; set; } = string.Empty; + + /// + /// 获取或设置对应语义槽。 + /// + [Newtonsoft.Json.JsonProperty("slot")] + [System.Text.Json.Serialization.JsonPropertyName("slot")] + public string Slot { get; set; } = string.Empty; + + /// + /// 获取或设置默认值。 + /// + [Newtonsoft.Json.JsonProperty("default_value")] + [System.Text.Json.Serialization.JsonPropertyName("default_value")] + public string DefaultValue { get; set; } = string.Empty; + + /// + /// 获取或设置追问话术列表。 + /// + [Newtonsoft.Json.JsonProperty("ask_content")] + [System.Text.Json.Serialization.JsonPropertyName("ask_content")] + public IList? AskContentList { get; set; } + } + } + + /// + /// 获取或设置入参列表。 + /// + [Newtonsoft.Json.JsonProperty("input")] + [System.Text.Json.Serialization.JsonPropertyName("input")] + public IList? InputArgumentList { get; set; } + + /// + /// 获取或设置出参列表。 + /// + [Newtonsoft.Json.JsonProperty("output")] + [System.Text.Json.Serialization.JsonPropertyName("output")] + public IList? OutArgumentList { get; set; } + } + } + + /// + /// 获取或设置服务接口调用 API。 + /// + [Newtonsoft.Json.JsonProperty("api")] + [System.Text.Json.Serialization.JsonPropertyName("api")] + public string Api { get; set; } = string.Empty; + + /// + /// 获取或设置 API 类型。 + /// + [Newtonsoft.Json.JsonProperty("http_method")] + [System.Text.Json.Serialization.JsonPropertyName("http_method")] + public string HttpMethod { get; set; } = string.Empty; + + /// + /// 获取或设置 API 地址。 + /// + [Newtonsoft.Json.JsonProperty("http_url")] + [System.Text.Json.Serialization.JsonPropertyName("http_url")] + public string HttpUrl { get; set; } = string.Empty; + + /// + /// 获取或设置是否征求用户意见。 + /// + [Newtonsoft.Json.JsonProperty("need_confirm")] + [System.Text.Json.Serialization.JsonPropertyName("need_confirm")] + public bool RequireConfirm { get; set; } + + /// + /// 获取或设置征求语句。 + /// + [Newtonsoft.Json.JsonProperty("need_confirm_response")] + [System.Text.Json.Serialization.JsonPropertyName("need_confirm_response")] + public string? ConfirmResponse { get; set; } + + /// + /// 获取或设置参数信息。 + /// + [Newtonsoft.Json.JsonProperty("arguments")] + [System.Text.Json.Serialization.JsonPropertyName("arguments")] + public Types.Argument Argument { get; set; } = new Types.Argument(); + + /// + /// 获取或设置结果列表。 + /// + [Newtonsoft.Json.JsonProperty("result")] + [System.Text.Json.Serialization.JsonPropertyName("result")] + public IList ResultList { get; set; } = new List(); + } + + public class AskSlotAnswerConfig + { + public static class Types + { + public class Argument + { + /// + /// 获取或设置参数名称。 + /// + [Newtonsoft.Json.JsonProperty("name")] + [System.Text.Json.Serialization.JsonPropertyName("name")] + public string Name { get; set; } = string.Empty; + + /// + /// 获取或设置对应语义槽。 + /// + [Newtonsoft.Json.JsonProperty("slot")] + [System.Text.Json.Serialization.JsonPropertyName("slot")] + public string Slot { get; set; } = string.Empty; + + /// + /// 获取或设置追问话术列表。 + /// + [Newtonsoft.Json.JsonProperty("ask_content")] + [System.Text.Json.Serialization.JsonPropertyName("ask_content")] + public IList? AskContentList { get; set; } + } + } + + /// + /// 获取或设置语义槽信息追问 API。 + /// + [Newtonsoft.Json.JsonProperty("api")] + [System.Text.Json.Serialization.JsonPropertyName("api")] + public string Api { get; set; } = string.Empty; + + /// + /// 获取或设置参数信息。 + /// + [Newtonsoft.Json.JsonProperty("arguments")] + [System.Text.Json.Serialization.JsonPropertyName("arguments")] + public IList Argument { get; set; } = new List(); + + /// + /// 获取或设置结果列表。 + /// + [Newtonsoft.Json.JsonProperty("result")] + [System.Text.Json.Serialization.JsonPropertyName("result")] + public IList ResultList { get; set; } = new List(); + } + + public class AskAnswerConfig + { + /// + /// 获取或设置机器人提问 API。 + /// + [Newtonsoft.Json.JsonProperty("api")] + [System.Text.Json.Serialization.JsonPropertyName("api")] + public string Api { get; set; } = string.Empty; + + /// + /// 获取或设置问题。 + /// + [Newtonsoft.Json.JsonProperty("question")] + [System.Text.Json.Serialization.JsonPropertyName("question")] + public string Question { get; set; } = string.Empty; + + /// + /// 获取或设置结果列表。 + /// + [Newtonsoft.Json.JsonProperty("result")] + [System.Text.Json.Serialization.JsonPropertyName("result")] + public IList ResultList { get; set; } = new List(); + } + + public class Result + { + /// + /// 获取或设置错误码。 + /// + [Newtonsoft.Json.JsonProperty("code")] + [System.Text.Json.Serialization.JsonPropertyName("code")] + public string ErrorCode { get; set; } = string.Empty; + + /// + /// 获取或设置错误描述。 + /// + [Newtonsoft.Json.JsonProperty("desc")] + [System.Text.Json.Serialization.JsonPropertyName("desc")] + public string ErrorDescription { get; set; } = string.Empty; + + /// + /// 获取或设置回答配置类型。 + /// + [Newtonsoft.Json.JsonProperty("answer_config_type")] + [System.Text.Json.Serialization.JsonPropertyName("answer_config_type")] + public int AnswerConfigType { get; set; } + + /// + /// 获取或设置回答。 + /// + [Newtonsoft.Json.JsonProperty("answer")] + [System.Text.Json.Serialization.JsonPropertyName("answer")] + public string Answer { get; set; } = string.Empty; + + /// + /// 获取或设置普通技能信息。 + /// + [Newtonsoft.Json.JsonProperty("normal_answer_config")] + [System.Text.Json.Serialization.JsonPropertyName("normal_answer_config")] + public NormalAnswerConfig? AnswerConfigForNormal { get; set; } + + /// + /// 获取或设置服务接口调用信息。 + /// + [Newtonsoft.Json.JsonProperty("api_answer_config")] + [System.Text.Json.Serialization.JsonPropertyName("api_answer_config")] + public ApiAnswerConfig? AnswerConfigForApi { get; set; } + + /// + /// 获取或设置语义槽追问信息。 + /// + [Newtonsoft.Json.JsonProperty("ask_slot_answer_config")] + [System.Text.Json.Serialization.JsonPropertyName("ask_slot_answer_config")] + public AskSlotAnswerConfig? AnswerConfigForAskSlot { get; set; } + + /// + /// 获取或设置机器人提问信息。 + /// + [Newtonsoft.Json.JsonProperty("ask_answer_config")] + [System.Text.Json.Serialization.JsonPropertyName("ask_answer_config")] + public AskAnswerConfig? AnswerConfigForAsk { get; set; } + + /// + /// 获取或设置机器人动态提问信息。 + /// + [Newtonsoft.Json.JsonProperty("dynamic_ask_answer_config")] + [System.Text.Json.Serialization.JsonPropertyName("dynamic_ask_answer_config")] + public AskAnswerConfig? AnswerConfigForAskDynamic { get; set; } + } + } + + /// + /// 获取或设置意图 ID。 + /// + [Newtonsoft.Json.JsonProperty("intent_id")] + [System.Text.Json.Serialization.JsonPropertyName("intent_id")] + public long IntentId { get; set; } + + /// + /// 获取或设置技能 ID。 + /// + [Newtonsoft.Json.JsonProperty("skill_id")] + [System.Text.Json.Serialization.JsonPropertyName("skill_id")] + public long SkillId { get; set; } + + /// + /// 获取或设置语义槽列表。 + /// + [Newtonsoft.Json.JsonProperty("slots")] + [System.Text.Json.Serialization.JsonPropertyName("slots")] + public IList IntentQuestionList { get; set; } = new List(); + + /// + /// 获取或设置前置对话列表。 + /// + [Newtonsoft.Json.JsonProperty("pre")] + [System.Text.Json.Serialization.JsonPropertyName("pre")] + public IList PreviousList { get; set; } = new List(); + + /// + /// 获取或设置后续对话列表。 + /// + [Newtonsoft.Json.JsonProperty("next")] + [System.Text.Json.Serialization.JsonPropertyName("next")] + public IList NextList { get; set; } = new List(); + + /// + /// 获取或设置是否追问。 + /// + [Newtonsoft.Json.JsonProperty("keep_ask")] + [System.Text.Json.Serialization.JsonPropertyName("keep_ask")] + public bool IsKeepAsk { get; set; } + + /// + /// 获取或设置最大追问次数。 + /// + [Newtonsoft.Json.JsonProperty("keep_ask_num")] + [System.Text.Json.Serialization.JsonPropertyName("keep_ask_num")] + public int KeepAskCount { get; set; } + + /// + /// 获取或设置回答配置类型。 + /// + [Newtonsoft.Json.JsonProperty("answer_config_type")] + [System.Text.Json.Serialization.JsonPropertyName("answer_config_type")] + public int AnswerConfigType { get; set; } + + /// + /// 获取或设置普通技能信息。 + /// + [Newtonsoft.Json.JsonProperty("normal_answer_config")] + [System.Text.Json.Serialization.JsonPropertyName("normal_answer_config")] + public Types.NormalAnswerConfig? AnswerConfigForNormal { get; set; } + + /// + /// 获取或设置服务接口调用信息。 + /// + [Newtonsoft.Json.JsonProperty("api_answer_config")] + [System.Text.Json.Serialization.JsonPropertyName("api_answer_config")] + public Types.ApiAnswerConfig? AnswerConfigForApi { get; set; } + + /// + /// 获取或设置语义槽追问信息。 + /// + [Newtonsoft.Json.JsonProperty("ask_slot_answer_config")] + [System.Text.Json.Serialization.JsonPropertyName("ask_slot_answer_config")] + public Types.AskSlotAnswerConfig? AnswerConfigForAskSlot { get; set; } + + /// + /// 获取或设置机器人提问信息。 + /// + [Newtonsoft.Json.JsonProperty("ask_answer_config")] + [System.Text.Json.Serialization.JsonPropertyName("ask_answer_config")] + public Types.AskAnswerConfig? AnswerConfigForAsk { get; set; } + + /// + /// 获取或设置机器人动态提问信息。 + /// + [Newtonsoft.Json.JsonProperty("dynamic_ask_answer_config")] + [System.Text.Json.Serialization.JsonPropertyName("dynamic_ask_answer_config")] + public Types.AskAnswerConfig? AnswerConfigForAskDynamic { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Intent/Config/IntentConfigSaveResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Intent/Config/IntentConfigSaveResponse.cs new file mode 100644 index 00000000..10ef0efd --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Intent/Config/IntentConfigSaveResponse.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.OpenAI.Models +{ + /// + /// 表示 [POST] /v2/intent/config/save 接口的响应。 + /// + public class IntentConfigSaveResponse : WechatOpenAIResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Intent/IntentDeleteRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Intent/IntentDeleteRequest.cs new file mode 100644 index 00000000..bd36fc56 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Intent/IntentDeleteRequest.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.OpenAI.Models +{ + /// + /// 表示 [POST] /v2/intent/delete 接口的请求。 + /// + public class IntentDeleteRequest : WechatOpenAIRequest + { + /// + /// 获取或设置意图 ID 列表。 + /// + [Newtonsoft.Json.JsonProperty("id_list")] + [System.Text.Json.Serialization.JsonPropertyName("id_list")] + public IList IntentIdList { get; set; } = new List(); + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Intent/IntentDeleteResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Intent/IntentDeleteResponse.cs new file mode 100644 index 00000000..a0dd4398 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Intent/IntentDeleteResponse.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.OpenAI.Models +{ + /// + /// 表示 [POST] /v2/intent/delete 接口的响应。 + /// + public class IntentDeleteResponse : WechatOpenAIResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Intent/IntentGetDetailRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Intent/IntentGetDetailRequest.cs new file mode 100644 index 00000000..18c62241 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Intent/IntentGetDetailRequest.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.OpenAI.Models +{ + /// + /// 表示 [POST] /v2/intent/get_detail 接口的请求。 + /// + public class IntentGetDetailRequest : WechatOpenAIRequest + { + /// + /// 获取或设置意图 ID。 + /// + [Newtonsoft.Json.JsonProperty("id")] + [System.Text.Json.Serialization.JsonPropertyName("id")] + public long IntentId { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Intent/IntentGetDetailResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Intent/IntentGetDetailResponse.cs new file mode 100644 index 00000000..52836d4c --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Intent/IntentGetDetailResponse.cs @@ -0,0 +1,121 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.OpenAI.Models +{ + /// + /// 表示 [POST] /v2/intent/get_detail 接口的响应。 + /// + public class IntentGetDetailResponse : WechatOpenAIResponse + { + public static class Types + { + public class Data + { + public static class Types + { + public class Question + { + /// + /// 获取或设置问题 ID。 + /// + [Newtonsoft.Json.JsonProperty("id")] + [System.Text.Json.Serialization.JsonPropertyName("id")] + public long QuestionId { get; set; } + + /// + /// 获取或设置问题内容。 + /// + [Newtonsoft.Json.JsonProperty("question")] + [System.Text.Json.Serialization.JsonPropertyName("question")] + public string Content { get; set; } = default!; + + /// + /// 获取或设置优先级。 + /// + [Newtonsoft.Json.JsonProperty("rank_level")] + [System.Text.Json.Serialization.JsonPropertyName("rank_level")] + public double RankLevel { get; set; } + + /// + /// 获取或设置相似度。 + /// + [Newtonsoft.Json.JsonProperty("threshold")] + [System.Text.Json.Serialization.JsonPropertyName("threshold")] + public double Threshold { get; set; } + + /// + /// 获取或设置是否为反例。 + /// + [Newtonsoft.Json.JsonProperty("counter_example")] + [System.Text.Json.Serialization.JsonPropertyName("counter_example")] + public bool IsCounterExample { get; set; } + } + } + + /// + /// 获取或设置意图 ID。 + /// + [Newtonsoft.Json.JsonProperty("id")] + [System.Text.Json.Serialization.JsonPropertyName("id")] + public long IntentId { get; set; } + + /// + /// 获取或设置技能 ID。 + /// + [Newtonsoft.Json.JsonProperty("skill_id")] + [System.Text.Json.Serialization.JsonPropertyName("skill_id")] + public long SkillId { get; set; } + + /// + /// 获取或设置意图名称。 + /// + [Newtonsoft.Json.JsonProperty("name")] + [System.Text.Json.Serialization.JsonPropertyName("name")] + public string Name { get; set; } = default!; + + /// + /// 获取或设置优先级。 + /// + [Newtonsoft.Json.JsonProperty("rank_level")] + [System.Text.Json.Serialization.JsonPropertyName("rank_level")] + public double RankLevel { get; set; } + + /// + /// 获取或设置相似度。 + /// + [Newtonsoft.Json.JsonProperty("threshold")] + [System.Text.Json.Serialization.JsonPropertyName("threshold")] + public double Threshold { get; set; } + + /// + /// 获取或设置意图开关。 + /// + [Newtonsoft.Json.JsonProperty("switch")] + [System.Text.Json.Serialization.JsonPropertyName("switch")] + public bool Switch { get; set; } + + /// + /// 获取或设置命中次数。 + /// + [Newtonsoft.Json.JsonProperty("frequency")] + [System.Text.Json.Serialization.JsonPropertyName("frequency")] + public int Frequency { get; set; } + + /// + /// 获取或设置意图问题列表。 + /// + [Newtonsoft.Json.JsonProperty("questions")] + [System.Text.Json.Serialization.JsonPropertyName("questions")] + public Types.Question[] QuestionList { get; set; } = default!; + + /// + /// 获取或设置更新时间戳。 + /// + [Newtonsoft.Json.JsonProperty("updated_time")] + [System.Text.Json.Serialization.JsonPropertyName("updated_time")] + public long UpdateTimestamp { get; set; } + } + } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Intent/IntentNameExistRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Intent/IntentNameExistRequest.cs new file mode 100644 index 00000000..637f6e3a --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Intent/IntentNameExistRequest.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.OpenAI.Models +{ + /// + /// 表示 [POST] /v2/intent/name_exist 接口的请求。 + /// + public class IntentNameExistRequest : WechatOpenAIRequest + { + /// + /// 获取或设置技能 ID。 + /// + [Newtonsoft.Json.JsonProperty("skill_id")] + [System.Text.Json.Serialization.JsonPropertyName("skill_id")] + public long SkillId { get; set; } + + /// + /// 获取或设置意图名称。 + /// + [Newtonsoft.Json.JsonProperty("intent_name")] + [System.Text.Json.Serialization.JsonPropertyName("intent_name")] + public string IntentName { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Intent/IntentNameExistResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Intent/IntentNameExistResponse.cs new file mode 100644 index 00000000..45e24706 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Intent/IntentNameExistResponse.cs @@ -0,0 +1,24 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.OpenAI.Models +{ + /// + /// 表示 [POST] /v2/intent/name_exist 接口的响应。 + /// + public class IntentNameExistResponse : WechatOpenAIResponse + { + public static class Types + { + public class Data + { + /// + /// 获取或设置是否已存在。 + /// + [Newtonsoft.Json.JsonProperty("exist")] + [System.Text.Json.Serialization.JsonPropertyName("exist")] + public bool IsExisted { get; set; } + } + } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Intent/IntentSaveRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Intent/IntentSaveRequest.cs new file mode 100644 index 00000000..114a3585 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Intent/IntentSaveRequest.cs @@ -0,0 +1,66 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.OpenAI.Models +{ + /// + /// 表示 [POST] /v2/intent/save 接口的请求。 + /// + public class IntentSaveRequest : WechatOpenAIRequest + { + public static class Types + { + public class Intent + { + /// + /// 获取或设置意图 ID。 + /// + [Newtonsoft.Json.JsonProperty("intent_id")] + [System.Text.Json.Serialization.JsonPropertyName("intent_id")] + public long IntentId { get; set; } + + /// + /// 获取或设置技能 ID。 + /// + [Newtonsoft.Json.JsonProperty("skill_id")] + [System.Text.Json.Serialization.JsonPropertyName("skill_id")] + public long SkillId { get; set; } + + /// + /// 获取或设置意图名称。 + /// + [Newtonsoft.Json.JsonProperty("name")] + [System.Text.Json.Serialization.JsonPropertyName("name")] + public string Name { get; set; } = string.Empty; + + /// + /// 获取或设置优先级。 + /// + [Newtonsoft.Json.JsonProperty("rank_level")] + [System.Text.Json.Serialization.JsonPropertyName("rank_level")] + public double RankLevel { get; set; } + + /// + /// 获取或设置相似度。 + /// + [Newtonsoft.Json.JsonProperty("threshold")] + [System.Text.Json.Serialization.JsonPropertyName("threshold")] + public double Threshold { get; set; } + + /// + /// 获取或设置意图开关。 + /// + [Newtonsoft.Json.JsonProperty("switch")] + [System.Text.Json.Serialization.JsonPropertyName("switch")] + public bool Switch { get; set; } + } + } + + /// + /// 获取或设置意图列表。 + /// + [Newtonsoft.Json.JsonProperty("intent_list")] + [System.Text.Json.Serialization.JsonPropertyName("intent_list")] + public IList IntentList { get; set; } = new List(); + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Intent/IntentSaveResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Intent/IntentSaveResponse.cs new file mode 100644 index 00000000..41bc790f --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Intent/IntentSaveResponse.cs @@ -0,0 +1,52 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.OpenAI.Models +{ + /// + /// 表示 [POST] /v2/intent/save 接口的响应。 + /// + public class IntentSaveResponse : WechatOpenAIResponse + { + public static class Types + { + public class Data + { + + public static class Types + { + public class Intent + { + /// + /// 获取或设置意图 ID。 + /// + [Newtonsoft.Json.JsonProperty("intent_id")] + [System.Text.Json.Serialization.JsonPropertyName("intent_id")] + public long IntentId { get; set; } + + /// + /// 获取或设置意图名称。 + /// + [Newtonsoft.Json.JsonProperty("intent_name")] + [System.Text.Json.Serialization.JsonPropertyName("intent_name")] + public string Name { get; set; } = default!; + } + } + + /// + /// 获取或设置意图列表。 + /// + [Newtonsoft.Json.JsonProperty("list")] + [System.Text.Json.Serialization.JsonPropertyName("list")] + public Types.Intent[] IntentList { get; set; } = default!; + + /// + /// 获取或设置意图数量。 + /// + [Newtonsoft.Json.JsonProperty("count")] + [System.Text.Json.Serialization.JsonPropertyName("count")] + public int Count { get; set; } + } + } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Intent/IntentSearchRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Intent/IntentSearchRequest.cs new file mode 100644 index 00000000..c6bffd92 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Intent/IntentSearchRequest.cs @@ -0,0 +1,34 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.OpenAI.Models +{ + /// + /// 表示 [POST] /v2/intent/search 接口的请求。 + /// + public class IntentSearchRequest : WechatOpenAIRequest + { + /// + /// 获取或设置关键字。 + /// + [Newtonsoft.Json.JsonProperty("keyword")] + [System.Text.Json.Serialization.JsonPropertyName("keyword")] + public string? Keyword { get; set; } + + /// + /// 获取或设置分页页数。 + /// 默认值:1 + /// + [Newtonsoft.Json.JsonProperty("page")] + [System.Text.Json.Serialization.JsonPropertyName("page")] + public int Page { get; set; } = 1; + + /// + /// 获取或设置分页每页数量。 + /// 默认值:10 + /// + [Newtonsoft.Json.JsonProperty("size")] + [System.Text.Json.Serialization.JsonPropertyName("size")] + public int Limit { get; set; } = 10; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Intent/IntentSearchResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Intent/IntentSearchResponse.cs new file mode 100644 index 00000000..db7ebd9f --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Intent/IntentSearchResponse.cs @@ -0,0 +1,65 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.OpenAI.Models +{ + /// + /// 表示 [POST] /v2/intent/search 接口的响应。 + /// + public class IntentSearchResponse : WechatOpenAIResponse + { + public static class Types + { + public class Data + { + public static class Types + { + public class Intent + { + /// + /// 获取或设置意图 ID。 + /// + [Newtonsoft.Json.JsonProperty("intent_id")] + [System.Text.Json.Serialization.JsonPropertyName("intent_id")] + public long IntentId { get; set; } + + /// + /// 获取或设置意图名称。 + /// + [Newtonsoft.Json.JsonProperty("intent_name")] + [System.Text.Json.Serialization.JsonPropertyName("intent_name")] + public string IntentName { get; set; } = default!; + + /// + /// 获取或设置技能 ID。 + /// + [Newtonsoft.Json.JsonProperty("skill_id")] + [System.Text.Json.Serialization.JsonPropertyName("skill_id")] + public long SkillId { get; set; } + + /// + /// 获取或设置技能名称。 + /// + [Newtonsoft.Json.JsonProperty("skill_name")] + [System.Text.Json.Serialization.JsonPropertyName("skill_name")] + public string SkillName { get; set; } = default!; + } + } + + /// + /// 获取或设置意图列表。 + /// + [Newtonsoft.Json.JsonProperty("list")] + [System.Text.Json.Serialization.JsonPropertyName("list")] + public Types.Intent[] IntentList { get; set; } = default!; + + /// + /// 获取或设置意图总数量。 + /// + [Newtonsoft.Json.JsonProperty("count")] + [System.Text.Json.Serialization.JsonPropertyName("count")] + public int TotalCount { get; set; } + } + } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Intent/IntentSwitchBatchRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Intent/IntentSwitchBatchRequest.cs new file mode 100644 index 00000000..3dd8320b --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Intent/IntentSwitchBatchRequest.cs @@ -0,0 +1,38 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.OpenAI.Models +{ + /// + /// 表示 [POST] /v1/intent/switch/batch 接口的请求。 + /// + public class IntentSwitchBatchRequest : WechatOpenAIRequest + { + public static class Types + { + public class Intent + { + /// + /// 获取或设置意图 ID。 + /// + [Newtonsoft.Json.JsonProperty("id")] + [System.Text.Json.Serialization.JsonPropertyName("id")] + public long IntentId { get; set; } + + /// + /// 获取或设置意图开关。 + /// + [Newtonsoft.Json.JsonProperty("switch")] + [System.Text.Json.Serialization.JsonPropertyName("switch")] + public bool Switch { get; set; } + } + } + + /// + /// 获取或设置意图列表。 + /// + [Newtonsoft.Json.JsonProperty("switch_list")] + [System.Text.Json.Serialization.JsonPropertyName("switch_list")] + public IList IntentList { get; set; } = new List(); + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Intent/IntentSwitchBatchResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Intent/IntentSwitchBatchResponse.cs new file mode 100644 index 00000000..548a77d4 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Intent/IntentSwitchBatchResponse.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.OpenAI.Models +{ + /// + /// 表示 [POST] /v1/intent/switch/batch 接口的响应。 + /// + public class IntentSwitchBatchResponse : WechatOpenAIResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Intent/Question/IntentQuestionDeleteRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Intent/Question/IntentQuestionDeleteRequest.cs new file mode 100644 index 00000000..c35a0efe --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Intent/Question/IntentQuestionDeleteRequest.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.OpenAI.Models +{ + /// + /// 表示 [POST] /v2/intent/question/delete 接口的请求。 + /// + public class IntentQuestionDeleteRequest : WechatOpenAIRequest + { + /// + /// 获取或设置意图问题 ID 列表。 + /// + [Newtonsoft.Json.JsonProperty("id_list")] + [System.Text.Json.Serialization.JsonPropertyName("id_list")] + public IList IntentQuestionIdList { get; set; } = new List(); + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Intent/Question/IntentQuestionDeleteResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Intent/Question/IntentQuestionDeleteResponse.cs new file mode 100644 index 00000000..8571197f --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Intent/Question/IntentQuestionDeleteResponse.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.OpenAI.Models +{ + /// + /// 表示 [POST] /v2/intent/question/delete 接口的响应。 + /// + public class IntentQuestionDeleteResponse : WechatOpenAIResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Intent/Question/IntentQuestionSaveRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Intent/Question/IntentQuestionSaveRequest.cs new file mode 100644 index 00000000..f542e5b5 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Intent/Question/IntentQuestionSaveRequest.cs @@ -0,0 +1,94 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.OpenAI.Models +{ + /// + /// 表示 [POST] /v2/intent/question/save 接口的请求。 + /// + public class IntentQuestionSaveRequest : WechatOpenAIRequest + { + public static class Types + { + public class Question + { + /// + /// 获取或设置问题 ID。 + /// + [Newtonsoft.Json.JsonProperty("id")] + [System.Text.Json.Serialization.JsonPropertyName("id")] + public long QuestionId { get; set; } + + /// + /// 获取或设置问题内容。 + /// + [Newtonsoft.Json.JsonProperty("question")] + [System.Text.Json.Serialization.JsonPropertyName("question")] + public string Content { get; set; } = string.Empty; + + /// + /// 获取或设置优先级。 + /// + [Newtonsoft.Json.JsonProperty("rank_level")] + [System.Text.Json.Serialization.JsonPropertyName("rank_level")] + public double RankLevel { get; set; } + + /// + /// 获取或设置相似度。 + /// + [Newtonsoft.Json.JsonProperty("threshold")] + [System.Text.Json.Serialization.JsonPropertyName("threshold")] + public double Threshold { get; set; } + + /// + /// 获取或设置是否为反例。 + /// + [Newtonsoft.Json.JsonProperty("counter_example")] + [System.Text.Json.Serialization.JsonPropertyName("counter_example")] + public bool IsCounterExample { get; set; } + } + } + + /// + /// 获取或设置保存模式。 + /// + [Newtonsoft.Json.JsonProperty("mode")] + [System.Text.Json.Serialization.JsonPropertyName("mode")] + public int Mode { get; set; } + + /// + /// 获取或设置意图 ID。 + /// + [Newtonsoft.Json.JsonProperty("intent_id")] + [System.Text.Json.Serialization.JsonPropertyName("intent_id")] + public long IntentId { get; set; } + + /// + /// 获取或设置意图名称。 + /// + [Newtonsoft.Json.JsonProperty("intent_name")] + [System.Text.Json.Serialization.JsonPropertyName("intent_name")] + public string? IntentName { get; set; } + + /// + /// 获取或设置技能 ID。 + /// + [Newtonsoft.Json.JsonProperty("skill_id")] + [System.Text.Json.Serialization.JsonPropertyName("skill_id")] + public long SkillId { get; set; } + + /// + /// 获取或设置技能名称。 + /// + [Newtonsoft.Json.JsonProperty("skill_name")] + [System.Text.Json.Serialization.JsonPropertyName("skill_name")] + public string? SkillName { get; set; } + + /// + /// 获取或设置意图问题列表。 + /// + [Newtonsoft.Json.JsonProperty("data")] + [System.Text.Json.Serialization.JsonPropertyName("data")] + public IList IntentQuestionList { get; set; } = new List(); + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Intent/Question/IntentQuestionSaveResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Intent/Question/IntentQuestionSaveResponse.cs new file mode 100644 index 00000000..160123ee --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models/Intent/Question/IntentQuestionSaveResponse.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.OpenAI.Models +{ + /// + /// 表示 [POST] /v2/intent/question/save 接口的响应。 + /// + public class IntentQuestionSaveResponse : WechatOpenAIResponse + { + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Intent/Config/IntentConfigGetRequest.json b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Intent/Config/IntentConfigGetRequest.json new file mode 100644 index 00000000..a08edfde --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Intent/Config/IntentConfigGetRequest.json @@ -0,0 +1,3 @@ +{ + "intent_id": 1205882 +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Intent/Config/IntentConfigGetResponse.json b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Intent/Config/IntentConfigGetResponse.json new file mode 100644 index 00000000..f59353e5 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Intent/Config/IntentConfigGetResponse.json @@ -0,0 +1,127 @@ +{ + "code": 0, + "msg": "请求成功", + "request_id": "255i0ug8-l9q4-3801-44ft-w7csjn9e5142", + "data": { + "slots": [ + { + "name": "城市", + "dicts": [ "建筑", "公路" ], + "keep_ask": true, + "ask_content": [ "建筑1", "公路1" ] + } + ], + "pre": [ + { + "skill": "音乐", + "intent": "点播" + } + ], + "next": [ + { + "skill": "天气", + "intent": "询问" + } + ], + "keep_ask": true, + "keep_ask_num": 10, + "answer_config_type": 4, + "dynamic_ask_answer_config": { + "api": "_dynamic_list_selection_{}", + "question": "AskAnswerConfigQuestion", + "result": [ + { + "code": "0", + "desc": "", + "answer_config_type": 3, + "answer": "", + "ask_answer_config": { + "api": "_bot_ask_{}", + "question": "AskAnswerConfigQuestion", + "result": [ + { + "code": "0", + "desc": "", + "answer_config_type": 2, + "answer": "", + "ask_slot_answer_config": { + "api": "_bot_getinfo_{}", + "arguments": [ + { + "name": "", + "slot": "Slot", + "ask_content": [ "111", "222" ] + } + ], + "result": [ + { + "code": "0", + "desc": "", + "answer_config_type": 1, + "answer": "", + "api_answer_config": { + "api": "_http_service_{}", + "need_confirm": true, + "need_confirm_response": "城市好啊", + "http_method": "get", + "http_url": "HttpUrl111", + "arguments": { + "input": [ + { + "name": "InputName", + "input": true, + "desc": "Inputdesc", + "slot": "InputSlot", + "default_value": "defa", + "ask_content": [ "ask" ] + } + ], + "output": [ + { + "name": "OutputName", + "input": false, + "desc": "desc", + "slot": "OutputSlot", + "default_value": "" + } + ] + }, + "result": [ + { + "code": "0", + "desc": "", + "answer_config_type": 0, + "answer": "", + "normal_answer_config": { + "merge_answer": true, + "answer": [ + { + "type": 0, + "content": "我在哪" + }, + { + "type": 1, + "content": { + "title": "我是h5", + "description": "我是Description", + "url": "我是Url", + "pic_url": "我是PicUrl", + "type": "h5" + } + } + ] + } + } + ] + } + } + ] + } + } + ] + } + } + ] + } + } +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Intent/Config/IntentConfigSaveRequest.json b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Intent/Config/IntentConfigSaveRequest.json new file mode 100644 index 00000000..61fc06ee --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Intent/Config/IntentConfigSaveRequest.json @@ -0,0 +1,125 @@ +{ + "intent_id": 9617433, + "skill_id": 1549251, + "slots": [ + { + "name": "城市", + "dicts": [ + "建筑", + "公路" + ], + "keep_ask": true, + "ask_content": [ + "建筑1", + "公路1" + ] + } + ], + "pre": [ + { + "skill": "音乐", + "intent": "点播" + } + ], + "next": [ + { + "skill": "天气", + "intent": "询问" + } + ], + "keep_ask": true, + "keep_ask_num": 10, + "answer_config_type": 4, + "dynamic_ask_answer_config": { + "api": "_dynamic_list_selection_{}", + "question": "AskAnswerConfig Question", + "result": [ + { + "code": "0", + "desc": "", + "answer_config_type": 3, + "answer": "", + "ask_answer_config": { + "api": "_bot_ask_{}", + "question": "AskAnswerConfig Question", + "result": [ + { + "code": "0", + "desc": "", + "answer_config_type": 2, + "answer": "", + "ask_slot_answer_config": { + "api": "_bot_getinfo_{}", + "arguments": [ + { + "name": "", + "slot": "Slot", + "ask_content": [ + "111", + "222" + ] + } + ], + "result": [ + { + "code": "0", + "desc": "", + "answer_config_type": 1, + "answer": "", + "api_answer_config": { + "api": "_http_service_{}", + "need_confirm": true, + "need_confirm_response": "城市好啊", + "http_method": "get", + "http_url": "HttpUrl111", + "arguments": { + "input": [ + { + "name": "Input Name", + "input": true, + "desc": "Input desc", + "slot": "Input Slot", + "default_value": "defa", + "ask_content": [ + "ask" + ] + } + ], + "output": [ + { + "name": "Output Name", + "input": false, + "desc": "desc", + "slot": "Output Slot", + "default_value": "" + } + ] + }, + "result": [ + { + "code": "0", + "desc": "", + "answer_config_type": 0, + "answer": "", + "normal_answer_config": { + "merge_answer": true, + "answer": [ + { + "content": "我在哪" + } + ] + + } + } + ] + } + } + ] + } + } + ] + } + } + ] + } +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Intent/Config/IntentConfigSaveResponse.json b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Intent/Config/IntentConfigSaveResponse.json new file mode 100644 index 00000000..d05d963e --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Intent/Config/IntentConfigSaveResponse.json @@ -0,0 +1,5 @@ +{ + "code": 0, + "msg": "请求成功", + "request_id": "255i0ug8-l9q4-3801-44ft-w7csjn9e5142" +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Intent/IntentDeleteRequest.json b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Intent/IntentDeleteRequest.json new file mode 100644 index 00000000..299271af --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Intent/IntentDeleteRequest.json @@ -0,0 +1,3 @@ +{ + "id_list": [ 1205882, 1205883, 1205884 ] +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Intent/IntentDeleteResponse.json b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Intent/IntentDeleteResponse.json new file mode 100644 index 00000000..a2217ea2 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Intent/IntentDeleteResponse.json @@ -0,0 +1,5 @@ +{ + "code": 0, + "msg": "success", + "request_id": "255i0ug8-l9q4-3801-44ft-w7csjn9e5142" +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Intent/IntentGetDetailRequest.json b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Intent/IntentGetDetailRequest.json new file mode 100644 index 00000000..a12b174e --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Intent/IntentGetDetailRequest.json @@ -0,0 +1,3 @@ +{ + "id": 6326248 +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Intent/IntentGetDetailResponse.json b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Intent/IntentGetDetailResponse.json new file mode 100644 index 00000000..696e6bac --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Intent/IntentGetDetailResponse.json @@ -0,0 +1,24 @@ +{ + "code": 0, + "data": { + "id": 6326248, + "name": "温度bab1", + "questions": [ + { + "counter_example": true, + "id": 92, + "question": "今天温度怎么样e", + "rank_level": 1, + "threshold": 0.9 + } + ], + "rank_level": 1, + "skill_id": 1205882, + "switch": false, + "threshold": 0.9, + "frequency": 0, + "updated_time": 1588931008 + }, + "msg": "请求成功", + "request_id": "255i0ug8-l9q4-3801-44ft-w7csjn9e5142" +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Intent/IntentNameExistRequest.json b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Intent/IntentNameExistRequest.json new file mode 100644 index 00000000..142c0856 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Intent/IntentNameExistRequest.json @@ -0,0 +1,4 @@ +{ + "skill_id": 1548171, + "intent_name": "温度" +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Intent/IntentNameExistResponse.json b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Intent/IntentNameExistResponse.json new file mode 100644 index 00000000..f977ff57 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Intent/IntentNameExistResponse.json @@ -0,0 +1,8 @@ +{ + "code": 0, + "msg": "success", + "request_id": "255i0ug8-l9q4-3801-44ft-w7csjn9e5142", + "data": { + "exist": true + } +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Intent/IntentSaveRequest.json b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Intent/IntentSaveRequest.json new file mode 100644 index 00000000..d65b1d4a --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Intent/IntentSaveRequest.json @@ -0,0 +1,20 @@ +{ + "intent_list": [ + { + "intent_id": 0, + "skill_id": 1, + "name": "测试创建意图1", + "rank_level": 0.65, + "threshold": 0.7, + "switch": false + }, + { + "intent_id": 0, + "skill_id": 1, + "name": "测试创建意图2", + "rank_level": 0.75, + "threshold": 0.7, + "switch": true + } + ] +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Intent/IntentSaveResponse.json b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Intent/IntentSaveResponse.json new file mode 100644 index 00000000..124e1773 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Intent/IntentSaveResponse.json @@ -0,0 +1,18 @@ +{ + "code": 0, + "msg": "success", + "request_id": "255i0ug8-l9q4-3801-44ft-w7csjn9e5142", + "data": { + "count": 2, + "list": [ + { + "intent_id": 45, + "intent_name": "测试创建意图1" + }, + { + "intent_id": 20, + "intent_name": "测试创建意图2" + } + ] + } +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Intent/IntentSearchRequest.json b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Intent/IntentSearchRequest.json new file mode 100644 index 00000000..eb20811b --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Intent/IntentSearchRequest.json @@ -0,0 +1,5 @@ +{ + "keyword": "测试", + "page": 1, + "size": 10 +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Intent/IntentSearchResponse.json b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Intent/IntentSearchResponse.json new file mode 100644 index 00000000..f95ab94e --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Intent/IntentSearchResponse.json @@ -0,0 +1,28 @@ +{ + "code": 0, + "data": { + "count": 3, + "list": [ + { + "intent_id": 1516, + "intent_name": "笑什么?", + "skill_id": 7895, + "skill_name": "测试技能4" + }, + { + "intent_id": 1517, + "intent_name": "测试意图333", + "skill_id": 7899, + "skill_name": "技能5" + }, + { + "intent_id": 2, + "intent_name": "测试意图666", + "skill_id": 7899, + "skill_name": "技能5" + } + ] + }, + "msg": "请求成功", + "request_id": "255i0ug8-l9q4-3801-44ft-w7csjn9e5142" +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Intent/IntentSwitchBatchRequest.json b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Intent/IntentSwitchBatchRequest.json new file mode 100644 index 00000000..a3cc4e18 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Intent/IntentSwitchBatchRequest.json @@ -0,0 +1,12 @@ +{ + "switch_list": [ + { + "id": 1205882, + "switch": true + }, + { + "id": 1205883, + "switch": false + } + ] +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Intent/IntentSwitchBatchResponse.json b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Intent/IntentSwitchBatchResponse.json new file mode 100644 index 00000000..d05d963e --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Intent/IntentSwitchBatchResponse.json @@ -0,0 +1,5 @@ +{ + "code": 0, + "msg": "请求成功", + "request_id": "255i0ug8-l9q4-3801-44ft-w7csjn9e5142" +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Intent/Question/IntentQuestionDeleteRequest.json b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Intent/Question/IntentQuestionDeleteRequest.json new file mode 100644 index 00000000..9609b62b --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Intent/Question/IntentQuestionDeleteRequest.json @@ -0,0 +1,3 @@ +{ + "id_list": [ 1, 2, 3 ] +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Intent/Question/IntentQuestionDeleteResponse.json b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Intent/Question/IntentQuestionDeleteResponse.json new file mode 100644 index 00000000..a2217ea2 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Intent/Question/IntentQuestionDeleteResponse.json @@ -0,0 +1,5 @@ +{ + "code": 0, + "msg": "success", + "request_id": "255i0ug8-l9q4-3801-44ft-w7csjn9e5142" +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Intent/Question/IntentQuestionSaveRequest.json b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Intent/Question/IntentQuestionSaveRequest.json new file mode 100644 index 00000000..192ae488 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Intent/Question/IntentQuestionSaveRequest.json @@ -0,0 +1,23 @@ +{ + "mode": 0, + "skill_id": 16579, + "skill_name": "", + "intent_id": 1205882, + "intent_name": "", + "data": [ + { + "id": 0, + "question": "天气", + "rank_level": 0.9, + "threshold": 0.8, + "counter_example": false + }, + { + "id": 0, + "question": "温度", + "rank_level": 0.8, + "threshold": 0.8, + "counter_example": false + } + ] +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Intent/Question/IntentQuestionSaveResponse.json b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Intent/Question/IntentQuestionSaveResponse.json new file mode 100644 index 00000000..a2217ea2 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests/ModelSamples/Intent/Question/IntentQuestionSaveResponse.json @@ -0,0 +1,5 @@ +{ + "code": 0, + "msg": "success", + "request_id": "255i0ug8-l9q4-3801-44ft-w7csjn9e5142" +} \ No newline at end of file