Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Requisitos previos
- Habilitar el inquilino para Work IQ
- SDK de .NET versión 8 o posterior para ejecutar el código de ejemplo
Registro de la aplicación en Microsoft Entra
Registro de una aplicación con permisos para acceder a Work IQ. Al registrar la aplicación, obtendrá dos valores: APP_ID y TENANT_ID. Use estos valores con el ejemplo de A2A para probar la configuración del inquilino.
Sugerencia
¿Está creando un agente de servidor (aplicación web)? Este inicio rápido usa un registro de cliente público (móvil o de escritorio) para la ruta de acceso más sencilla a una muestra de trabajo. Si la aplicación es un servicio del lado servidor que llama a Work IQ en nombre de un usuario final (por ejemplo, un agente web que inicia sesión en el usuario y luego reenvía su identidad a Work IQ), use un registro de cliente confidencial con un secreto o certificado de cliente. Intercambie el token del usuario mediante el flujo En nombre de (OBO). La superficie de la API de Work IQ y el permiso delegado WorkIQAgent.Ask son los mismos en ambos flujos.
- Vaya al Centro de administración de Microsoft Entra. En el panel de navegación izquierdo, seleccione ID de Entra y, a continuación, seleccione Registros de aplicaciones.
- Seleccione Nuevo registro.
- Agregue un nombre descriptivo, establezca Tipos de cuenta admitidosen Cuentas solo en este directorio organizativo y seleccione Registrarse.
- Copie el ID. de la aplicación (cliente). Este valor es su
APP_ID. - Seleccione la autenticación. Seleccione Agregar una plataforma (o Agregar URI de redireccionamiento). En el cuadro de diálogo, seleccione Aplicaciones móviles y de escritorio.
- Seleccione el URI sugerido:
https://login.microsoftonline.com/common/oauth2/nativeclient. - En URI de redireccionamiento personalizado, agregue los dos URI siguientes, uno a la vez (cada uno en su propia fila):
http://localhost-
ms-appx-web://microsoft.aad.brokerplugin/<APP_ID>(dónde<APP_ID>está suAPP_ID)
- En Configuración avanzada, establezca Permitir flujos de cliente público en Sí.
- Haga clic en Guardar.
- Seleccione el URI sugerido:
- Seleccione Permisos de API, Agregar un permiso y, a continuación, API que usa mi organización. Busque
Work IQy seleccione Permisos delegados. Seleccione WorkIQAgent.Ask y luego seleccione Agregar permisos. - Seleccione Conceder consentimiento de administrador para [su espacio empresarial]. Revise el cuadro de diálogo de confirmación y seleccione Sí.
- Copie su ID de directorio (inquilino) desde la página de introducción a Microsoft Entra ID.
El permiso WorkIQAgent.Ask permite a la aplicación, en nombre del usuario que ha iniciado sesión, consultar su inteligencia de trabajo de Microsoft 365 (correo, archivos, reuniones, chats) a través de Work IQ.
Inicio rápido: Protocolo A2A
El protocolo de agente a agente (A2A) es un estándar abierto para la comunicación de agentes. Work IQ es compatible con A2A v1.0 (este inicio rápido) y v0.3. El A2A-Version encabezado de solicitud controla la distribución de versiones.
-
A2A-Version: 1.0- Formato de cable v1.0 (este inicio rápido) -
A2A-Version: 0.3(o encabezado omitido): formato de conexión v0.3 (mantenido como predeterminado sin encabezado para la compatibilidad con versiones anteriores de los clientes v0.3 existentes)
Obtener el código de ejemplo
Clone el repositorio de ejemplo con el siguiente comando.
git clone https://github.com/microsoft/work-iq-samples.git
cd work-iq-samples
Ejecutar el ejemplo (con el SDK de A2A)
En dotnet/a2a el ejemplo se usa el SDK de .NET de A2A.
cd dotnet/a2a
dotnet run -- --token WAM --appid <APP_ID> --tenant <TENANT_ID>
Ejecutar el ejemplo (HTTP sin procesar, sin SDK)
En dotnet/a2a-raw el ejemplo se muestra el protocolo de conexión sin abstracción de SDK. El uso de este ejemplo es útil para la portabilidad a non-.NET idiomas.
cd dotnet/a2a-raw
dotnet run -- --token WAM --appid <APP_ID> --tenant <TENANT_ID>
Qué ocurre
Al ejecutar el ejemplo, aparece un mensaje de inicio de sesión (cuadro de diálogo WAM en Windows, explorador del sistema en macOS/Linux). Después de iniciar sesión, escriba un mensaje en el símbolo del You > sistema y presione Entrar. La respuesta del agente aparece a continuación. Escriba quit para salir.
── 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
Cómo funciona
Work IQ acepta A2A v1.0 sobre JSON-RPC en https://workiq.svc.cloud.microsoft/a2a/. (A2A v1.0 también define un enlace REST en /v1/message:send; Work IQ podría exponer este enlace REST en una actualización futura).
Puerta de enlace de Work IQ
- Punto de conexión:
https://workiq.svc.cloud.microsoft/a2a/ - Audiencia simbólica:
api://workiq.svc.cloud.microsoft - Ámbito:
WorkIQAgent.Ask
Sincrónico 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"
}
}
}
}
}
El A2A-Version: 1.0 encabezado de solicitud habilita los nombres de método v1.0 (SendMessage) en la puerta de enlace. Sin él, el servidor se establece de forma predeterminada en v0.3 y devuelve un JSON-RPC -32601 "Method not found" para los nombres de método v1.0.
La respuesta es un sobre JSON-RPC que result.task contiene la tarea del agente y un contextId para varios turnos:
{
"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."
}
]
}
]
}
}
}
Work IQ requiere que los Location metadatos establezcan consultas con distinción de tiempo ("hoy" o "esta semana") en la hora local del usuario.
Conversaciones de varios turnos
Para mantener el estado de conversación, pase el contextId de la respuesta anterior en el siguiente mensaje.
{
"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."
}
]
}
}
}
Detalles clave del protocolo (A2A v1.0)
-
Sobre JSON-RPC requerido: cada solicitud debe incluir
jsonrpc,id,method,params. -
POST en la URL base: el método (
SendMessage) está dentro del cuerpo de JSON-RPC, no en la ruta de la URL. -
Partes de presencia de campo: las partes son objetos planos con uno de
text,url,rawodataestablecido; sinkinddiscriminador. -
SCREAMING_SNAKE_CASE enumeraciones: roles use
ROLE_USER/ROLE_AGENT; estados use /TASK_STATE_WORKING/TASK_STATE_COMPLETEDTASK_STATE_FAILED/ etc. -
Contenedor de resultados: las respuestas de la tarea aparecen en
result.task. -
Versión de distribución:
A2A-Version: 1.0selecciona v1.0; Omitir el encabezado (o enviarA2A-Version: 0.3) selecciona v0.3, el valor predeterminado sin encabezado.
Detección de agente
Para invocar un agente específico, pase su ID de agente a través de --agent-id. Puede encontrar el identificador de un agente de dos maneras.
Recomendado: CLI list-agents de WorkIQ (experimental)
La CLI de WorkIQ incluye un comando experimental list-agents que enumera los agentes disponibles para el usuario que ha iniciado sesión.
workiq config set experimental=true
workiq list-agents
Cada fila muestra el nombre para mostrar del agente, el proveedor y el identificador de agente (la segunda línea de cada entrada). Use ese identificador cuando --agent-id ejecute el ejemplo.
Alternativa: copiar desde la dirección URL de Microsoft 365 Copilot
- Ve al sitio web de Microsoft 365 Copilot Chat.
- Seleccione su agente en el panel de navegación izquierdo.
- El ID de agente aparece en la barra de direcciones del navegador después
/chat/agent/de :
https://m365.cloud.microsoft/chat/agent/P_c0fd1ab0-cbf3-7eb9-1a7d-2d823549ef31.8ad61c39-5b6e-447c-b26a-a64eee436502
└──────────────────────────── agent ID ─────────────────────────────────────┘
El formato es <LETTER>_<opaqueValue1>.<opaqueValue2>.
Pasar el ID de agente a la instancia de ejemplo
Importante
Trate el identificador de agente completo como una cadena opaca. No deconstruyas ni analices sus componentes. Páselo tal cual a la API.
Pasar el id. de agente como argumento al ejemplo
dotnet run -- --token WAM --agent-id <AGENT_ID> --appid <APP_ID> --tenant <TENANT_ID>
▶ Abra una solicitud de inventario específica del agente en la demostración interactiva.
Nota:
Algunos agentes de Microsoft 365 (especialmente los agentes de Word, Excel y PowerPoint en la interfaz de usuario de Copilot Chat) están diseñados para ejecutarse en el contexto de esos productos de Office y no producen respuestas útiles cuando se invocan sin encabezado a través de A2A.
Capacidades de A2A
| Funcionalidad | Estado |
|---|---|
SendMessage (sincronización) |
✅ Disponible |
Multivuelta (contextId) |
✅ Disponible |
| Partes de texto | ✅ Disponible |
| Citas | ✅ Disponible (la forma de entrega se está modernizando; consulte las notas de la versión) |
Autenticación
| Método | Plataforma | Uso |
|---|---|---|
| WAM (Administrador de cuentas de Windows) | Windows | --token WAM --appid <APP_ID> --tenant <TENANT_ID> |
| Explorador interactivo | macOS, Linux | El mismo comando: el cliente de identidad de Microsoft recurre al inicio de sesión del explorador del sistema. |
| JWT obtenido previamente | Cualquiera |
--token <JWT>(el token debe emitirse para la aplicación registrada, no para un cliente arbitrario como la CLI de Azure) |
Solución de problemas
| Síntoma | Solución |
|---|---|
401 Unauthorized |
El token aud no coincide api://workiq.svc.cloud.microsoft. Comprueba la afirmación de audiencia. |
403 Forbidden (sin error de ámbito) |
El usuario no es miembro de un plan de facturación basado en el uso. Asigne y espere de 15 a 30 min. |
403 Forbidden con Required scopes = [...] |
No se ha otorgado el consentimiento WorkIQAgent.Ask del Administración. Volver a ejecutar el consentimiento del administrador (configuración del administrador, paso 6 / CLI de Azure, paso 3). |
WAM IncorrectConfiguration (3399614466) |
El URI de redireccionamiento del agente falta en el registro de la aplicación. Vuelva a agregar ms-appx-web://microsoft.aad.brokerplugin/<APP_ID> e inténtelo de nuevo. |
| Se sigue produciendo un error en WAM después de establecer el URI de redireccionamiento | Error de coincidencia de aplicación de inquilino único + /common autoridad. Pasar --tenant <TENANT_ID> por lo que Microsoft Identity Client usa la autoridad específica del inquilino. |
AADSTS65001: consent required |
No se ha otorgado el consentimiento del Administrador. Ejecute az ad app permission admin-consent --id <APP_ID>. |
| 200 vacío / sin texto de agente | Si la licencia de Copilot del usuario se asignó recientemente, el índice puede tardar entre 15 y 30 minutos en compilarse. Si invocó un agente de Word, Excel o PowerPoint, esos agentes se ejecutan en el producto de Office y no generan respuestas A2A sin periféricos. |