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.
La API de Línea Directa actúa como interfaz de comunicación para que las aplicaciones cliente interactúen con agentes conversacionales construidos con Copilot Studio. La API de Línea Directa facilita la transmisión de mensajes entre la aplicación cliente y el agente a través de flujos WebSocket o solicitudes HTTP. Para las pruebas de rendimiento, Direct Line permite que las herramientas de pruebas de carga replicen el comportamiento real del usuario, generen carga y midan los tiempos de respuesta.
Comunicarse con Direct Line usando WebSockets
Los agentes conversacionales construidos con Copilot Studio se despliegan en aplicaciones web ya sea como iframes incrustados o mediante un lienzo personalizado. Ambas opciones de despliegue utilizan comunicación WebSocket con Direct Line. Si tu agente conversacional se despliega en una aplicación usando uno de estos métodos, tu script de prueba de rendimiento debería usar comunicación WebSocket para generar una carga que se asemeje al comportamiento real del usuario y medir el rendimiento con un alto grado de confianza.
Las aplicaciones cliente que usan comunicación por línea directa y WebSocket deben seguir este flujo:
- Para iniciar una conversación, una aplicación cliente debe primero obtener un token de conversación. Si tu agente está configurado con un secreto Direct Line, obtén un token llamando al punto final regional de Direct Line. Los tokens para agentes que no usan secretos pueden obtenerse desde el punto final del token.
- La aplicación cliente inicia una conversación usando el token y recibe un ID de Conversación y una URL de flujo WebSocket.
- Los mensajes de usuario se envían enviando una solicitud HTTP POST con el ID de Conversación.
- Los mensajes del agente conversacional se reciben a través del flujo WebSocket.
Comunicarse con Direct Line usando HTTP GET
Si tu herramienta de pruebas de carga no puede usar comunicación WebSocket, o si tu aplicación orientada al cliente no utiliza comunicación WebSocket, puedes recibir actividades enviando HTTP GET en su lugar. Como se muestra en el siguiente diagrama, el flujo de inicio de conversación no cambia.
Medir los tiempos de respuesta
Para evaluar cómo afecta la carga a la experiencia del usuario, asegúrate de que los scripts de prueba de rendimiento registren y reporten el tiempo de respuesta para los siguientes pasos:
| Step | Impacto en la experiencia del usuario |
|---|---|
| Generar token | El tiempo que tarda en iniciar una nueva conversación |
| Iniciar conversación | El tiempo que tarda en iniciar una nueva conversación |
| Actividad de envío | El tiempo que tarda en enviar un mensaje de usuario nuevo (no incluye la respuesta del agente) |
| Recibir actividades/Recibir actividades | El tiempo que tarda un agente en responder |
Rastrear los tiempos de respuesta para Generar Token, Iniciar Conversación y Enviar Actividad es sencillo para las herramientas de prueba de carga, ya que estos pasos utilizan solicitudes HTTP estándar. Sin embargo, medir el tiempo que tarda un agente en responder a los mensajes de usuario es más complejo, debido a las siguientes razones:
Las actividades de envío y recepción a través de Línea Directa siguen un patrón asíncrono. Cuando un mensaje de usuario se envía usando una solicitud de Actividad de Envío, la respuesta no es un mensaje del agente. En cambio, simplemente confirma que el mensaje del usuario ha sido publicado correctamente.
Según su diseño, un agente conversacional puede enviar cualquier número de mensajes de vuelta en respuesta a un mensaje de usuario. Por lo tanto, en la mayoría de los casos, deberías medir el tiempo que tarda un agente en responder como el tiempo que transcurre entre un mensaje de usuario y el último mensaje de agente. En el siguiente ejemplo, un solo mensaje de usuario activa tres mensajes agente, con llamadas a la API ejecutándose entre medias. Cada mensaje tarda unos dos segundos en responder; sin embargo, desde la perspectiva del usuario, el agente tarda seis segundos en responder a la petición del usuario.
Identifica la última respuesta del agente
Para medir el tiempo que tarda un agente en completar sus respuestas, tu script de pruebas de rendimiento necesita:
- Identifica el último mensaje del agente que sigue a un mensaje de usuario
- Calcula la diferencia de tiempo entre ambos
El protocolo subyacente que utiliza Copilot Studio no tiene un concepto de 'última respuesta', ya que tanto agentes como usuarios pueden enviar mensajes en cualquier momento. Por lo tanto, tu script de pruebas de rendimiento debe asumir que si el agente no envía un mensaje dentro de un plazo determinado, no se enviarán más mensajes hasta que se envíe el siguiente mensaje de usuario. La implementación de esta lógica varía según cómo tu script se comunique con Direct Line.
Utiliza WebSockets
Al comunicarse con Direct Line a través de WebSockets, suponga que el agente no envía más mensajes cuando no se pueden leer más tramas desde el WebSocket. Puede que esto se indique con un tiempo de espera al intentar leer el siguiente fotograma, aunque el comportamiento exacto depende de tu implementación. Para una implementación de referencia que utilice WebSockets, considera usar HTTP GET.
Usa HTTP GET
Los scripts de prueba de rendimiento que usan HTTP GET en lugar de WebSockets deberían consultar el endpoint de Actividades para obtener el conjunto completo de mensajes de usuario y agente. Al hacer encuestas, asegúrate de dejar tiempo suficiente para que tu agente responda. Por ejemplo, si tu agente necesita llamar a una API de backend para responder a una consulta de usuario, y la API tarda hasta 5 segundos en responder, tu script no debería consultar el endpoint de Actividades hasta que hayan pasado 5 segundos.
La siguiente carga útil simplificada representa la respuesta que recibe el endpoint de Actividades:
[
{
"type": "message",
"id": "98SryQaHr2rGthOGpChPK2-us|0000012",
"timestamp": "2025-01-07T09:12:22.0329242Z",
"from": {
"id": "a688eb7d-092a-42a8-8ef5-73123b9c2aaa",
"name": ""
},
"conversation": {
"id": "98SryQaHr2rGthOGpChPK2-us"
},
"text": "I also want to set up a new account",
},
{
"type": "message",
"id": "98SryQaHr2rGthOGpChPK2-us|0000017",
"timestamp": "2025-01-07T09:12:24.5478686Z",
"from": {
"id": "4b56bfa5-5574-5bb3-7aa3-99b8798b9d90",
"name": "Load Testing",
"role": "bot"
},
"conversation": {
"id": "98SryQaHr2rGthOGpChPK2-us"
},
"text": "Sure, please bear with me as I set up your new account",
"replyToId": "98SryQaHr2rGthOGpChPK2-us|0000012",
},
{
"type": "message",
"id": "98SryQaHr2rGthOGpChPK2-us|0000018",
"timestamp": "2025-01-07T09:12:33.1960413Z",
"from": {
"id": "4b56bfa5-5574-5bb3-7aa3-99b8798b9d90",
"name": "Load Testing",
"role": "bot"
},
"conversation": {
"id": "98SryQaHr2rGthOGpChPK2-us"
},
"text": "Almost done! Thank you for your patience",
"replyToId": "98SryQaHr2rGthOGpChPK2-us|0000012",
},
{
"type": "message",
"id": "98SryQaHr2rGthOGpChPK2-us|0000019",
"timestamp": "2025-01-07T09:12:41.9166159Z",
"from": {
"id": "4b56bfa5-5574-5bb3-7aa3-99b8798b9d90",
"name": "Load Testing",
"role": "bot"
},
"conversation": {
"id": "98SryQaHr2rGthOGpChPK2-us"
},
"text": "All done! Your new account is now active.",
"inputHint": "acceptingInput",
"replyToId": "98SryQaHr2rGthOGpChPK2-us|0000012"
}
]
Cuando analizes la carga útil y calcules los tiempos de respuesta, considera las siguientes directrices:
- Los mensajes del agente tienen la propiedad
role: bot, mientras que los mensajes del usuario no tienen ningunarolepropiedad. - Los mensajes de agente enviados en respuesta a mensajes de usuario tienen la propiedad
replyToId, que tiene un valor de laidpropiedad del mensaje de usuario. - Puedes calcular los tiempos de respuesta del agente como la diferencia de tiempo entre el mensaje del usuario y el último mensaje del agente que responde al mensaje del usuario.