diff --git a/README.md b/README.md index a5655c82..d1842666 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ [![Visitors](https://visitor-badge.laobi.icu/badge?page_id=fudiwei.DotNetCore.SKIT.FlurlHttpClient.Wechat&title=Visitors)](https://github.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient.Wechat) [![License](https://img.shields.io/github/license/fudiwei/DotNetCore.SKIT.FlurlHttpClient.Wechat?label=License)](https://mit-license.org/) -基于 `Flurl.Http` 的微信 API HTTP 客户端,支持公众平台、开放平台、商户平台、企业微信、广告平台等模块。 +基于 `Flurl.Http` 的微信 API HTTP 客户端,支持公众平台、开放平台、商户平台、企业微信、广告平台、对话开放平台等模块。 > 更多 SKIT.FlurlHttpClient 系列开发工具包请[点此查看](https://github.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient)。 @@ -43,7 +43,7 @@ | 商户平台(微信支付)模块 | [![NuGet Version](https://img.shields.io/nuget/v/SKIT.FlurlHttpClient.Wechat.TenpayV3.svg?label=NuGet)](https://www.nuget.org/packages/SKIT.FlurlHttpClient.Wechat.TenpayV3)
[![NuGet Download](https://img.shields.io/nuget/dt/SKIT.FlurlHttpClient.Wechat.TenpayV3.svg?sanitize=true&label=Downloads)](https://www.nuget.org/packages/SKIT.FlurlHttpClient.Wechat.TenpayV3) | [开发文档](./docs/WechatTenpayV3/README.md)|[示例项目](./docs/WechatTenpayV3/Sample.md) | | 企业微信(企业号)模块 | [![NuGet Version](https://img.shields.io/nuget/v/SKIT.FlurlHttpClient.Wechat.Work.svg?label=NuGet)](https://www.nuget.org/packages/SKIT.FlurlHttpClient.Wechat.Work)
[![NuGet Download](https://img.shields.io/nuget/dt/SKIT.FlurlHttpClient.Wechat.Work.svg?sanitize=true&label=Downloads)](https://www.nuget.org/packages/SKIT.FlurlHttpClient.Wechat.Work) | [开发文档](./docs/WechatWork/README.md) | | 广告平台(广点通)模块 | [![NuGet Version](https://img.shields.io/nuget/v/SKIT.FlurlHttpClient.Wechat.Ads.svg?label=NuGet)](https://www.nuget.org/packages/SKIT.FlurlHttpClient.Wechat.Ads)
[![NuGet Download](https://img.shields.io/nuget/dt/SKIT.FlurlHttpClient.Wechat.Ads.svg?sanitize=true&label=Downloads)](https://www.nuget.org/packages/SKIT.FlurlHttpClient.Wechat.Ads) | [开发文档](./docs/WechatAds/README.md) | -| 对话开放平台(智能对话)模块 | | _开发中_ | +| 对话开放平台(智能对话)模块 | [![NuGet Version](https://img.shields.io/nuget/v/SKIT.FlurlHttpClient.Wechat.OpenAI.svg?label=NuGet)](https://www.nuget.org/packages/SKIT.FlurlHttpClient.Wechat.OpenAI)
[![NuGet Download](https://img.shields.io/nuget/dt/SKIT.FlurlHttpClient.Wechat.OpenAI.svg?sanitize=true&label=Downloads)](https://www.nuget.org/packages/SKIT.FlurlHttpClient.Wechat.OpenAI) | [开发文档](./docs/WechatOpenAI/README.md) | --- diff --git a/docs/WechatOpenAI/Advanced_IHttpClientFactory.md b/docs/WechatOpenAI/Advanced_IHttpClientFactory.md new file mode 100644 index 00000000..fd78232f --- /dev/null +++ b/docs/WechatOpenAI/Advanced_IHttpClientFactory.md @@ -0,0 +1,5 @@ +## 如何在 ASP.NET Core 中与 `IHttpClientFactory` 集成? + +--- + +`IHttpClientFactory` 在本库下的用法与在 [SKIT.FlurlHttpClient.Wechat.Api](../WechatApi/README.md) 模块下的用法类似,请参阅[相关文档](../WechatApi/Advanced_IHttpClientFactory.md)。 diff --git a/docs/WechatOpenAI/Advanced_Interceptor.md b/docs/WechatOpenAI/Advanced_Interceptor.md new file mode 100644 index 00000000..ad746617 --- /dev/null +++ b/docs/WechatOpenAI/Advanced_Interceptor.md @@ -0,0 +1,5 @@ +## 如何使用拦截器? + +--- + +拦截器在本库下的用法与在 [SKIT.FlurlHttpClient.Wechat.Api](../WechatApi/README.md) 模块下的用法类似,请参阅[相关文档](../WechatApi/Advanced_Interceptor.md)。 diff --git a/docs/WechatOpenAI/Advanced_JsonSerializer.md b/docs/WechatOpenAI/Advanced_JsonSerializer.md new file mode 100644 index 00000000..0f1f05e2 --- /dev/null +++ b/docs/WechatOpenAI/Advanced_JsonSerializer.md @@ -0,0 +1,5 @@ +## 如何指定 JSON 序列化器? + +--- + +JSON 序列化器在本库下的用法与在 [SKIT.FlurlHttpClient.Wechat.Api](../WechatApi/README.md) 模块下的用法类似,请参阅[相关文档](../WechatApi/Advanced_JsonSerializer.md)。 diff --git a/docs/WechatOpenAI/Advanced_ModelDefinition.md b/docs/WechatOpenAI/Advanced_ModelDefinition.md new file mode 100644 index 00000000..5e454a92 --- /dev/null +++ b/docs/WechatOpenAI/Advanced_ModelDefinition.md @@ -0,0 +1,36 @@ +## 如何快速找到需要调用的 API 模型类名 / 方法名? + +--- + +本库提供的请求模型、响应模型和接口方法,三者均保持同名。 + +例如,查询技能商店列表的请求是 `SkillStoreGetListRequest`,响应是 `SkillStoreGetListResponse`,接口是 `ExecuteSkillStoreGetListAsync()`。知道其中一个,其余两个就可以快速地推断出了。 + +再有,每个对象的命名与官方文档的接口地址大体保持一致。例如刚刚提到的查询技能商店列表,它的接口地址是 `[POST] /skill_store/get_list`,将其中的反斜杠去掉、并以大驼峰命名法的方式调整它,就可以得到前文提到的几个对象了。 + +完整的模型定义可以参考项目目录下的 _src/SKIT.FlurlHttpClient.Wechat.OpenAI/Models_ 目录。 + +--- + +### 微信对话开放平台 API 支持情况: + +
+ +[展开查看] + +| | 微信 API | 备注 | +| :-: | :----------: | :--: | +| √ | 注册用户 | | +| √ | 获取令牌 | | +| √ | 通用接口 | | +| √ | 机器人 | | +| √ | 技能 | | +| √ | 意图 | | +| √ | 语义槽 | | +| √ | 词典 | | +| √ | 词条 | | +| √ | 对话开放接口 | | +| √ | 技能商店 | | +| √ | 数据统计 | | + +
diff --git a/docs/WechatOpenAI/README.md b/docs/WechatOpenAI/README.md new file mode 100644 index 00000000..c97d1866 --- /dev/null +++ b/docs/WechatOpenAI/README.md @@ -0,0 +1,81 @@ +# SKIT.FlurlHttpClient.Wechat.OpenAI + +基于 `Flurl.Http` 的[微信对话开放平台](https://openai.weixin.qq.com/) API 客户端。 + +--- + +## 功能 + +- 基于微信对话开放平台 API 封装。 + +- 请求时自动生成请求唯一标识,无需开发者手动干预。 + +--- + +## 基础用法 + +### 安装: + +提示:如果你使用 Visual Studio NuGet 管理器图形化界面,请在搜索结果中勾选“**包括预发行版**”。 + +```shell +# 通过 NuGet 安装 +> Install-Package SKIT.FlurlHttpClient.Wechat.OpenAI + +# 通过 dotnet-tools 安装 +> dotnet add package SKIT.FlurlHttpClient.Wechat.OpenAI +``` + +### 初始化: + +```csharp +using SKIT.FlurlHttpClient.Wechat; +using SKIT.FlurlHttpClient.Wechat.OpenAI; + +var options = new WechatOpenAIClientOptions() +{ + ClientId = "微信智能对话 ClientId", + ClientKey = "微信智能对话 ClientKey" +}; +var client = new WechatOpenAIClient(options); +``` + +### 请求 & 响应: + +```csharp +using SKIT.FlurlHttpClient.Wechat.OpenAI; +using SKIT.FlurlHttpClient.Wechat.OpenAI.Models; + +/* 以创建机器人接口为例 */ +var request = new BotSaveRequest() +{ + AccessToken = "微信智能对话 X-OPENAI-TOKEN", + ChineseName = "机器人中文名", + EnglishName = "机器人英文名", + Nickname = "机器人昵称", + BotType = 0, + IndustryId = 0 +}; +var response = await client.ExecuteBotSaveAsync(request); +if (response.IsSuccessful()) +{ + Console.WriteLine("机器人 ID:" + response.Data.BotId); +} +else +{ + Console.WriteLine("错误代码:" + response.ErrorCode); + Console.WriteLine("错误描述:" + response.ErrorMessage); +} +``` + +--- + +## 高级技巧 + +- [如何快速找到需要调用的 API 模型类名 / 方法名?](./Advanced_ModelDefinition.md) + +- [如何在 ASP.NET Core 中与 `IHttpClientFactory` 集成?](./Advanced_IHttpClientFactory.md) + +- [如何指定 JSON 序列化器?](./Advanced_JsonSerializer.md) + +- [如何使用拦截器?](./Advanced_Interceptor.md)