From 394ba951ef52b1f95bfb0ef14769ac85749d65dd Mon Sep 17 00:00:00 2001 From: Fu Diwei Date: Sun, 29 Sep 2024 10:49:05 +0800 Subject: [PATCH] =?UTF-8?q?feat(work):=20=E6=96=B0=E5=A2=9E=E8=8E=B7?= =?UTF-8?q?=E5=AE=A2=E5=8A=A9=E6=89=8B=E8=8E=B7=E5=8F=96=E6=88=90=E5=91=98?= =?UTF-8?q?=E5=A4=9A=E6=AC=A1=E6=94=B6=E6=B6=88=E6=81=AF=E8=AF=A6=E6=83=85?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...tExecuteCgibinExternalContactExtensions.cs | 23 ++++++++ ...ctCustomerAcquisitionGetChatInfoRequest.cs | 15 +++++ ...tCustomerAcquisitionGetChatInfoResponse.cs | 56 +++++++++++++++++++ ...CustomerAcquisitionGetChatInfoRequest.json | 3 + ...ustomerAcquisitionGetChatInfoResponse.json | 11 ++++ 5 files changed, 108 insertions(+) create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/CustomerAcquisition/CgibinExternalContactCustomerAcquisitionGetChatInfoRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/CustomerAcquisition/CgibinExternalContactCustomerAcquisitionGetChatInfoResponse.cs create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinExternalContact/CustomerAcquisition/CgibinExternalContactCustomerAcquisitionGetChatInfoRequest.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinExternalContact/CustomerAcquisition/CgibinExternalContactCustomerAcquisitionGetChatInfoResponse.json diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinExternalContactExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinExternalContactExtensions.cs index 64da19a0..b38a70ec 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinExternalContactExtensions.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinExternalContactExtensions.cs @@ -778,6 +778,29 @@ namespace SKIT.FlurlHttpClient.Wechat.Work return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); } + + /// + /// 异步调用 [POST] /cgi-bin/externalcontact/customer_acquisition/get_chat_info 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteCgibinExternalContactCustomerAcquisitionGetChatInfoAsync(this WechatWorkClient client, Models.CgibinExternalContactCustomerAcquisitionGetChatInfoRequest 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 + .CreateFlurlRequest(request, HttpMethod.Post, "cgi-bin", "externalcontact", "customer_acquisition", "get_chat_info") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } #endregion #region CustomerStrategy diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/CustomerAcquisition/CgibinExternalContactCustomerAcquisitionGetChatInfoRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/CustomerAcquisition/CgibinExternalContactCustomerAcquisitionGetChatInfoRequest.cs new file mode 100644 index 00000000..2bde96da --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/CustomerAcquisition/CgibinExternalContactCustomerAcquisitionGetChatInfoRequest.cs @@ -0,0 +1,15 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/externalcontact/customer_acquisition/get_chat_info 接口的请求。 + /// + public class CgibinExternalContactCustomerAcquisitionGetChatInfoRequest : WechatWorkRequest + { + /// + /// 获取或设置会话信息凭据。 + /// + [Newtonsoft.Json.JsonProperty("chat_key")] + [System.Text.Json.Serialization.JsonPropertyName("chat_key")] + public string ChatKey { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/CustomerAcquisition/CgibinExternalContactCustomerAcquisitionGetChatInfoResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/CustomerAcquisition/CgibinExternalContactCustomerAcquisitionGetChatInfoResponse.cs new file mode 100644 index 00000000..545f64f0 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/CustomerAcquisition/CgibinExternalContactCustomerAcquisitionGetChatInfoResponse.cs @@ -0,0 +1,56 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/externalcontact/customer_acquisition/get_chat_info 接口的响应。 + /// + public class CgibinExternalContactCustomerAcquisitionGetChatInfoResponse : WechatWorkResponse + { + public static class Types + { + public class Chat + { + /// + /// 获取或设置添加客户的获客链接 ID。 + /// + [Newtonsoft.Json.JsonProperty("link_id")] + [System.Text.Json.Serialization.JsonPropertyName("link_id")] + public string LinkId { get; set; } = default!; + + /// + /// 获取或设置添加客户的自定义参数。 + /// + [Newtonsoft.Json.JsonProperty("state")] + [System.Text.Json.Serialization.JsonPropertyName("state")] + public string? State { get; set; } + + /// + /// 获取或设置收到的消息次数。 + /// + [Newtonsoft.Json.JsonProperty("recv_msg_cnt")] + [System.Text.Json.Serialization.JsonPropertyName("recv_msg_cnt")] + public int ReceivedMessageCount { get; set; } + } + } + + /// + /// 获取或设置成员 UserId。 + /// + [Newtonsoft.Json.JsonProperty("userid")] + [System.Text.Json.Serialization.JsonPropertyName("userid")] + public string UserId { get; set; } = default!; + + /// + /// 获取或设置外部成员 UserId。 + /// + [Newtonsoft.Json.JsonProperty("external_userid")] + [System.Text.Json.Serialization.JsonPropertyName("external_userid")] + public string ExternalUserId { get; set; } = default!; + + /// + /// 获取或设置多次会话信息。 + /// + [Newtonsoft.Json.JsonProperty("chat_info")] + [System.Text.Json.Serialization.JsonPropertyName("chat_info")] + public Types.Chat Chat { get; set; } = default!; + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinExternalContact/CustomerAcquisition/CgibinExternalContactCustomerAcquisitionGetChatInfoRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinExternalContact/CustomerAcquisition/CgibinExternalContactCustomerAcquisitionGetChatInfoRequest.json new file mode 100644 index 00000000..23787719 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinExternalContact/CustomerAcquisition/CgibinExternalContactCustomerAcquisitionGetChatInfoRequest.json @@ -0,0 +1,3 @@ +{ + "chat_key": "CHAT_KEY" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinExternalContact/CustomerAcquisition/CgibinExternalContactCustomerAcquisitionGetChatInfoResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinExternalContact/CustomerAcquisition/CgibinExternalContactCustomerAcquisitionGetChatInfoResponse.json new file mode 100644 index 00000000..bae69fa3 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinExternalContact/CustomerAcquisition/CgibinExternalContactCustomerAcquisitionGetChatInfoResponse.json @@ -0,0 +1,11 @@ +{ + "errcode": 0, + "errmsg": "ok", + "userid": "zhangsan", + "external_userid": "woAJ2GCAAAXtWyujaWJHDDGi0mACAAA", + "chat_info": { + "recv_msg_cnt": 3, + "link_id": "caXXXXXXX", + "state": "STATE" + } +}