Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Pré-requisitos
- Habilitar seu locatário para o Work IQ
- .NET SDK versão 8 ou posterior para executar o código de exemplo
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.
- 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.
- Selecione Novo registro.
- Adicione um nome descritivo, defina Tipos de conta com suporte para Contas somente neste diretório organizacional e selecione Registrar.
- Copie a ID do aplicativo (cliente). Esse valor é o seu
APP_ID. - 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 seuAPP_ID)
- Em Configurações avançadas, defina Permitir fluxos de clientes públicos como Sim.
- Selecione Salvar.
- Selecione o URI sugerido:
- 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. - Selecione Conceder consentimento de administrador para [seu locatário]. Examine a caixa de diálogo de confirmação e selecione Sim.
- 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, oudatadefinido; semkinddiscriminador. -
SCREAMING_SNAKE_CASE enumerações: uso de
ROLE_USER/ROLE_AGENTfunções; uso de estadosTASK_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.0seleciona v1.0; Omitir o cabeçalho (ou enviarA2A-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.
Recomendado: WorkIQ CLI list-agents (experimental)
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
- Acesse o site do Microsoft 365 Copilot Chat.
- Selecione seu agente na navegação à esquerda.
- 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. |