You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过.NET版Amazon Connect SDK获取代理实时状态及变更通知?

解决方案:通过.NET版Amazon Connect SDK获取代理状态及实时变更

一、获取所有代理当前状态(方法1)

你遇到的GetCurrentUserDataAsync返回0条记录的问题,大概率是权限或参数配置问题,按以下步骤排查和修复:

1. 确认IAM权限

确保SDK使用的IAM角色/用户拥有connect:GetCurrentUserData权限,同时关联目标Connect实例的资源权限,示例IAM策略片段:

{
    "Effect": "Allow",
    "Action": "connect:GetCurrentUserData",
    "Resource": "arn:aws:connect:你的区域:你的账号ID:instance/你的实例ID/*"
}

2. 修正GetCurrentUserDataRequest参数

  • 必须传入完整且正确的用户ARN:从ListUsersAsync返回的User.Arn格式应为arn:aws:connect:区域:账号ID:instance/实例ID/user/用户ID,确保无拼写错误。
  • 若需过滤特定队列的代理,可同时指定队列ARN(非必填):
var request = new GetCurrentUserDataRequest
{
    InstanceId = "你的实例ID",
    Filters = new UserDataFilters
    {
        Agents = new List<string> { user.Arn },
        // 可选:指定队列ARN过滤
        // Queues = new List<string> { "队列ARN" }
    }
};
var response = await _connectClient.GetCurrentUserDataAsync(request);
  • 注意:未登录Connect实例的代理,该接口不会返回其数据,需确保代理处于登录状态。

3. 批量获取所有代理状态

由于GetCurrentUserData的Agents列表最多支持100个用户,若代理数量超100,需分批次调用并合并结果:

// 获取所有代理(过滤已分配路由配置的用户,代理必须具备路由配置)
var usersResponse = await _connectClient.ListUsersAsync(new ListUsersRequest { InstanceId = "你的实例ID" });
var agentArns = usersResponse.UserSummaryList
    .Where(u => !string.IsNullOrEmpty(u.RoutingProfileArn))
    .Select(u => u.Arn)
    .ToList();

// 分批次处理,每批最多100个
var batchSize = 100;
var agentStatusMap = new Dictionary<string, string>();

for (int i = 0; i < agentArns.Count; i += batchSize)
{
    var batchArns = agentArns.Skip(i).Take(batchSize).ToList();
    var dataRequest = new GetCurrentUserDataRequest
    {
        InstanceId = "你的实例ID",
        Filters = new UserDataFilters { Agents = batchArns }
    };
    var dataResponse = await _connectClient.GetCurrentUserDataAsync(dataRequest);

    foreach (var userData in dataResponse.UserDataList)
    {
        var agentName = userData.User.Name;
        var status = userData.AgentStatus.Name;
        agentStatusMap[agentName] = status;
    }
}

// 输出目标格式
foreach (var kvp in agentStatusMap)
{
    Console.WriteLine($"\"{kvp.Key}\" : \"{kvp.Value}\"");
}

二、订阅代理实时状态变更(方法2)

Amazon Connect无直接的推送式.NET API,但可通过Amazon EventBridge实现状态变更的实时通知,支持监听LOGIN、LOGOUT、STATE_CHANGE事件:

1. 配置EventBridge规则

在AWS控制台的EventBridge中创建规则:

  • 事件源选择AWS服务,服务名称为Amazon Connect
  • 事件类型选择Agent Login、Agent Logout、Agent State Change
  • 目标选择接收方式:
    • SQS队列:.NET服务轮询SQS获取事件
    • Lambda函数:触发Lambda处理后通知.NET服务
    • EventBridge Pipes:直接将事件转发到你的HTTP端点

2. .NET中处理事件

以SQS为例,使用AWS SDK for .NET监听消息:

var sqsClient = new AmazonSQSClient();
var queueUrl = "你的SQS队列URL";

while (true)
{
    var receiveRequest = new ReceiveMessageRequest
    {
        QueueUrl = queueUrl,
        MaxNumberOfMessages = 10,
        WaitTimeSeconds = 20 // 长轮询减少空请求
    };
    var response = await sqsClient.ReceiveMessageAsync(receiveRequest);

    foreach (var message in response.Messages)
    {
        // 解析EventBridge事件
        var eventPayload = JsonSerializer.Deserialize<ConnectAgentEvent>(message.Body);
        var agentName = eventPayload.Detail.Agent.UserName;
        var eventType = eventPayload.Detail.EventType;
        var newStatus = eventPayload.Detail.AgentStatus?.Name;

        // 按业务需求处理状态变更
        Console.WriteLine($"Agent {agentName} - {eventType}: {newStatus}");

        // 删除已处理的消息
        await sqsClient.DeleteMessageAsync(queueUrl, message.ReceiptHandle);
    }
}

// 定义事件模型类
public class ConnectAgentEvent
{
    public string DetailType { get; set; }
    public ConnectEventDetail Detail { get; set; }
}

public class ConnectEventDetail
{
    public string EventType { get; set; }
    public ConnectAgent Agent { get; set; }
    public ConnectAgentStatus AgentStatus { get; set; }
}

public class ConnectAgent
{
    public string UserName { get; set; }
}

public class ConnectAgentStatus
{
    public string Name { get; set; }
}

关键注意事项

  • 未登录的代理不会被GetCurrentUserData返回状态数据
  • EventBridge事件存在几秒延迟,无法做到毫秒级实时,但满足多数业务场景需求
  • 若需更细粒度的实时状态,可结合前端使用Amazon Connect Streams API,再与后端交互同步状态

内容的提问来源于stack exchange,提问作者IntelligentCancer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 02:44:53