Compartir por


Entrega de Copilot

Nota:

Las entregas de Copilot son vínculos profundos proporcionados por complementos que transmiten el contexto de chat, lo que permite a los usuarios realizar la transición sin problemas de su chat con Copilot para Microsoft 365 a su servicio de bot. Puede mejorar el complemento de extensión de mensajes de Copilot para entregar una conversación al copilot del motor personalizado para controlar escenarios en los que se requieren conocimientos o acciones especializados, como consultas complejas de soporte técnico de TI, consultas detalladas de productos o administración interactiva de pedidos.

En el siguiente gráfico, un usuario busca ayuda sobre los problemas técnicos con Copilot y recibe los resultados del conjunto de datos empresarial. El usuario considera insuficiente la información disponible y quiere continuar la interacción con un complemento de bot de Contoso. Cuando el usuario selecciona el bot de Contoso, se inicia un nuevo chat y la conversación continúa en el bot de Contoso. Este cambio sin problemas de Copilot al bot de Contoso, sin perder el contexto de conversación, se denomina entrega de copiloto.

El GIF muestra la entrega de la conversación entre el copiloto de Microsoft 365 y el bot de chat de Contoso.

Funcionamiento de la entrega de copilot

Un copilot del motor personalizado envía un vínculo profundo con un token de continuación a Copilot para Microsoft 365. El parámetro de consulta de vínculo profundo con un token de continuación garantiza que se haga referencia a cualquier información de los parámetros de invocación del complemento. Cuando el usuario selecciona el vínculo profundo, Copilot envía una llamada de invocación al bot con el token de continuación y, a continuación, reanuda la conversación en función del contexto. Este proceso permite una transición sin problemas de Copilot para Microsoft 365 a su copilot de motor personalizado, manteniendo la continuidad y el contexto de la conversación, lo que optimiza la experiencia del usuario.

Captura de pantalla que muestra el flujo de entrega entre el usuario, Copilot, el complemento, Teams y el bot.

Debe crear una dirección URL de vínculo profundo con un continuation parámetro de consulta para el botón de acción y asignar un token de continuación al parámetro para facilitar el proceso de entrega. Cuando el usuario selecciona el botón de acción, Microsoft Teams lee el token de continuación de la dirección URL e inicia una llamada de invocación al bot. El bot o complemento usa el token de continuación para crear una respuesta, que se muestra al usuario en la ventana de chat del complemento.

Habilitación de la entrega de copilot

Para habilitar la entrega de Copilot en Teams, siga estos pasos:

  1. Configurar una dirección URL de vínculo profundo: cree un vínculo profundo a un chat y agregue y 28:<botId>continuationToken al formato de vínculo profundo. El formato de vínculo profundo debe ser https://teams.microsoft.com/l/chat/0/0?users=28:${botId}&continuation=${continuationToken}.

    Ejemplo:

    { 
    "type": "Action.OpenUrl", 
    "title": "Handoff to Bot", 
    "url": "https://teams.microsoft.com/l/chat/0/0?users=28:${botId}&continuation=${continuationToken}" 
    }
    

    La Action.OpenUrl propiedad permite al usuario entregar la conversación a un bot. Cuando un usuario selecciona el botón de acción, se activa el vínculo profundo y abre una nueva ventana de chat con el bot. El bot recibe una llamada de invocación con una carga, que contiene el token de continuación de la dirección URL y usa el token para mantener el contexto de la conversación.

    Carga útil de ejemplo

    { 
     "name": "handoff/action", 
     "type": "invoke", 
     "timestamp": "2024-04-15T19:50:32.945Z", 
     "localTimestamp": "2024-04-15T19:50:32.945Z", 
     "id": "f:00000000-0000-0000-0000-000000000000",
     "channelId": "msteams", 
     "serviceUrl": "https://smba.trafficmanager.net/amer/", 
     "from": { 
         "id": "29:1jzORtjcfpYTLQDR9O4TyLz9LDwHskubQN1Ljc-aFO4L8dnZatjFpSw1PCGa-Mm-Jo4uLp67Lvekcjq2hkPoxdA", 
         "aadObjectId": "00000000-0000-0000-0000-000000000000" 
     }, 
     "conversation": { 
         "conversationType": "personal", 
         "tenantId": "00000000-0000-0000-0000-000000000000",
         "id": "a:13tOiSzRqeub3zaqoTHKpvOkk8Y1zFxk-g8WKdAUM2tjhTBFMt4RSuL8YWi7uwFNBmbxsyzYYktJEyfimYXYiEoplQ34aJs1y8trDb7EIcG09xOjSUieHVzFZ2b8tkagZ" 
     }, 
     "recipient": { 
         "id": "28:00000000-0000-0000-0000-000000000000", 
         "name": "NorthwindProducts" 
     }, 
     "entities": [ 
         { 
             "locale": "en-US", 
             "country": "US", 
             "platform": "Android", 
             "timezone": "America/Chicago", 
             "type": "clientInfo" 
         } 
     ], 
     "channelData": { 
         "tenant": { 
             "id": "00000000-0000-0000-0000-000000000000" 
         }, 
         "source": { 
             "name": "message" 
         }, 
         "legacy": { 
             "replyToId": "1:1_qLAAGcfze29QAWxzicc7gvR3vuNAlKvth08vavxYYs" 
         } 
     }, 
     "replyToId": "1713210583687", 
     "value": { 
         "continuation": "test-continuation-token" 
     }, 
     "locale": "en-US", 
     "localTimezone": "America/Chicago", 
     "rawTimestamp": "2024-04-15T19:50:32.945Z", 
     "rawLocalTimestamp": "2024-04-15T14:50:32.945-05:00", 
     "callerId": "urn:botframework:azure" 
    }
    

    El handoff/action tipo de invocación permite al bot transferir el control de la conversación a otro servicio o iniciar una acción específica que requiera un procesamiento adicional. Cuando el bot recibe la actividad de handoff/action invocación, usa el token de continuación para buscar cualquier información necesaria para continuar la conversación sin problemas. Esto implica recuperar el historial de conversaciones, las preferencias del usuario o cualquier otro contexto necesario para proporcionar una experiencia coherente.

  2. Controlar el tipo de invocación: en el código del bot, administre la handoff/action invocación mediante el onInvokeActivity controlador. En el código del bot, administre la handoff/action invocación mediante el onInvokeActivity controlador. Debe invalidar el onInvokeActivity método para controlar la llamada de invocación. Si la llamada de invocación se realiza correctamente, el bot debe devolver un código de estado HTTP de 200. Si se produce un error, el bot debe responder con un código de estado HTTP adecuado en el intervalo de 400 o 500. Si el usuario recibe un error, debe esperar y volver a intentarlo mientras se registran los errores en el servicio back-end.

    Nota:

    No envíe ninguna carga con esta respuesta, ya que no se representa en la ventana de chat. Las respuestas basadas en el token de continuación deben enviarse al usuario por separado.

    Este es un ejemplo de cómo controlar la llamada de invocación en searchApp.ts el archivo:

             case "handoff/action": {
               // TODO: Save the continuation token and use it to process final response to user later
              return {status: 200}; // return just the http status
             }
    

    Cuando el bot recibe la llamada de invocación, context.activity.value.continuation contiene el continuationToken que se estableció en la dirección URL del vínculo profundo. Si la aplicación no está instalada durante la entrega, el usuario se redirige a la Tienda Teams para instalar la aplicación.

Procedimientos recomendados

  • El bot debe notificar a los usuarios cuando se les dirija al chat del bot después de seleccionar el botón de acción, ya que no hay ninguna indicación visual. Esto ayuda a administrar las expectativas, ya que podría haber un retraso antes de que el bot devuelva una respuesta debido a la latencia de red y al tiempo de procesamiento. Por ejemplo, el bot puede enviar una serie de actividades para mantener al usuario informado del progreso:

    await context.sendActivities([
      {
        type: ActivityTypes.Message,
        text: "Continuing conversation from copilot...",
      },
      { type: ActivityTypes.Typing },
      { type: "delay", value: 1000 },
      {
        type: ActivityTypes.Message,
        text: `Fetching more details using the continuation token passed: ${continuationToken}`,
      },
      { type: ActivityTypes.Typing },
      { type: "delay", value: 4000 },
      {
        type: ActivityTypes.Message,
        text: `Handoff successful!`,
      }
    ]);
    
    
  • Se recomienda administrar el ciclo de vida del token de continuación para asegurarse de que expira después de un período razonable y controlar escenarios en los que el usuario reproduce la solicitud de token de continuación. Por ejemplo, si aparece el mismo token, haga saber al usuario que necesita iniciar una nueva conversación con el bot porque la entrega del copiloto no puede continuar.

Ejemplos de código

Ejemplo de nombre Descripción Node.js
Extensión de mensaje de inventario de Northwind Este ejemplo es una extensión de mensaje de Teams que funciona como complemento para Microsoft 365 Copilot. Cuenta con entrega copilot y permite a los usuarios realizar la transición de su chat de Copilot para Microsoft 365 a Northwind Database. View