Skip to main content
Cette page fait partie d’une compétence d’agent de code IA et est écrite pour les agents, pas pour les humains. Pour la documentation Base44 lisible par un humain, consultez la documentation développeur.

Module Agents

AI agent conversations and messages via base44.agents.
Note: This module requires a logged-in user. All agent methods work in the context of the authenticated user.

Contents

Concepts

  • Conversation: A dialogue between user and an AI agent. Has unique ID, agent name, user reference, and metadata.
  • Message: Single message in a conversation. Has role (user, assistant, system), content, timestamps, and optional metadata.

Methods

MethodSignatureDescription
createConversation(params)Promise<Conversation>Create a new conversation with an agent
getConversations()Promise<Conversation[]>Get all user’s conversations
getConversation(id)Promise<Conversation>Get conversation with messages (includes full tool call results)
listConversations(filterParams)Promise<Conversation[]>Filter/sort/paginate conversations
subscribeToConversation(id, onUpdate?)() => voidRealtime updates via WebSocket; tool call data truncated (returns unsubscribe function)
addMessage(conversation, message)Promise<Message>Send a message
getWhatsAppConnectURL(agentName)stringGet WhatsApp connection URL for agent

Examples

Create Conversation

const conversation = await base44.agents.createConversation({
  agent_name: "support-agent",
  metadata: {
    order_id: "ORD-123",
    category: "billing"
  }
});

console.log(conversation.id);

Get All Conversations

const conversations = await base44.agents.getConversations();

conversations.forEach(conv => {
  console.log(conv.id, conv.agent_name, conv.created_date);
});

Get Single Conversation (with messages)

Returns the complete stored conversation including full tool call results (unlike the realtime subscription, which truncates tool call data).
const conversation = await base44.agents.getConversation("conv-id-123");

console.log(conversation.messages);

List with Filters

// Using filterParams object with q, sort, limit, skip, fields
const recent = await base44.agents.listConversations({
  q: { agent_name: "support-agent" },
  sort: "-created_date",
  limit: 10,
  skip: 0
});

// Filter by metadata
const highPriority = await base44.agents.listConversations({
  q: {
    agent_name: "support-agent",
    "metadata.priority": "high"
  },
  sort: "-updated_date",
  limit: 20
});

Subscribe to Updates (Realtime)

When receiving messages through this subscription, tool call data is truncated for efficiency (arguments_string limited to 500 characters, results to 50). Use getConversation() after the message completes to retrieve full tool call data.
const unsubscribe = base44.agents.subscribeToConversation(
  "conv-id-123",
  (updatedConversation) => {
    // Called when new messages arrive
    console.log("New messages:", updatedConversation.messages);
  }
);

// Later: unsubscribe
unsubscribe();

Send a Message

const conversation = await base44.agents.getConversation("conv-id-123");

await base44.agents.addMessage(conversation, {
  role: "user",
  content: "What's the weather like today?"
});

Get WhatsApp Connection URL

const whatsappUrl = base44.agents.getWhatsAppConnectURL("support-agent");
// Returns URL for users to connect with agent via WhatsApp
console.log(whatsappUrl);

Message Structure

{
  role: "user" | "assistant" | "system",
  content: "Message text or structured object",
  created_date: "2024-01-15T10:30:00Z",
  updated_date: "2024-01-15T10:30:00Z",
  
  // Optional fields
  reasoning: {
    content: "Agent's reasoning process",
    timing: 1500
  },
  tool_calls: [{
    name: "search",
    arguments: { query: "weather" },
    result: { ... },
    status: "success"
  }],
  file_urls: ["https://..."],
  usage: {
    prompt_tokens: 150,
    completion_tokens: 50
  },
  metadata: { ... },
  custom_context: { ... }
}

Conversation Structure

{
  id: "conv-id-123",
  app_id: "app-id",
  agent_name: "support-agent",
  created_by_id: "user-id",
  created_date: "2024-01-15T10:00:00Z",
  updated_date: "2024-01-15T10:30:00Z",
  messages: [ ... ],
  metadata: { ... }
}

Common Patterns

Chat Interface

// Load conversation
const conv = await base44.agents.getConversation(conversationId);
setMessages(conv.messages);

// Subscribe to updates
const unsubscribe = base44.agents.subscribeToConversation(conversationId, (updated) => {
  setMessages(updated.messages);
});

// Send message
async function sendMessage(text) {
  await base44.agents.addMessage(conv, { role: "user", content: text });
}

// Cleanup on unmount
return () => unsubscribe();

Type Definitions

AgentNameRegistry and AgentName

How to get typed agent names: The Base44 CLI can generate an augmentation of AgentNameRegistry from your project. For how to run it, use the base44-cli skill.
/**
 * Registry of agent names.
 * Augment this interface to enable autocomplete for agent names.
 * Typically populated by the Base44 CLI type generator.
 */
interface AgentNameRegistry {}

/**
 * Agent name type - uses registry keys if augmented, otherwise string.
 */
type AgentName = keyof AgentNameRegistry extends never ? string : keyof AgentNameRegistry;

AgentConversation

/** An agent conversation containing messages exchanged with an AI agent. */
interface AgentConversation {
  /** Unique identifier for the conversation. */
  id: string;
  /** Application ID. */
  app_id: string;
  /** Name of the agent in this conversation. */
  agent_name: string;
  /** ID of the user who created the conversation. */
  created_by_id: string;
  /** When the conversation was created. */
  created_date: string;
  /** When the conversation was last updated. */
  updated_date: string;
  /** Array of messages in the conversation. */
  messages: AgentMessage[];
  /** Optional metadata associated with the conversation. */
  metadata?: Record<string, any>;
}

AgentMessage

/** A message in an agent conversation. */
interface AgentMessage {
  /** Unique identifier for the message. */
  id: string;
  /** Role of the message sender. */
  role: "user" | "assistant" | "system";
  /** When the message was created. */
  created_date: string;
  /** When the message was last updated. */
  updated_date: string;
  /** Message content. */
  content?: string | Record<string, any>;
  /** Optional reasoning information for the message. */
  reasoning?: AgentMessageReasoning | null;
  /** URLs to files attached to the message. */
  file_urls?: string[];
  /** Tool calls made by the agent. */
  tool_calls?: AgentMessageToolCall[];
  /** Token usage statistics. */
  usage?: AgentMessageUsage;
  /** Whether the message is hidden from the user. */
  hidden?: boolean;
  /** Custom context provided with the message. */
  custom_context?: AgentMessageCustomContext[];
  /** Model used to generate the message. */
  model?: string;
  /** Checkpoint ID for the message. */
  checkpoint_id?: string;
  /** Metadata about when and by whom the message was created. */
  metadata?: AgentMessageMetadata;
}

Supporting Types

/** Reasoning information for an agent message. */
interface AgentMessageReasoning {
  /** When reasoning started. */
  start_date: string;
  /** When reasoning ended. */
  end_date?: string;
  /** Reasoning content. */
  content: string;
}

/** A tool call made by the agent. */
interface AgentMessageToolCall {
  /** Tool call ID. */
  id: string;
  /** Name of the tool called. */
  name: string;
  /** Arguments passed to the tool as JSON string. */
  arguments_string: string;
  /** Status of the tool call. */
  status: "running" | "success" | "error" | "stopped";
  /** Results from the tool call. */
  results?: string;
}

/** Token usage statistics for an agent message. */
interface AgentMessageUsage {
  /** Number of tokens in the prompt. */
  prompt_tokens?: number;
  /** Number of tokens in the completion. */
  completion_tokens?: number;
}

/** Custom context provided with an agent message. */
interface AgentMessageCustomContext {
  /** Context message. */
  message: string;
  /** Associated data for the context. */
  data: Record<string, any>;
  /** Type of context. */
  type: string;
}

/** Metadata about when and by whom a message was created. */
interface AgentMessageMetadata {
  /** When the message was created. */
  created_date: string;
  /** Email of the user who created the message. */
  created_by_email: string;
  /** Full name of the user who created the message. */
  created_by_full_name: string;
}

CreateConversationParams

/** Parameters for creating a new conversation. */
interface CreateConversationParams {
  /** The name of the agent to create a conversation with. */
  agent_name: AgentName;
  /** Optional metadata to attach to the conversation. */
  metadata?: Record<string, any>;
}

ModelFilterParams

/** Parameters for filtering, sorting, and paginating conversations. */
interface ModelFilterParams {
  /** Query object with field-value pairs for filtering. */
  q?: Record<string, any>;
  /** Sort parameter (e.g., "-created_date" for descending). */
  sort?: string | null;
  /** Maximum number of results to return. */
  limit?: number | null;
  /** Number of results to skip for pagination. */
  skip?: number | null;
  /** Array of field names to include in the response. */
  fields?: string[] | null;
}

AgentsModule

/** Agents module for managing AI agent conversations. */
interface AgentsModule {
  /** Gets all conversations from all agents in the app. */
  getConversations(): Promise<AgentConversation[]>;

  /** Gets a specific conversation by ID. Returns complete stored conversation including full tool call results. */
  getConversation(conversationId: string): Promise<AgentConversation | undefined>;

  /** Lists conversations with filtering, sorting, and pagination. */
  listConversations(filterParams: ModelFilterParams): Promise<AgentConversation[]>;

  /** Creates a new conversation with an agent. */
  createConversation(conversation: CreateConversationParams): Promise<AgentConversation>;

  /** Adds a message to a conversation. */
  addMessage(conversation: AgentConversation, message: Partial<AgentMessage>): Promise<AgentMessage>;

  /** Subscribes to realtime updates for a conversation. Returns unsubscribe function. */
  subscribeToConversation(conversationId: string, onUpdate?: (conversation: AgentConversation) => void): () => void;

  /** Gets WhatsApp connection URL for an agent. */
  getWhatsAppConnectURL(agentName: AgentName): string;
}
Cette page a été traduite à l’aide de l’IA. Pour les informations les plus précises et à jour, consultez la version anglaise.