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.
Las interacciones de un agente pueden ser mediante texto, voz, imágenes o vídeo. Procesa la entrada del usuario para comprender su solicitud y evalúa la entrada para realizar tareas relevantes. Un agente puede solicitar información o habilitar el acceso a los servicios, y responde al usuario.
Ámbitos de agente
Los agentes en Microsoft Teams pueden formar parte de una conversación individual, un chat grupal o un canal de un equipo. Cada ámbito ofrece oportunidades y desafíos únicos para el agente conversacional.
| En un canal | En un chat de grupo | En un chat individual |
|---|---|---|
| Alcance masivo | Menos miembros | Manera tradicional |
| Interacciones individuales concisas | @mention Al agente | Agentes de Q&A |
| @mention Al agente | Similar al canal | Agentes que cuentan chistes y toman notas |
En un canal
Los canales contienen conversaciones en hilos entre varias personas, incluso hasta 2000. Esto potencialmente le da a su agente un alcance masivo, pero las interacciones individuales deben ser concisas. Las interacciones tradicionales de varios turnos no funcionan. En su lugar, debe usar tarjetas o cuadros de diálogo interactivos (denominados módulos de tareas en TeamsJS v1.x) o mover la conversación a una conversación uno a uno para recopilar mucha información. El agente solo tiene acceso a los @mentionedmensajes en los que está . Puede recuperar mensajes adicionales de la conversación con Microsoft Graph y los permisos a nivel de organización.
Los agentes funcionan mejor en un canal en los siguientes casos:
- Notificaciones, especialmente si se proporciona una tarjeta interactiva para que los usuarios puedan obtener información adicional.
- Escenarios de comentarios, como sondeos y encuestas.
- El ciclo de solicitud o respuesta única resuelve las interacciones y los resultados son útiles para varios miembros de la conversación.
- Agentes sociales o divertidos, donde obtienes una imagen de gato increíble, eliges un ganador al azar, etc.
En un chat de grupo
Los chats de grupo son conversaciones entre tres o más personas que no se desarrollan en hilos. Tienden a tener menos miembros que un canal y son más transitorios. De forma similar a un canal, el agente solo tiene acceso a los mensajes donde está @mentioned directamente.
Los agentes que funcionan mejor en un canal también funcionan mejor en un chat grupal.
En un chat individual
El chat uno a uno es una forma tradicional para que un agente conversacional interactúe con un usuario. Algunos ejemplos de agentes conversacionales uno a uno son:
- Agentes de Q&A
- agentes que inician flujos de trabajo en otros sistemas.
- agentes que cuentan chistes.
- agentes que toman notas. Antes de crear agentes uno a uno, considere si una interfaz basada en conversaciones es la mejor manera de presentar su funcionalidad.
Controlador de actividades y lógica de agente
Para crear una aplicación de agente que se adapte a sus necesidades, es esencial comprender el controlador de actividades de Microsoft Teams y la lógica del agente. Estos dos componentes clave trabajan juntos para organizar la lógica conversacional.
Controlador de actividades de Teams: Procesa eventos e interacciones específicos de Teams, como la creación de canales, la adición de miembros del equipo y otras acciones exclusivas del entorno de Teams. En el SDK de Teams v2, los controladores se registran directamente en una
Appinstancia en lugar de a través de la herencia de clases.Lógica del agente: el
Appobjeto alberga la lógica conversacional del agente y es responsable de tomar decisiones basadas en la entrada del usuario. Las actividades entrantes se enrutan al controlador adecuado en función del tipo de actividad y la coincidencia de patrones opcionales.
Controlador de actividades de Teams
El controlador de actividades es el núcleo de la funcionalidad de un agente, administrando y procesando las interacciones del usuario. En el SDK de Teams v2:
- Crea una instancia de un
Appobjeto y registra controladores en él. - Los controladores reciben un objeto de contexto con tipo (
IActivityContexten TypeScript,IContext<TActivity>en C#,ActivityContext[TActivity]en Python). - Las respuestas y los mensajes proactivos se envían a través de
ctx.reply()octx.send().
Cuando un agente de Teams recibe una actividad, el SDK la enruta a través del controlador registrado. Los eventos específicos de Teams (ciclo de vida del canal, cambios de miembros, etc.) se presentan como eventos con nombres distintos, por lo que no es necesario inspeccionarlos channelData.eventType manualmente.
Nota:
Si la actividad de un agente tarda más de 15 segundos en procesarse, Teams envía una solicitud de reintento al punto de conexión del agente, por lo que es posible que vea solicitudes duplicadas.
Fragmentos de código del controlador de actividades
Los siguientes fragmentos de código muestran controladores de actividad de Teams para eventos de ciclo de vida de canal y equipo.
Los agentes se compilan mediante el Microsoft.Teams.Apps paquete. Crea instancias de registros de controladores de App cadenas mediante métodos de extensión como OnMessage(), OnChannelCreated(), etc. Todos los controladores reciben un IContext<TActivity> objeto.
OnChannelCreated
using Microsoft.Teams.Apps;
WebApplicationBuilder builder = WebApplication.CreateSlimBuilder(args);
builder.Services.AddTeamsBotApplication();
WebApplication app = builder.Build();
TeamsBotApplication teams = app.UseTeamsBotApplication();
teams.OnChannelCreated(async (context, cancellationToken) =>
{
var channel = context.Activity.ChannelData.Channel;
var team = context.Activity.ChannelData.Team;
// Code logic here
});
OnChannelDeleted
teams.OnChannelDeleted(async (context, cancellationToken) =>
{
// Code logic here
});
OnChannelRenamed
teams.OnChannelRenamed(async (context, cancellationToken) =>
{
// Code logic here
});
OnTeamRenamed
teams.OnTeamRenamed(async (context, cancellationToken) =>
{
// Code logic here
});
OnMembersAdded
teams.OnMembersAdded(async (context, cancellationToken) =>
{
foreach (var member in context.Activity.MembersAdded)
{
// Code logic here
}
});
OnMembersRemoved
teams.OnMembersRemoved(async (context, cancellationToken) =>
{
foreach (var member in context.Activity.MembersRemoved)
{
// Code logic here
}
});
OnMessageUpdate / OnMessageDelete
Las ediciones de mensajes se controlan a través de OnMessageUpdate. Las eliminaciones temporales se controlan a través de OnMessageDelete.
teams.OnMessageUpdate(async (context, cancellationToken) =>
{
// Code logic here
});
teams.OnMessageDelete(async (context, cancellationToken) =>
{
// Code logic here
});
Ejemplo de controlador de actividad de agente
El siguiente código proporciona un ejemplo de una actividad del agente:
using Microsoft.Teams.Apps;
WebApplicationBuilder builder = WebApplication.CreateSlimBuilder(args);
builder.Services.AddTeamsBotApplication();
WebApplication app = builder.Build();
TeamsBotApplication teams = app.UseTeamsBotApplication();
teams.OnMessage(async (context, cancellationToken) =>
{
var senderName = context.Activity.From.Name;
await context.SendAsync($"Hello <at>{senderName}</at>.", cancellationToken);
});
app.Run();
Lógica del agente
La lógica del agente incorpora las reglas fundamentales y los marcos de toma de decisiones que dictan las acciones e interacciones de un agente. Describe cómo el agente interpreta la entrada del usuario, formula respuestas y participa en conversaciones.
En el SDK de Teams v2, la lógica del agente procesa las actividades entrantes de uno o varios canales de agente y genera actividades salientes. La instancia maneja todo el enrutamiento de App actividad: usted registra a los controladores y el SDK les asigna actividades automáticamente.
Controladores de actividades principales
La App clase expone métodos de extensión para registrar controladores. Los métodos regresan App para un encadenamiento fluido.
| Evento | Método de extensión | Descripción |
|---|---|---|
| Cualquier tipo de actividad recibida | OnActivity(handler) |
El manejador general llamó a todas las actividades. |
| Actividad de mensaje recibida | OnMessage(handler) |
Controlar los mensajes de texto entrantes. Pase una cadena Regex como primer argumento para la coincidencia de patrones. |
| Actualización de conversación recibida | OnConversationUpdate(handler) |
Actividad de actualización de conversaciones sin procesar. |
| Los miembros que no son agentes se unieron | OnMembersAdded(handler) |
Se desencadena cuando MembersAdded.Length > 0. |
| Los miembros que no son agentes se fueron | OnMembersRemoved(handler) |
Se desencadena cuando MembersRemoved.Length > 0. |
| Instalación agregada | OnInstall(handler) |
Se instaló el agente. |
Controladores de actividades específicos de Teams
| Evento | Método de extensión | Description |
|---|---|---|
| Canal creado | OnChannelCreated(handler) |
Se creó un canal de Teams. |
| Canal eliminado | OnChannelDeleted(handler) |
Se eliminó un canal de Teams. |
| Se cambió el nombre del canal | OnChannelRenamed(handler) |
Se cambió el nombre de un canal de Teams. |
| Se cambió el nombre del equipo | OnTeamRenamed(handler) |
Se cambió el nombre del equipo. |
| Mensaje editado | OnMessageUpdate(handler) |
Se editó un mensaje. |
| Mensaje eliminado temporalmente | OnMessageDelete(handler) |
Se eliminó un mensaje de forma temporal. |
Actividades de invocación de Teams
| Tipo de invocación | Método de extensión | Description |
|---|---|---|
CardAction.Invoke |
OnExecuteAction(handler) |
Se recibió una actividad de invocación de acción de tarjeta. |
task/fetch |
OnTaskFetch(handler) |
Se ha capturado un cuadro de diálogo (módulo de tareas). |
task/submit |
OnTaskSubmit(handler) |
Se ha enviado un cuadro de diálogo (módulo de tareas). |
fileConsent/invoke |
OnFileConsent(handler) |
Se recibió una actividad de tarjeta de consentimiento de archivo. |
signin/verifyState |
Controlada automáticamente por el SDK (flujo de OAuth) | Iniciar sesión para verificar la actividad del estado. |
Ahora que se ha familiarizado con los controladores de actividad de los agentes, veamos cómo los agentes se comportan de manera diferente según la conversación y los mensajes que reciben o envían.
Recomendaciones
Un diálogo extenso entre su agente y el usuario es una forma lenta y compleja de completar una tarea. Un agente que admite comandos excesivos, especialmente una amplia gama de comandos, no tiene éxito o los usuarios no lo ven bien.
Evitar experiencias de varios turnos en el chat Un diálogo extenso requiere que el desarrollador mantenga el estado. Para salir de este estado, un usuario debe agotar el tiempo de espera o seleccionar Cancelar. Además, el proceso es tedioso. Por ejemplo, consulte el siguiente escenario de conversación:
USUARIO: Programe una reunión con Megan.
AGENTE: He encontrado 200 resultados, incluyo un nombre y apellido.
USUARIO: Programe una reunión con Megan Bowen.
AGENTE: Bien, ¿a qué hora te gustaría reunirte con Megan Bowen?
USUARIO: 1:00 p.m.
AGENTE: ¿En qué día?
Admite seis comandos o menos frecuentes Como solo hay seis comandos visibles en el menú del agente actual, es poco probable que se use algo más con frecuencia. Los agentes que profundizan en un área específica en lugar de tratar de ser un asistente amplio funcionan y les va mejor.
Optimice el tamaño de la knowledge base para una interacción más rápida Una de las desventajas de los agentes es que es difícil mantener una gran recuperación de knowledge base con respuestas no clasificadas. Los agentes son más adecuados para interacciones cortas y rápidas, y no para examinar largas listas en busca de una respuesta.
Nota:
La plataforma de Teams solo admite la versión 1.2 de Seguridad de la capa de transporte (TLS). Asegúrese de configurar el entorno del agente en consecuencia.
Explorar otras características del agente
Además de las características de agente convencionales, también puede explorar las características avanzadas disponibles en una aplicación de agente de Teams:
- Obtenga el contexto específico de Teams para su agente.
- Llamadas y agentes de reuniones en línea.
- Habilita el SSO para la aplicación.
Ejemplo de código
| Ejemplo de nombre | Descripción | TypeScript | C# | Python |
|---|---|---|---|---|
| Agente de conversación de Teams | Esta aplicación muestra eventos de agente básicos. | View | View | View |