Envío y recepción de mensajes de texto

SE APLICA A: SDK v4

La forma principal comunicación del bot con los usuarios y de recepción de comunicación es mediante actividades de mensaje. Algunos mensajes pueden contener solo texto sin formato, mientras que otros pueden tener un contenido más rico, como tarjetas o archivos adjuntos. El controlador de turnos del bot recibe mensajes del usuario y puede enviar respuestas al usuario desde ahí. El objeto del contexto de turno proporciona métodos para enviar mensajes al usuario. Este artículo describe cómo enviar mensajes de texto simples.

Markdown es compatible con la mayoría de los campos de texto, pero la compatibilidad puede variar según el canal.

Para un bot en ejecución que envía y recibe mensajes, siga los tutoriales en la parte superior de la tabla de contenido o consulte el artículo sobre cómo funcionan los bots, que también incluye vínculos a ejemplos disponibles para que pueda ejecutarlos usted mismo.

Nota:

Los SDK de JavaScript, C# y Python de Bot Framework seguirán siendo compatibles, pero el SDK de Java se va a retirar con la finalización del soporte técnico a largo plazo en noviembre de 2023. Solo se realizarán correcciones de errores y seguridad críticos en este repositorio.

Los bots existentes creados con el SDK de Java seguirán funcionando.

Para la nueva compilación de bots, considere la posibilidad de usar Power Virtual Agents y lea sobre cómo elegir la solución de bot de chat adecuada.

Para obtener más información, consulte El futuro de la construcción de bots.

Enviar un mensaje de texto

Para enviar un mensaje de texto, especifique la string que desee enviar como actividad.

En los controladores de actividades del bot, use convertir el método SendActivityAsync del objeto de contexto para enviar una solicitud de mensaje única. También puede usar el método SendActivitiesAsync del objeto para enviar varias respuestas a la vez.

await turnContext.SendActivityAsync($"Welcome!");

Recibir un mensaje de texto

Para administrar un mensaje de texto, utilice la propiedad text del objeto activity.

En los controladores de actividades del bot, use el siguiente código para recibir un mensaje.

var responseMessage = turnContext.Activity.Text;

Envío de un indicador de escritura

Los usuarios esperan una respuesta a tiempo a sus mensajes. Si el bot realiza alguna tarea de larga ejecución como llamar a un servidor o ejecutar una consulta sin proporcionar al usuario ninguna indicación de que el bot le ha escuchado, el usuario podría impacientarse o simplemente suponer que el bot no funciona.

Los bots de los canales Web Chat y Direct Line admiten el envío de una indicación de escritura para mostrar al usuario que el mensaje se recibió y que se está procesando. Sin embargo, el bot tiene que dejar que el turno termine en 15 segundos o el servicio Conector agotará el tiempo de espera. Para procesos más largos, lea más sobre el envío de mensajes proactivos.

En el ejemplo siguiente se muestra cómo enviar una indicación de escritura.

protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken)
{
    if (string.Equals(turnContext.Activity.Text, "wait", System.StringComparison.InvariantCultureIgnoreCase))
    {
        await turnContext.SendActivitiesAsync(
            new Activity[] {
                new Activity { Type = ActivityTypes.Typing },
                new Activity { Type = "delay", Value= 3000 },
                MessageFactory.Text("Finished typing", "Finished typing"),
            },
            cancellationToken);
    }
    else
    {
        var replyText = $"Echo: {turnContext.Activity.Text}. Say 'wait' to watch me type.";
        await turnContext.SendActivityAsync(MessageFactory.Text(replyText, replyText), cancellationToken);
    }
}

Recursos adicionales

Pasos siguientes