Skip to main content
Esta página es parte de una habilidad de agente de codificación con IA y está escrita para agentes, no para humanos. Para la documentación de Base44 legible por humanos, consulta la documentación para desarrolladores.

Módulo Integrations

Accede a servicios de terceros mediante base44.integrations.

Tipos de integraciones

  1. Core/integradas: IA, correo, subida de archivos (disponibles por defecto)
  2. Integraciones del catálogo: Conectores prediseñados del catálogo de Base44
  3. Integraciones personalizadas: Tus propias integraciones basadas en OpenAPI

Acceder a las integraciones

// Integraciones core
base44.integrations.Core.FunctionName(params)

// Integraciones personalizadas
base44.integrations.custom.call(slug, operationId, params)

Integraciones Core

InvokeLLM (generación de texto con IA)

Genera texto o datos JSON estructurados usando modelos de IA.
// Prompt básico - devuelve string
const response = await base44.integrations.Core.InvokeLLM({
  prompt: "Summarize this text: ..."
});

// Con contexto de internet (usa Google Search, Maps, News)
const response = await base44.integrations.Core.InvokeLLM({
  prompt: "What's the current weather in NYC?",
  add_context_from_internet: true
});

// Respuesta JSON estructurada - devuelve objeto
const response = await base44.integrations.Core.InvokeLLM({
  prompt: "Analyze the sentiment of: 'Great product but slow shipping'",
  response_json_schema: {
    type: "object",
    properties: {
      sentiment: { type: "string", enum: ["positive", "negative", "mixed"] },
      score: { type: "number", description: "Score from 1-10" },
      key_points: { type: "array", items: { type: "string" } }
    }
  }
});
// Devuelve: { sentiment: "mixed", score: 7, key_points: ["great product", "slow shipping"] }

// Con archivos adjuntos (subidos mediante UploadFile)
const response = await base44.integrations.Core.InvokeLLM({
  prompt: "Describe what's in this image",
  file_urls: ["https://...uploaded_image.png"]
});
Parámetros:
  • prompt (string, requerido): El texto del prompt a enviar al modelo
  • add_context_from_internet (boolean, opcional): Si es true, usa Google Search/Maps/News para contexto en tiempo real
  • response_json_schema (object, opcional): Esquema JSON para salida estructurada
  • file_urls (string[], opcional): URLs de archivos subidos para contexto

GenerateImage

Crea imágenes generadas por IA a partir de prompts de texto.
const { url } = await base44.integrations.Core.GenerateImage({
  prompt: "A serene mountain landscape with a lake"
});
console.log(url); // https://...generated_image.png

SendEmail

Envía correos a los usuarios registrados. Cada app obtiene esta integración (no requiere actualización de plan).
await base44.integrations.Core.SendEmail({
  to: "user@example.com",
  subject: "Welcome!",
  body: "<h1>Hello</h1><p>Welcome to our app.</p>",
  from_name: "My App"  // opcional, por defecto el nombre de la app
});
Parámetros:
  • to (string, requerido): Dirección de correo del destinatario
  • subject (string, requerido): Asunto del correo
  • body (string, requerido): Cuerpo del correo en texto plano o HTML
  • from_name (string, opcional): Nombre del remitente mostrado al destinatario
Limitaciones:
  • 1 crédito por correo (2 créditos con dominio personalizado)

UploadFile (público)

Sube archivos al almacenamiento público.
const fileInput = document.querySelector('input[type="file"]');
const { file_url } = await base44.integrations.Core.UploadFile({
  file: fileInput.files[0]
});
console.log(file_url); // https://...uploaded_file.pdf

UploadPrivateFile

Sube archivos al almacenamiento privado que requiere una URL firmada para acceder.
const { file_uri } = await base44.integrations.Core.UploadPrivateFile({
  file: fileInput.files[0]
});
console.log(file_uri); // "private/user123/document.pdf"

// Crea una URL firmada para acceder al archivo
const { signed_url } = await base44.integrations.Core.CreateFileSignedUrl({
  file_uri,
  expires_in: 3600  // La URL expira en 1 hora (por defecto: 300 segundos)
});
console.log(signed_url); // URL temporal para acceder al archivo privado

CreateFileSignedUrl

Genera enlaces de acceso temporal para archivos privados.
const { signed_url } = await base44.integrations.Core.CreateFileSignedUrl({
  file_uri: "private/user123/document.pdf",
  expires_in: 7200  // 2 horas
});
Parámetros:
  • file_uri (string, requerido): URI de UploadPrivateFile
  • expires_in (number, opcional): Tiempo de expiración en segundos (por defecto: 300)

ExtractDataFromUploadedFile

Extrae datos estructurados de archivos subidos usando IA.
// Primero sube el archivo
const { file_url } = await base44.integrations.Core.UploadFile({ file });

// Luego extrae datos estructurados
const result = await base44.integrations.Core.ExtractDataFromUploadedFile({
  file_url,
  json_schema: {
    type: "object",
    properties: {
      invoice_number: { type: "string" },
      total_amount: { type: "number" },
      date: { type: "string" },
      vendor_name: { type: "string" }
    }
  }
});
console.log(result); // { invoice_number: "INV-12345", total_amount: 1250.00, ... }

Integraciones personalizadas

Las integraciones personalizadas permiten a los administradores del espacio de trabajo conectar cualquier API externa importando una especificación OpenAPI. Usa base44.integrations.custom.call() para invocarlas.

Sintaxis

const response = await base44.integrations.custom.call(
  slug,        // Identificador de la integración (establecido por el administrador)
  operationId, // Endpoint en formato "method:path" (por ejemplo, "get:/contacts", "post:/repos/{owner}/{repo}/issues")
  params       // Opcional: payload, pathParams, queryParams
);

Ejemplos

// Solicitud GET con parámetros de consulta
const response = await base44.integrations.custom.call(
  "my-crm",
  "get:/contacts",
  { queryParams: { limit: 10, status: "active" } }
);

// Solicitud POST con cuerpo
const response = await base44.integrations.custom.call(
  "my-crm",
  "post:/contacts",
  { payload: { name: "John Doe", email: "john@example.com" } }
);

// Solicitud con parámetros de ruta
const response = await base44.integrations.custom.call(
  "github",
  "post:/repos/{owner}/{repo}/issues",
  {
    pathParams: { owner: "myorg", repo: "myrepo" },
    payload: { title: "Bug report", body: "Something is broken" }
  }
);

Estructura de la respuesta

{
  success: true,      // Si la API externa devolvió 2xx
  status_code: 200,   // Código de estado HTTP
  data: { ... }       // Respuesta de la API externa
}

Requisitos

  • Integraciones core: Disponibles en todos los planes
  • Integraciones del catálogo/personalizadas: Requieren plan Builder o superior

Definiciones de tipos

Parámetros de integración Core

/** Parámetros para la función InvokeLLM. */
interface InvokeLLMParams {
  /** El texto del prompt a enviar al modelo. */
  prompt: string;
  /** Si es true, usa Google Search/Maps/News para contexto en tiempo real. */
  add_context_from_internet?: boolean;
  /** Esquema JSON para salida estructurada. Si se proporciona, devuelve objeto en lugar de string. */
  response_json_schema?: object;
  /** URLs de archivos (de UploadFile) para proporcionar como contexto. */
  file_urls?: string[];
}

/** Parámetros para la función GenerateImage. */
interface GenerateImageParams {
  /** Descripción de la imagen a generar. */
  prompt: string;
}

/** Resultado de GenerateImage. */
interface GenerateImageResult {
  /** URL de la imagen generada. */
  url: string;
}

/** Parámetros para la función UploadFile. */
interface UploadFileParams {
  /** El objeto File a subir. */
  file: File;
}

/** Resultado de UploadFile. */
interface UploadFileResult {
  /** URL del archivo subido. */
  file_url: string;
}

/** Parámetros para la función SendEmail. */
interface SendEmailParams {
  /** Dirección de correo del destinatario. */
  to: string;
  /** Asunto del correo. */
  subject: string;
  /** Cuerpo del correo en texto plano o HTML. */
  body: string;
  /** Nombre del remitente (por defecto el nombre de la app). */
  from_name?: string;
}

/** Parámetros para ExtractDataFromUploadedFile. */
interface ExtractDataFromUploadedFileParams {
  /** URL del archivo subido. */
  file_url: string;
  /** Esquema JSON que define los campos a extraer. */
  json_schema: object;
}

/** Parámetros para UploadPrivateFile. */
interface UploadPrivateFileParams {
  /** El objeto File a subir. */
  file: File;
}

/** Resultado de UploadPrivateFile. */
interface UploadPrivateFileResult {
  /** URI del archivo privado (usado para URLs firmadas). */
  file_uri: string;
}

/** Parámetros para CreateFileSignedUrl. */
interface CreateFileSignedUrlParams {
  /** URI de UploadPrivateFile. */
  file_uri: string;
  /** Tiempo de expiración en segundos (por defecto: 300). */
  expires_in?: number;
}

/** Resultado de CreateFileSignedUrl. */
interface CreateFileSignedUrlResult {
  /** URL firmada temporal para acceder al archivo. */
  signed_url: string;
}

CoreIntegrations

/** Paquete Core que contiene funciones de integración integradas de Base44. */
interface CoreIntegrations {
  InvokeLLM(params: InvokeLLMParams): Promise<string | object>;
  GenerateImage(params: GenerateImageParams): Promise<GenerateImageResult>;
  UploadFile(params: UploadFileParams): Promise<UploadFileResult>;
  SendEmail(params: SendEmailParams): Promise<any>;
  ExtractDataFromUploadedFile(params: ExtractDataFromUploadedFileParams): Promise<object>;
  UploadPrivateFile(params: UploadPrivateFileParams): Promise<UploadPrivateFileResult>;
  CreateFileSignedUrl(params: CreateFileSignedUrlParams): Promise<CreateFileSignedUrlResult>;
}

Integraciones personalizadas

/** Parámetros para llamar a un método de integración personalizada. */
interface CustomIntegrationCallParams {
  /** Cuerpo de la solicitud. */
  payload?: Record<string, any>;
  /** Parámetros de ruta para sustituir en la URL. Por ejemplo, { owner: "user", repo: "repo" }. */
  pathParams?: Record<string, string>;
  /** Parámetros de cadena de consulta. */
  queryParams?: Record<string, any>;
}

/** Respuesta de una llamada a integración personalizada. */
interface CustomIntegrationCallResponse {
  /** Si la API externa devolvió un código de estado 2xx. */
  success: boolean;
  /** El código de estado HTTP de la API externa. */
  status_code: number;
  /** Los datos de respuesta de la API externa. */
  data: any;
}

/** Módulo para llamar a integraciones API preconfiguradas personalizadas. */
interface CustomIntegrationsModule {
  /**
   * Llama a un método de integración personalizada.
   * @param slug - El identificador único de la integración (establecido por el administrador del espacio de trabajo).
   * @param operationId - El endpoint en formato "method:path" (por ejemplo, "get:/contacts", "post:/users/{id}").
   * @param params - payload, pathParams, queryParams opcionales.
   */
  call(slug: string, operationId: string, params?: CustomIntegrationCallParams): Promise<CustomIntegrationCallResponse>;
}

IntegrationsModule

/** Módulo Integrations para llamar a métodos de integración. */
type IntegrationsModule = {
  /** Paquete Core con integraciones integradas. */
  Core: CoreIntegrations;
  /** Módulo de integraciones personalizadas. */
  custom: CustomIntegrationsModule;
  /** Paquetes de integración adicionales (dinámicos). */
  [packageName: string]: any;
};
Esta página fue traducida usando IA. Para obtener la información más precisa y actualizada, consulta la versión en inglés.