Enviar Contenido Media
El SDK permite enviar contenido media de manera eficiente, ofreciendo dos métodos principales para hacerlo: la forma tradicional y la forma minimalista . Ambas opciones son simples de implementar, pero presentan diferencias en cuanto a control y comportamiento.
Forma Tradicional
La forma tradicional proporciona mayor control al momento de enviar contenido media, permitiendo incluir un caption (texto descriptivo) junto con el archivo. Esta es la sintaxis:
.addAction(async (ctx, { send }) => {
await send([
{
body: "Soy el caption",
media: "Aquí sería una URL o la ruta de un archivo en el sistema"
}
]);
});
Detalles importantes:
- Propiedad
body: Es el texto descriptivo que acompañará al archivo multimedia. - Propiedad
media: Especifica la URL o la ruta del archivo a enviar. Puede ser una URL pública o una ruta en tu sistema de archivos local.
Esta forma es ideal si necesitas:
- Enviar contenido con un caption.
- Mantener mayor control sobre cómo se envía el archivo.
- Evitar la conversión automática de enlaces, ya que el algoritmo del proveedor se encargará de gestionar los archivos.
Forma Minimalista
La forma minimalista simplifica la sintaxis, permitiendo enviar contenido media directamente con una URL o una ruta de archivo. Ejemplo:
.addAction(async (ctx, { send }) => {
await send("Aquí sería una URL o la ruta de un archivo en el sistema");
});
Detalles importantes:
- Conversión automática: Cuando se utiliza esta forma, el método
sendintenta interpretar cualquier enlace proporcionado (como una URL) y descargar el archivo antes de enviarlo. - Errores: Si ocurre un error durante la descarga o interpretación del archivo, el enlace se enviará como texto plano.
Esta forma es útil cuando:
- No necesitas un caption.
- Quieres implementar una solución rápida y directa para enviar contenido media.
Diferencias Clave entre las Formas
| Característica | Forma Tradicional | Forma Minimalista |
|---|---|---|
| Control del envío | Mayor control sobre el archivo y el caption | Menor control, depende del comportamiento automático del método send |
| Caption (texto descriptivo) | Soportado mediante la propiedad body |
No soportado |
| Procesamiento de URLs | No interpreta automáticamente las URLs | Interpreta automáticamente las URLs e intenta descargarlas |
| Uso recomendado | Casos en los que se requiere más personalización | Soluciones rápidas y sencillas |
Comportamiento del Método send
El método send sigue este flujo de trabajo:
- Si recibe una URL o ruta como string:
- Intenta descargar el archivo especificado por la URL.
- Si la descarga falla, envía la URL como texto plano.
- Si recibe un objeto con las propiedades
bodyymedia: - No realiza ninguna interpretación de las URLs en
media. - El control del archivo recae completamente en el proveedor que gestiona el envío.
Notas adicionales:
- Errores comunes: Asegúrate de que las URLs sean accesibles y de que las rutas de archivos sean válidas en el sistema. Si un archivo no puede descargarse, el mensaje resultante podría no cumplir con las expectativas.
- Recomendación: Usa la forma tradicional cuando necesites un control preciso o un caption, y reserva la forma minimalista para casos rápidos y directos.
Ejemplos Prácticos
Ejemplo 1: Enviar una imagen con caption
.addAction(async (ctx, { send }) => {
await send([
{
body: "Mira esta imagen increíble",
media: "https://example.com/imagen.jpg"
}
]);
});