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
- Habilitación del inquilino para Work IQ
- SDK de .NET versión 8 o posterior para ejecutar el código de ejemplo
Registrar la aplicación en Microsoft Entra
Registre una aplicación con permisos para acceder a Work IQ. Al registrar la aplicación, obtiene dos valores: APP_ID y TENANT_ID. Use estos valores con el ejemplo A2A para probar la configuración del inquilino.
Sugerencia
¿Crear un agente del lado servidor (aplicación web)? En este inicio rápido se usa un registro de cliente público (móvil o escritorio) para la ruta de acceso más sencilla a un ejemplo 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 al usuario y, a continuación, reenvía su identidad a Work IQ), use un registro de cliente confidencial con un certificado o secreto de cliente. Intercambiar 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.
- Ve al Centro de administración Microsoft Entra. En el panel de navegación izquierdo, seleccione Entra id. y, a continuación, seleccione Registros de aplicaciones.
- Seleccione Nuevo registro.
- Agregue un nombre descriptivo, establezca Tipos de cuenta admitidosen Solo cuentas en este directorio organizativo y seleccione Registrar.
- Copie el identificador de aplicación (cliente). Este valor es .
APP_ID - Seleccione Autenticación. Seleccione Agregar una plataforma (o Agregar URI de redirección). 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 personalizados, agregue los dos URI siguientes uno a uno (cada uno en su propia fila):
http://localhost-
ms-appx-web://microsoft.aad.brokerplugin/<APP_ID>(donde<APP_ID>es 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, a continuación, seleccione Permisos delegados. Seleccione WorkIQAgent.Ask y, a continuación, seleccione Agregar permisos. - Seleccione Conceder consentimiento de administrador para [su inquilino]. Revise el cuadro de diálogo de confirmación y seleccione Sí.
- Copie el identificador de directorio (inquilino) de la página de información general de 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 de A2A
El protocolo agente a agente (A2A) es un estándar abierto para la comunicación del agente. Work IQ admite A2A v1.0 (este inicio rápido) y v0.3. El A2A-Version encabezado de solicitud controla el envío 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 (se mantiene como el valor predeterminado sin encabezado para la compatibilidad con versiones anteriores con clientes v0.3 existentes)
Obtener el código de ejemplo
Clone el repositorio de ejemplo mediante 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 el ejemplo se dotnet/a2a usa el SDK de .NET de A2A.
cd dotnet/a2a
dotnet run -- --token WAM --appid <APP_ID> --tenant <TENANT_ID>
Ejecute el ejemplo (HTTP sin formato, sin SDK)
En el ejemplo se dotnet/a2a-raw muestra el protocolo de conexión sin abstracción del SDK. El uso de este ejemplo es útil para migrar 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 a través de JSON-RPC en https://workiq.svc.cloud.microsoft/a2a/. (A2A v1.0 también define un enlace REST en /v1/message:send; El IQ de trabajo podría exponer este enlace REST en una actualización futura).
Puerta de enlace de IQ de trabajo
- Punto de conexión:
https://workiq.svc.cloud.microsoft/a2a/ - Público de token:
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 tiene como valor predeterminado 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 con result.task que 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."
}
]
}
]
}
}
}
El IQ de trabajo requiere los Location metadatos para poner en tierra las consultas sensibles a la hora ("hoy" o "esta semana") en la hora local del usuario.
Conversaciones de varios turnos
Para mantener el estado de la conversación, pase de contextId la respuesta anterior en el mensaje siguiente.
{
"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 del protocolo clave (A2A v1.0)
-
Se requiere un sobre JSON-RPC: cada solicitud debe incluir
jsonrpc,id,method,params. -
POST a dirección URL base: el método (
SendMessage) está dentro del cuerpo JSON-RPC, no la ruta de acceso de la dirección URL. -
Partes de presencia de campo: las partes son objetos planos con uno de
text,url,rawodataestablecido; sinkinddiscriminador. -
SCREAMING_SNAKE_CASE enumeraciones: los roles usan
ROLE_USER/ROLE_AGENT; los estados usan /TASK_STATE_WORKING/TASK_STATE_COMPLETEDTASK_STATE_FAILED/, etc. -
Contenedor de resultados: las respuestas de tarea aparecen en
result.task. -
Distribución de versiones:
A2A-Version: 1.0selecciona v1.0; Si se omite el encabezado (o se envíaA2A-Version: 0.3), se selecciona v0.3, el valor predeterminado sin encabezado.
Detección de agentes
Para invocar un agente específico, pase su identificador 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, el proveedor y el identificador del agente del agente (la segunda línea de cada entrada). Use ese identificador con --agent-id al ejecutar el ejemplo.
Alternativa: copia desde la dirección URL de Microsoft 365 Copilot
- Vaya al sitio web de Microsoft 365 Copilot Chat: https://m365.cloud.microsoft/chat/.
- Seleccione el agente en el panel de navegación izquierdo.
- El identificador de agente aparece en la barra de direcciones del explorador después de
/chat/agent/:
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 identificador de agente al ejemplo
Importante
Trate todo el identificador de agente como una cadena opaca. No deconstrua ni analice sus componentes. Pásela tal y como está a la API.
Pasar el identificador de agente como argumento al ejemplo
dotnet run -- --token WAM --agent-id <AGENT_ID> --appid <APP_ID> --tenant <TENANT_ID>
Nota:
Algunos agentes de Microsoft 365 (especialmente 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 generan respuestas útiles cuando se invocan de forma descabezada a través de A2A.
funcionalidades de A2A
| Funcionalidad | Estado |
|---|---|
SendMessage (sincronización) |
✅ Disponible |
Multiturno (contextId) |
✅ Disponible |
| Elementos 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 | Mismo comando: Microsoft Identity Client vuelve a un 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 con api://workiq.svc.cloud.microsoft. Compruebe la notificació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 entre 15 y 30 minutos. |
403 Forbidden con Required scopes = [...] |
Administración no se concedió el consentimiento.WorkIQAgent.Ask Volver a ejecutar el consentimiento del administrador (configuración del administrador, paso 6/ Azure paso 3 de la CLI). |
WAM IncorrectConfiguration (3399614466) |
Falta el URI de redireccionamiento del agente en el registro de la aplicación.
ms-appx-web://microsoft.aad.brokerplugin/<APP_ID> Leído e inténtelo de nuevo. |
| WAM sigue generando un error después de establecer el URI de redirección | Error de coincidencia entre la aplicación de un solo inquilino y /common la autoridad. Pase --tenant <TENANT_ID> para que Microsoft Identity Client use la entidad específica del inquilino. |
AADSTS65001: consent required |
Administración consentimiento no se ha concedido. Ejecute az ad app permission admin-consent --id <APP_ID>. |
| Texto vacío de 200 o sin agente | Si se asignó recientemente la licencia de Copilot del usuario, el índice puede tardar entre 15 y 30 minutos en compilarse. Si invocó un agente de Word/Excel/PowerPoint, esos agentes se ejecutan en el producto de Office y no generan respuestas A2A sin cabeza. |