diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinExternalContactExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinExternalContactExtensions.cs
index e2eb9c3a..472aac8b 100644
--- a/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinExternalContactExtensions.cs
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinExternalContactExtensions.cs
@@ -306,8 +306,8 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
#region ContactWay
///
/// 异步调用 [POST] /cgi-bin/externalcontact/add_contact_way 接口。
- /// REF: https://developer.work.weixin.qq.com/document/path/92572
- /// REF: https://developer.work.weixin.qq.com/document/path/92577
+ /// REF: https://developer.work.weixin.qq.com/document/path/92228
+ /// REF: https://developer.work.weixin.qq.com/document/path/96348
///
///
///
@@ -327,8 +327,8 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
///
/// 异步调用 [POST] /cgi-bin/externalcontact/get_contact_way 接口。
- /// REF: https://developer.work.weixin.qq.com/document/path/92572
- /// REF: https://developer.work.weixin.qq.com/document/path/92577
+ /// REF: https://developer.work.weixin.qq.com/document/path/92228
+ /// REF: https://developer.work.weixin.qq.com/document/path/96348
///
///
///
@@ -346,10 +346,31 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
}
+ ///
+ /// 异步调用 [POST] /cgi-bin/externalcontact/list_contact_way 接口。
+ /// REF: https://developer.work.weixin.qq.com/document/path/92228
+ /// REF: https://developer.work.weixin.qq.com/document/path/96348
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteCgibinExternalContactListContactWayAsync(this WechatWorkClient client, Models.CgibinExternalContactListContactWayRequest 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", "externalcontact", "list_contact_way")
+ .SetQueryParam("access_token", request.AccessToken);
+
+ return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
+ }
+
///
/// 异步调用 [POST] /cgi-bin/externalcontact/update_contact_way 接口。
- /// REF: https://developer.work.weixin.qq.com/document/path/92572
- /// REF: https://developer.work.weixin.qq.com/document/path/92577
+ /// REF: https://developer.work.weixin.qq.com/document/path/92228
+ /// REF: https://developer.work.weixin.qq.com/document/path/96348
///
///
///
@@ -369,8 +390,8 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
///
/// 异步调用 [POST] /cgi-bin/externalcontact/del_contact_way 接口。
- /// REF: https://developer.work.weixin.qq.com/document/path/92572
- /// REF: https://developer.work.weixin.qq.com/document/path/92577
+ /// REF: https://developer.work.weixin.qq.com/document/path/92228
+ /// REF: https://developer.work.weixin.qq.com/document/path/96348
///
///
///
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/ContactWay/CgibinExternalContactListContactWayRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/ContactWay/CgibinExternalContactListContactWayRequest.cs
new file mode 100644
index 00000000..7f18494e
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/ContactWay/CgibinExternalContactListContactWayRequest.cs
@@ -0,0 +1,36 @@
+namespace SKIT.FlurlHttpClient.Wechat.Work.Models
+{
+ ///
+ /// 表示 [POST] /cgi-bin/externalcontact/list_contact_way 接口的请求。
+ ///
+ public class CgibinExternalContactListContactWayRequest : WechatWorkRequest
+ {
+ ///
+ /// 获取或设置起始时间戳。
+ ///
+ [Newtonsoft.Json.JsonProperty("start_time")]
+ [System.Text.Json.Serialization.JsonPropertyName("start_time")]
+ public long? StartTimestamp { get; set; }
+
+ ///
+ /// 获取或设置结束时间戳。
+ ///
+ [Newtonsoft.Json.JsonProperty("end_time")]
+ [System.Text.Json.Serialization.JsonPropertyName("end_time")]
+ public long? EndTimestamp { get; set; }
+
+ ///
+ /// 获取或设置分页每页数量。
+ ///
+ [Newtonsoft.Json.JsonProperty("limit")]
+ [System.Text.Json.Serialization.JsonPropertyName("limit")]
+ public int? Limit { get; set; }
+
+ ///
+ /// 获取或设置翻页标记。
+ ///
+ [Newtonsoft.Json.JsonProperty("cursor")]
+ [System.Text.Json.Serialization.JsonPropertyName("cursor")]
+ public string? Cursor { get; set; }
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/ContactWay/CgibinExternalContactListContactWayResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/ContactWay/CgibinExternalContactListContactWayResponse.cs
new file mode 100644
index 00000000..ad823df6
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/ContactWay/CgibinExternalContactListContactWayResponse.cs
@@ -0,0 +1,35 @@
+namespace SKIT.FlurlHttpClient.Wechat.Work.Models
+{
+ ///
+ /// 表示 [POST] /cgi-bin/externalcontact/list_contact_way 接口的响应。
+ ///
+ public class CgibinExternalContactListContactWayResponse : WechatWorkResponse
+ {
+ public static class Types
+ {
+ public class ContactWay
+ {
+ ///
+ /// 获取或设置配置 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("config_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("config_id")]
+ public string ConfigId { get; set; } = default!;
+ }
+ }
+
+ ///
+ /// 获取或设置联系方式列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("contact_way")]
+ [System.Text.Json.Serialization.JsonPropertyName("contact_way")]
+ public Types.ContactWay[] ContactWayList { get; set; } = default!;
+
+ ///
+ /// 获取或设置翻页标记。
+ ///
+ [Newtonsoft.Json.JsonProperty("next_cursor")]
+ [System.Text.Json.Serialization.JsonPropertyName("next_cursor")]
+ public string? NextCursor { get; set; } = default!;
+ }
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinExternalContact/ContactWay/CgibinExternalContactListContactWayRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinExternalContact/ContactWay/CgibinExternalContactListContactWayRequest.json
new file mode 100644
index 00000000..b7c5795b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinExternalContact/ContactWay/CgibinExternalContactListContactWayRequest.json
@@ -0,0 +1,6 @@
+{
+ "start_time": 1622476800,
+ "end_time": 1625068800,
+ "cursor": "CURSOR",
+ "limit": 1000
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinExternalContact/ContactWay/CgibinExternalContactListContactWayResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinExternalContact/ContactWay/CgibinExternalContactListContactWayResponse.json
new file mode 100644
index 00000000..72db1881
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinExternalContact/ContactWay/CgibinExternalContactListContactWayResponse.json
@@ -0,0 +1,13 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "contact_way": [
+ {
+ "config_id": "534b63270045c9ABiKEE814ef56d91c62f"
+ },
+ {
+ "config_id": "87bBiKEE811c62f63270041c62f5c9A4ef"
+ }
+ ],
+ "next_cursor": "NEXT_CURSOR"
+}