mirror of
https://gitee.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient.Wechat.git
synced 2025-07-17 01:46:20 +08:00
feat(work): 新增微信客服统计管理相关接口
This commit is contained in:
parent
04f67c1c8a
commit
dcead8cad3
@ -310,26 +310,6 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
|
||||
|
||||
return await client.SendRequestWithJsonAsync<Models.CgibinKfCustomerBatchGetResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>异步调用 [GET] /cgi-bin/kf/get_corp_qualification 接口。</para>
|
||||
/// <para>REF: https://developer.work.weixin.qq.com/document/path/95153 </para>
|
||||
/// </summary>
|
||||
/// <param name="client"></param>
|
||||
/// <param name="request"></param>
|
||||
/// <param name="cancellationToken"></param>
|
||||
/// <returns></returns>
|
||||
public static async Task<Models.CgibinKfGetCorpQualificationResponse> ExecuteCgibinKfGetCorpQualificationAsync(this WechatWorkClient client, Models.CgibinKfGetCorpQualificationRequest 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.Get, "cgi-bin", "kf", "get_corp_qualification")
|
||||
.SetQueryParam("access_token", request.AccessToken);
|
||||
|
||||
return await client.SendRequestWithJsonAsync<Models.CgibinKfGetCorpQualificationResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
|
||||
}
|
||||
#endregion
|
||||
|
||||
/// <summary>
|
||||
@ -394,5 +374,65 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
|
||||
|
||||
return await client.SendRequestWithJsonAsync<Models.CgibinKfSyncMessageResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>异步调用 [GET] /cgi-bin/kf/get_corp_qualification 接口。</para>
|
||||
/// <para>REF: https://developer.work.weixin.qq.com/document/path/95153 </para>
|
||||
/// </summary>
|
||||
/// <param name="client"></param>
|
||||
/// <param name="request"></param>
|
||||
/// <param name="cancellationToken"></param>
|
||||
/// <returns></returns>
|
||||
public static async Task<Models.CgibinKfGetCorpQualificationResponse> ExecuteCgibinKfGetCorpQualificationAsync(this WechatWorkClient client, Models.CgibinKfGetCorpQualificationRequest 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.Get, "cgi-bin", "kf", "get_corp_qualification")
|
||||
.SetQueryParam("access_token", request.AccessToken);
|
||||
|
||||
return await client.SendRequestWithJsonAsync<Models.CgibinKfGetCorpQualificationResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>异步调用 [POST] /cgi-bin/kf/get_corp_statistic 接口。</para>
|
||||
/// <para>REF: https://developer.work.weixin.qq.com/document/path/95489 </para>
|
||||
/// </summary>
|
||||
/// <param name="client"></param>
|
||||
/// <param name="request"></param>
|
||||
/// <param name="cancellationToken"></param>
|
||||
/// <returns></returns>
|
||||
public static async Task<Models.CgibinKfGetCorpStatisticResponse> ExecuteCgibinKfGetCorpStatisticAsync(this WechatWorkClient client, Models.CgibinKfGetCorpStatisticRequest 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", "kf", "get_corp_statistic")
|
||||
.SetQueryParam("access_token", request.AccessToken);
|
||||
|
||||
return await client.SendRequestWithJsonAsync<Models.CgibinKfGetCorpStatisticResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>异步调用 [POST] /cgi-bin/kf/get_servicer_statistic 接口。</para>
|
||||
/// <para>REF: https://developer.work.weixin.qq.com/document/path/95490 </para>
|
||||
/// </summary>
|
||||
/// <param name="client"></param>
|
||||
/// <param name="request"></param>
|
||||
/// <param name="cancellationToken"></param>
|
||||
/// <returns></returns>
|
||||
public static async Task<Models.CgibinKfGetServicerStatisticResponse> ExecuteCgibinKfGetServicerStatisticAsync(this WechatWorkClient client, Models.CgibinKfGetServicerStatisticRequest 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", "kf", "get_servicer_statistic")
|
||||
.SetQueryParam("access_token", request.AccessToken);
|
||||
|
||||
return await client.SendRequestWithJsonAsync<Models.CgibinKfGetServicerStatisticResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,29 @@
|
||||
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// <para>表示 [POST] /cgi-bin/kf/get_corp_statistic 接口的请求。</para>
|
||||
/// </summary>
|
||||
public class CgibinKfGetCorpStatisticRequest : WechatWorkRequest
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置客服帐号 ID。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("open_kfid")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("open_kfid")]
|
||||
public string? OpenKfId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置起始日期的时间戳。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("start_time")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("start_time")]
|
||||
public long? StartTimestamp { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置结束日期的时间戳。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("end_time")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("end_time")]
|
||||
public long? EndTimestamp { get; set; }
|
||||
}
|
||||
}
|
@ -0,0 +1,90 @@
|
||||
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// <para>表示 [POST] /cgi-bin/kf/get_corp_statistic 接口的响应。</para>
|
||||
/// </summary>
|
||||
public class CgibinKfGetCorpStatisticResponse : WechatWorkResponse
|
||||
{
|
||||
public static class Types
|
||||
{
|
||||
public class Statistic
|
||||
{
|
||||
public static class Types
|
||||
{
|
||||
public class Data
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置咨询会话数。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("session_cnt")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("session_cnt")]
|
||||
public int SessionCount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置咨询客户数。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("customer_cnt")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("customer_cnt")]
|
||||
public int CustomerCount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置咨询消息数。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("customer_msg_cnt")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("customer_msg_cnt")]
|
||||
public int CustomerMessageCount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置升级服务客户数。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("upgrade_service_customer_cnt")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("upgrade_service_customer_cnt")]
|
||||
public int UpgradeServiceCustomerCount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置智能回复会话数。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("ai_session_reply_cnt")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("ai_session_reply_cnt")]
|
||||
public int AISessionReplyCount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置智能回复转人工率。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("ai_transfer_rate")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("ai_transfer_rate")]
|
||||
public double AITransferRate { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置智能回复知识命中率。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("ai_knowledge_hit_rate")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("ai_knowledge_hit_rate")]
|
||||
public double AIKnowledgeHitRate { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置统计日期时间戳。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("stat_time")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("stat_time")]
|
||||
public long StatisticsTimestamp { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置统计数据信息。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("statistic")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("statistic")]
|
||||
public Types.Data Data { get; set; } = default!;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置统计数据列表。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("statistic_list")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("statistic_list")]
|
||||
public Types.Statistic[]? StatisticList { get; set; } = default!;
|
||||
}
|
||||
}
|
@ -0,0 +1,36 @@
|
||||
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// <para>表示 [POST] /cgi-bin/kf/get_servicer_statistic 接口的请求。</para>
|
||||
/// </summary>
|
||||
public class CgibinKfGetServicerStatisticRequest : WechatWorkRequest
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置客服帐号 ID。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("open_kfid")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("open_kfid")]
|
||||
public string? OpenKfId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置接待人员的 UserId。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("servicer_userid")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("servicer_userid")]
|
||||
public string? ServicerUserId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置起始日期的时间戳。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("start_time")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("start_time")]
|
||||
public long? StartTimestamp { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置结束日期的时间戳。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("end_time")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("end_time")]
|
||||
public long? EndTimestamp { get; set; }
|
||||
}
|
||||
}
|
@ -0,0 +1,146 @@
|
||||
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// <para>表示 [POST] /cgi-bin/kf/get_servicer_statistic 接口的响应。</para>
|
||||
/// </summary>
|
||||
public class CgibinKfGetServicerStatisticResponse : WechatWorkResponse
|
||||
{
|
||||
public static class Types
|
||||
{
|
||||
public class Statistic
|
||||
{
|
||||
public static class Types
|
||||
{
|
||||
public class Data
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置咨询会话数。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("session_cnt")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("session_cnt")]
|
||||
public int SessionCount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置咨询客户数。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("customer_cnt")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("customer_cnt")]
|
||||
public int CustomerCount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置咨询消息数。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("customer_msg_cnt")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("customer_msg_cnt")]
|
||||
public int CustomerMessageCount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置人工回复率。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("reply_rate")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("reply_rate")]
|
||||
public double ReplyRate { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置平均首次响应时长(单位:秒)。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("first_reply_average_sec")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("first_reply_average_sec")]
|
||||
public int FirstReplyAverageSeconds { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置满意度评价发送数。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("satisfaction_investgate_cnt")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("satisfaction_investgate_cnt")]
|
||||
public int SatisfactionInvestgateCount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置满意度参评率。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("satisfaction_participation_rate")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("satisfaction_participation_rate")]
|
||||
public double SatisfactionParticipationRate { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置“满意”评价占比。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("satisfied_rate")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("satisfied_rate")]
|
||||
public double SatisfiedRate { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置“一般”评价占比。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("middling_rate")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("middling_rate")]
|
||||
public double MiddlingRate { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置“不满意”评价占比。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("dissatisfied_rate")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("dissatisfied_rate")]
|
||||
public double DissatisfiedRate { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置升级服务客户数。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("upgrade_service_customer_cnt")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("upgrade_service_customer_cnt")]
|
||||
public int UpgradeServiceCustomerCount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置专员服务邀请数。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("upgrade_service_member_invite_cnt")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("upgrade_service_member_invite_cnt")]
|
||||
public int UpgradeServiceMemberInviteCount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置添加专员的客户数。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("upgrade_service_member_customer_cnt")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("upgrade_service_member_customer_cnt")]
|
||||
public int UpgradeServiceMemberCustomerCount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置客户群服务邀请数。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("upgrade_service_groupchat_invite_cnt")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("upgrade_service_groupchat_invite_cnt")]
|
||||
public int UpgradeServiceGroupChatInviteCount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置加入客户群的客户数。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("upgrade_service_groupchat_customer_cnt")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("upgrade_service_groupchat_customer_cnt")]
|
||||
public int UpgradeServiceGroupChatCustomerCount { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置统计日期时间戳。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("stat_date")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("stat_date")]
|
||||
public long StatisticsTimestamp { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置统计数据信息。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("statistic")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("statistic")]
|
||||
public Types.Data Data { get; set; } = default!;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置统计数据列表。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("statistic_list")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("statistic_list")]
|
||||
public Types.Statistic[]? StatisticList { get; set; } = default!;
|
||||
}
|
||||
}
|
@ -0,0 +1,5 @@
|
||||
{
|
||||
"open_kfid": "OPEN_KFID",
|
||||
"start_time": 1645545600,
|
||||
"end_time": 1645632000
|
||||
}
|
@ -0,0 +1,30 @@
|
||||
{
|
||||
"errcode": 0,
|
||||
"errmsg": "ok",
|
||||
"statistic_list": [
|
||||
{
|
||||
"stat_time": 1645545600,
|
||||
"statistic": {
|
||||
"session_cnt": 2,
|
||||
"customer_cnt": 1,
|
||||
"customer_msg_cnt": 6,
|
||||
"upgrade_service_customer_cnt": 0,
|
||||
"ai_session_reply_cnt": 1,
|
||||
"ai_transfer_rate": 1,
|
||||
"ai_knowledge_hit_rate": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"stat_time": 1645632000,
|
||||
"statistic": {
|
||||
"session_cnt": 2,
|
||||
"customer_cnt": 1,
|
||||
"customer_msg_cnt": 6,
|
||||
"upgrade_service_customer_cnt": 0,
|
||||
"ai_session_reply_cnt": 1,
|
||||
"ai_transfer_rate": 1,
|
||||
"ai_knowledge_hit_rate": 0
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
@ -0,0 +1,6 @@
|
||||
{
|
||||
"open_kfid": "OPEN_KFID",
|
||||
"servicer_userid": "zhangsan",
|
||||
"start_time": 1645545600,
|
||||
"end_time": 1645632000
|
||||
}
|
@ -0,0 +1,26 @@
|
||||
{
|
||||
"errcode": 0,
|
||||
"errmsg": "ok",
|
||||
"statistic_list": [
|
||||
{
|
||||
"stat_date": 1645545600,
|
||||
"statistic": {
|
||||
"session_cnt": 1,
|
||||
"customer_cnt": 1,
|
||||
"customer_msg_cnt": 1,
|
||||
"reply_rate": 1,
|
||||
"first_reply_average_sec": 17,
|
||||
"satisfaction_investgate_cnt": 1,
|
||||
"satisfaction_participation_rate": 1,
|
||||
"satisfied_rate": 1,
|
||||
"middling_rate": 0,
|
||||
"dissatisfied_rate": 0,
|
||||
"upgrade_service_customer_cnt": 0,
|
||||
"upgrade_service_member_invite_cnt": 0,
|
||||
"upgrade_service_member_customer_cnt": 0,
|
||||
"upgrade_service_groupchat_invite_cnt": 0,
|
||||
"upgrade_service_groupchat_customer_cnt": 0
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
Loading…
Reference in New Issue
Block a user