Saltar a contenido

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:

  1. Propiedad body: Es el texto descriptivo que acompañará al archivo multimedia.
  2. 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:

  1. Conversión automática: Cuando se utiliza esta forma, el método send intenta interpretar cualquier enlace proporcionado (como una URL) y descargar el archivo antes de enviarlo.
  2. 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:

  1. Si recibe una URL o ruta como string:
  2. Intenta descargar el archivo especificado por la URL.
  3. Si la descarga falla, envía la URL como texto plano.
  4. Si recibe un objeto con las propiedades body y media:
  5. No realiza ninguna interpretación de las URLs en media.
  6. 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"
        }
    ]);
});

Ejemplo 2: Enviar un archivo desde el sistema local

.addAction(async (ctx, { send }) => {
    await send("C:/ruta/a/mi-archivo.pdf");
});

Ejemplo 3: Enviar múltiples archivos con captions

.addAction(async (ctx, { send }) => {
    await send([
        {
            body: "Archivo 1",
            media: "https://example.com/archivo1.pdf"
        },
        {
            body: "Archivo 2",
            media: "https://example.com/archivo2.jpg"
        }
    ]);
});