Início rápido do Work IQ A2A

Pré-requisitos

Registrar o aplicativo no Microsoft Entra

Registre um aplicativo com permissões para acessar o Work IQ. Ao registrar o aplicativo, você obtém dois valores: APP_ID e TENANT_ID. Use esses valores com o exemplo de A2A para testar a configuração do locatário.

Dica

Criando um agente do lado do servidor (aplicativo Web)? Este início rápido usa um registro de cliente público (móvel/área de trabalho) para o caminho mais simples para uma amostra de trabalho. Se o seu aplicativo for um serviço do lado do servidor que chama o Work IQ em nome de um usuário final (por exemplo, um agente da Web que conecta o usuário e encaminha sua identidade ao Work IQ), use um registro de cliente confidencial com um segredo ou certificado do cliente. Troque o token do usuário usando o fluxo OBO (Em Nome de). A superfície da API Work IQ e a permissão delegada WorkIQAgent.Ask são as mesmas em ambos os fluxos.

  1. Vá para o centro de administração do Microsoft Entra. No painel de navegação à esquerda, selecione ID da Entra e, em seguida, selecione Registros de aplicativo.
  2. Selecione Novo registro.
  3. Adicione um nome descritivo, defina Tipos de conta com suporte para Contas somente neste diretório organizacional e selecione Registrar.
  4. Copie a ID do aplicativo (cliente). Esse valor é o seu APP_ID.
  5. Selecione Autenticação. Selecione Adicionar uma plataforma (ou Adicionar URI de redirecionamento). Na caixa de diálogo, selecione Aplicativos móveis e da área de trabalho.
    • Selecione o URI sugerido: https://login.microsoftonline.com/common/oauth2/nativeclient.
    • Em URIs de redirecionamento personalizados, adicione os dois URIs a seguir, um de cada vez (cada um em sua própria linha):
      • http://localhost
      • ms-appx-web://microsoft.aad.brokerplugin/<APP_ID> (onde <APP_ID> está o seu APP_ID)
    • Em Configurações avançadas, defina Permitir fluxos de clientes públicos como Sim.
    • Selecione Salvar.
  6. Selecione Permissões de API, Adicionar uma permissão e, em seguida, APIs usadas pela minha organização. Work IQPesquise e selecione Permissões delegadas. Selecione WorkIQAgent.Ask e, em seguida, selecione Adicionar permissões.
  7. Selecione Conceder consentimento de administrador para [seu locatário]. Examine a caixa de diálogo de confirmação e selecione Sim.
  8. Copie a ID do diretório (locatário) da página de visão geral do Microsoft Entra ID.

A permissão WorkIQAgent.Ask permite que o aplicativo, em nome do usuário conectado, consulte sua inteligência de trabalho do Microsoft 365 (email, arquivos, reuniões, chats) por meio do Work IQ.

Início Rápido: protocolo A2A

O protocolo Agent-to-Agent (A2A) é um padrão aberto para comunicação de agente. O Work IQ dá suporte a A2A v1.0 (este início rápido) e v0.3. O A2A-Version cabeçalho da solicitação controla a expedição da versão.

  • A2A-Version: 1.0 - Formato de fio v1.0 (este início rápido)
  • A2A-Version: 0.3 (ou cabeçalho omitido) - formato de fio v0.3 (mantido como o padrão sem cabeçalho para compatibilidade com versões anteriores com clientes v0.3 existentes)

Obter o código de exemplo

Clone o repositório de exemplo usando o comando a seguir.

git clone https://github.com/microsoft/work-iq-samples.git
cd work-iq-samples

Executar o exemplo (com o SDK do A2A)

O dotnet/a2a exemplo usa o SDK do .NET A2A.

cd dotnet/a2a
dotnet run -- --token WAM --appid <APP_ID> --tenant <TENANT_ID>

Executar o exemplo (HTTP bruto, sem SDK)

O dotnet/a2a-raw exemplo mostra o protocolo de conexão sem abstração do SDK. O uso desse exemplo é útil para portabilidade para idiomas non-.NET.

cd dotnet/a2a-raw
dotnet run -- --token WAM --appid <APP_ID> --tenant <TENANT_ID>

O que acontece

Quando você executa o exemplo, um prompt de entrada é exibido (caixa de diálogo WAM no Windows, navegador do sistema no macOS/Linux). Depois de entrar, digite uma mensagem no You > prompt e pressione Enter. A resposta do agente é exibida abaixo. Type quit para sair.

── READY — Work IQ Gateway — Sync — https://workiq.svc.cloud.microsoft/a2a/ ──
Type a message. 'quit' to exit.

You > Summarize my recent emails from Alice.
Agent > You've exchanged 8 emails with Alice this week. Key threads:
  - ...
  (2145 ms)

You > quit

Como funciona

O Work IQ aceita A2A v1.0 sobre JSON-RPC em https://workiq.svc.cloud.microsoft/a2a/. (A2A v1.0 também define uma associação REST em /v1/message:send; O QI de Trabalho pode expor essa associação REST em uma atualização futura.)

Gateway de QI de Trabalho

  • Ponto de extremidade: https://workiq.svc.cloud.microsoft/a2a/
  • Audiência do token: api://workiq.svc.cloud.microsoft
  • Escopo: WorkIQAgent.Ask

Síncrona SendMessage

POST https://workiq.svc.cloud.microsoft/a2a/
Authorization: Bearer <token>
Content-Type: application/json
A2A-Version: 1.0

{
  "jsonrpc": "2.0",
  "id": "<request-guid>",
  "method": "SendMessage",
  "params": {
    "message": {
      "role": "ROLE_USER",
      "messageId": "<message-guid>",
      "parts": [
        {
          "text": "What meetings do I have today?"
        }
      ],
      "metadata": {
        "Location": {
          "timeZoneOffset": -480,
          "timeZone": "America/Los_Angeles"
        }
      }
    }
  }
}

O A2A-Version: 1.0 cabeçalho da solicitação habilita nomes de método v1.0 (SendMessage) no gateway. Sem ele, o servidor usa como padrão a v0.3 e retorna um JSON-RPC -32601 "Method not found" para nomes de método v1.0.

A resposta é um envelope JSON-RPC contendo result.task a tarefa do agente e um contextId para várias voltas:

{
  "jsonrpc": "2.0",
  "id": "<request-guid>",
  "result": {
    "task": {
      "id": "<task-id>",
      "contextId": "ctx-1",
      "status": {
        "state": "TASK_STATE_COMPLETED"
      },
      "artifacts": [
        {
          "artifactId": "<artifact-id>",
          "name": "Answer",
          "parts": [
            {
              "text": "Today you have: 9 AM standup, 11 AM review with Dana, 2 PM customer call."
            }
          ]
        }
      ]
    }
  }
}

O Work IQ requer que os metadados fundamentem consultas sensíveis ao Location tempo ("hoje" ou "esta semana") na hora local do usuário.

Conversas em várias etapas

Para manter o estado da conversa, passe a contextId resposta anterior na próxima mensagem.

{
  "jsonrpc": "2.0",
  "id": "<request-guid-2>",
  "method": "SendMessage",
  "params": {
    "message": {
      "role": "ROLE_USER",
      "messageId": "<message-guid-2>",
      "contextId": "ctx-1",
      "parts": [
        {
          "text": "Tell me more about the 2 PM customer call."
        }
      ]
    }
  }
}

Principais detalhes do protocolo (A2A v1.0)

  • Envelope JSON-RPC necessário: cada solicitação deve incluir jsonrpc, id, methodparams, .
  • POST para a URL base: o método (SendMessage) está dentro do corpo JSON-RPC, não do caminho da URL.
  • Peças de presença de campo: as peças são objetos planos com um dos text, url, raw, ou data definido; sem kind discriminador.
  • SCREAMING_SNAKE_CASE enumerações: uso deROLE_USER / ROLE_AGENTfunções; uso de estados TASK_STATE_WORKINGTASK_STATE_COMPLETED / / TASK_STATE_FAILED / etc.
  • Wrapper de resultado: as respostas da tarefa aparecem em result.task.
  • Despacho de versão:A2A-Version: 1.0 seleciona v1.0; Omitir o cabeçalho (ou enviar A2A-Version: 0.3) seleciona v0.3, o padrão sem cabeçalho.

Descoberta de agente

Para chamar um agente específico, passe sua ID de agente por meio do --agent-id. Você pode encontrar a ID de um agente de duas maneiras.

A CLI do WorkIQ inclui um comando experimental list-agents que lista os agentes disponíveis para o usuário conectado.

workiq config set experimental=true
workiq list-agents

Cada linha mostra o nome de exibição, o provedor e o ID do agente (a segunda linha de cada entrada). Use essa ID com --agent-id ao executar o exemplo.

Alternativa: copiar da URL do Microsoft 365 Copilot

  1. Acesse o site do Microsoft 365 Copilot Chat.
  2. Selecione seu agente na navegação à esquerda.
  3. A ID do agente aparece na barra de endereços do navegador após /chat/agent/:
https://m365.cloud.microsoft/chat/agent/P_c0fd1ab0-cbf3-7eb9-1a7d-2d823549ef31.8ad61c39-5b6e-447c-b26a-a64eee436502
                                       └──────────────────────────── agent ID ─────────────────────────────────────┘

O formato é <LETTER>_<opaqueValue1>.<opaqueValue2>.

Passe a ID do agente para o exemplo

Importante

Trate toda a ID do agente como uma cadeia de caracteres opaca. Não desconstrua ou analise seus componentes. Passe-o no estado em que se encontra para a API.

Passe a ID do agente como um argumento para o exemplo

dotnet run -- --token WAM --agent-id <AGENT_ID> --appid <APP_ID> --tenant <TENANT_ID>

▶ Abra uma solicitação de inventário específica do agente na Demonstração interativa.

Observação

Alguns agentes do Microsoft 365 (notavelmente agentes do Word, Excel e PowerPoint na interface do usuário do Copilot Chat) são projetados para serem executados no contexto desses produtos do Office e não produzem respostas úteis quando invocados sem periféricos por meio de A2A.

Recursos do A2A

Recursos Status
SendMessage (sincronização) ✅ Disponível
Várias voltas (contextId) ✅ Disponível
Partes de texto ✅ Disponível
Citações ✅ Disponível (a forma de entrega está sendo modernizada; consulte as notas de versão)

Autenticação

Método Plataforma Uso
WAM (Gerenciador de Contas do Windows) Windows --token WAM --appid <APP_ID> --tenant <TENANT_ID>
Navegador interativo macOS, Linux Mesmo comando — O Microsoft Identity Client retorna a uma entrada do navegador do sistema.
JWT pré-obtido Qualquer --token <JWT>(o token deve ser emitido para seu aplicativo registrado, não para um cliente arbitrário como a CLI do Azure)

Solução de problemas

Sintoma Correção
401 Unauthorized O token aud não corresponde .api://workiq.svc.cloud.microsoft Verifique a reivindicação do público.
403 Forbidden (sem erro de escopo) O usuário não é membro de um plano de cobrança baseado em uso. Atribua e aguarde de 15 a 30 minutos.
403 Forbidden com Required scopes = [...] Administração consentimento para WorkIQAgent.Ask o qual não foi concedido. Execute novamente o consentimento do administrador (configuração do administrador, etapa 6 / etapa 3 da CLI do Azure).
WAM IncorrectConfiguration (3399614466) O registro do aplicativo não tem o URI de redirecionamento do agente. ms-appx-web://microsoft.aad.brokerplugin/<APP_ID> Adicione novamente e tente novamente.
O WAM ainda falha depois que o URI de redirecionamento é definido Incompatibilidade de autoridade + /common aplicativo de locatário único. Passe --tenant <TENANT_ID> para que o Microsoft Identity Client use a autoridade específica do locatário.
AADSTS65001: consent required O consentimento da Administração não foi concedido. Execute az ad app permission admin-consent --id <APP_ID>.
200 vazio / sem texto de agente Se a licença do Copilot do usuário foi atribuída recentemente, o índice pode levar de 15 a 30 minutos para ser compilado. Se você invocou um agente do Word/Excel/PowerPoint, esses agentes são executados no produto do Office e não produzem respostas A2A sem periféricos.