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.
Importante
El IQ de trabajo está en versión preliminar pública. Las características y las API pueden cambiar antes de la disponibilidad general y no tienen un acuerdo de nivel de servicio establecido.
Work IQ es la interfaz nativa de inteligencia artificial de Microsoft para La inteligencia artificial de Microsoft 365. Permite crear aplicaciones que pueden consultar correos electrónicos, reuniones, archivos y conocimientos de la organización mediante lenguaje natural; base en los datos de Microsoft 365.
En este inicio rápido se describe el protocolo agente a agente (A2A). A2A es un estándar abierto para la comunicación del agente y admite el modo sincrónico en work IQ Gateway. La compatibilidad con el modo de streaming (eventos enviados por el servidor (SSE)) estará disponible próximamente.
Requisitos previos
- Un usuario con una licencia de Microsoft 365 Copilot
- SDK de .NET versión 8 o posterior para ejecutar el código de ejemplo
- Un usuario con acceso de administrador de la organización para la configuración de Work IQ de un solo uso
Habilitación de Work IQ API en su organización
⏱️ ~5 minutos, una sola vez por organización.
En esta sección se crean dos cosas en la organización:
- La entidad de servicio Work IQ (aprovisiona el recurso Work IQ para que los usuarios puedan solicitar tokens para él)
- Un registro de aplicación que el código de cliente usa para autenticarse, con el
WorkIQAgent.Askpermiso delegado
Usted (o el administrador de la organización) puede usar el Centro de administración Microsoft Entra o la CLI de Azure para completar este paso.
Paso 1. Creación de la entidad de servicio de Work IQ (Explorador de Graph)
Vaya al Explorador de Graph e inicie sesión con una cuenta de administrador.
Establezca el método en POST y la dirección URL en
https://graph.microsoft.com/v1.0/servicePrincipals. El Explorador de Graph expone los ámbitos pertinentes en función de la dirección URL y el método, por lo que la dirección URL debe especificarse antes de dar su consentimiento en el paso siguiente.Seleccione Modificar permisos y dar su consentimiento a
Application.ReadWrite.All. Este paso es una acción de administrador única y concede el ámbito solo para su propia sesión de Graph Explorer. No cambia los permisos de toda la organización.Escriba lo siguiente en el cuerpo de la solicitud.
{ "appId": "fdcc1f02-fc51-4226-8753-f668596af7f7" }Seleccione Ejecutar consulta. Una respuesta creada en 201 confirma que se ha realizado correctamente. Un error de conflicto significa que la entidad de servicio ya existe: está bien continuar con el paso siguiente.
Paso 2. Creación del registro de la aplicación
- Ve al Centro de administración Microsoft Entra. En el panel de navegación izquierdo, seleccione Entra id. y, a continuación, Registros de aplicaciones.
- Seleccione Nuevo registro.
- Agregue un nombre descriptivo, establezca Tipos de cuenta admitidossolo en Cuentas en este directorio organizativo. 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.
Ahora debe tener dos valores: APP_ID y TENANT_ID. Pase estos valores al ejemplo a través de --appid y --tenant.
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 e intercambie el token del usuario a través del 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.
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 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 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 en versión preliminar 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. Hay dos maneras de encontrar el identificador de un agente.
Recomendado: CLI list-agents de WorkIQ (experimental)
La CLI de WorkIQ incluye un comando experimental list-agents que imprime 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 del agente está 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) |
Al usuario le falta Microsoft 365 Copilot licencia. 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. |