Obtención de notificaciones de cambio para interacciones de IA de Copilot mediante Microsoft Graph
Las notificaciones de cambio le permiten suscribirse a Copilot aiInteractions en Microsoft 365. Puede recibir una notificación cada vez que se produzca una nueva consulta de usuario a Copilot o cuando Copilot responda al usuario. También puede obtener los datos de recursos en las notificaciones, lo que le permite evitar llamar a la API para obtener la carga.
Nota:
Si solicita una expiración de suscripciónDateTime que tenga más de una hora en el futuro, debe suscribirse a las notificaciones de ciclo de vida mediante la inclusión de una propiedad lifecycleNotificationUrl en la solicitud de suscripción; De lo contrario, se produce un error en la solicitud de suscripción con el siguiente mensaje de error: lifecycleNotificationUrl es una propiedad necesaria para la creación de suscripciones en este recurso cuando el valor expirationDateTime se establece en mayor que 1 hora.
Suscribirse a interacciones de IA de Copilot para un usuario determinado (versión preliminar)
Para obtener notificaciones de cambio para las interacciones de IA de Copilot de las que forma parte un usuario determinado, suscríbase a /copilot/users/{user-id}/interactionHistory/getAllEnterpriseInteractions
. Este recurso permite incluir datos de recursos en la notificación.
Permisos
Tipo de permiso | Permisos (de menos a más privilegiados) |
---|---|
Delegado (cuenta profesional o educativa) | AiEnterpriseInteraction.Read |
Delegado (cuenta personal de Microsoft) | No admitida. |
Aplicación | AiEnterpriseInteraction.Read.User*, AiEnterpriseInteraction.Read.All |
Nota: Los permisos marcados con * se admiten como parte del consentimiento específico del recurso.
Requisitos de licencias
Para acceder a este recurso de notificación de cambios, el usuario de la ruta de acceso del recurso debe tener habilitados todos los siguientes identificadores de plan de servicio de Copilot:
- Conectores de Microsoft Graph en Microsoft 365 Copilot: 82d30987-df9b-4486-b146-198b21d164c7
- Búsqueda inteligente: 931e4a88-a67f-48b5-814f-16a5f1e6028d
- Microsoft 365 Copilot en Microsoft Teams: b95945de-b3bd-46db-8437-f2beb6ea2347
- Microsoft 365 Copilot en aplicaciones de productividad: a62f8878-de10-42f3-b68f-6149a25ceb97
- Microsoft 365 Copilot Chat: 3f30311c-6b1e-48a4-ab79-725b469da960
- Conectores de Power Platform en Microsoft 365 Copilot: 89f1c4c8-0878-40f7-804d-869c9128ab5d
Ejemplo: Suscribirse a interacciones de IA de Copilot para un usuario determinado
POST https://graph.microsoft.com/beta/subscriptions
Content-Type: application/json
{
"changeType": "created,deleted,updated",
"notificationUrl": "https://webhook.azurewebsites.net/api/resourceNotifications",
"resource": "/copilot/users/{user-id}/interactionHistory/getAllEnterpriseInteractions",
"includeResourceData": true,
"encryptionCertificate": "{base64encodedCertificate}",
"encryptionCertificateId": "{customId}",
"expirationDateTime": "2024-09-19T11:00:00.0000000Z",
"clientState": "{secretClientState}"
}
Suscribirse a interacciones de IA de Copilot en el inquilino (versión preliminar)
Para obtener notificaciones de cambio para las interacciones de IA de Copilot en el inquilino, suscríbase a /copilot/interactionHistory/getAllEnterpriseInteractions
. Este recurso permite incluir datos de recursos en la notificación.
Permisos
Tipo de permiso | Permisos (de menos a más privilegiados) |
---|---|
Delegado (cuenta profesional o educativa) | No admitida. |
Delegado (cuenta personal de Microsoft) | No admitida. |
Aplicación | AiEnterpriseInteraction.Read.All |
Requisitos de licencias
Para acceder a este recurso de notificación de cambios, el inquilino debe tener todos los siguientes identificadores de plan de servicio de Copilot aprovisionados y en estado activo:
- Conectores de Microsoft Graph en Microsoft 365 Copilot: 82d30987-df9b-4486-b146-198b21d164c7
- Búsqueda inteligente: 931e4a88-a67f-48b5-814f-16a5f1e6028d
- Microsoft 365 Copilot en Microsoft Teams: b95945de-b3bd-46db-8437-f2beb6ea2347
- Microsoft 365 Copilot en aplicaciones de productividad: a62f8878-de10-42f3-b68f-6149a25ceb97
- Microsoft 365 Copilot Chat: 3f30311c-6b1e-48a4-ab79-725b469da960
- Conectores de Power Platform en Microsoft 365 Copilot: 89f1c4c8-0878-40f7-804d-869c9128ab5d
Ejemplo: Suscripción a interacciones de IA de Copilot en el inquilino
POST https://graph.microsoft.com/beta/subscriptions
Content-Type: application/json
{
"changeType": "created,deleted,updated",
"notificationUrl": "https://webhook.azurewebsites.net/api/resourceNotifications",
"resource": "/copilot/interactionHistory/getAllEnterpriseInteractions",
"includeResourceData": true,
"encryptionCertificate": "{base64encodedCertificate}",
"encryptionCertificateId": "{customId}",
"expirationDateTime": "2024-08-10T11:00:00.0000000Z",
"clientState": "{secretClientState}"
}
Uso de $filter para recibir una notificación de solo un subconjunto de interacciones de IA de Copilot
Puede usar el $filter
parámetro de consulta OData para filtrar las interacciones de IA de Copilot que no son necesarias. Por ejemplo, para suscribirse a interacciones de IA de Copilot solo para una aplicación de Microsoft 365 determinada, como Microsoft Teams, anexe ?$filter=appClass eq 'IPM.SkypeTeams.Message.Copilot.Teams'
al final de la cadena de recursos. Para suscribirse a todas las interacciones de IA en las que conversationType no es Microsoft BizChat, anexe ?$filter=conversationType ne 'bizchat'
.
Nota:
Actualmente, el $filter
parámetro solo se puede usar en las propiedades de nivel superior del recurso aiInteraction . No se admite el filtrado de propiedades anidadas; por ejemplo, ?$filter=from/user/id eq '48902e20-56dc-48cf-ab15-0b65e15dda67'
no se admite actualmente.
Ejemplos
Ejemplo 1: Suscribirse a interacciones de IA de Copilot solo para Microsoft Teams
En el ejemplo siguiente se muestra cómo suscribirse a las interacciones de IA de Copilot solo para una aplicación determinada de Microsoft 365, como Microsoft Teams.
POST https://graph.microsoft.com/beta/subscriptions
Content-Type: application/json
{
"changeType": "created,deleted,updated",
"notificationUrl": "https://webhook.azurewebsites.net/api/resourceNotifications",
"resource": "/copilot/interactionHistory/getAllEnterpriseInteractions?$filter=appClass eq 'IPM.SkypeTeams.Message.Copilot.Teams'",
"includeResourceData": true,
"encryptionCertificate": "{base64encodedCertificate}",
"encryptionCertificateId": "{customId}",
"expirationDateTime": "2024-08-10T11:00:00.0000000Z",
"clientState": "{secretClientState}"
}
Ejemplo 2: Suscribirse a todas las interacciones de IA en las que conversationType no es Microsoft BizChat
En el ejemplo siguiente se muestra cómo suscribirse a todas las interacciones de IA en las que conversationType no bizchat
es .
POST https://graph.microsoft.com/beta/subscriptions
Content-Type: application/json
{
"changeType": "created,deleted,updated",
"notificationUrl": "https://webhook.azurewebsites.net/api/resourceNotifications",
"resource": "/copilot/interactionHistory/getAllEnterpriseInteractions?$filter=conversationType ne 'bizchat'",
"includeResourceData": true,
"encryptionCertificate": "{base64encodedCertificate}",
"encryptionCertificateId": "{customId}",
"expirationDateTime": "2024-08-10T11:00:00.0000000Z",
"clientState": "{secretClientState}"
}
Notificaciones con datos de recursos
Para las notificaciones con datos de recursos, la carga es similar a la siguiente.
{
"value": [
{
"subscriptionId": "10493aa0-4d29-4df5-bc0c-ef742cc6cd7f",
"changeType": "created",
"clientState": "<<--SpecifiedClientState-->>",
"subscriptionExpirationDateTime": "2025-02-02T10:30:34.9097561-08:00",
"resource": "copilot/interactionHistory/interactions('1731701801008')",
"resourceData": {
"id": "1731701801008",
"@odata.type": "#Microsoft.Graph.aiInteraction",
"@odata.id": "copilot/interactionHistory/interactions('1731701801008')"
},
"encryptedContent": {
"data": "<<--EncryptedContent-->",
"dataKey": "<<--EnryptedDataKeyUsedForEncryptingContent-->>",
"encryptionCertificateId": "<<--IdOfTheCertificateUsedForEncryptingDataKey-->>",
"encryptionCertificateThumbprint": "<<--ThumbprintOfTheCertificateUsedForEncryptingDataKey-->>"
},
"tenantId": "<<--TenantForWhichNotificationWasSent-->>"
}
],
"validationTokens": [
"<<--ValidationTokens-->>"
]
}
Para obtener más información sobre cómo validar tokens y descifrar la carga, consulte Configurar notificaciones de cambio que incluyan datos de recursos.
La carga de notificación descifrada es similar a la siguiente. La carga se ajusta al esquema aiInteraction .
{
"id": "1731701801008",
"sessionId": "19:icg2t_AWPYJyJ2oDLB_CZyh29QXpZvbdpljKf7qKotk1@thread.v2",
"requestId": "7336770c-fb25-48ac-8303-4493ad11ed71",
"appClass": "IPM.SkypeTeams.Message.Copilot.Teams",
"interactionType": "aiResponse",
"conversationType": "appchat",
"etag": "1731701801008",
"createdDateTime": "2024-11-15T20:16:41.008Z",
"locale": "en-us",
"contexts": [
{
"contextReference": "https://microsoft.teams.com/threads/19:meeting_YjQ4NThlNzUtMjEyNC00MjFlLTk0ODMtZTc2M2Q5MDVlNTE4@thread.v2",
"displayName": "Teams Meeting Copilot",
"contextType": "TeamsMeeting"
}
],
"from": {
"@odata.type": "#microsoft.graph.chatMessageFromIdentitySet",
"device": null,
"user": null,
"application": {
"@odata.type": "#microsoft.graph.teamworkApplicationIdentity",
"id": "fb8d773d-7ef8-4ec0-a117-179f88add510",
"displayName": "Copilot in Teams",
"applicationIdentityType": "bot"
}
},
"body": {
"contentType": "text",
"content": "I use the transcript to generate insights, and need to hear more discussion before I can get to work. Please try again in a few minutes.<attachment id=\"19:meeting_YjQ4NThlNzUtMjEyNC00MjFlLTk0ODMtZTc2M2Q5MDVlNTE4@thread.v2\"></attachment>"
},
"attachments": [
{
"attachmentId": "19:meeting_YjQ4NThlNzUtMjEyNC00MjFlLTk0ODMtZTc2M2Q5MDVlNTE4@thread.v2",
"contentType": "reference",
"contentUrl": "https://microsoft.teams.com/threads/19:meeting_YjQ4NThlNzUtMjEyNC00MjFlLTk0ODMtZTc2M2Q5MDVlNTE4@thread.v2",
"content": null,
"name": "Teams Meeting Copilot"
}
],
"links": [],
"mentions": []
}
Notificaciones con datos de recursos
Las notificaciones sin datos de recursos le proporcionarán suficiente información para realizar llamadas GET y obtener el contenido del mensaje. Las suscripciones para notificaciones sin datos de recursos no requieren un certificado de cifrado (porque Microsoft Graph no envía los datos de recursos reales).
La siguiente carga descifrada describe la información enviada en una solicitud de notificaciones sin datos de recursos. Esta carga concreta significa que se ha creado una nueva interacción.
{
"subscriptionId": "10493aa0-4d29-4df5-bc0c-ef742cc6cd7f",
"changeType": "created",
"clientState": "<<--SpecifiedClientState-->>",
"subscriptionExpirationDateTime": "2025-02-02T10:30:34.9097561-08:00",
"resource": "copilot/interactionHistory/interactions('1731701801008')",
"resourceData": {
"id": "1731701801008",
"@odata.type": "#Microsoft.Graph.aiInteraction",
"@odata.id": "copilot/interactionHistory/interactions('1731701801008')"
}
}