feat(work): 新增客户群加入群聊管理相关接口

This commit is contained in:
Fu Diwei 2022-01-13 18:19:20 +08:00
parent d808721c99
commit 4e649a7d49
19 changed files with 418 additions and 0 deletions

View File

@ -668,6 +668,88 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
return await client.SendRequestWithJsonAsync<Models.CgibinExternalContactGroupChatStatisticsGroupByDayResponse>(flurlReq, data: request, cancellationToken: cancellationToken); return await client.SendRequestWithJsonAsync<Models.CgibinExternalContactGroupChatStatisticsGroupByDayResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
} }
#endregion #endregion
#region JoinWay
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/externalcontact/groupchat/add_join_way 接口。</para>
/// <para>REF: https://developer.work.weixin.qq.com/document/path/92229 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinExternalContactGroupChatAddJoinWayResponse> ExecuteCgibinExternalContactGroupChatAddJoinWayAsync(this WechatWorkClient client, Models.CgibinExternalContactGroupChatAddJoinWayRequest 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", "groupchat", "add_join_way")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.CgibinExternalContactGroupChatAddJoinWayResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/externalcontact/groupchat/get_join_way 接口。</para>
/// <para>REF: https://developer.work.weixin.qq.com/document/path/92229 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinExternalContactGroupChatGetJoinWayResponse> ExecuteCgibinExternalContactGroupChatGetJoinWayAsync(this WechatWorkClient client, Models.CgibinExternalContactGroupChatGetJoinWayRequest 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", "groupchat", "get_join_way")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.CgibinExternalContactGroupChatGetJoinWayResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/externalcontact/groupchat/update_join_way 接口。</para>
/// <para>REF: https://developer.work.weixin.qq.com/document/path/92229 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinExternalContactGroupChatUpdateJoinWayResponse> ExecuteCgibinExternalContactGroupChatUpdateJoinWayAsync(this WechatWorkClient client, Models.CgibinExternalContactGroupChatUpdateJoinWayRequest 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", "groupchat", "update_join_way")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.CgibinExternalContactGroupChatUpdateJoinWayResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/externalcontact/groupchat/del_join_way 接口。</para>
/// <para>REF: https://developer.work.weixin.qq.com/document/path/92229 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinExternalContactGroupChatDeleteJoinWayResponse> ExecuteCgibinExternalContactGroupChatDeleteJoinWayAsync(this WechatWorkClient client, Models.CgibinExternalContactGroupChatDeleteJoinWayRequest 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", "groupchat", "del_join_way")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.CgibinExternalContactGroupChatDeleteJoinWayResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
#endregion
#endregion #endregion
#region Moment #region Moment

View File

@ -81,6 +81,13 @@
[Newtonsoft.Json.JsonProperty("join_time")] [Newtonsoft.Json.JsonProperty("join_time")]
[System.Text.Json.Serialization.JsonPropertyName("join_time")] [System.Text.Json.Serialization.JsonPropertyName("join_time")]
public long JoinTimestamp { get; set; } public long JoinTimestamp { get; set; }
/// <summary>
/// 获取或设置入群渠道。
/// </summary>
[Newtonsoft.Json.JsonProperty("state")]
[System.Text.Json.Serialization.JsonPropertyName("state")]
public string? State { get; set; }
} }
public class Administrator public class Administrator

View File

@ -0,0 +1,59 @@
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/externalcontact/groupchat/add_join_way 接口的请求。</para>
/// </summary>
public class CgibinExternalContactGroupChatAddJoinWayRequest : WechatWorkRequest
{
/// <summary>
/// 获取或设置场景值。
/// </summary>
[Newtonsoft.Json.JsonProperty("scene")]
[System.Text.Json.Serialization.JsonPropertyName("scene")]
public int Scene { get; set; }
/// <summary>
/// 获取或设置备注信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("remark")]
[System.Text.Json.Serialization.JsonPropertyName("remark")]
public string? Remark { get; set; }
/// <summary>
/// 获取或设置是否自动新建群。
/// </summary>
[Newtonsoft.Json.JsonProperty("auto_create_room")]
[System.Text.Json.Serialization.JsonPropertyName("auto_create_room")]
public int? AutoCreateRoom { get; set; }
/// <summary>
/// 获取或设置自动建群的群名前缀。
/// </summary>
[Newtonsoft.Json.JsonProperty("room_base_name")]
[System.Text.Json.Serialization.JsonPropertyName("room_base_name")]
public string? RoomBaseName { get; set; }
/// <summary>
/// 获取或设置自动建群的群起始序号。
/// </summary>
[Newtonsoft.Json.JsonProperty("room_base_id")]
[System.Text.Json.Serialization.JsonPropertyName("room_base_id")]
public int? RoomBaseId { get; set; }
/// <summary>
/// 获取或设置客户群 ID 列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("chat_id_list")]
[System.Text.Json.Serialization.JsonPropertyName("chat_id_list")]
public IList<string> GroupChatIdList { get; set; } = new List<string>();
/// <summary>
/// 获取或设置入群渠道。
/// </summary>
[Newtonsoft.Json.JsonProperty("state")]
[System.Text.Json.Serialization.JsonPropertyName("state")]
public string? State { get; set; }
}
}

View File

@ -0,0 +1,15 @@
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/externalcontact/groupchat/add_join_way 接口的响应。</para>
/// </summary>
public class CgibinExternalContactGroupChatAddJoinWayResponse : WechatWorkResponse
{
/// <summary>
/// 获取或设置配置 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("config_id")]
[System.Text.Json.Serialization.JsonPropertyName("config_id")]
public string ConfigId { get; set; } = default!;
}
}

View File

@ -0,0 +1,15 @@
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/externalcontact/groupchat/del_join_way 接口的请求。</para>
/// </summary>
public class CgibinExternalContactGroupChatDeleteJoinWayRequest : WechatWorkRequest
{
/// <summary>
/// 获取或设置配置 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("config_id")]
[System.Text.Json.Serialization.JsonPropertyName("config_id")]
public string ConfigId { get; set; } = string.Empty;
}
}

View File

@ -0,0 +1,9 @@
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/externalcontact/groupchat/del_join_way 接口的响应。</para>
/// </summary>
public class CgibinExternalContactGroupChatDeleteJoinWayResponse : WechatWorkResponse
{
}
}

View File

@ -0,0 +1,15 @@
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/externalcontact/groupchat/get_join_way 接口的请求。</para>
/// </summary>
public class CgibinExternalContactGroupChatGetJoinWayRequest : WechatWorkRequest
{
/// <summary>
/// 获取或设置配置 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("config_id")]
[System.Text.Json.Serialization.JsonPropertyName("config_id")]
public string ConfigId { get; set; } = string.Empty;
}
}

View File

@ -0,0 +1,84 @@
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/externalcontact/groupchat/get_join_way 接口的响应。</para>
/// </summary>
public class CgibinExternalContactGroupChatGetJoinWayResponse : WechatWorkResponse
{
public static class Types
{
public class JoinWay
{
/// <summary>
/// 获取或设置配置 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("config_id")]
[System.Text.Json.Serialization.JsonPropertyName("config_id")]
public string ConfigId { get; set; } = default!;
/// <summary>
/// 获取或设置场景值。
/// </summary>
[Newtonsoft.Json.JsonProperty("scene")]
[System.Text.Json.Serialization.JsonPropertyName("scene")]
public int Scene { get; set; }
/// <summary>
/// 获取或设置备注信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("remark")]
[System.Text.Json.Serialization.JsonPropertyName("remark")]
public string Remark { get; set; } = default!;
/// <summary>
/// 获取或设置是否自动新建群。
/// </summary>
[Newtonsoft.Json.JsonProperty("auto_create_room")]
[System.Text.Json.Serialization.JsonPropertyName("auto_create_room")]
public int AutoCreateRoom { get; set; }
/// <summary>
/// 获取或设置自动建群的群名前缀。
/// </summary>
[Newtonsoft.Json.JsonProperty("room_base_name")]
[System.Text.Json.Serialization.JsonPropertyName("room_base_name")]
public string? RoomBaseName { get; set; }
/// <summary>
/// 获取或设置自动建群的群起始序号。
/// </summary>
[Newtonsoft.Json.JsonProperty("room_base_id")]
[System.Text.Json.Serialization.JsonPropertyName("room_base_id")]
public int? RoomBaseId { get; set; }
/// <summary>
/// 获取或设置客户群 ID 列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("chat_id_list")]
[System.Text.Json.Serialization.JsonPropertyName("chat_id_list")]
public string[] GroupChatIdList { get; set; } = default!;
/// <summary>
/// 获取或设置联系二维码 URL。
/// </summary>
[Newtonsoft.Json.JsonProperty("qr_code")]
[System.Text.Json.Serialization.JsonPropertyName("qr_code")]
public string? QrcodeUrl { get; set; }
/// <summary>
/// 获取或设置入群渠道。
/// </summary>
[Newtonsoft.Json.JsonProperty("state")]
[System.Text.Json.Serialization.JsonPropertyName("state")]
public string? State { get; set; }
}
}
/// <summary>
/// 获取或设置配置 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("join_way")]
[System.Text.Json.Serialization.JsonPropertyName("join_way")]
public Types.JoinWay JoinWay { get; set; } = default!;
}
}

View File

@ -0,0 +1,66 @@
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/externalcontact/groupchat/update_join_way 接口的请求。</para>
/// </summary>
public class CgibinExternalContactGroupChatUpdateJoinWayRequest : WechatWorkRequest
{
/// <summary>
/// 获取或设置配置 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("config_id")]
[System.Text.Json.Serialization.JsonPropertyName("config_id")]
public string ConfigId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置场景值。
/// </summary>
[Newtonsoft.Json.JsonProperty("scene")]
[System.Text.Json.Serialization.JsonPropertyName("scene")]
public int Scene { get; set; }
/// <summary>
/// 获取或设置备注信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("remark")]
[System.Text.Json.Serialization.JsonPropertyName("remark")]
public string? Remark { get; set; }
/// <summary>
/// 获取或设置是否自动新建群。
/// </summary>
[Newtonsoft.Json.JsonProperty("auto_create_room")]
[System.Text.Json.Serialization.JsonPropertyName("auto_create_room")]
public int? AutoCreateRoom { get; set; }
/// <summary>
/// 获取或设置自动建群的群名前缀。
/// </summary>
[Newtonsoft.Json.JsonProperty("room_base_name")]
[System.Text.Json.Serialization.JsonPropertyName("room_base_name")]
public string? RoomBaseName { get; set; }
/// <summary>
/// 获取或设置自动建群的群起始序号。
/// </summary>
[Newtonsoft.Json.JsonProperty("room_base_id")]
[System.Text.Json.Serialization.JsonPropertyName("room_base_id")]
public int? RoomBaseId { get; set; }
/// <summary>
/// 获取或设置客户群 ID 列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("chat_id_list")]
[System.Text.Json.Serialization.JsonPropertyName("chat_id_list")]
public IList<string> GroupChatIdList { get; set; } = new List<string>();
/// <summary>
/// 获取或设置入群渠道。
/// </summary>
[Newtonsoft.Json.JsonProperty("state")]
[System.Text.Json.Serialization.JsonPropertyName("state")]
public string? State { get; set; }
}
}

View File

@ -0,0 +1,9 @@
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/externalcontact/groupchat/update_join_way 接口的响应。</para>
/// </summary>
public class CgibinExternalContactGroupChatUpdateJoinWayResponse : WechatWorkResponse
{
}
}

View File

@ -13,6 +13,7 @@
"type": 1, "type": 1,
"join_time": 1572505491, "join_time": 1572505491,
"join_scene": 1, "join_scene": 1,
"state": "klsdup3kj3s1",
"invitor": { "invitor": {
"userid": "jack" "userid": "jack"
}, },

View File

@ -0,0 +1,12 @@
{
"scene": 2,
"remark": "aa_remark",
"auto_create_room": 1,
"room_base_name": "销售客服群",
"room_base_id": 10,
"chat_id_list": [
"wrOgQhDgAAH2Yy-CTZ6POca8mlBEdaaa",
"wrOgQhDgAALPUthpRAKvl7mgiQRwAAA"
],
"state": "klsdup3kj3s1"
}

View File

@ -0,0 +1,5 @@
{
"errcode": 0,
"errmsg": "ok",
"config_id": "9ad7fa5cdaa6511298498f979c472aaa"
}

View File

@ -0,0 +1,15 @@
{
"errcode": 0,
"errmsg": "ok",
"join_way": {
"config_id": "9ad7fa5cdaa6511298498f979c472aaa",
"scene": 3,
"remark": "aa_remark",
"auto_create_room": 1,
"room_base_name": "销售客服群",
"room_base_id": 10,
"chat_id_list": [ "wrOgQhDgAAH2Yy-CTZ6POca8mlBEdaaa", "wrOgQhDgAALPUthpRAKvl7mgiQRw_aaa" ],
"qr_code": "http://p.qpic.cn/wwhead/nMl9ssowtibVGyrmvBiaibzDtp703nXuzpibnKtbSDBRJTLwS3ic4ECrf3ibLVtIFb0N6wWwy5LVuyvMQ22/0",
"state": "klsdup3kj3s1"
}
}

View File

@ -0,0 +1,10 @@
{
"config_id": "9ad7fa5cdaa6511298498f979c4722de",
"scene": 2,
"remark": "bb_remark",
"auto_create_room": 1,
"room_base_name": "销售客服群",
"room_base_id": 10,
"chat_id_list": [ "wrOgQhDgAAH2Yy-CTZ6POca8mlBEdaaa", "wrOgQhDgAALPUthpRAKvl7mgiQRw_aaa" ],
"state": "klsdup3kj3s1"
}