Inscrever-se em eventos do Job Router

Este guia descreve as etapas para configurar uma assinatura para eventos do Job Router e como recebê-los.

Para obter mais detalhes sobre a Grade de Eventos, consulte a documentação da Grade de Eventos.

Pré-requisitos

Criar uma subscrição do Event Grid

Este modelo implanta uma assinatura de Grade de Eventos em uma Fila de Armazenamento para eventos do Roteador de Trabalho. Se a conta de armazenamento, a fila ou o tópico do sistema não existirem, eles também serão criados.

Implementar no Azure

Parâmetros

  • Nome do Recurso dos Serviços de Comunicação do Azure: O nome do seu recurso dos Serviços de Comunicação do Azure. Por exemplo, se o ponto de extremidade do seu recurso for https://contoso.communication.azure.net, defina como contoso.
  • Nome do Armazenamento: O nome da sua Conta de Armazenamento do Azure. Se não existir, será criado.
  • Subnome do evento: o nome da assinatura do evento a ser criada.
  • Nome do Tópico do Sistema: Se você tiver assinaturas de eventos existentes em seu recurso dos Serviços de Comunicação do Azure, localize o System TopicEvents nome na guia do seu recurso dos Serviços de Comunicação do Azure. Caso contrário, especifique um nome exclusivo, como o próprio nome do recurso dos Serviços de Comunicação do Azure.
  • Nome da fila: o nome da fila na sua conta de armazenamento. Se não existir, será criado.

Recursos implantados

Os seguintes recursos são implantados como parte da solução

  • Conta de armazenamento: se o nome da conta de armazenamento não existir.
  • Fila de armazenamento: se a fila não existir na conta de armazenamento.
  • Tópico do Sistema de Grade de Eventos: Se o tópico não existir.
  • Assinatura de grade de eventos: uma assinatura para todos os eventos do Job Router na fila de armazenamento.

Guia de início rápido: receber eventos da Grade de Eventos por meio de uma fila de armazenamento do Azure

Criar um novo aplicativo C#

Em uma janela de console (como cmd, PowerShell ou Bash), use o dotnet new comando para criar um novo aplicativo de console com o nome EventReceiver. Este comando cria um projeto C# "Hello World" simples com um único arquivo de origem: Program.cs.

dotnet new console -o EventReceiver

Altere seu diretório para a pasta do aplicativo recém-criada e use o dotnet build comando para compilar seu aplicativo.

cd EventReceiver
dotnet build

Instalar os pacotes

Instale as filas de armazenamento do Azure e os pacotes de grade de eventos.

dotnet add package Azure.Storage.Queues
dotnet add package Azure.Messaging.EventGrid

Receber mensagens da fila

Copie o seguinte trecho de código e cole no arquivo de origem: Program.cs

using Azure.Storage.Queues;
using Azure.Messaging.EventGrid;

// For more detailed tutorials on storage queues, see: https://learn.microsoft.com/azure/storage/queues/storage-tutorial-queues

var queueClient = new QueueClient("<Storage Account Connection String>", "router-events");

while (true)
{
    var msg = await queueClient.ReceiveMessageAsync();
    if (msg.Value == null)
    {
        await Task.Delay(TimeSpan.FromSeconds(1));
        continue;
    }
    var json = Convert.FromBase64String(msg.Value.Body.ToString());
    var evt = EventGridEvent.Parse(BinaryData.FromBytes(json));

    Console.WriteLine($"Received event: {evt.EventType} - {evt.Subject} - {evt.Data}");

    await queueClient.DeleteMessageAsync(msg.Value.MessageId, msg.Value.PopReceipt);
}

Executar o código

Execute o aplicativo a partir do diretório do aplicativo com o dotnet run comando.

dotnet run

Catálogo de Eventos

Eventos do roteador

Evento Subdomínio Description
RouterJobReceived Job Um novo trabalho foi criado para roteamento
RouterJobClassified Job A política de classificação foi aplicada a um trabalho
RouterJobQueued Job Um trabalho foi enfileirado com êxito
RouterJobClassificationFailed Job Falha do roteador ao classificar o trabalho usando a política de classificação
RouterJobCompleted Job Um trabalho foi concluído e entra em conclusão
RouterJobClosed Job Um trabalho foi fechado e o encerramento está concluído
RouterJobCancelled Job Um trabalho foi cancelado
RouterJobExceptionTriggered Job Uma exceção de trabalho foi acionada
RouterJobWorkerSelectorsExpired Job Um ou mais seletores de trabalhadores em um trabalho expiraram
RouterJobUnassigned Job Um trabalho já atribuído não foi atribuído a um trabalhador
RouterJobWaitingForActivation Job A hora agendada solicitada de um trabalho agendado chegou, o roteador está aguardando contoso para agir no trabalho
RouterJobSchedulingFailed Job Um trabalho agendado foi solicitado, no entanto, o roteador não conseguiu criar um
RouterWorkerOfferIssued Worker Foi oferecido um emprego a um trabalhador
RouterWorkerOfferAccepted Worker Foi aceite uma proposta a um trabalhador
RouterWorkerOfferDeclined Worker Uma oferta a um trabalhador foi recusada
RouterWorkerOfferRevoked Worker Uma oferta a um trabalhador foi revogada
RouterWorkerOfferExpired Worker Uma oferta a um trabalhador expirou
RouterWorkerRegistered Worker Um trabalhador foi registrado (status alterado de inativo/drenante para ativo)
RouterWorkerUpdated Worker Uma das seguintes propriedades de trabalho foi atualizada: AvailableForOffers, TotalCapacity, QueueAssignments, ChannelConfigurations, Labels, Tags
RouterWorkerDeregistered Worker Um trabalhador foi cancelado (status alterado de ativo para inativo/drenante)

Microsoft.Communication.RouterJobReceived

Voltar ao Catálogo de Eventos

{
  "id": "acdf8fa5-8ab4-4a65-874a-c1d2a4a97f2e",
  "topic": "/subscriptions/{subscription-id}/resourceGroups/{group-name}/providers/Microsoft.Communication/communicationServices/{communication-services-resource-name}",
  "subject": "job/{job-id}/channel/{channel-id}",
  "data": {
    "jobId": "7f1df17b-570b-4ae5-9cf5-fe6ff64cc712",
    "channelReference": "test-abc",
    "jobStatus": "PendingClassification",
    "channelId": "FooVoiceChannelId",
    "classificationPolicyId": "test-policy",
    "queueId": "queue-id",
    "priority": 0,
    "labels": {
      "Locale": "en-us",
      "Segment": "Enterprise",
      "Token": "FooToken"
    },
    "tags": {
      "Locale": "en-us",
      "Segment": "Enterprise",
      "Token": "FooToken"
    },
    "requestedWorkerSelectors": [
      {
        "key": "string",
        "labelOperator": "equal",
        "value": 5,
        "ttlSeconds": 50,
        "expirationTime": "2022-02-17T00:58:25.1736293Z"
      }
    ],
    "scheduledOn": "3/28/2007 7:13:50 PM +00:00",
    "unavailableForMatching": false
  },
  "eventType": "Microsoft.Communication.RouterJobReceived",
  "dataVersion": "1.0",
  "metadataVersion": "1",
  "eventTime": "2022-02-17T00:55:25.1736293Z"
}

Lista de atributos

Atributo Type Que podem ser nulos Description Notas
jobId string
channelReference string
situação do emprego enum Valores possíveis PendingClassification, Queued Quando esse evento é enviado, o processo de classificação ainda não foi executado ou o trabalho foi criado com um queueId associado.
channelId string
classificaçãoPolicyId string ✔️ null quando queueId é especificado para um trabalho
queueId string ✔️ null quando classificationPolicyId é especificado para um trabalho
prioridade int ✔️ Nulo quando classificationPolicyId é especificado. Valor não nulo em caso de atribuição direta de fila.
rótulos Dictionary<string, object> ✔️ Com base na entrada do usuário
etiquetas Dictionary<string, object> ✔️ Com base na entrada do usuário
requestedWorkerSelectors List<WorkerSelector> ✔️ Com base na entrada do usuário
agendadoOn DateTimeOffset ✔️ Com base na entrada do usuário
unavailableForMatching bool ✔️ Com base na entrada do usuário

Microsoft.Communication.RouterJobClassified

Voltar ao Catálogo de Eventos

{
  "id": "b6d8687a-5a1a-42ae-b8b5-ff7ec338c872",
  "topic": "/subscriptions/{subscription-id}/resourceGroups/{group-name}/providers/Microsoft.Communication/communicationServices/{communication-services-resource-name}",
  "subject": "job/{job-id}/channel/{channel-id}/queue/{queue-id}",
  "data": {
    "queueDetails": {
      "id": "625fec06-ab81-4e60-b780-f364ed96ade1",
      "name": "Queue 1",
      "labels": {
        "Language": "en",
        "Product": "Office",
        "Geo": "NA"
      }
    },
    "jobId": "7f1df17b-570b-4ae5-9cf5-fe6ff64cc712",
    "channelReference": "test-abc",
    "channelId": "FooVoiceChannelId",
    "classificationPolicyId": "test-policy",
    "queueId": "625fec06-ab81-4e60-b780-f364ed96ade1",
    "priority": 5,
    "labels": {
      "Locale": "en-us",
      "Segment": "Enterprise",
      "Token": "FooToken"
    },
    "tags": {
      "Locale": "en-us",
      "Segment": "Enterprise",
      "Token": "FooToken"
    },
    "attachedWorkerSelectors": [
      {
        "key": "string",
        "labelOperator": "equal",
        "value": 5,
        "ttl": "P3Y6M4DT12H30M5S"
      }
    ]
  },
  "eventType": "Microsoft.Communication.RouterJobClassified",
  "dataVersion": "1.0",
  "metadataVersion": "1",
  "eventTime": "2022-02-17T00:55:25.1736293Z"
}

Lista de atributos

Atributo Type Que podem ser nulos Description Notas
queueDetalhes QueueDetails
jobId string
channelReference string
channelId string
classificaçãoPolicyId string
queueId string ✔️ null quando classificationPolicy não é usado para seleção de fila
prioridade int ✔️ null quando classificationPolicy não é usado para aplicar prioridade no trabalho
rótulos Dictionary<string, object> ✔️ Com base na entrada do usuário
etiquetas Dictionary<string, object> ✔️ Com base na entrada do usuário
attachedWorkerSelectors List<WorkerSelector> ✔️ Lista dos seletores de trabalhadores anexada por uma política de classificação

Microsoft.Communication.RouterJobQueued

Voltar ao Catálogo de Eventos

{
  "id": "b6d8687a-5a1a-42ae-b8b5-ff7ec338c872",
  "topic": "/subscriptions/{subscription-id}/resourceGroups/{group-name}/providers/Microsoft.Communication/communicationServices/{communication-services-resource-name}",
  "subject": "job/{job-id}/channel/{channel-id}/queue/{queue-id}",
  "data": {
    "jobId": "7f1df17b-570b-4ae5-9cf5-fe6ff64cc712",
    "channelReference": "test-abc",
    "channelId": "FooVoiceChannelId",
    "queueId": "625fec06-ab81-4e60-b780-f364ed96ade1",
    "priority": 1,
    "labels": {
      "Locale": "en-us",
      "Segment": "Enterprise",
      "Token": "FooToken"
    },
    "tags": {
      "Locale": "en-us",
      "Segment": "Enterprise",
      "Token": "FooToken"
    },
    "requestedWorkerSelectors": [
      {
        "key": "string",
        "labelOperator": "equal",
        "value": 5,
        "ttl": "P3Y6M4DT12H30M5S"
      }
    ],
    "attachedWorkerSelectors": [
      {
        "key": "string",
        "labelOperator": "equal",
        "value": 5,
        "ttl": "P3Y6M4DT12H30M5S"
      }
    ]
  },
  "eventType": "Microsoft.Communication.RouterJobQueued",
  "dataVersion": "1.0",
  "metadataVersion": "1",
  "eventTime": "2022-02-17T00:55:25.1736293Z"
}

Lista de atributos

Atributo Type Que podem ser nulos Description Notas
jobId string
channelReference string ✔️
channelId string
queueId string
prioridade int
rótulos Dictionary<string, object> ✔️ Com base na entrada do usuário
etiquetas Dictionary<string, object> ✔️ Com base na entrada do usuário
requestedWorkerSelectors List<WorkerSelector> ✔️ Com base na entrada do usuário durante a criação de trabalho
attachedWorkerSelectors List<WorkerSelector> ✔️ Lista dos seletores de trabalhadores anexada por uma política de classificação

Microsoft.Communication.RouterJobClassificationFailed

Voltar ao Catálogo de Eventos

{
  "id": "b6d8687a-5a1a-42ae-b8b5-ff7ec338c872",
  "topic": "/subscriptions/{subscription-id}/resourceGroups/{group-name}/providers/Microsoft.Communication/communicationServices/{communication-services-resource-name}",
  "subject": "job/{job-id}/channel/{channel-id}/classificationpolicy/{classificationpolicy-id}",
  "data": {
    "errors": [
      {
        "code": null,
        "message": "Classification failed due to <reason>",
        "target": null,
        "innerError": null,
        "details": null
      }
    ],
    "jobId": "7f1df17b-570b-4ae5-9cf5-fe6ff64cc712",
    "channelReference": "test-abc",
    "channelId": "FooVoiceChannelId",
    "classificationPolicyId": "test-policy",
    "labels": {
      "Locale": "en-us",
      "Segment": "Enterprise",
      "Token": "FooToken"
    },
    "tags": {
      "Locale": "en-us",
      "Segment": "Enterprise",
      "Token": "FooToken"
    }
  },
  "eventType": "Microsoft.Communication.RouterJobClassificationFailed",
  "dataVersion": "1.0",
  "metadataVersion": "1",
  "eventTime": "2022-02-17T00:55:25.1736293Z"
}

Lista de atributos

Atributo Type Que podem ser nulos Description Notas
erros List<CommunicationError>
jobId string
channelReference string
channelId string
classificaçãoPolicyId string
rótulos Dictionary<string, object> ✔️ Com base na entrada do usuário
etiquetas Dictionary<string, object> ✔️ Com base na entrada do usuário

Microsoft.Communication.RouterJobCompleted

Voltar ao Catálogo de Eventos

{
  "id": "b6d8687a-5a1a-42ae-b8b5-ff7ec338c872",
  "topic": "/subscriptions/{subscription-id}/resourceGroups/{group-name}/providers/Microsoft.Communication/communicationServices/{communication-services-resource-name}",
  "subject": "job/{job-id}/channel/{channel-id}/assignment/{assignment-id}",
  "data": {
    "jobId": "7f1df17b-570b-4ae5-9cf5-fe6ff64cc712",
    "channelReference": "test-abc",
    "channelId": "FooVoiceChannelId",
    "queueId": "queue-id",
    "assignmentId": "6f1df17b-570b-4ae5-9cf5-fe6ff64cc712",
    "labels": {
      "Locale": "en-us",
      "Segment": "Enterprise",
      "Token": "FooToken"
    },
    "tags": {
      "Locale": "en-us",
      "Segment": "Enterprise",
      "Token": "FooToken"
    },
    "workerId": "e3a3f2f9-3582-4bfe-9c5a-aa57831a0f88"
  },
  "eventType": "Microsoft.Communication.RouterJobCompleted",
  "dataVersion": "1.0",
  "metadataVersion": "1",
  "eventTime": "2022-02-17T00:55:25.1736293Z"
}

Lista de atributos

Atributo Type Que podem ser nulos Description Notas
jobId string
channelReference string
channelId string
queueId string
rótulos Dictionary<string, object> ✔️ Com base na entrada do usuário
etiquetas Dictionary<string, object> ✔️ Com base na entrada do usuário
assignmentId string
trabalhadorId string

Microsoft.Communication.RouterJobClosed

Voltar ao Catálogo de Eventos

{
  "id": "b6d8687a-5a1a-42ae-b8b5-ff7ec338c872",
  "topic": "/subscriptions/{subscription-id}/resourceGroups/{group-name}/providers/Microsoft.Communication/communicationServices/{communication-services-resource-name}",
  "subject": "job/{job-id}/channel/{channel-id}/assignment/{assignment-id}",
  "data": {
    "jobId": "7f1df17b-570b-4ae5-9cf5-fe6ff64cc712",
    "channelReference": "test-abc",
    "channelId": "FooVoiceChannelId",
    "queueId": "",
    "dispositionCode": "",
    "workerId": "",
    "assignmentId": "",
    "labels": {
      "Locale": "en-us",
      "Segment": "Enterprise",
      "Token": "FooToken"
    },
    "tags": {
      "Locale": "en-us",
      "Segment": "Enterprise",
      "Token": "FooToken"
    }
  },
  "eventType": "Microsoft.Communication.RouterJobClosed",
  "dataVersion": "1.0",
  "metadataVersion": "1",
  "eventTime": "2022-02-17T00:55:25.1736293Z"
}

Lista de atributos

Atributo Type Que podem ser nulos Description Notas
jobId string
channelReference string
channelId string
queueId string
rótulos Dictionary<string, object> ✔️ Com base na entrada do usuário
etiquetas Dictionary<string, object> ✔️ Com base na entrada do usuário
dispositionCode string ✔️ Com base na entrada do usuário
trabalhadorId string
assignmentId string

Microsoft.Communication.RouterJobCancelled

Voltar ao Catálogo de Eventos

{
  "id": "b6d8687a-5a1a-42ae-b8b5-ff7ec338c872",
  "topic": "/subscriptions/{subscription-id}/resourceGroups/{group-name}/providers/Microsoft.Communication/communicationServices/{communication-services-resource-name}",
  "subject": "job/{job-id}/channel/{channel-id}/disposition/{disposition-code}",
  "data": {
    "note": "Cancelled due to <reason>",
    "dispositionCode": "100",
    "jobId": "7f1df17b-570b-4ae5-9cf5-fe6ff64cc712",
    "channelReference": "test-abc",
    "channelId": "FooVoiceChannelId",
    "labels": {
      "Locale": "en-us",
      "Segment": "Enterprise",
      "Token": "FooToken"
    },
    "tags": {
      "Locale": "en-us",
      "Segment": "Enterprise",
      "Token": "FooToken"
    },
    "queueId": ""
  },
  "eventType": "Microsoft.Communication.RouterJobCancelled",
  "dataVersion": "1.0",
  "metadataVersion": "1",
  "eventTime": "2022-02-17T00:55:25.1736293Z"
}

Lista de atributos

Atributo Type Que podem ser nulos Description Notas
nota string ✔️ Com base na entrada do usuário
dispositionCode string
jobId string
channelReference string
channelId string
rótulos Dictionary<string, object> ✔️ Com base na entrada do usuário
etiquetas Dictionary<string, object> ✔️ Com base na entrada do usuário
queueId string ✔️

Microsoft.Communication.RouterJobExceptionTriggered

Voltar ao Catálogo de Eventos

{
  "id": "1027db4a-17fe-4a7f-ae67-276c3120a29f",
  "topic": "/subscriptions/{subscription-id}/resourceGroups/{group-name}/providers/Microsoft.Communication/communicationServices/{communication-services-resource-name}",
  "subject": "job/{job-id}/channel/{channel-id}/exceptionrule/{rulekey}",
  "data": {
    "ruleKey": "r100",
    "exceptionRuleId": "7f1df17b-570b-4ae5-9cf5-fe6ff64cc712",
    "jobId": "7f1df17b-570b-4ae5-9cf5-fe6ff64cc712",
    "channelReference": "test-abc",
    "channelId": "FooVoiceChannelId",
    "labels": {
      "Locale": "en-us",
      "Segment": "Enterprise",
      "Token": "FooToken"
    },
    "tags": {
      "Locale": "en-us",
      "Segment": "Enterprise",
      "Token": "FooToken"
    }
  },
  "eventType": "Microsoft.Communication.RouterJobExceptionTriggered",
  "dataVersion": "1.0",
  "metadataVersion": "1",
  "eventTime": "2022-02-17T00:55:25.1736293Z"
}

Lista de atributos

Atributo Type Que podem ser nulos Description Notas
chave de regra string
exceptionRuleId string
jobId string
channelReference string
channelId string
rótulos Dictionary<string, object> ✔️ Com base na entrada do usuário
etiquetas Dictionary<string, object> ✔️ Com base na entrada do usuário

Microsoft.Communication.RouterJobWorkerSelectorsExpired

Voltar ao Catálogo de Eventos

{
  "id": "b6d8687a-5a1a-42ae-b8b5-ff7ec338c872",
  "topic": "/subscriptions/{subscription-id}/resourceGroups/{group-name}/providers/Microsoft.Communication/communicationServices/{communication-services-resource-name}",
  "subject": "job/{job-id}/channel/{channel-id}/queue/{queue-id}",
  "data": {
    "jobId": "7f1df17b-570b-4ae5-9cf5-fe6ff64cc712",
    "channelReference": "test-abc",
    "channelId": "FooVoiceChannelId",
    "queueId": "625fec06-ab81-4e60-b780-f364ed96ade1",
    "labels": {
      "Locale": "en-us",
      "Segment": "Enterprise",
      "Token": "FooToken"
    },
    "tags": {
      "Locale": "en-us",
      "Segment": "Enterprise",
      "Token": "FooToken"
    },
    "requestedWorkerSelectorsExpired": [
      {
        "key": "string",
        "labelOperator": "equal",
        "value": 5,
        "ttl": "P3Y6M4DT12H30M5S"
      }
    ],
    "attachedWorkerSelectorsExpired": [
      {
        "key": "string",
        "labelOperator": "equal",
        "value": 5,
        "ttl": "P3Y6M4DT12H30M5S"
      }
    ]
  },
  "eventType": "Microsoft.Communication.RouterJobWorkerSelectorsExpired",
  "dataVersion": "1.0",
  "metadataVersion": "1",
  "eventTime": "2022-02-17T00:55:25.1736293Z"
}

Lista de atributos

Atributo Type Que podem ser nulos Description Notas
jobId string
channelReference string ✔️
queueId string
channelId string
rótulos Dictionary<string, object> ✔️ Com base na entrada do usuário
etiquetas Dictionary<string, object> ✔️ Com base na entrada do usuário
requestedWorkerSelectorsExpired List<WorkerSelector> ✔️ Com base na entrada do usuário durante a criação de um trabalho
attachedWorkerSelectorsExpired List<WorkerSelector> ✔️ Lista dos seletores de trabalhadores anexada por uma política de classificação

Microsoft.Communication.RouterJobUnassigned

Voltar ao Catálogo de Eventos

{
  "id": "acdf8fa5-8ab4-4a65-874a-c1d2a4a97f2e",
  "topic": "/subscriptions/{subscription-id}/resourceGroups/{group-name}/providers/Microsoft.Communication/communicationServices/{communication-services-resource-name}",
  "subject": "job/{job-id}/channel/{channel-id}/assignment/{assignment-id}",
  "data": {
    "jobId": "7f1df17b-570b-4ae5-9cf5-fe6ff64cc712",
    "assignmentId": "",
    "workerId": "",
    "channelId": "FooVoiceChannelId",
    "channelReference": "test-abc",
    "queueId": "queue-id",    
    "labels": {
      "Locale": "en-us",
      "Segment": "Enterprise",
      "Token": "FooToken"
    },
    "tags": {
      "Locale": "en-us",
      "Segment": "Enterprise",
      "Token": "FooToken"
    }
  },
  "eventType": "Microsoft.Communication.RouterJobUnassigned",
  "dataVersion": "1.0",
  "metadataVersion": "1",
  "eventTime": "2022-02-17T00:55:25.1736293Z"
}

Lista de atributos

Atributo Type Que podem ser nulos Description Notas
jobId string
assignmentId string
trabalhadorId string
channelId string
channelReference string
queueId string ✔️ null quando classificationPolicyId é especificado para um trabalho
rótulos Dictionary<string, object> ✔️ Com base na entrada do usuário
etiquetas Dictionary<string, object> ✔️ Com base na entrada do usuário

Microsoft.Communication.RouterJobWaitingForActivation

Voltar ao Catálogo de Eventos

{
  "id": "acdf8fa5-8ab4-4a65-874a-c1d2a4a97f2e",
  "topic": "/subscriptions/{subscription-id}/resourceGroups/{group-name}/providers/Microsoft.Communication/communicationServices/{communication-services-resource-name}",
  "subject": "job/{job-id}/channel/{channel-id}",
  "data": {
    "jobId": "7f1df17b-570b-4ae5-9cf5-fe6ff64cc712",
    "channelId": "FooVoiceChannelId",
    "channelReference": "test-abc",
    "queueId": "queue-id",    
    "priority": 1,
    "labels": {
      "Locale": "en-us",
      "Segment": "Enterprise",
      "Token": "FooToken"
    },
    "tags": {
      "Locale": "en-us",
      "Segment": "Enterprise",
      "Token": "FooToken"
    },
    "requestedWorkerSelectors": [
      {
        "key": "string",
        "labelOperator": "equal",
        "value": 5,
        "ttl": "P3Y6M4DT12H30M5S"
      }
    ],
    "attachedWorkerSelectors": [
      {
        "key": "string",
        "labelOperator": "equal",
        "value": 5,
        "ttl": "P3Y6M4DT12H30M5S"
      }
    ],
    "scheduledOn": "2022-02-17T00:55:25.1736293Z",
    "unavailableForMatching": false
  },
  "eventType": "Microsoft.Communication.RouterJobWaitingForActivation",
  "dataVersion": "1.0",
  "metadataVersion": "1",
  "eventTime": "2022-02-17T00:55:25.1736293Z"
}

Lista de atributos

Atributo Type Que podem ser nulos Description Notas
jobId string
channelId string
channelReference string
queueId string ✔️ null quando classificationPolicyId é especificado para um trabalho
rótulos Dictionary<string, object> ✔️ Com base na entrada do usuário
etiquetas Dictionary<string, object> ✔️ Com base na entrada do usuário
requestedWorkerSelectorsExpired List<WorkerSelector> ✔️ Com base na entrada do usuário durante a criação de um trabalho
attachedWorkerSelectorsExpired List<WorkerSelector> ✔️ Lista dos seletores de trabalhadores anexada por uma política de classificação
agendadoOn DateTimeOffset ✔️ Com base na entrada do usuário durante a criação de um trabalho
unavailableForMatching bool ✔️ Com base na entrada do usuário durante a criação de um trabalho
prioridade int Com base na entrada do usuário durante a criação de um trabalho

Microsoft.Communication.RouterJobSchedulingFailed

Voltar ao Catálogo de Eventos

{
  "id": "acdf8fa5-8ab4-4a65-874a-c1d2a4a97f2e",
  "topic": "/subscriptions/{subscription-id}/resourceGroups/{group-name}/providers/Microsoft.Communication/communicationServices/{communication-services-resource-name}",
  "subject": "job/{job-id}/channel/{channel-id}",
  "data": {
    "jobId": "7f1df17b-570b-4ae5-9cf5-fe6ff64cc712",
    "channelId": "FooVoiceChannelId",
    "channelReference": "test-abc",
    "queueId": "queue-id",    
    "priority": 1,
    "labels": {
      "Locale": "en-us",
      "Segment": "Enterprise",
      "Token": "FooToken"
    },
    "tags": {
      "Locale": "en-us",
      "Segment": "Enterprise",
      "Token": "FooToken"
    },
    "requestedWorkerSelectors": [
      {
        "key": "string",
        "labelOperator": "equal",
        "value": 5,
        "ttl": "P3Y6M4DT12H30M5S"
      }
    ],
    "attachedWorkerSelectors": [
      {
        "key": "string",
        "labelOperator": "equal",
        "value": 5,
        "ttl": "P3Y6M4DT12H30M5S"
      }
    ],
    "scheduledOn": "2022-02-17T00:55:25.1736293Z",
    "failureReason": "Error"
  },
  "eventType": "Microsoft.Communication.RouterJobSchedulingFailed",
  "dataVersion": "1.0",
  "metadataVersion": "1",
  "eventTime": "2022-02-17T00:55:25.1736293Z"
}

Lista de atributos

Atributo Type Que podem ser nulos Description Notas
jobId string
channelId string
channelReference string
queueId string ✔️ null quando classificationPolicyId é especificado para um trabalho
rótulos Dictionary<string, object> ✔️ Com base na entrada do usuário
etiquetas Dictionary<string, object> ✔️ Com base na entrada do usuário
requestedWorkerSelectorsExpired List<WorkerSelector> ✔️ Com base na entrada do usuário durante a criação de um trabalho
attachedWorkerSelectorsExpired List<WorkerSelector> ✔️ Lista dos seletores de trabalhadores anexada por uma política de classificação
agendadoOn DateTimeOffset ✔️ Com base na entrada do usuário durante a criação de um trabalho
falhaRazão string ✔️ Sistema determinado
prioridade int Com base na entrada do usuário durante a criação de um trabalho

Eventos do trabalhador

Microsoft.Communication.RouterWorkerOfferIssued

Voltar ao Catálogo de Eventos

{
  "id": "1027db4a-17fe-4a7f-ae67-276c3120a29f",
  "topic": "/subscriptions/{subscription-id}/resourceGroups/{group-name}/providers/Microsoft.Communication/communicationServices/{communication-services-resource-name}",
  "subject": "worker/{worker-id}/job/{job-id}",
  "data": {
    "workerId": "w100",
    "jobId": "7f1df17b-570b-4ae5-9cf5-fe6ff64cc712",
    "channelReference": "test-abc",
    "channelId": "FooVoiceChannelId",
    "queueId": "625fec06-ab81-4e60-b780-f364ed96ade1",
    "offerId": "525fec06-ab81-4e60-b780-f364ed96ade1",
    "offeredOn": "2021-06-23T02:43:30.3847144Z",
    "expiresOn": "2021-06-23T02:44:30.3847674Z",
    "jobPriority": 5,
    "jobLabels": {
      "Locale": "en-us",
      "Segment": "Enterprise",
      "Token": "FooToken"
    },
    "jobTags": {
      "Locale": "en-us",
      "Segment": "Enterprise",
      "Token": "FooToken"
    }
  },
  "eventType": "Microsoft.Communication.RouterWorkerOfferIssued",
  "dataVersion": "1.0",
  "metadataVersion": "1",
  "eventTime": "2022-02-17T00:55:25.1736293Z"
}

Lista de atributos

Atributo Type Que podem ser nulos Description Notas
trabalhadorId string
jobId string
channelReference string
channelId string
queueId string
offerId string
oferecidoOn DateTimeOffset
expira DateTimeOffset
jobPrioridade int
jobRótulos Dictionary<string, object> ✔️ Com base na entrada do usuário
jobTags Dictionary<string, object> ✔️ Com base na entrada do usuário

Microsoft.Communication.RouterWorkerOfferAccepted

Voltar ao Catálogo de Eventos

{
  "id": "1027db4a-17fe-4a7f-ae67-276c3120a29f",
  "topic": "/subscriptions/{subscription-id}/resourceGroups/{group-name}/providers/Microsoft.Communication/communicationServices/{communication-services-resource-name}",
  "subject": "worker/{worker-id}/job/{job-id}",
  "data": {
    "workerId": "w100",
    "jobId": "7f1df17b-570b-4ae5-9cf5-fe6ff64cc712",
    "jobPriority": 5,
    "jobLabels": {
      "Locale": "en-us",
      "Segment": "Enterprise",
      "Token": "FooToken"
    },
    "jobTags": {
      "Locale": "en-us",
      "Segment": "Enterprise",
      "Token": "FooToken"
    },
    "channelReference": "test-abc",
    "channelId": "FooVoiceChannelId",
    "queueId": "625fec06-ab81-4e60-b780-f364ed96ade1",
    "offerId": "565fec06-ab81-4e60-b780-f364ed96ade1",
    "assignmentId": "765fec06-ab81-4e60-b780-f364ed96ade1"
  },
  "eventType": "Microsoft.Communication.RouterWorkerOfferAccepted",
  "dataVersion": "1.0",
  "metadataVersion": "1",
  "eventTime": "2022-02-17T00:55:25.1736293Z"
}

Lista de atributos

Atributo Type Que podem ser nulos Description Notas
trabalhadorId string
jobId string
jobPrioridade int
jobRótulos Dictionary<string, object> ✔️ Com base na entrada do usuário
jobTags Dictionary<string, object> ✔️ Com base na entrada do usuário
channelReference string
channelId string
queueId string
offerId string
assignmentId string

Microsoft.Communication.RouterWorkerOfferDeclined

Voltar ao Catálogo de Eventos

{
  "id": "1027db4a-17fe-4a7f-ae67-276c3120a29f",
  "topic": "/subscriptions/{subscription-id}/resourceGroups/{group-name}/providers/Microsoft.Communication/communicationServices/{communication-services-resource-name}",
  "subject": "worker/{worker-id}/job/{job-id}",
  "data": {
    "workerId": "w100",
    "jobId": "7f1df17b-570b-4ae5-9cf5-fe6ff64cc712",
    "channelReference": "test-abc",
    "channelId": "FooVoiceChannelId",
    "queueId": "625fec06-ab81-4e60-b780-f364ed96ade1",
    "offerId": "565fec06-ab81-4e60-b780-f364ed96ade1",
  },
  "eventType": "Microsoft.Communication.RouterWorkerOfferDeclined",
  "dataVersion": "1.0",
  "metadataVersion": "1",
  "eventTime": "2022-02-17T00:55:25.1736293Z"
}

Lista de atributos

Atributo Type Que podem ser nulos Description Notas
trabalhadorId string
jobId string
channelReference string
channelId string
queueId string
offerId string

Microsoft.Communication.RouterWorkerOfferRevoked

Voltar ao Catálogo de Eventos

{
  "id": "1027db4a-17fe-4a7f-ae67-276c3120a29f",
  "topic": "/subscriptions/{subscription-id}/resourceGroups/{group-name}/providers/Microsoft.Communication/communicationServices/{communication-services-resource-name}",
  "subject": "worker/{worker-id}/job/{job-id}",
  "data": {
    "offerId": "565fec06-ab81-4e60-b780-f364ed96ade1",
    "workerId": "w100",
    "jobId": "7f1df17b-570b-4ae5-9cf5-fe6ff64cc712",
    "channelReference": "test-abc",
    "channelId": "FooVoiceChannelId",
    "queueId": "625fec06-ab81-4e60-b780-f364ed96ade1"
  },
  "eventType": "Microsoft.Communication.RouterWorkerOfferRevoked",
  "dataVersion": "1.0",
  "metadataVersion": "1",
  "eventTime": "2022-02-17T00:55:25.1736293Z"
}

Lista de atributos

Atributo Type Que podem ser nulos Description Notas
offerId string
trabalhadorId string
jobId string
channelReference string
channelId string
queueId string

Microsoft.Communication.RouterWorkerOfferExpired

Voltar ao Catálogo de Eventos

{
  "id": "1027db4a-17fe-4a7f-ae67-276c3120a29f",
  "topic": "/subscriptions/{subscription-id}/resourceGroups/{group-name}/providers/Microsoft.Communication/communicationServices/{communication-services-resource-name}",
  "subject": "worker/{worker-id}/job/{job-id}",
  "data": {
    "offerId": "565fec06-ab81-4e60-b780-f364ed96ade1",
    "workerId": "w100",
    "jobId": "7f1df17b-570b-4ae5-9cf5-fe6ff64cc712",
    "channelReference": "test-abc",
    "channelId": "FooVoiceChannelId",
    "queueId": "625fec06-ab81-4e60-b780-f364ed96ade1"
  },
  "eventType": "Microsoft.Communication.RouterWorkerOfferExpired",
  "dataVersion": "1.0",
  "metadataVersion": "1",
  "eventTime": "2022-02-17T00:55:25.1736293Z"
}

Lista de atributos

Atributo Type Que podem ser nulos Description Notas
trabalhadorId string
offerId string
jobId string
channelReference string
channelId string
queueId string

Microsoft.Communication.RouterWorkerRegistered

Voltar ao Catálogo de Eventos

{
  "id": "1027db4a-17fe-4a7f-ae67-276c3120a29f",
  "topic": "/subscriptions/{subscription-id}/resourceGroups/{group-name}/providers/Microsoft.Communication/communicationServices/{communication-services-resource-name}",
  "subject": "worker/{worker-id}",
  "data": {
    "workerId": "worker3",
    "totalCapacity": 100,
    "queueAssignments": [
      {
        "id": "MyQueueId2",
        "name": "Queue 3",
        "labels": {
          "Language": "en",
          "Product": "Office",
          "Geo": "NA"
        }
      }
    ],
    "labels": {
      "x": "111",
      "y": "111"
    },
    "channelConfigurations": [
      {
        "channelId": "FooVoiceChannelId",
        "capacityCostPerJob": 10,
        "maxNumberOfJobs": 5
      }
    ],
    "tags": {
      "Locale": "en-us",
      "Segment": "Enterprise",
      "Token": "FooToken"
    }
  },
  "eventType": "Microsoft.Communication.RouterWorkerRegistered",
  "dataVersion": "1.0",
  "metadataVersion": "1",
  "eventTime": "2022-02-17T00:55:25.1736293Z"
}

Lista de atributos

Atributo Type Que podem ser nulos Description Notas
trabalhadorId string
Capacidade total int
filaAtribuições List<QueueDetails>
rótulos Dictionary<string, object> ✔️ Com base na entrada do usuário
channelConfigurations List<ChannelConfiguration>
etiquetas Dictionary<string, object> ✔️ Com base na entrada do usuário

Microsoft.Communication.RouterWorkerUpdated

Voltar ao Catálogo de Eventos

{
  "id": "1027db4a-17fe-4a7f-ae67-276c3120a29f",
  "topic": "/subscriptions/{subscription-id}/resourceGroups/{group-name}/providers/Microsoft.Communication/communicationServices/{communication-services-resource-name}",
  "subject": "worker/{worker-id}",
  "data": {
    "workerId": "worker3",
    "availableForOffers": true,
    "totalCapacity": 100,
    "queueAssignments": [
      {
        "id": "MyQueueId2",
        "name": "Queue 3",
        "labels": {
          "Language": "en",
          "Product": "Office",
          "Geo": "NA"
        }
      }
    ],
    "labels": {
      "x": "111",
      "y": "111"
    },
    "channelConfigurations": [
      {
        "channelId": "FooVoiceChannelId",
        "capacityCostPerJob": 10,
        "maxNumberOfJobs": 5
      }
    ],
    "tags": {
      "Locale": "en-us",
      "Segment": "Enterprise",
      "Token": "FooToken"
    },
    "updatedWorkerProperties": [
      "TotalCapacity",
      "Labels",
      "Tags",
      "ChannelConfigurations",
      "AvailableForOffers",
      "QueueAssignments"
    ]
  },
  "eventType": "Microsoft.Communication.RouterWorkerUpdated",
  "dataVersion": "1.0",
  "metadataVersion": "1",
  "eventTime": "2022-02-17T00:55:25.1736293Z"
}

Lista de atributos

Atributo Type Que podem ser nulos Description Notas
trabalhadorId string
Capacidade total int
filaAtribuições List<QueueDetails>
rótulos Dictionary<string, object> ✔️ Com base na entrada do usuário
channelConfigurations List<ChannelConfiguration>
etiquetas Dictionary<string, object> ✔️ Com base na entrada do usuário
updatedWorkerProperties List<UpdateWorkerProperty> Propriedades do trabalhador atualizadas, incluindo AvailableForOffers, QueueAssignments, ChannelConfigurations, TotalCapacity, Labels e Tags

Microsoft.Communication.RouterWorkerDeregistered

Voltar ao Catálogo de Eventos

{
  "id": "1027db4a-17fe-4a7f-ae67-276c3120a29f",
  "topic": "/subscriptions/{subscription-id}/resourceGroups/{group-name}/providers/Microsoft.Communication/communicationServices/{communication-services-resource-name}",
  "subject": "worker/{worker-id}",
  "data": {
    "workerId": "worker3"
  },
  "eventType": "Microsoft.Communication.RouterWorkerDeregistered",
  "dataVersion": "1.0",
  "metadataVersion": "1",
  "eventTime": "2022-02-17T00:55:25.1736293Z"
}

Lista de atributos

Atributo Type Que podem ser nulos Description Notas
trabalhadorId string

Definições de modelo

QueueDetails

public class QueueDetails
{
    public string Id { get; set; }
    public string Name { get; set; }
    public Dictionary<string, object>? Labels { get; set; }
}

Erro de comunicação

public class CommunicationError
{
    public string? Code { get; init; }
    public string Message { get; init; }
    public string? Target { get; init; }
    public CommunicationError? InnerError { get; init; }
    public IEnumerable<CommunicationError>? Details { get; init; }
}

ChannelConfiguration

public class ChannelConfiguration
{
    public string ChannelId { get; set; }
    public int CapacityCostPerJob { get; set; }
    public int? MaxNumberOfJobs { get; set; }
}

UpdatedWorkerProperty

public enum UpdatedWorkerProperty
{
    AvailableForOffers,
    Capacity,
    QueueAssignments,
    Labels,
    Tags,
    ChannelConfigurations
}

WorkerSelector

public class WorkerSelector
{
    public string Key { get; set; }
    public LabelOperator LabelOperator { get; set; }
    public object Value { get; set; }
    public double? TTLSeconds { get; set; }
    public WorkerSelectorState State { get; set; }
    public DateTimeOffset? ExpireTime { get; set; }
}

public enum WorkerSelectorState
{
    Active = 0,
    Expired = 1
}

public enum LabelOperator
{
    Equal,
    NotEqual,
    LessThan,
    LessThanEqual,
    GreaterThan,
    GreaterThanEqual,
}