Add Activepieces integration for workflow automation

- Add Activepieces fork with SmoothSchedule custom piece
- Create integrations app with Activepieces service layer
- Add embed token endpoint for iframe integration
- Create Automations page with embedded workflow builder
- Add sidebar visibility fix for embed mode
- Add list inactive customers endpoint to Public API
- Include SmoothSchedule triggers: event created/updated/cancelled
- Include SmoothSchedule actions: create/update/cancel events, list resources/services/customers

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
poduck
2025-12-18 22:59:37 -05:00
parent 9848268d34
commit 3aa7199503
16292 changed files with 1284892 additions and 4708 deletions

View File

@@ -0,0 +1,33 @@
{
"extends": [
"../../../../.eslintrc.base.json"
],
"ignorePatterns": [
"!**/*"
],
"overrides": [
{
"files": [
"*.ts",
"*.tsx",
"*.js",
"*.jsx"
],
"rules": {}
},
{
"files": [
"*.ts",
"*.tsx"
],
"rules": {}
},
{
"files": [
"*.js",
"*.jsx"
],
"rules": {}
}
]
}

View File

@@ -0,0 +1,7 @@
# pieces-chat-data
This library was generated with [Nx](https://nx.dev).
## Building
Run `nx build pieces-chat-data` to build the library.

View File

@@ -0,0 +1,10 @@
{
"name": "@activepieces/piece-chat-data",
"version": "0.0.2",
"type": "commonjs",
"main": "./src/index.js",
"types": "./src/index.d.ts",
"dependencies": {
"tslib": "^2.3.0"
}
}

View File

@@ -0,0 +1,65 @@
{
"name": "pieces-chat-data",
"$schema": "../../../../node_modules/nx/schemas/project-schema.json",
"sourceRoot": "packages/pieces/community/chat-data/src",
"projectType": "library",
"release": {
"version": {
"manifestRootsToUpdate": [
"dist/{projectRoot}"
],
"currentVersionResolver": "git-tag",
"fallbackCurrentVersionResolver": "disk"
}
},
"tags": [],
"targets": {
"build": {
"executor": "@nx/js:tsc",
"outputs": [
"{options.outputPath}"
],
"options": {
"outputPath": "dist/packages/pieces/community/chat-data",
"tsConfig": "packages/pieces/community/chat-data/tsconfig.lib.json",
"packageJson": "packages/pieces/community/chat-data/package.json",
"main": "packages/pieces/community/chat-data/src/index.ts",
"assets": [
"packages/pieces/community/chat-data/*.md",
{
"input": "packages/pieces/community/chat-data/src/i18n",
"output": "./src/i18n",
"glob": "**/!(i18n.json)"
}
],
"buildableProjectDepsInPackageJsonType": "dependencies",
"updateBuildableProjectDepsInPackageJson": true
},
"dependsOn": [
"^build",
"prebuild"
]
},
"nx-release-publish": {
"options": {
"packageRoot": "dist/{projectRoot}"
}
},
"lint": {
"executor": "@nx/eslint:lint",
"outputs": [
"{options.outputFile}"
]
},
"prebuild": {
"executor": "nx:run-commands",
"options": {
"cwd": "packages/pieces/community/chat-data",
"command": "bun install --no-save --silent"
},
"dependsOn": [
"^build"
]
}
}
}

View File

@@ -0,0 +1,142 @@
{
"Build AI-chatbots with support for live chat escalation, knowledge bases, or custom backend endpoints.": "Erstelle AI-Chatbots mit Unterstützung für Live-Chat-Eskalation, Wissensdatenbanken oder benutzerdefinierte Backend-Endpunkte.",
"Enter your Chat Data API key": "Chat-Daten-API-Schlüssel eingeben",
"Create Chatbot": "Chatbot erstellen",
"Delete Chatbot": "Chatbot löschen",
"Send Message to Chatbot": "Nachricht an Chatbot senden",
"Update Chatbot Settings": "Chatbot Einstellungen aktualisieren",
"Retrain Chatbot": "Retrain Chatbot",
"Upload File": "Datei hochladen",
"Create and train a chatbot using custom data, medical models, or custom models. Training takes 1-2 minutes.": "Erstellen und trainieren Sie einen Chatbot mit benutzerdefinierten Daten, medizinischen Modellen oder benutzerdefinierten Modellen. Training dauert 1-2 Minuten.",
"Delete a chatbot and all its associated data (training data, conversations, leads, etc.). This action is irreversible.": "Lösche einen Chatbot und alle damit verbundenen Daten (Trainingsdaten, Gespräche, Leads, etc.). Diese Aktion kann nicht rückgängig gemacht werden.",
"Send messages to a chatbot and receive a response with support for streaming and OpenAI-compatible formats": "Senden Sie Nachrichten an einen Chatbot und erhalten Sie eine Antwort mit Unterstützung für Streaming und OpenAI-kompatible Formate",
"Update comprehensive settings for a chatbot including name, prompts, behavior, and appearance": "Umfassende Einstellungen für einen Chatbot aktualisieren, einschließlich Name, Eingabeaufforderungen, Verhalten und Aussehen",
"Retrain an existing chatbot with new data or remove existing data (custom-data-upload model only)": "Lösche einen bestehenden Chatbot mit neuen Daten oder entferne existierende Daten (nur benutzerdefiniertes Daten-Upload-Modell)",
"Upload a file to be used with a chatbot for training or knowledge base": "Datei hochladen, die mit einem Chatbot für Schulungen oder Wissensdatenbank verwendet werden soll",
"Chatbot Name": "Chatbot-Name",
"Model": "Modell",
"Source Text": "Quelltext",
"URLs to Scrape": "URLs zum Scrape",
"Products": "Produkte",
"Q&As": "Q&As",
"Custom Backend URL": "Eigene Backend-URL",
"Bearer Token": "Bären-Token",
"Chatbot": "Chatbot",
"Message Content": "Nachrichteninhalt",
"Message Role": "Nachrichtenrolle",
"Conversation": "Unterhaltung",
"Include Reasoning": "Begründung einbeziehen",
"Base Model": "Basismodell",
"Base Prompt Override": "Basisnachfrage überschreiben",
"OpenAI Format": "OpenAI Format",
"Append to Conversation": "An Unterhaltung anhängen",
"Attached Files": "Angehängte Dateien",
"Base Prompt": "Basisanfrage",
"Initial Messages": "Erste Nachrichten",
"Suggested Messages": "Empfohlene Nachrichten",
"Visibility": "Sichtbarkeit",
"Temperature": "Temperatur",
"Store Chat History": "Shop-Chat-Verlauf",
"Track IP Address": "IP-Adresse verfolgen",
"Rate Limit Points": "Bewertungslimit Punkte",
"Rate Limit Timeframe": "Bewertungslimit-Timeframe",
"Rate Limit Message": "Bewertungslimit Nachricht",
"Restrict to Added Domains": "Auf hinzugefügte Domains beschränken",
"Allowed Domains": "Erlaubte Domains",
"Show Calendar": "Kalender anzeigen",
"Calendar URL": "Kalender-URL",
"Calendar Message": "Kalendernachricht",
"Enable Bouncing Animation": "Bouncing-Animation aktivieren",
"Ignore Data Source": "Datenquelle ignorieren",
"Cookies": "Kekse",
"Extract Main Content": "Hauptinhalt extrahieren",
"Include Only Tags": "Nur Tags einbeziehen",
"Exclude Tags": "Tags ausschließen",
"Knowledge to Delete": "Zu löschendes Wissen",
"File": "Datei",
"The name of the chatbot to be created": "Der Name des zu erstellenden Chatbots",
"Select the chatbot model. Note: sourceText and urlsToScrape are ignored for medical and custom models.": "Wählen Sie das Modell des Chatbots. Hinweis: sourceText und urlsToScrape werden für medizinische und benutzerdefinierte Modelle ignoriert.",
"Training text for the chatbot. Character limits apply based on your plan. Only used for custom-data-upload model.": "Trainingstext für den Chatbot. Charakterbegrenzungen gelten basierend auf Ihrem Tarif. Nur für benutzerdefiniertes Daten-Upload-Modell.",
"URLs to extract content from. Must start with http:// or https:// (only for custom-data-upload model)": "URLs, aus denen Inhalte extrahiert werden sollen. Muss mit http:// oder https:// beginnen (nur für Custom-Data-Upload-Modell)",
"List of products for training the chatbot": "Liste der Produkte für die Schulung des Chatbots",
"List of questions and answers for the chatbot to learn": "Liste der zu lernenden Fragen und Antworten für den Chatbot",
"URL of a custom backend for the chatbot": "URL eines benutzerdefinierten Backends für den Chatbot",
"Authentication bearer token for custom backend": "Authentifizierungsträger Token für benutzerdefiniertes Backend",
"Select the chatbot to delete": "Chatbot zum Löschen auswählen",
"Select the chatbot to send message to": "Wählen Sie den Chatbot, an den Nachrichten gesendet werden sollen",
"The text content of the message to send": "Der Text der zu sendenden Nachricht",
"The role of the message sender": "Die Rolle des Nachrichtensenders",
"Select an existing conversation or leave empty to start a new one": "Wählen Sie eine bestehende Unterhaltung oder lassen Sie leer, um eine neue zu starten",
"Include reasoning in the response (overrides chatbot settings)": "Argumentation in die Antwort einbeziehen (Überschreibt Chatbot Einstellungen)",
"Override the chatbot's base model for this request": "Das Basismodell des Chatbots für diese Anfrage überschreiben",
"Override the chatbot's base prompt for this request": "Den Chatbot Basis-Prompt für diese Anfrage überschreiben",
"Return response in OpenAI-compatible format": "Antwort im OpenAI-kompatiblen Format zurückgeben",
"Append this message to previous messages with the same conversationId": "Diese Nachricht an vorherige Nachrichten mit der gleichen conversationId anhängen",
"Files to attach to the message (max 3 files)": "Dateien, die an die Nachricht angehängt werden (max. 3 Dateien)",
"Select the chatbot to update": "Wähle den zu aktualisierenden Chatbot",
"Update the name of the chatbot": "Den Namen des Chatbots aktualisieren",
"Update the base prompt for the chatbot": "Aktualisiere den Basis-Prompt für den Chatbot",
"Array of initial messages to be used by the chatbot": "Array der ersten Nachrichten, die vom Chatbot verwendet werden sollen",
"Array of suggested messages shown in the chatbot": "Array der im Chatbot angezeigten vorgeschlagenen Nachrichten",
"Control whether your chatbot is accessible to others": "Lege fest, ob dein Chatbot für andere zugänglich ist",
"The AI model used in the RAG processing pipeline": "Das KI-Modell für die RAG-Verarbeitungspipeline",
"AI model temperature (0-1, controls randomness)": "KI-Modell-Temperatur (0-1, steuert die Zufälligkeit)",
"Whether chat history will be stored on the server": "Ob der Chatverlauf auf dem Server gespeichert wird",
"Whether IP addresses will be stored for conversations and leads": "Ob IP-Adressen für Unterhaltungen und Leads gespeichert werden",
"Maximum number of messages per timeframe from one device": "Maximale Anzahl von Nachrichten pro Zeitrahmen von einem Gerät",
"Timeframe in seconds for rate limiting": "Zeitrahmen in Sekunden für Geschwindigkeitsbegrenzung",
"Error message shown when rate limited": "Fehlermeldung bei begrenzter Rate angezeigt",
"Only allow the iframe and widget on specific domains": "Nur iframe und Widget auf bestimmten Domänen zulassen",
"Array of domains where the chatbot is allowed": "Anordnung der Domänen, wo der Chatbot erlaubt ist",
"Display Calendly booking button in the chatbot": "Schaltfläche Kalenderbuchung im Chatbot anzeigen",
"Calendly URL for appointment scheduling": "Kalender-URL für Terminplanung",
"Message to display for appointment scheduling": "Nachricht für Terminplanung anzeigen",
"Whether the chatbot bubble should bounce to attract attention": "Ob die Chatbot-Blase aufspringen sollte, um Aufmerksamkeit zu erregen",
"Ignore custom data and act like pure ChatGPT": "Ignoriere benutzerdefinierte Daten und agiere wie reine ChatGPT",
"Authentication token for custom backend": "Authentifizierungstoken für benutzerdefiniertes Backend",
"Select the chatbot to retrain": "Chatbot zum Umschulen auswählen",
"New text data for training the chatbot": "Neue Textdaten für die Schulung des Chatbots",
"List of URLs to extract content from (existing URLs will be recrawled)": "Liste der URLs, aus denen Inhalte extrahiert werden sollen (vorhandene URLs werden zurückgeladen)",
"Cookies for authorization (semicolon-separated: \"cookie1=value1; cookie2=value2\")": "Cookies für die Autorisierung (Semikolon-getrennt: \"cookie1=value1; cookie2=value2\")",
"Automatically remove headers, footers, nav, sidebar, and ads": "Header, Fußzeile, Navigationsleiste, Seitenleiste und Werbung automatisch entfernen",
"CSS selectors to exclusively extract (comma-separated)": "CSS-Selektoren zum Extrahieren (kommasepariert)",
"CSS selectors to exclude from scraping (comma-separated)": "CSS-Selektoren, die vom Scraping ausgeschlossen werden sollen (kommagetrennt)",
"List of products for training (existing products with same ID will be overwritten)": "Liste der Produkte für Schulungen (bestehende Produkte mit derselben ID werden überschrieben)",
"List of knowledge sources to remove from the chatbot": "Liste der zu entfernenden Wissensquellen",
"Select the chatbot to upload file to": "Chatbot zum Hochladen der Datei auswählen",
"The file to upload to the chatbot": "Die Datei, die zum Chatbot hochgeladen wird",
"Custom Data Upload (GPT-4o, Claude, etc.)": "Benutzerdefinierter Daten-Upload (GPT-4o, Claude, etc.)",
"Medical Chat - Human": "Medizinischer Chat - Mensch",
"Medical Chat - Veterinarian": "Medizinischer Chat - Tierarzt",
"Custom Model (Your own backend)": "Eigenes Modell (eigenes Backend)",
"User": "Benutzer",
"Assistant": "Assistent",
"GPT-4o Mini": "GPT-4o Mini",
"GPT-4o": "GPT-4o",
"GPT-4": "GPT-4",
"GPT-4.1 Nano": "GPT-4.1 Nano",
"GPT-4.1 Mini": "GPT-4.1 Mini",
"GPT-4.1": "GPT-4.1",
"GPT-5 Nano": "GPT-5 Nano",
"GPT-5 Mini": "GPT-5 Mini",
"GPT-5": "GPT-5",
"GPT-O1": "GPT-O1",
"GPT-O3 Mini": "GPT-O3 Mini",
"GPT-O3": "GPT-O3",
"GPT-O4 Mini": "GPT-O4 Mini",
"Claude 3.5 Sonnet": "Claude 3.5 Sonnet",
"Claude 3.7 Sonnet": "Claude 3.7 Sonnet",
"Claude 4 Sonnet": "Claude 4 Sonnet",
"Claude 4.5 Sonnet": "Claude 4.5 Sonnet",
"Claude 3.5 Haiku": "Claude 3.5 Haiku",
"Claude 3 Haiku": "Claude 3 Haiku",
"Claude 4 Opus": "Claude 4 Opus",
"Claude 4.1 Opus": "Claude 4.1 Opus",
"Gemini 2.5 Flash": "Gemini 2.5 Blitz",
"Gemini 2.0 Flash": "Gemini 2.0 Blitz",
"Gemini 1.5 Flash": "Gemini 1.5 Blitz",
"Gemini 2.5 Pro": "Gemini 2.5 Pro",
"DeepSeek R1": "DeepSeek R1",
"Private": "Privat",
"Public": "Öffentlich"
}

View File

@@ -0,0 +1,142 @@
{
"Build AI-chatbots with support for live chat escalation, knowledge bases, or custom backend endpoints.": "Construye chatbots de AIs con soporte para escalada de Live Chat, bases de conocimiento o terminales personalizadas de backend.",
"Enter your Chat Data API key": "Introduzca su clave API de datos de chat",
"Create Chatbot": "Crear Chatbot",
"Delete Chatbot": "Eliminar Chatbot",
"Send Message to Chatbot": "Enviar mensaje a Chatbot",
"Update Chatbot Settings": "Actualizar ajustes de Chatbot",
"Retrain Chatbot": "Reentrenar Chatbot",
"Upload File": "Subir archivo",
"Create and train a chatbot using custom data, medical models, or custom models. Training takes 1-2 minutes.": "Crear y entrenar un chatbot usando datos personalizados, modelos médicos o modelos personalizados. El entrenamiento toma entre 1 y 2 minutos.",
"Delete a chatbot and all its associated data (training data, conversations, leads, etc.). This action is irreversible.": "Eliminar un chatbot y todos sus datos asociados (datos de entrenamiento, conversaciones, plomos, etc.) Esta acción es irreversible.",
"Send messages to a chatbot and receive a response with support for streaming and OpenAI-compatible formats": "Enviar mensajes a un chatbot y recibir una respuesta con soporte para streaming y formatos compatibles con OpenAI",
"Update comprehensive settings for a chatbot including name, prompts, behavior, and appearance": "Actualizar opciones completas para un chatbot incluyendo nombre, indicaciones, comportamiento y apariencia",
"Retrain an existing chatbot with new data or remove existing data (custom-data-upload model only)": "Reentrenar un chatbot existente con nuevos datos o eliminar datos existentes (sólo modelo de carga de datos)",
"Upload a file to be used with a chatbot for training or knowledge base": "Sube un archivo para ser usado con un chatbot para entrenamiento o base de conocimientos",
"Chatbot Name": "Nombre del Chatbot",
"Model": "Modelo",
"Source Text": "Texto de origen",
"URLs to Scrape": "URLs a Raspar",
"Products": "Productos",
"Q&As": "Q&As",
"Custom Backend URL": "URL de fondo personalizado",
"Bearer Token": "Tóken de portador",
"Chatbot": "Chatbot",
"Message Content": "Contenido del mensaje",
"Message Role": "Rol de mensaje",
"Conversation": "Conversación",
"Include Reasoning": "Incluye Razonamiento",
"Base Model": "Modelo base",
"Base Prompt Override": "Anulación de comprobación básica",
"OpenAI Format": "Formato OpenAI",
"Append to Conversation": "Añadir a la conversación",
"Attached Files": "Archivos adjuntos",
"Base Prompt": "Prompt base",
"Initial Messages": "Mensajes iniciales",
"Suggested Messages": "Mensajes sugeridos",
"Visibility": "Visibilidad",
"Temperature": "Temperatura",
"Store Chat History": "Tienda Historial de Chat",
"Track IP Address": "Dirección IP de seguimiento",
"Rate Limit Points": "Puntos límite de puntuación",
"Rate Limit Timeframe": "Límite de tiempo",
"Rate Limit Message": "Valorar mensaje límite",
"Restrict to Added Domains": "Restringir a los dominios añadidos",
"Allowed Domains": "Dominios permitidos",
"Show Calendar": "Mostrar calendario",
"Calendar URL": "URL del calendario",
"Calendar Message": "Mensaje del calendario",
"Enable Bouncing Animation": "Activar animación de rebote",
"Ignore Data Source": "Ignorar origen de datos",
"Cookies": "Cookies",
"Extract Main Content": "Extraer contenido principal",
"Include Only Tags": "Incluye solo etiquetas",
"Exclude Tags": "Excluir etiquetas",
"Knowledge to Delete": "Conocimiento a eliminar",
"File": "Archivo",
"The name of the chatbot to be created": "El nombre del chatbot a crear",
"Select the chatbot model. Note: sourceText and urlsToScrape are ignored for medical and custom models.": "Seleccione el modelo chatbot. Nota: sourceText y urlsToScrape son ignorados para modelos médicos y personalizados.",
"Training text for the chatbot. Character limits apply based on your plan. Only used for custom-data-upload model.": "Texto de entrenamiento para el chatbot. Los límites de caracteres se aplican en base a tu plan. Solo se utilizan para el modelo personalizado de carga de datos.",
"URLs to extract content from. Must start with http:// or https:// (only for custom-data-upload model)": "URLs de las que extraer contenido. Debe comenzar con http:// o https:// (sólo para el modelo personalizado de carga de datos)",
"List of products for training the chatbot": "Lista de productos para entrenar el chatbot",
"List of questions and answers for the chatbot to learn": "Lista de preguntas y respuestas para que el chatbot aprenda",
"URL of a custom backend for the chatbot": "URL de un backend personalizado para el chatbot",
"Authentication bearer token for custom backend": "Token del bearer de autenticación para backend personalizado",
"Select the chatbot to delete": "Selecciona el chatbot a eliminar",
"Select the chatbot to send message to": "Selecciona el chatbot al que enviar el mensaje",
"The text content of the message to send": "El contenido del texto del mensaje a enviar",
"The role of the message sender": "El rol del remitente de mensajes",
"Select an existing conversation or leave empty to start a new one": "Seleccione una conversación existente o déjelo vacío para iniciar una nueva",
"Include reasoning in the response (overrides chatbot settings)": "Incluye razonamiento en la respuesta (anula la configuración del chatbot)",
"Override the chatbot's base model for this request": "Anular el modelo base del chatbot para esta solicitud",
"Override the chatbot's base prompt for this request": "Anular el pedido base del chatbot para esta solicitud",
"Return response in OpenAI-compatible format": "Devolver respuesta en formato compatible con OpenAI",
"Append this message to previous messages with the same conversationId": "Añadir este mensaje a los mensajes anteriores con el mismo conversationId",
"Files to attach to the message (max 3 files)": "Archivos a adjuntar al mensaje (máx. 3 archivos)",
"Select the chatbot to update": "Selecciona el chatbot a actualizar",
"Update the name of the chatbot": "Actualizar el nombre del chatbot",
"Update the base prompt for the chatbot": "Actualizar el símbolo base del chatbot",
"Array of initial messages to be used by the chatbot": "Arreglo de mensajes iniciales a ser usados por el chatbot",
"Array of suggested messages shown in the chatbot": "Arreglo de mensajes sugeridos que se muestran en el chatbot",
"Control whether your chatbot is accessible to others": "Controla si tu chatbot es accesible para otros",
"The AI model used in the RAG processing pipeline": "El modelo de IA utilizado en el tubo de procesamiento RAG",
"AI model temperature (0-1, controls randomness)": "Temperatura del modelo IA (0-1, controla aleatoriamente)",
"Whether chat history will be stored on the server": "Si el historial de chat se almacenará en el servidor",
"Whether IP addresses will be stored for conversations and leads": "Si las direcciones IP se almacenarán para conversaciones y prospectos",
"Maximum number of messages per timeframe from one device": "Número máximo de mensajes por intervalo de tiempo desde un dispositivo",
"Timeframe in seconds for rate limiting": "Periodo en segundos para limitar la velocidad",
"Error message shown when rate limited": "Mensaje de error mostrado cuando la tasa limitada",
"Only allow the iframe and widget on specific domains": "Permitir solo el iframe y el widget en dominios específicos",
"Array of domains where the chatbot is allowed": "Arreglo de dominios donde se permite el chatbot",
"Display Calendly booking button in the chatbot": "Mostrar el botón de reserva de Calendly en el chatbot",
"Calendly URL for appointment scheduling": "URL de Calendly para la programación de citas",
"Message to display for appointment scheduling": "Mensaje a mostrar para la programación de citas",
"Whether the chatbot bubble should bounce to attract attention": "Si la burbuja del chatbot debe rebotar para atraer la atención",
"Ignore custom data and act like pure ChatGPT": "Ignorar datos personalizados y actuar como ChatGPT puro",
"Authentication token for custom backend": "Token de autenticación para backend personalizado",
"Select the chatbot to retrain": "Selecciona el chatbot para volver a entrenar",
"New text data for training the chatbot": "Nuevos datos de texto para entrenar el chatbot",
"List of URLs to extract content from (existing URLs will be recrawled)": "Lista de URLs de las que extraer contenido (las URLs existentes serán dibujadas)",
"Cookies for authorization (semicolon-separated: \"cookie1=value1; cookie2=value2\")": "Cookies de autorización (separadas por punto y coma: \"cookie1=valor1; cookie2=valor2\")",
"Automatically remove headers, footers, nav, sidebar, and ads": "Elimina automáticamente los encabezados, pie de página, nav, barra lateral y anuncios",
"CSS selectors to exclusively extract (comma-separated)": "Selectores CSS para extraer exclusivamente (separados por comas)",
"CSS selectors to exclude from scraping (comma-separated)": "Selectores CSS a excluir del rasguño (separados por comas)",
"List of products for training (existing products with same ID will be overwritten)": "Lista de productos para la formación (los productos existentes con el mismo ID serán sobrescritos)",
"List of knowledge sources to remove from the chatbot": "Lista de fuentes de conocimiento a eliminar del chatbot",
"Select the chatbot to upload file to": "Selecciona el chatbot al que subir el archivo",
"The file to upload to the chatbot": "El archivo a subir al chatbot",
"Custom Data Upload (GPT-4o, Claude, etc.)": "Carga de datos personalizados (GPT-4o, Claude, etc.)",
"Medical Chat - Human": "Chat médico - Humano",
"Medical Chat - Veterinarian": "Chat Médico - Veterinario",
"Custom Model (Your own backend)": "Modelo personalizado (tu propio backend)",
"User": "Usuario",
"Assistant": "Asistente",
"GPT-4o Mini": "GPT-4o Mini",
"GPT-4o": "GPT-4o",
"GPT-4": "GPT-4",
"GPT-4.1 Nano": "GPT-4.1 Nano",
"GPT-4.1 Mini": "GPT-4.1 Mini",
"GPT-4.1": "GPT-4.1",
"GPT-5 Nano": "GPT-5 Nano",
"GPT-5 Mini": "GPT-5 Mini",
"GPT-5": "GPT-5",
"GPT-O1": "GPT-O1",
"GPT-O3 Mini": "Mini GPT-O3",
"GPT-O3": "GPT-O3",
"GPT-O4 Mini": "Mini GPT-O4",
"Claude 3.5 Sonnet": "Claude 3.5 Sonnet",
"Claude 3.7 Sonnet": "Claude 3.7 Sonnet",
"Claude 4 Sonnet": "Claude 4 Sonnet",
"Claude 4.5 Sonnet": "Claude 4.5 Sonnet",
"Claude 3.5 Haiku": "Claude 3.5 Haiku",
"Claude 3 Haiku": "Claude 3 Haiku",
"Claude 4 Opus": "Claude 4 Opus",
"Claude 4.1 Opus": "Claude 4.1 Opus",
"Gemini 2.5 Flash": "Flash Gemini 2.5",
"Gemini 2.0 Flash": "Flash Gemini 2.0",
"Gemini 1.5 Flash": "Gemini 1.5 Flash",
"Gemini 2.5 Pro": "Gemini 2.5 Pro",
"DeepSeek R1": "Profundizar R1",
"Private": "Privado",
"Public": "Público"
}

View File

@@ -0,0 +1,142 @@
{
"Build AI-chatbots with support for live chat escalation, knowledge bases, or custom backend endpoints.": "Construisez des AI-chatbots avec le support pour l'escalade du chat en direct, les bases de connaissances ou les points de terminaison du backend personnalisés.",
"Enter your Chat Data API key": "Entrez votre clé API de données de chat",
"Create Chatbot": "Créer un Chatbot",
"Delete Chatbot": "Supprimer Chatbot",
"Send Message to Chatbot": "Envoyer un message à Chatbot",
"Update Chatbot Settings": "Mettre à jour les paramètres de Chatbot",
"Retrain Chatbot": "Entraîner le Chatbot",
"Upload File": "Charger un fichier",
"Create and train a chatbot using custom data, medical models, or custom models. Training takes 1-2 minutes.": "Créer et former un chatbot à l'aide de données personnalisées, de modèles médicaux ou de modèles personnalisés. La formation prend 1 à 2 minutes.",
"Delete a chatbot and all its associated data (training data, conversations, leads, etc.). This action is irreversible.": "Supprimer un chatbot et toutes ses données associées (données de formation, conversations, prospects, etc.). Cette action est irréversible.",
"Send messages to a chatbot and receive a response with support for streaming and OpenAI-compatible formats": "Envoyez des messages à un chatbot et recevez une réponse avec le support du streaming et des formats compatibles avec OpenAI",
"Update comprehensive settings for a chatbot including name, prompts, behavior, and appearance": "Mettre à jour les paramètres complets d'un chatbot incluant le nom, les prompts, le comportement et l'apparence",
"Retrain an existing chatbot with new data or remove existing data (custom-data-upload model only)": "Entraîner un chatbot existant avec de nouvelles données ou supprimer des données existantes (modèle de téléchargement de données personnalisées uniquement)",
"Upload a file to be used with a chatbot for training or knowledge base": "Télécharger un fichier à utiliser avec un chatbot pour la formation ou la base de connaissances",
"Chatbot Name": "Nom du Chatbot",
"Model": "Modélisation",
"Source Text": "Texte source",
"URLs to Scrape": "URLs à Scrape",
"Products": "Produits",
"Q&As": "Q&As",
"Custom Backend URL": "URL du backend personnalisé",
"Bearer Token": "Jeton de Porteur",
"Chatbot": "Chatbot",
"Message Content": "Contenu du message",
"Message Role": "Rôle du message",
"Conversation": "Conversation",
"Include Reasoning": "Inclure Raisonnement",
"Base Model": "Modèle de base",
"Base Prompt Override": "Surcharge de l'invitation de base",
"OpenAI Format": "Format OpenAI",
"Append to Conversation": "Ajouter à la conversation",
"Attached Files": "Fichiers joints",
"Base Prompt": "Invitation de base",
"Initial Messages": "Messages initiaux",
"Suggested Messages": "Messages suggérés",
"Visibility": "Visibilité",
"Temperature": "Température",
"Store Chat History": "Historique du chat du magasin",
"Track IP Address": "Adresse IP du parcours",
"Rate Limit Points": "Limite de points de taux",
"Rate Limit Timeframe": "Fréquence limite de temps",
"Rate Limit Message": "Message de limite de tarif",
"Restrict to Added Domains": "Restreindre aux domaines ajoutés",
"Allowed Domains": "Domaines autorisés",
"Show Calendar": "Afficher le calendrier",
"Calendar URL": "URL du calendrier",
"Calendar Message": "Message du calendrier",
"Enable Bouncing Animation": "Activer l'animation rebondissante",
"Ignore Data Source": "Ignorer la source de données",
"Cookies": "Cookies",
"Extract Main Content": "Extraire le contenu principal",
"Include Only Tags": "Inclure uniquement les tags",
"Exclude Tags": "Exclure les tags",
"Knowledge to Delete": "Connaissance à supprimer",
"File": "Ficher",
"The name of the chatbot to be created": "Le nom du chatbot à créer",
"Select the chatbot model. Note: sourceText and urlsToScrape are ignored for medical and custom models.": "Sélectionnez le modèle de chatbot. Note: sourceText et urlsToScrape sont ignorés pour les modèles médicaux et personnalisés.",
"Training text for the chatbot. Character limits apply based on your plan. Only used for custom-data-upload model.": "Texte de formation pour le chatbot. Les limites de caractères s'appliquent en fonction de votre plan. Utilisé uniquement pour le modèle de téléchargement de données personnalisées.",
"URLs to extract content from. Must start with http:// or https:// (only for custom-data-upload model)": "URL à extraire du contenu. Doit commencer par http:// ou https:// (uniquement pour le modèle custom-data-upload)",
"List of products for training the chatbot": "Liste des produits pour la formation du chatbot",
"List of questions and answers for the chatbot to learn": "Liste des questions et des réponses pour que le chatbot apprenne",
"URL of a custom backend for the chatbot": "URL d'un backend personnalisé pour le chatbot",
"Authentication bearer token for custom backend": "Jeton du porteur d'authentification pour un backend personnalisé",
"Select the chatbot to delete": "Sélectionnez le chatbot à supprimer",
"Select the chatbot to send message to": "Sélectionnez le chatbot à qui envoyer un message",
"The text content of the message to send": "Le contenu du texte du message à envoyer",
"The role of the message sender": "Le rôle de l'expéditeur du message",
"Select an existing conversation or leave empty to start a new one": "Sélectionnez une conversation existante ou laissez vide pour en commencer une nouvelle",
"Include reasoning in the response (overrides chatbot settings)": "Inclure le raisonnement dans la réponse (remplace les paramètres du chatbot)",
"Override the chatbot's base model for this request": "Remplacer le modèle de base du chatbot pour cette requête",
"Override the chatbot's base prompt for this request": "Remplacer l'invite de base du chatbot pour cette requête",
"Return response in OpenAI-compatible format": "Retourner la réponse au format compatible OpenAI",
"Append this message to previous messages with the same conversationId": "Ajouter ce message aux messages précédents avec le même ID de conversation",
"Files to attach to the message (max 3 files)": "Fichiers à joindre au message (max 3 fichiers)",
"Select the chatbot to update": "Sélectionnez le chatbot à mettre à jour",
"Update the name of the chatbot": "Mettre à jour le nom du chatbot",
"Update the base prompt for the chatbot": "Mettre à jour l'invite de base pour le chatbot",
"Array of initial messages to be used by the chatbot": "Tableau des messages initiaux à utiliser par le chatbot",
"Array of suggested messages shown in the chatbot": "Tableau des messages suggérés affichés dans le chatbot",
"Control whether your chatbot is accessible to others": "Contrôle si ton chatbot est accessible aux autres",
"The AI model used in the RAG processing pipeline": "Le modèle IA utilisé dans le pipeline de traitement RAG",
"AI model temperature (0-1, controls randomness)": "Température du modèle IA (0-1, contrôle aléatoire)",
"Whether chat history will be stored on the server": "Si l'historique des discussions sera stocké sur le serveur",
"Whether IP addresses will be stored for conversations and leads": "Si les adresses IP seront stockées pour les conversations et les prospects",
"Maximum number of messages per timeframe from one device": "Nombre maximum de messages par période d'un appareil",
"Timeframe in seconds for rate limiting": "Intervalle en secondes pour la limitation de débit",
"Error message shown when rate limited": "Message d'erreur affiché lorsque le taux est limité",
"Only allow the iframe and widget on specific domains": "N'autoriser l'iframe et le widget que sur des domaines spécifiques",
"Array of domains where the chatbot is allowed": "Tableau de domaines où le chatbot est autorisé",
"Display Calendly booking button in the chatbot": "Afficher le bouton de réservation Calendly dans le chatbot",
"Calendly URL for appointment scheduling": "URL Calendly pour la planification de rendez-vous",
"Message to display for appointment scheduling": "Message à afficher pour la planification des rendez-vous",
"Whether the chatbot bubble should bounce to attract attention": "Si la bulle du chatbot doit rebondir pour attirer l'attention",
"Ignore custom data and act like pure ChatGPT": "Ignorer les données personnalisées et agir comme du chat pur",
"Authentication token for custom backend": "Jeton d'authentification pour le backend personnalisé",
"Select the chatbot to retrain": "Sélectionnez le chatbot à recycler",
"New text data for training the chatbot": "Nouvelles données de texte pour l'entraînement du chatbot",
"List of URLs to extract content from (existing URLs will be recrawled)": "Liste des URLs à extraire du contenu (les URLs existantes seront recréées)",
"Cookies for authorization (semicolon-separated: \"cookie1=value1; cookie2=value2\")": "Cookies pour autorisation (séparés par des points-virgules : \"cookie1=valeur1; cookie2=valeur2\")",
"Automatically remove headers, footers, nav, sidebar, and ads": "Supprimer automatiquement les en-têtes, les pieds de page, la navigation, la barre latérale et les publicités",
"CSS selectors to exclusively extract (comma-separated)": "Sélecteurs CSS à extraire exclusivement (séparés par des virgules)",
"CSS selectors to exclude from scraping (comma-separated)": "Sélecteurs CSS à exclure du scraping (séparés par des virgules)",
"List of products for training (existing products with same ID will be overwritten)": "Liste des produits pour la formation (les produits existants avec le même ID seront remplacés)",
"List of knowledge sources to remove from the chatbot": "Liste des sources de connaissances à supprimer du chatbot",
"Select the chatbot to upload file to": "Sélectionnez le chatbot vers lequel télécharger le fichier",
"The file to upload to the chatbot": "Le fichier à télécharger dans le chatbot",
"Custom Data Upload (GPT-4o, Claude, etc.)": "Envoi de données personnalisées (GPT-4o, Claude, etc.)",
"Medical Chat - Human": "Chat Médical - Humain",
"Medical Chat - Veterinarian": "Chat Médical - Vétérinaire",
"Custom Model (Your own backend)": "Modèle personnalisé (votre propre backend)",
"User": "Utilisateur",
"Assistant": "Assistant",
"GPT-4o Mini": "GPT-4o Mini",
"GPT-4o": "GPT-4o",
"GPT-4": "GPT-4",
"GPT-4.1 Nano": "GPT-4.1 Nano",
"GPT-4.1 Mini": "GPT-4.1 Mini",
"GPT-4.1": "GPT-4.1",
"GPT-5 Nano": "GPT-5 Nano",
"GPT-5 Mini": "Mini GPT-5",
"GPT-5": "GPT-5",
"GPT-O1": "GPT-O1",
"GPT-O3 Mini": "GPT-O3 Mini",
"GPT-O3": "GPT-O3",
"GPT-O4 Mini": "GPT-O4 Mini",
"Claude 3.5 Sonnet": "Claude 3.5 Sonnet",
"Claude 3.7 Sonnet": "Claude 3.7 Sonnet",
"Claude 4 Sonnet": "Claude 4 Sonnet",
"Claude 4.5 Sonnet": "Claude 4.5 Sonnet",
"Claude 3.5 Haiku": "Claude 3.5 Haiku",
"Claude 3 Haiku": "Claude 3 Haiku",
"Claude 4 Opus": "Claude 4 Opus",
"Claude 4.1 Opus": "Claude 4.1 Opus",
"Gemini 2.5 Flash": "Flash Gemini 2.5",
"Gemini 2.0 Flash": "Flash Gemini 2.0",
"Gemini 1.5 Flash": "Flash Gemini 1.5",
"Gemini 2.5 Pro": "Gemini 2.5 Pro",
"DeepSeek R1": "DeepSeek R1",
"Private": "Privé",
"Public": "Publique"
}

View File

@@ -0,0 +1,142 @@
{
"Build AI-chatbots with support for live chat escalation, knowledge bases, or custom backend endpoints.": "ライブチャットエスカレーション、ナレッジベース、またはカスタムバックエンドエンドポイントをサポートしてAIチャットボットを構築します。",
"Enter your Chat Data API key": "チャットデータ API キーを入力してください",
"Create Chatbot": "チャットボットを作成",
"Delete Chatbot": "チャットボットを削除",
"Send Message to Chatbot": "チャットボットにメッセージを送信",
"Update Chatbot Settings": "チャットボットの設定を更新",
"Retrain Chatbot": "Retrain Chatbot",
"Upload File": "ファイルをアップロード",
"Create and train a chatbot using custom data, medical models, or custom models. Training takes 1-2 minutes.": "カスタムデータ、医療モデル、またはカスタムモデルを使用してチャットボットを作成して訓練します。トレーニングには1-2分かかります。",
"Delete a chatbot and all its associated data (training data, conversations, leads, etc.). This action is irreversible.": "チャットボットと関連するすべてのデータ (トレーニングデータ、会話、リードなど) を削除します。この操作は元に戻せません。",
"Send messages to a chatbot and receive a response with support for streaming and OpenAI-compatible formats": "チャットボットにメッセージを送信し、ストリーミングとOpenAI対応フォーマットをサポートしたレスポンスを受け取ります。",
"Update comprehensive settings for a chatbot including name, prompts, behavior, and appearance": "名前、プロンプト、動作、外観を含むチャットボットの包括的な設定を更新します",
"Retrain an existing chatbot with new data or remove existing data (custom-data-upload model only)": "既存のチャットボットを新しいデータでRetrainするか、既存のデータを削除しますカスタムデータアップロードモデルのみ",
"Upload a file to be used with a chatbot for training or knowledge base": "チャットボットと一緒にトレーニングやナレッジベースに使用するファイルをアップロードする",
"Chatbot Name": "チャットボット名",
"Model": "モデル",
"Source Text": "ソーステキスト",
"URLs to Scrape": "スクラップする URL",
"Products": "商品",
"Q&As": "Q&As",
"Custom Backend URL": "カスタムバックエンドURL",
"Bearer Token": "ベアラートトークン",
"Chatbot": "チャットボット",
"Message Content": "メッセージの内容",
"Message Role": "メッセージロール",
"Conversation": "会話",
"Include Reasoning": "理由を含む",
"Base Model": "ベースモデル",
"Base Prompt Override": "基本プロンプトの上書き",
"OpenAI Format": "OpenAI フォーマット",
"Append to Conversation": "会話に追加",
"Attached Files": "添付ファイル",
"Base Prompt": "基本的なプロンプト表示",
"Initial Messages": "最初のメッセージ",
"Suggested Messages": "推奨メッセージ",
"Visibility": "公開範囲",
"Temperature": "温度",
"Store Chat History": "ストアチャット履歴",
"Track IP Address": "IPアドレスを追跡",
"Rate Limit Points": "レートリミットポイント",
"Rate Limit Timeframe": "Rate Limit Timeframe",
"Rate Limit Message": "Rate Limit Message",
"Restrict to Added Domains": "追加ドメインの制限",
"Allowed Domains": "許可されたドメイン",
"Show Calendar": "カレンダーを表示",
"Calendar URL": "カレンダー URL",
"Calendar Message": "カレンダーメッセージ",
"Enable Bouncing Animation": "バウンスアニメーションを有効にする",
"Ignore Data Source": "データソースを無視",
"Cookies": "Cookie",
"Extract Main Content": "メインコンテンツを抽出",
"Include Only Tags": "タグのみを含める",
"Exclude Tags": "除外タグ",
"Knowledge to Delete": "削除する知識",
"File": "ファイル",
"The name of the chatbot to be created": "作成されるチャットボットの名前",
"Select the chatbot model. Note: sourceText and urlsToScrape are ignored for medical and custom models.": "チャットボットモデルを選択します。注:医療モデルとカスタムモデルではsourceTextとurlsToScrapeは無視されます。",
"Training text for the chatbot. Character limits apply based on your plan. Only used for custom-data-upload model.": "チャットボットのトレーニングテキスト。あなたのプランに基づいてキャラクター制限が適用されます。カスタムデータアップロードモデルにのみ使用されます。",
"URLs to extract content from. Must start with http:// or https:// (only for custom-data-upload model)": "コンテンツを抽出するURL。http://またはhttps://で始まる必要があります(カスタムデータアップロードモデルの場合のみ)",
"List of products for training the chatbot": "チャットボットを訓練するための製品一覧",
"List of questions and answers for the chatbot to learn": "チャットボットが学習する質問と回答のリスト",
"URL of a custom backend for the chatbot": "チャットボットのカスタムバックエンドの URL",
"Authentication bearer token for custom backend": "カスタムバックエンドの認証ベアラートトークン",
"Select the chatbot to delete": "削除するチャットボットを選択します",
"Select the chatbot to send message to": "メッセージを送信するチャットボットを選択してください",
"The text content of the message to send": "送信するメッセージのテキスト",
"The role of the message sender": "メッセージ送信者の役割",
"Select an existing conversation or leave empty to start a new one": "既存の会話を選択するか、新しい会話を開始するには空欄にしてください",
"Include reasoning in the response (overrides chatbot settings)": "応答に推論を含める (チャットボットの設定を上書きします)",
"Override the chatbot's base model for this request": "このリクエストに対するチャットボットのベースモデルを上書きする",
"Override the chatbot's base prompt for this request": "このリクエストに対するチャットボットの基本プロンプトを上書きする",
"Return response in OpenAI-compatible format": "OpenAI対応形式で返信する",
"Append this message to previous messages with the same conversationId": "同じ会話 Id の前のメッセージにこのメッセージを追加します",
"Files to attach to the message (max 3 files)": "メッセージに添付するファイル (最大 3 ファイル)",
"Select the chatbot to update": "更新するチャットボットを選択します",
"Update the name of the chatbot": "チャットボットの名前を更新する",
"Update the base prompt for the chatbot": "チャットボットの基本プロンプトを更新する",
"Array of initial messages to be used by the chatbot": "チャットボットが使用する最初のメッセージの配列",
"Array of suggested messages shown in the chatbot": "チャットボットに表示される推奨メッセージの配列",
"Control whether your chatbot is accessible to others": "チャットボットが他のユーザーにアクセスできるかどうかを制御します",
"The AI model used in the RAG processing pipeline": "RAG 処理パイプラインで使用される AI モデル",
"AI model temperature (0-1, controls randomness)": "AIモデル温度0-1、ランダム性を制御",
"Whether chat history will be stored on the server": "チャット履歴をサーバーに保存するかどうか",
"Whether IP addresses will be stored for conversations and leads": "会話とリードのためにIPアドレスを保存するかどうか",
"Maximum number of messages per timeframe from one device": "1つのデバイスからの時間枠あたりの最大メッセージ数",
"Timeframe in seconds for rate limiting": "レート制限の時間枠(秒単位)",
"Error message shown when rate limited": "レート制限時にエラーメッセージが表示されます",
"Only allow the iframe and widget on specific domains": "特定のドメインの iframe とウィジェットのみを許可する",
"Array of domains where the chatbot is allowed": "チャットボットが許可されているドメインの配列",
"Display Calendly booking button in the chatbot": "チャットボットに予約ボタンを表示する",
"Calendly URL for appointment scheduling": "予定のスケジュールのカレンダーURL",
"Message to display for appointment scheduling": "予定のスケジュールを表示するメッセージ",
"Whether the chatbot bubble should bounce to attract attention": "チャットボットバブルが注目を集めるためにバウンスするかどうか",
"Ignore custom data and act like pure ChatGPT": "カスタムデータを無視して純粋なChatGPTのように動作します",
"Authentication token for custom backend": "カスタムバックエンドの認証トークン",
"Select the chatbot to retrain": "チャットボットを選択して再訓練する",
"New text data for training the chatbot": "チャットボットを訓練するための新しいテキストデータ",
"List of URLs to extract content from (existing URLs will be recrawled)": "コンテンツを抽出するURLのリスト (既存のURLは再表示されます)",
"Cookies for authorization (semicolon-separated: \"cookie1=value1; cookie2=value2\")": "承認のためのクッキー (セミコロン区切り: \"cookie1=value1; cookie2=value2\")",
"Automatically remove headers, footers, nav, sidebar, and ads": "ヘッダー、フッター、ナビ、サイドバー、広告を自動的に削除",
"CSS selectors to exclusively extract (comma-separated)": "CSS セレクター (カンマ区切り)",
"CSS selectors to exclude from scraping (comma-separated)": "スクレイピングから除外する CSS セレクター (カンマ区切り)",
"List of products for training (existing products with same ID will be overwritten)": "トレーニングのための製品のリスト (同じIDを持つ既存の製品は上書きされます)",
"List of knowledge sources to remove from the chatbot": "チャットボットから削除するナレッジソースの一覧",
"Select the chatbot to upload file to": "ファイルをアップロードするチャットボットを選択してください",
"The file to upload to the chatbot": "チャットボットにアップロードするファイル",
"Custom Data Upload (GPT-4o, Claude, etc.)": "カスタムデータアップロード (GPT-4o, Claude, etc.)",
"Medical Chat - Human": "医療チャット - 人間",
"Medical Chat - Veterinarian": "Medical Chat - Veterinarian",
"Custom Model (Your own backend)": "カスタムモデル (バックエンド)",
"User": "ユーザー",
"Assistant": "アシスタント",
"GPT-4o Mini": "GPT-4o Mini",
"GPT-4o": "GPT-4o",
"GPT-4": "GPT-4",
"GPT-4.1 Nano": "GPT-4.1 Nano",
"GPT-4.1 Mini": "GPT-4.1 Mini",
"GPT-4.1": "GPT-4.1",
"GPT-5 Nano": "GPT-5 Nano",
"GPT-5 Mini": "GPT-5 Mini",
"GPT-5": "GPT-5",
"GPT-O1": "GPT-O1",
"GPT-O3 Mini": "GPT-O3 Mini",
"GPT-O3": "GPT-O3",
"GPT-O4 Mini": "GPT-O4 Mini",
"Claude 3.5 Sonnet": "Claude 3.5 Sonnet",
"Claude 3.7 Sonnet": "Claude 3.7 Sonnet",
"Claude 4 Sonnet": "Claude 4 Sonnet",
"Claude 4.5 Sonnet": "Claude 4.5 Sonnet",
"Claude 3.5 Haiku": "Claude 3.5 Haiku",
"Claude 3 Haiku": "クロード3俳句format@@0",
"Claude 4 Opus": "Claude 4 Opus",
"Claude 4.1 Opus": "Claude 4.1 Opus",
"Gemini 2.5 Flash": "Gemini 2.5 フラッシュ",
"Gemini 2.0 Flash": "ジェミニ2.0フラッシュ",
"Gemini 1.5 Flash": "Gemini 1.5 フラッシュ",
"Gemini 2.5 Pro": "Gemini 2.5 Pro",
"DeepSeek R1": "DeepSeek R1",
"Private": "非公開",
"Public": "公開"
}

View File

@@ -0,0 +1,142 @@
{
"Build AI-chatbots with support for live chat escalation, knowledge bases, or custom backend endpoints.": "Bouw AI-chatbots met ondersteuning voor live-chatescalatie, kennisbases, of aangepaste backend eindpunten.",
"Enter your Chat Data API key": "Voer uw chat-gegevens API-sleutel in",
"Create Chatbot": "Chatbot maken",
"Delete Chatbot": "Chatbot verwijderen",
"Send Message to Chatbot": "Stuur bericht naar Chatbot",
"Update Chatbot Settings": "Chatbot instellingen bijwerken",
"Retrain Chatbot": "Herstel Chatbot",
"Upload File": "Bestand uploaden",
"Create and train a chatbot using custom data, medical models, or custom models. Training takes 1-2 minutes.": "Maken en trainen van een chatbot met behulp van aangepaste gegevens, medische modellen of aangepaste modellen. Training duurt 1-2 minuten.",
"Delete a chatbot and all its associated data (training data, conversations, leads, etc.). This action is irreversible.": "Verwijder een chatbot en alle bijbehorende gegevens (training gegevens, gesprekken, leads, etc.). Deze actie is onomkeerbaar.",
"Send messages to a chatbot and receive a response with support for streaming and OpenAI-compatible formats": "Stuur berichten naar een chatbot en ontvang een antwoord met ondersteuning voor streaming en OpenAI-compatibele formaten",
"Update comprehensive settings for a chatbot including name, prompts, behavior, and appearance": "Update uitgebreide instellingen voor een chatbot inclusief naam, prompts, gedrag en uiterlijk",
"Retrain an existing chatbot with new data or remove existing data (custom-data-upload model only)": "Herhaal een bestaande chatbot met nieuwe gegevens of verwijder bestaande gegevens (alleen custom-data-upload model)",
"Upload a file to be used with a chatbot for training or knowledge base": "Upload een bestand om te gebruiken met een chatbot voor training of kennisbank",
"Chatbot Name": "Chatbot Naam",
"Model": "Model",
"Source Text": "Bron tekst",
"URLs to Scrape": "URL's naar scrape",
"Products": "Product(en)",
"Q&As": "Q&As",
"Custom Backend URL": "Aangepaste backend-URL",
"Bearer Token": "Betere Token",
"Chatbot": "Chatbot",
"Message Content": "Bericht inhoud",
"Message Role": "Bericht rol",
"Conversation": "Gesprek",
"Include Reasoning": "Redenen opnemen",
"Base Model": "Basis model",
"Base Prompt Override": "Basis vraag overschrijven",
"OpenAI Format": "OpenAI formaat",
"Append to Conversation": "Toevoegen aan conversatie",
"Attached Files": "Bijgevoegde bestanden",
"Base Prompt": "Standaard vraag",
"Initial Messages": "Initiële berichten",
"Suggested Messages": "Voorgestelde berichten",
"Visibility": "Zichtbaarheid",
"Temperature": "Temperatuur",
"Store Chat History": "Chatgeschiedenis opslaan",
"Track IP Address": "Volg IP adres",
"Rate Limit Points": "Tarief Limiet Punten",
"Rate Limit Timeframe": "Tarief Limiet Tijdsframe",
"Rate Limit Message": "Rate limit bericht",
"Restrict to Added Domains": "Beperken tot toegevoegde domeinen",
"Allowed Domains": "Toegestane domeinen",
"Show Calendar": "Kalender tonen",
"Calendar URL": "Kalender URL",
"Calendar Message": "Agenda Bericht",
"Enable Bouncing Animation": "Stuiterende Animatie Inschakelen",
"Ignore Data Source": "Negeer Data Bron",
"Cookies": "Koekjes",
"Extract Main Content": "Uitpakken van hoofdinhoud",
"Include Only Tags": "Alleen tags opnemen",
"Exclude Tags": "Labels uitsluiten",
"Knowledge to Delete": "Kennis om te verwijderen",
"File": "Bestand",
"The name of the chatbot to be created": "De naam van de te maken chatbot",
"Select the chatbot model. Note: sourceText and urlsToScrape are ignored for medical and custom models.": "Selecteer het chatbot model. Opmerking: brontekst en urlsToScrape worden genegeerd voor medische en aangepaste modellen.",
"Training text for the chatbot. Character limits apply based on your plan. Only used for custom-data-upload model.": "Trainingstekst voor de chatbot. Karakter limieten zijn van toepassing op basis van uw plan. Alleen gebruikt voor custom-data-upload model.",
"URLs to extract content from. Must start with http:// or https:// (only for custom-data-upload model)": "URL's om inhoud uit te pakken. Moet beginnen met http:// of https:// (alleen voor custom-data-upload model)",
"List of products for training the chatbot": "Lijst met producten voor het trainen van de chatbot",
"List of questions and answers for the chatbot to learn": "Lijst met vragen en antwoorden voor de chatbot om te leren",
"URL of a custom backend for the chatbot": "URL van een aangepast beheergedeelte voor de chatbot",
"Authentication bearer token for custom backend": "Authenticatiedrager token voor aangepaste backend",
"Select the chatbot to delete": "Selecteer de chatbot om te verwijderen",
"Select the chatbot to send message to": "Selecteer de chatbot om bericht naar toe te sturen",
"The text content of the message to send": "De tekst inhoud van het te verzenden bericht",
"The role of the message sender": "De rol van de berichtafzender",
"Select an existing conversation or leave empty to start a new one": "Selecteer een bestaand gesprek of laat leeg om een nieuw gesprek te starten",
"Include reasoning in the response (overrides chatbot settings)": "Inclusief redenering in de reactie (overschrijft chatbot instellingen)",
"Override the chatbot's base model for this request": "Overschrijf het basis model van de chatbot voor dit verzoek",
"Override the chatbot's base prompt for this request": "Overschrijf de basis prompt van de chatbot voor dit verzoek",
"Return response in OpenAI-compatible format": "Retour reactie in OpenAI-compatibele formaat",
"Append this message to previous messages with the same conversationId": "Dit bericht toevoegen aan eerdere berichten met hetzelfde gesprekId",
"Files to attach to the message (max 3 files)": "Bestanden om aan het bericht toe te voegen (max 3 bestanden)",
"Select the chatbot to update": "Selecteer de chatbot om te updaten",
"Update the name of the chatbot": "Werk de naam van de chatbot bij",
"Update the base prompt for the chatbot": "Basisprompt voor de chatbot bijwerken",
"Array of initial messages to be used by the chatbot": "Reeks van eerste berichten om te gebruiken door de chatbot",
"Array of suggested messages shown in the chatbot": "Array van voorgestelde berichten getoond in de chatbot",
"Control whether your chatbot is accessible to others": "Bepaal of je chatbot toegankelijk is voor anderen",
"The AI model used in the RAG processing pipeline": "Het AI-model dat wordt gebruikt in de RAG-verwerking",
"AI model temperature (0-1, controls randomness)": "AI model temperatuur (0-1, randomness)",
"Whether chat history will be stored on the server": "Of chatgeschiedenis zal worden opgeslagen op de server",
"Whether IP addresses will be stored for conversations and leads": "Of IP-adressen worden opgeslagen voor gesprekken en leads",
"Maximum number of messages per timeframe from one device": "Maximum aantal berichten per tijdseenheid op één apparaat",
"Timeframe in seconds for rate limiting": "Tijdsbestek in seconden voor tariefbeperking",
"Error message shown when rate limited": "Foutmelding getoond wanneer het percentage beperkt is",
"Only allow the iframe and widget on specific domains": "Sta alleen iframe en widget toe op specifieke domeinen",
"Array of domains where the chatbot is allowed": "Reeks van domeinen waar de chatbot is toegestaan",
"Display Calendly booking button in the chatbot": "Toon reserveringsknop voor agenda in de chatbot",
"Calendly URL for appointment scheduling": "Agenda-URL voor de planning van de afspraak",
"Message to display for appointment scheduling": "Weer te geven bericht voor de afspraak planning",
"Whether the chatbot bubble should bounce to attract attention": "Of de chatbot ballon moet stuiteren om aandacht te trekken",
"Ignore custom data and act like pure ChatGPT": "Aangepaste gegevens negeren en handelen als puur ChatGPT",
"Authentication token for custom backend": "Authenticatietoken voor aangepaste backend",
"Select the chatbot to retrain": "Selecteer de chatbot om te hertrainen",
"New text data for training the chatbot": "Nieuwe tekstgegevens voor het trainen van de chatbot",
"List of URLs to extract content from (existing URLs will be recrawled)": "Lijst van URL's om inhoud van te extraheren (bestaande URL's worden herschreven)",
"Cookies for authorization (semicolon-separated: \"cookie1=value1; cookie2=value2\")": "Cookies voor autorisatie (semicolon-scheiding: \"cookie1=value1; cookie2=value2\")",
"Automatically remove headers, footers, nav, sidebar, and ads": "Verwijder headers, voettekst, nav sidebar en advertenties automatisch",
"CSS selectors to exclusively extract (comma-separated)": "CSS-selectors die exclusief moeten extraheren (komma-gescheiden)",
"CSS selectors to exclude from scraping (comma-separated)": "CSS-selectors uit te sluiten van scraping (komma gescheiden)",
"List of products for training (existing products with same ID will be overwritten)": "Lijst van producten voor training (bestaande producten met dezelfde ID worden overschreven)",
"List of knowledge sources to remove from the chatbot": "Lijst van kennisbronnen om te verwijderen van de chatbot",
"Select the chatbot to upload file to": "Selecteer de chatbot om het bestand naar te uploaden",
"The file to upload to the chatbot": "Het bestand om te uploaden naar de chatbot",
"Custom Data Upload (GPT-4o, Claude, etc.)": "Aangepaste Data Upload (GPT-4o, Claude, etc.)",
"Medical Chat - Human": "Medische chat - Mens",
"Medical Chat - Veterinarian": "Medische Chat - Dierenarts",
"Custom Model (Your own backend)": "Aangepast model (uw eigen backend)",
"User": "Gebruiker",
"Assistant": "Assistent",
"GPT-4o Mini": "GPT-4o Mini",
"GPT-4o": "GPT-4o",
"GPT-4": "GPT-4",
"GPT-4.1 Nano": "GPT-4.1 Nano",
"GPT-4.1 Mini": "GPT-4.1 Mini",
"GPT-4.1": "GPT-4.1",
"GPT-5 Nano": "GPT-5 Nano",
"GPT-5 Mini": "GPT-5 Mini",
"GPT-5": "GPT-5",
"GPT-O1": "GPT-O1",
"GPT-O3 Mini": "GPT-O3 Mini",
"GPT-O3": "GPT-O3",
"GPT-O4 Mini": "GPT-O4 Mini",
"Claude 3.5 Sonnet": "Claude 3.5 Sonnet",
"Claude 3.7 Sonnet": "Claude 3.7 Sonnet",
"Claude 4 Sonnet": "Claude 4 Sonnet",
"Claude 4.5 Sonnet": "Claude 4.5 Sonnet",
"Claude 3.5 Haiku": "Claude 3.5 Haiku",
"Claude 3 Haiku": "Claude 3 Haiku",
"Claude 4 Opus": "Claude 4 Opus",
"Claude 4.1 Opus": "Claude 4.1 Opus",
"Gemini 2.5 Flash": "Gemini 2.5 Flash",
"Gemini 2.0 Flash": "Gemini 2.0 Flash",
"Gemini 1.5 Flash": "Gemini 1.5 flits",
"Gemini 2.5 Pro": "Gemini 2.5 Pro",
"DeepSeek R1": "DieepSeek R1",
"Private": "Privé",
"Public": "Openbaar"
}

View File

@@ -0,0 +1,142 @@
{
"Build AI-chatbots with support for live chat escalation, knowledge bases, or custom backend endpoints.": "Crie chatbots de AI com suporte para escalada do chat ao vivo, bases de conhecimento ou endpoints de back-end personalizados.",
"Enter your Chat Data API key": "Digite sua chave de API de Dados do Chat",
"Create Chatbot": "Criar Chatbot",
"Delete Chatbot": "Excluir Chatbot",
"Send Message to Chatbot": "Enviar mensagem para o Chatbot",
"Update Chatbot Settings": "Atualizar Configurações do Chatbot",
"Retrain Chatbot": "Rebotar Chatbot",
"Upload File": "Enviar Arquivo",
"Create and train a chatbot using custom data, medical models, or custom models. Training takes 1-2 minutes.": "Crie e treine um ChatBot usando dados personalizados, modelos médicos ou modelos personalizados. O treinamento leva 1-2 minutos.",
"Delete a chatbot and all its associated data (training data, conversations, leads, etc.). This action is irreversible.": "Excluir um chatbot e todos os dados associados a ele (dados de treinamento, conversas, leads, etc.). Esta ação é irreversível.",
"Send messages to a chatbot and receive a response with support for streaming and OpenAI-compatible formats": "Envie mensagens para um chatbot e receba uma resposta com suporte para formatos de streaming e compatível com OpenAI:",
"Update comprehensive settings for a chatbot including name, prompts, behavior, and appearance": "Atualize configurações completas para um chatbot incluindo nome, avisos, comportamento e aparência",
"Retrain an existing chatbot with new data or remove existing data (custom-data-upload model only)": "Retreinar um ChatBot existente com novos dados ou remover dados existentes (apenas modelo de upload de dados)",
"Upload a file to be used with a chatbot for training or knowledge base": "Carregue um arquivo para ser usado com um chatbot para treinamento ou base de conhecimento",
"Chatbot Name": "Nome do Chatbot",
"Model": "Modelo",
"Source Text": "Texto de origem",
"URLs to Scrape": "URLs para Scrape",
"Products": "produtos",
"Q&As": "Q&As",
"Custom Backend URL": "URL de Backend personalizada",
"Bearer Token": "Token do portador",
"Chatbot": "Chatbot",
"Message Content": "Conteúdo da Mensagem",
"Message Role": "Função da Mensagem",
"Conversation": "Conversa",
"Include Reasoning": "Incluir a razão",
"Base Model": "Modelo Base",
"Base Prompt Override": "Substituição de Prompt Base",
"OpenAI Format": "Formato OpenAI",
"Append to Conversation": "Acrescentar à conversa",
"Attached Files": "Arquivos anexados",
"Base Prompt": "Aviso Base",
"Initial Messages": "Mensagens iniciais",
"Suggested Messages": "Mensagens Sugeridas",
"Visibility": "Visibilidade",
"Temperature": "Temperatura",
"Store Chat History": "Armazenar histórico de Chat",
"Track IP Address": "Rastrear endereço IP",
"Rate Limit Points": "Taxa limite de pontos",
"Rate Limit Timeframe": "Taxa limite limite de tempo",
"Rate Limit Message": "Taxa limite de mensagem",
"Restrict to Added Domains": "Restringir Domínios Adicionados",
"Allowed Domains": "Domínios permitidos",
"Show Calendar": "Mostrar calendário",
"Calendar URL": "URL do calendário",
"Calendar Message": "Mensagens do Calendário",
"Enable Bouncing Animation": "Ativar Animação Retomante",
"Ignore Data Source": "Ignorar fonte de dados",
"Cookies": "Biscoitos",
"Extract Main Content": "Extrair conteúdo principal",
"Include Only Tags": "Incluir somente Marcadores",
"Exclude Tags": "Excluir Tags",
"Knowledge to Delete": "Conhecimento a apagar",
"File": "Arquivo",
"The name of the chatbot to be created": "O nome do ChatBot a ser criado",
"Select the chatbot model. Note: sourceText and urlsToScrape are ignored for medical and custom models.": "Selecione o modelo do chatbot. Nota: sourceText e urlsToScrape são ignorados para modelos médicos e personalizados.",
"Training text for the chatbot. Character limits apply based on your plan. Only used for custom-data-upload model.": "O texto de treinamento para o robô. Limites de caracteres são aplicados com base no seu plano. Usado apenas para o modelo de upload de dados personalizados.",
"URLs to extract content from. Must start with http:// or https:// (only for custom-data-upload model)": "URLs para extrair conteúdo de. Deve começar com http:// ou https:// (apenas para modelo custom-data-upload)",
"List of products for training the chatbot": "Lista de produtos para treinar o ChatBot",
"List of questions and answers for the chatbot to learn": "Lista de perguntas e respostas para o ChatBot aprender",
"URL of a custom backend for the chatbot": "URL de um backend personalizado para o ChatBot",
"Authentication bearer token for custom backend": "Token de portador de autenticação para backend personalizado",
"Select the chatbot to delete": "Selecione o ChatBot para excluir",
"Select the chatbot to send message to": "Selecione o ChatBot para enviar mensagem para",
"The text content of the message to send": "O conteúdo do texto da mensagem a ser enviada",
"The role of the message sender": "O papel do remetente de mensagem",
"Select an existing conversation or leave empty to start a new one": "Selecione uma conversa existente ou deixe em branco para iniciar uma nova",
"Include reasoning in the response (overrides chatbot settings)": "Incluir raciocínio na resposta (substitui as configurações do chatbot)",
"Override the chatbot's base model for this request": "Substituir o modelo base do ChatBot para esta solicitação",
"Override the chatbot's base prompt for this request": "Substituir o prompt base do chatbot's para esta solicitação",
"Return response in OpenAI-compatible format": "Resposta de retorno em formato compatível com OpenAI-A",
"Append this message to previous messages with the same conversationId": "Acrescentar esta mensagem às mensagens anteriores com o mesmo ID de conversação",
"Files to attach to the message (max 3 files)": "Arquivos para anexar à mensagem (máx. 3 arquivos)",
"Select the chatbot to update": "Selecione o ChatBot para atualizar",
"Update the name of the chatbot": "Atualize o nome do ChatBot",
"Update the base prompt for the chatbot": "Atualizar o prompt base para o ChatBot",
"Array of initial messages to be used by the chatbot": "Array das mensagens iniciais a serem usadas pelo ChatBot",
"Array of suggested messages shown in the chatbot": "Matriz de mensagens sugeridas mostradas no ChatBot",
"Control whether your chatbot is accessible to others": "Controle se o seu ChatBot está acessível aos outros",
"The AI model used in the RAG processing pipeline": "O modelo de IA usado no pipeline de processamento de RAG",
"AI model temperature (0-1, controls randomness)": "Temperatura do modelo IA (0-1, controles de aleatoriedade)",
"Whether chat history will be stored on the server": "Se o histórico de bate-papo será armazenado no servidor",
"Whether IP addresses will be stored for conversations and leads": "Se os endereços IP serão armazenados para conversas e leads",
"Maximum number of messages per timeframe from one device": "Número máximo de mensagens por período de tempo de um dispositivo",
"Timeframe in seconds for rate limiting": "Período de tempo em segundos para limitar a taxa",
"Error message shown when rate limited": "Mensagem de erro mostrada quando a taxa limitada",
"Only allow the iframe and widget on specific domains": "Permitir apenas o iframe e widget em domínios específicos",
"Array of domains where the chatbot is allowed": "Array de domínios onde o chatbot é permitido",
"Display Calendly booking button in the chatbot": "Exibir o botão de agendamento do Calendly no ChatBot",
"Calendly URL for appointment scheduling": "URL do Calendly para agendamento de compromissos",
"Message to display for appointment scheduling": "Mensagem a exibir no agendamento de compromissos",
"Whether the chatbot bubble should bounce to attract attention": "Se a bolha do ChatBot deve recuperar para atrair atenção",
"Ignore custom data and act like pure ChatGPT": "Ignorar dados personalizados e agir como ChatGPT puro",
"Authentication token for custom backend": "Token de autenticação para backend personalizado",
"Select the chatbot to retrain": "Selecione o ChatBot para treinar",
"New text data for training the chatbot": "Novo texto para treinar o ChatBot",
"List of URLs to extract content from (existing URLs will be recrawled)": "Lista de URLs para extrair conteúdo de (URLs existentes serão recuperadas)",
"Cookies for authorization (semicolon-separated: \"cookie1=value1; cookie2=value2\")": "Cookies para autorização (separados por ponto e vírgula: \"cookie1=valor1; cookie2=valor2\")",
"Automatically remove headers, footers, nav, sidebar, and ads": "Remover automaticamente cabeçalhos, rodapés, nav, barra lateral e anúncios",
"CSS selectors to exclusively extract (comma-separated)": "Seletores CSS para extrair exclusivamente (separado por vírgulas)",
"CSS selectors to exclude from scraping (comma-separated)": "Seletores CSS para excluir da scraping (separados por vírgula)",
"List of products for training (existing products with same ID will be overwritten)": "Lista de produtos para treinamento (produtos existentes com mesmo ID serão substituídos)",
"List of knowledge sources to remove from the chatbot": "Lista de fontes de conhecimento para remover do ChatBot",
"Select the chatbot to upload file to": "Selecione o ChatBot para carregar o arquivo para",
"The file to upload to the chatbot": "O arquivo para fazer upload para o ChatBot",
"Custom Data Upload (GPT-4o, Claude, etc.)": "Envio de dados personalizados (GPT-4o, Claude, etc.)",
"Medical Chat - Human": "Bate-papo médico - Humano",
"Medical Chat - Veterinarian": "Bate-papo médico - Veterinário",
"Custom Model (Your own backend)": "Modelo personalizado (seu próprio backend)",
"User": "Usuário",
"Assistant": "Assistente",
"GPT-4o Mini": "GPT-4o Mini",
"GPT-4o": "GPT-4o",
"GPT-4": "GPT-4",
"GPT-4.1 Nano": "GPT-4.1 Nano",
"GPT-4.1 Mini": "GPT-4.1 Mini",
"GPT-4.1": "GPT-4.1",
"GPT-5 Nano": "GPT-5 Nano",
"GPT-5 Mini": "Mini GPT-5",
"GPT-5": "GPT-5",
"GPT-O1": "GPT-O1",
"GPT-O3 Mini": "Mini GPT-O3",
"GPT-O3": "GPT-O3",
"GPT-O4 Mini": "Mini GPT-O4",
"Claude 3.5 Sonnet": "Sonnet de Claude 3.5",
"Claude 3.7 Sonnet": "Claude 3.7 Sonnet",
"Claude 4 Sonnet": "Claude 4 Sonnet",
"Claude 4.5 Sonnet": "Claude 4.5 Sonnet",
"Claude 3.5 Haiku": "Claude 3,5 Haiku",
"Claude 3 Haiku": "Claude 3 Haiku",
"Claude 4 Opus": "Claude 4 Opus",
"Claude 4.1 Opus": "Claude 4.1 Opus",
"Gemini 2.5 Flash": "Flash Gemini 2.5",
"Gemini 2.0 Flash": "Flash Gemini 2.0",
"Gemini 1.5 Flash": "Flash Gemini 1.5",
"Gemini 2.5 Pro": "Gemini 2.5 Pro",
"DeepSeek R1": "DeepSeek R1",
"Private": "Privado",
"Public": "Público"
}

View File

@@ -0,0 +1,142 @@
{
"Build AI-chatbots with support for live chat escalation, knowledge bases, or custom backend endpoints.": "Build AI-chatbots with support for live chat escalation, knowledge bases, or custom backend endpoints.",
"Enter your Chat Data API key": "Enter your Chat Data API key",
"Create Chatbot": "Create Chatbot",
"Delete Chatbot": "Delete Chatbot",
"Send Message to Chatbot": "Send Message to Chatbot",
"Update Chatbot Settings": "Update Chatbot Settings",
"Retrain Chatbot": "Retrain Chatbot",
"Upload File": "Upload File",
"Create and train a chatbot using custom data, medical models, or custom models. Training takes 1-2 minutes.": "Create and train a chatbot using custom data, medical models, or custom models. Training takes 1-2 minutes.",
"Delete a chatbot and all its associated data (training data, conversations, leads, etc.). This action is irreversible.": "Delete a chatbot and all its associated data (training data, conversations, leads, etc.). This action is irreversible.",
"Send messages to a chatbot and receive a response with support for streaming and OpenAI-compatible formats": "Send messages to a chatbot and receive a response with support for streaming and OpenAI-compatible formats",
"Update comprehensive settings for a chatbot including name, prompts, behavior, and appearance": "Update comprehensive settings for a chatbot including name, prompts, behavior, and appearance",
"Retrain an existing chatbot with new data or remove existing data (custom-data-upload model only)": "Retrain an existing chatbot with new data or remove existing data (custom-data-upload model only)",
"Upload a file to be used with a chatbot for training or knowledge base": "Upload a file to be used with a chatbot for training or knowledge base",
"Chatbot Name": "Chatbot Name",
"Model": "Model",
"Source Text": "Source Text",
"URLs to Scrape": "URLs to Scrape",
"Products": "Products",
"Q&As": "Q&As",
"Custom Backend URL": "Custom Backend URL",
"Bearer Token": "Bearer Token",
"Chatbot": "Chatbot",
"Message Content": "Message Content",
"Message Role": "Message Role",
"Conversation": "Conversation",
"Include Reasoning": "Include Reasoning",
"Base Model": "Base Model",
"Base Prompt Override": "Base Prompt Override",
"OpenAI Format": "OpenAI Format",
"Append to Conversation": "Append to Conversation",
"Attached Files": "Attached Files",
"Base Prompt": "Base Prompt",
"Initial Messages": "Initial Messages",
"Suggested Messages": "Suggested Messages",
"Visibility": "Visibility",
"Temperature": "Temperature",
"Store Chat History": "Store Chat History",
"Track IP Address": "Track IP Address",
"Rate Limit Points": "Rate Limit Points",
"Rate Limit Timeframe": "Rate Limit Timeframe",
"Rate Limit Message": "Rate Limit Message",
"Restrict to Added Domains": "Restrict to Added Domains",
"Allowed Domains": "Allowed Domains",
"Show Calendar": "Show Calendar",
"Calendar URL": "Calendar URL",
"Calendar Message": "Calendar Message",
"Enable Bouncing Animation": "Enable Bouncing Animation",
"Ignore Data Source": "Ignore Data Source",
"Cookies": "Cookies",
"Extract Main Content": "Extract Main Content",
"Include Only Tags": "Include Only Tags",
"Exclude Tags": "Exclude Tags",
"Knowledge to Delete": "Knowledge to Delete",
"File": "File",
"The name of the chatbot to be created": "The name of the chatbot to be created",
"Select the chatbot model. Note: sourceText and urlsToScrape are ignored for medical and custom models.": "Select the chatbot model. Note: sourceText and urlsToScrape are ignored for medical and custom models.",
"Training text for the chatbot. Character limits apply based on your plan. Only used for custom-data-upload model.": "Training text for the chatbot. Character limits apply based on your plan. Only used for custom-data-upload model.",
"URLs to extract content from. Must start with http:// or https:// (only for custom-data-upload model)": "URLs to extract content from. Must start with http:// or https:// (only for custom-data-upload model)",
"List of products for training the chatbot": "List of products for training the chatbot",
"List of questions and answers for the chatbot to learn": "List of questions and answers for the chatbot to learn",
"URL of a custom backend for the chatbot": "URL of a custom backend for the chatbot",
"Authentication bearer token for custom backend": "Authentication bearer token for custom backend",
"Select the chatbot to delete": "Select the chatbot to delete",
"Select the chatbot to send message to": "Select the chatbot to send message to",
"The text content of the message to send": "The text content of the message to send",
"The role of the message sender": "The role of the message sender",
"Select an existing conversation or leave empty to start a new one": "Select an existing conversation or leave empty to start a new one",
"Include reasoning in the response (overrides chatbot settings)": "Include reasoning in the response (overrides chatbot settings)",
"Override the chatbot's base model for this request": "Override the chatbot's base model for this request",
"Override the chatbot's base prompt for this request": "Override the chatbot's base prompt for this request",
"Return response in OpenAI-compatible format": "Return response in OpenAI-compatible format",
"Append this message to previous messages with the same conversationId": "Append this message to previous messages with the same conversationId",
"Files to attach to the message (max 3 files)": "Files to attach to the message (max 3 files)",
"Select the chatbot to update": "Select the chatbot to update",
"Update the name of the chatbot": "Update the name of the chatbot",
"Update the base prompt for the chatbot": "Update the base prompt for the chatbot",
"Array of initial messages to be used by the chatbot": "Array of initial messages to be used by the chatbot",
"Array of suggested messages shown in the chatbot": "Array of suggested messages shown in the chatbot",
"Control whether your chatbot is accessible to others": "Control whether your chatbot is accessible to others",
"The AI model used in the RAG processing pipeline": "The AI model used in the RAG processing pipeline",
"AI model temperature (0-1, controls randomness)": "AI model temperature (0-1, controls randomness)",
"Whether chat history will be stored on the server": "Whether chat history will be stored on the server",
"Whether IP addresses will be stored for conversations and leads": "Whether IP addresses will be stored for conversations and leads",
"Maximum number of messages per timeframe from one device": "Maximum number of messages per timeframe from one device",
"Timeframe in seconds for rate limiting": "Timeframe in seconds for rate limiting",
"Error message shown when rate limited": "Error message shown when rate limited",
"Only allow the iframe and widget on specific domains": "Only allow the iframe and widget on specific domains",
"Array of domains where the chatbot is allowed": "Array of domains where the chatbot is allowed",
"Display Calendly booking button in the chatbot": "Display Calendly booking button in the chatbot",
"Calendly URL for appointment scheduling": "Calendly URL for appointment scheduling",
"Message to display for appointment scheduling": "Message to display for appointment scheduling",
"Whether the chatbot bubble should bounce to attract attention": "Whether the chatbot bubble should bounce to attract attention",
"Ignore custom data and act like pure ChatGPT": "Ignore custom data and act like pure ChatGPT",
"Authentication token for custom backend": "Authentication token for custom backend",
"Select the chatbot to retrain": "Select the chatbot to retrain",
"New text data for training the chatbot": "New text data for training the chatbot",
"List of URLs to extract content from (existing URLs will be recrawled)": "List of URLs to extract content from (existing URLs will be recrawled)",
"Cookies for authorization (semicolon-separated: \"cookie1=value1; cookie2=value2\")": "Cookies for authorization (semicolon-separated: \"cookie1=value1; cookie2=value2\")",
"Automatically remove headers, footers, nav, sidebar, and ads": "Automatically remove headers, footers, nav, sidebar, and ads",
"CSS selectors to exclusively extract (comma-separated)": "CSS selectors to exclusively extract (comma-separated)",
"CSS selectors to exclude from scraping (comma-separated)": "CSS selectors to exclude from scraping (comma-separated)",
"List of products for training (existing products with same ID will be overwritten)": "List of products for training (existing products with same ID will be overwritten)",
"List of knowledge sources to remove from the chatbot": "List of knowledge sources to remove from the chatbot",
"Select the chatbot to upload file to": "Select the chatbot to upload file to",
"The file to upload to the chatbot": "The file to upload to the chatbot",
"Custom Data Upload (GPT-4o, Claude, etc.)": "Custom Data Upload (GPT-4o, Claude, etc.)",
"Medical Chat - Human": "Medical Chat - Human",
"Medical Chat - Veterinarian": "Medical Chat - Veterinarian",
"Custom Model (Your own backend)": "Custom Model (Your own backend)",
"User": "User",
"Assistant": "Assistant",
"GPT-4o Mini": "GPT-4o Mini",
"GPT-4o": "GPT-4o",
"GPT-4": "GPT-4",
"GPT-4.1 Nano": "GPT-4.1 Nano",
"GPT-4.1 Mini": "GPT-4.1 Mini",
"GPT-4.1": "GPT-4.1",
"GPT-5 Nano": "GPT-5 Nano",
"GPT-5 Mini": "GPT-5 Mini",
"GPT-5": "GPT-5",
"GPT-O1": "GPT-O1",
"GPT-O3 Mini": "GPT-O3 Mini",
"GPT-O3": "GPT-O3",
"GPT-O4 Mini": "GPT-O4 Mini",
"Claude 3.5 Sonnet": "Claude 3.5 Sonnet",
"Claude 3.7 Sonnet": "Claude 3.7 Sonnet",
"Claude 4 Sonnet": "Claude 4 Sonnet",
"Claude 4.5 Sonnet": "Claude 4.5 Sonnet",
"Claude 3.5 Haiku": "Claude 3.5 Haiku",
"Claude 3 Haiku": "Claude 3 Haiku",
"Claude 4 Opus": "Claude 4 Opus",
"Claude 4.1 Opus": "Claude 4.1 Opus",
"Gemini 2.5 Flash": "Gemini 2.5 Flash",
"Gemini 2.0 Flash": "Gemini 2.0 Flash",
"Gemini 1.5 Flash": "Gemini 1.5 Flash",
"Gemini 2.5 Pro": "Gemini 2.5 Pro",
"DeepSeek R1": "DeepSeek R1",
"Private": "Private",
"Public": "Public"
}

View File

@@ -0,0 +1,142 @@
{
"Build AI-chatbots with support for live chat escalation, knowledge bases, or custom backend endpoints.": "Build AI-chatbots with support for live chat escalation, knowledge bases, or custom backend endpoints.",
"Enter your Chat Data API key": "Enter your Chat Data API key",
"Create Chatbot": "Create Chatbot",
"Delete Chatbot": "Delete Chatbot",
"Send Message to Chatbot": "Send Message to Chatbot",
"Update Chatbot Settings": "Update Chatbot Settings",
"Retrain Chatbot": "Retrain Chatbot",
"Upload File": "Upload File",
"Create and train a chatbot using custom data, medical models, or custom models. Training takes 1-2 minutes.": "Create and train a chatbot using custom data, medical models, or custom models. Training takes 1-2 minutes.",
"Delete a chatbot and all its associated data (training data, conversations, leads, etc.). This action is irreversible.": "Delete a chatbot and all its associated data (training data, conversations, leads, etc.). This action is irreversible.",
"Send messages to a chatbot and receive a response with support for streaming and OpenAI-compatible formats": "Send messages to a chatbot and receive a response with support for streaming and OpenAI-compatible formats",
"Update comprehensive settings for a chatbot including name, prompts, behavior, and appearance": "Update comprehensive settings for a chatbot including name, prompts, behavior, and appearance",
"Retrain an existing chatbot with new data or remove existing data (custom-data-upload model only)": "Retrain an existing chatbot with new data or remove existing data (custom-data-upload model only)",
"Upload a file to be used with a chatbot for training or knowledge base": "Upload a file to be used with a chatbot for training or knowledge base",
"Chatbot Name": "Chatbot Name",
"Model": "Model",
"Source Text": "Source Text",
"URLs to Scrape": "URLs to Scrape",
"Products": "产品",
"Q&As": "Q&As",
"Custom Backend URL": "Custom Backend URL",
"Bearer Token": "Bearer Token",
"Chatbot": "Chatbot",
"Message Content": "Message Content",
"Message Role": "Message Role",
"Conversation": "Conversation",
"Include Reasoning": "Include Reasoning",
"Base Model": "Base Model",
"Base Prompt Override": "Base Prompt Override",
"OpenAI Format": "OpenAI Format",
"Append to Conversation": "Append to Conversation",
"Attached Files": "Attached Files",
"Base Prompt": "Base Prompt",
"Initial Messages": "Initial Messages",
"Suggested Messages": "Suggested Messages",
"Visibility": "Visibility",
"Temperature": "Temperature",
"Store Chat History": "Store Chat History",
"Track IP Address": "Track IP Address",
"Rate Limit Points": "Rate Limit Points",
"Rate Limit Timeframe": "Rate Limit Timeframe",
"Rate Limit Message": "Rate Limit Message",
"Restrict to Added Domains": "Restrict to Added Domains",
"Allowed Domains": "允许的域",
"Show Calendar": "Show Calendar",
"Calendar URL": "Calendar URL",
"Calendar Message": "Calendar Message",
"Enable Bouncing Animation": "Enable Bouncing Animation",
"Ignore Data Source": "Ignore Data Source",
"Cookies": "Cookies",
"Extract Main Content": "Extract Main Content",
"Include Only Tags": "Include Only Tags",
"Exclude Tags": "Exclude Tags",
"Knowledge to Delete": "Knowledge to Delete",
"File": "文件",
"The name of the chatbot to be created": "The name of the chatbot to be created",
"Select the chatbot model. Note: sourceText and urlsToScrape are ignored for medical and custom models.": "Select the chatbot model. Note: sourceText and urlsToScrape are ignored for medical and custom models.",
"Training text for the chatbot. Character limits apply based on your plan. Only used for custom-data-upload model.": "Training text for the chatbot. Character limits apply based on your plan. Only used for custom-data-upload model.",
"URLs to extract content from. Must start with http:// or https:// (only for custom-data-upload model)": "URLs to extract content from. Must start with http:// or https:// (only for custom-data-upload model)",
"List of products for training the chatbot": "List of products for training the chatbot",
"List of questions and answers for the chatbot to learn": "List of questions and answers for the chatbot to learn",
"URL of a custom backend for the chatbot": "URL of a custom backend for the chatbot",
"Authentication bearer token for custom backend": "Authentication bearer token for custom backend",
"Select the chatbot to delete": "Select the chatbot to delete",
"Select the chatbot to send message to": "Select the chatbot to send message to",
"The text content of the message to send": "The text content of the message to send",
"The role of the message sender": "The role of the message sender",
"Select an existing conversation or leave empty to start a new one": "Select an existing conversation or leave empty to start a new one",
"Include reasoning in the response (overrides chatbot settings)": "Include reasoning in the response (overrides chatbot settings)",
"Override the chatbot's base model for this request": "Override the chatbot's base model for this request",
"Override the chatbot's base prompt for this request": "Override the chatbot's base prompt for this request",
"Return response in OpenAI-compatible format": "Return response in OpenAI-compatible format",
"Append this message to previous messages with the same conversationId": "Append this message to previous messages with the same conversationId",
"Files to attach to the message (max 3 files)": "Files to attach to the message (max 3 files)",
"Select the chatbot to update": "Select the chatbot to update",
"Update the name of the chatbot": "Update the name of the chatbot",
"Update the base prompt for the chatbot": "Update the base prompt for the chatbot",
"Array of initial messages to be used by the chatbot": "Array of initial messages to be used by the chatbot",
"Array of suggested messages shown in the chatbot": "Array of suggested messages shown in the chatbot",
"Control whether your chatbot is accessible to others": "Control whether your chatbot is accessible to others",
"The AI model used in the RAG processing pipeline": "The AI model used in the RAG processing pipeline",
"AI model temperature (0-1, controls randomness)": "AI model temperature (0-1, controls randomness)",
"Whether chat history will be stored on the server": "Whether chat history will be stored on the server",
"Whether IP addresses will be stored for conversations and leads": "Whether IP addresses will be stored for conversations and leads",
"Maximum number of messages per timeframe from one device": "Maximum number of messages per timeframe from one device",
"Timeframe in seconds for rate limiting": "Timeframe in seconds for rate limiting",
"Error message shown when rate limited": "Error message shown when rate limited",
"Only allow the iframe and widget on specific domains": "Only allow the iframe and widget on specific domains",
"Array of domains where the chatbot is allowed": "Array of domains where the chatbot is allowed",
"Display Calendly booking button in the chatbot": "Display Calendly booking button in the chatbot",
"Calendly URL for appointment scheduling": "Calendly URL for appointment scheduling",
"Message to display for appointment scheduling": "Message to display for appointment scheduling",
"Whether the chatbot bubble should bounce to attract attention": "Whether the chatbot bubble should bounce to attract attention",
"Ignore custom data and act like pure ChatGPT": "Ignore custom data and act like pure ChatGPT",
"Authentication token for custom backend": "Authentication token for custom backend",
"Select the chatbot to retrain": "Select the chatbot to retrain",
"New text data for training the chatbot": "New text data for training the chatbot",
"List of URLs to extract content from (existing URLs will be recrawled)": "List of URLs to extract content from (existing URLs will be recrawled)",
"Cookies for authorization (semicolon-separated: \"cookie1=value1; cookie2=value2\")": "Cookies for authorization (semicolon-separated: \"cookie1=value1; cookie2=value2\")",
"Automatically remove headers, footers, nav, sidebar, and ads": "Automatically remove headers, footers, nav, sidebar, and ads",
"CSS selectors to exclusively extract (comma-separated)": "CSS selectors to exclusively extract (comma-separated)",
"CSS selectors to exclude from scraping (comma-separated)": "CSS selectors to exclude from scraping (comma-separated)",
"List of products for training (existing products with same ID will be overwritten)": "List of products for training (existing products with same ID will be overwritten)",
"List of knowledge sources to remove from the chatbot": "List of knowledge sources to remove from the chatbot",
"Select the chatbot to upload file to": "Select the chatbot to upload file to",
"The file to upload to the chatbot": "The file to upload to the chatbot",
"Custom Data Upload (GPT-4o, Claude, etc.)": "Custom Data Upload (GPT-4o, Claude, etc.)",
"Medical Chat - Human": "Medical Chat - Human",
"Medical Chat - Veterinarian": "Medical Chat - Veterinarian",
"Custom Model (Your own backend)": "Custom Model (Your own backend)",
"User": "用户",
"Assistant": "Assistant",
"GPT-4o Mini": "GPT-4o Mini",
"GPT-4o": "GPT-4o",
"GPT-4": "GPT-4",
"GPT-4.1 Nano": "GPT-4.1 Nano",
"GPT-4.1 Mini": "GPT-4.1 Mini",
"GPT-4.1": "GPT-4.1",
"GPT-5 Nano": "GPT-5 Nano",
"GPT-5 Mini": "GPT-5 Mini",
"GPT-5": "GPT-5",
"GPT-O1": "GPT-O1",
"GPT-O3 Mini": "GPT-O3 Mini",
"GPT-O3": "GPT-O3",
"GPT-O4 Mini": "GPT-O4 Mini",
"Claude 3.5 Sonnet": "Claude 3.5 Sonnet",
"Claude 3.7 Sonnet": "Claude 3.7 Sonnet",
"Claude 4 Sonnet": "Claude 4 Sonnet",
"Claude 4.5 Sonnet": "Claude 4.5 Sonnet",
"Claude 3.5 Haiku": "Claude 3.5 Haiku",
"Claude 3 Haiku": "Claude 3 Haiku",
"Claude 4 Opus": "Claude 4 Opus",
"Claude 4.1 Opus": "Claude 4.1 Opus",
"Gemini 2.5 Flash": "Gemini 2.5 Flash",
"Gemini 2.0 Flash": "Gemini 2.0 Flash",
"Gemini 1.5 Flash": "Gemini 1.5 Flash",
"Gemini 2.5 Pro": "Gemini 2.5 Pro",
"DeepSeek R1": "DeepSeek R1",
"Private": "Private",
"Public": "Public"
}

View File

@@ -0,0 +1,26 @@
import { createPiece, PieceAuth } from '@activepieces/pieces-framework';
import { createChatbot } from './lib/actions/createChatbot';
import { deleteChatbot } from './lib/actions/deleteChatbot';
import { sendMessage } from './lib/actions/sendMessage';
import { updateBasePrompt } from './lib/actions/updateBasePrompt';
import { retrainChatbot } from './lib/actions/retrainChatbot';
import { uploadFile } from './lib/actions/uploadFile';
import { chatDataAuth } from './lib/common/types';
export const chatData = createPiece({
displayName: 'Chat Data',
description: 'Build AI-chatbots with support for live chat escalation, knowledge bases, or custom backend endpoints.',
auth:chatDataAuth ,
minimumSupportedRelease: '0.36.1',
logoUrl: 'https://cdn.activepieces.com/pieces/chat-data.png',
authors: ['sparkybug', 'onyedikachi-david'],
actions: [
createChatbot,
deleteChatbot,
sendMessage,
updateBasePrompt,
retrainChatbot,
uploadFile,
],
triggers: [],
});

View File

@@ -0,0 +1,116 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { ChatDataClient } from '../common/client';
import { chatDataAuth, CreateChatbotDto } from '../common/types';
export const createChatbot = createAction({
auth: chatDataAuth,
name: 'create_chatbot',
displayName: 'Create Chatbot',
description:
'Create and train a chatbot using custom data, medical models, or custom models. Training takes 1-2 minutes.',
props: {
chatbotName: Property.ShortText({
displayName: 'Chatbot Name',
description: 'The name of the chatbot to be created',
required: true,
}),
model: Property.StaticDropdown({
displayName: 'Model',
description: 'Select the chatbot model. Note: sourceText and urlsToScrape are ignored for medical and custom models.',
required: false,
defaultValue: 'custom-data-upload',
options: {
options: [
{ label: 'Custom Data Upload (GPT-4o, Claude, etc.)', value: 'custom-data-upload' },
{ label: 'Medical Chat - Human', value: 'medical-chat-human' },
{ label: 'Medical Chat - Veterinarian', value: 'medical-chat-vet' },
{ label: 'Custom Model (Your own backend)', value: 'custom-model' },
],
},
}),
sourceText: Property.LongText({
displayName: 'Source Text',
description:
'Training text for the chatbot. Character limits apply based on your plan. Only used for custom-data-upload model.',
required: false,
}),
urlsToScrape: Property.Array({
displayName: 'URLs to Scrape',
description:
'URLs to extract content from. Must start with http:// or https:// (only for custom-data-upload model)',
required: false,
properties: {
url: Property.ShortText({
displayName: 'URL',
description: 'Website URL starting with http:// or https://',
required: true,
}),
},
}),
products: Property.Array({
displayName: 'Products',
description: 'List of products for training the chatbot',
required: false,
properties: {
id: Property.ShortText({
displayName: 'Product ID',
description: 'Unique ID for tracking the product in the knowledge base',
required: true,
}),
information: Property.Json({
displayName: 'Product Information',
description: 'Structured data of the product in key-value format (1-2 levels deep recommended)',
required: true,
defaultValue: {
name: 'Product Name',
price: 99.99,
category: 'Category'
},
}),
},
}),
qAndAs: Property.Array({
displayName: 'Q&As',
description: 'List of questions and answers for the chatbot to learn',
required: false,
properties: {
question: Property.LongText({
displayName: 'Question',
description: 'The question on a specific topic',
required: true,
}),
answer: Property.LongText({
displayName: 'Answer',
description: 'The answer to the question',
required: true,
}),
},
}),
customBackend: Property.ShortText({
displayName: 'Custom Backend URL',
description: 'URL of a custom backend for the chatbot',
required: false,
}),
bearer: Property.ShortText({
displayName: 'Bearer Token',
description: 'Authentication bearer token for custom backend',
required: false,
}),
},
async run(context) {
const client = new ChatDataClient(context.auth.secret_text);
const payload = CreateChatbotDto.parse({
chatbotName: context.propsValue.chatbotName,
sourceText: context.propsValue.sourceText,
urlsToScrape: context.propsValue.urlsToScrape?.map((item: any) => item.url),
products: context.propsValue.products,
qAndAs: context.propsValue.qAndAs,
customBackend: context.propsValue.customBackend,
bearer: context.propsValue.bearer,
model: context.propsValue.model || 'custom-data-upload',
});
return await client.createChatbot(payload);
},
});

View File

@@ -0,0 +1,50 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { ChatDataClient } from '../common/client';
import { chatDataAuth } from '../common/types';
export const deleteChatbot = createAction({
auth: chatDataAuth,
name: 'delete_chatbot',
displayName: 'Delete Chatbot',
description:
'Delete a chatbot and all its associated data (training data, conversations, leads, etc.). This action is irreversible.',
props: {
chatbotId: Property.Dropdown({
auth: chatDataAuth,
displayName: 'Chatbot',
description: 'Select the chatbot to delete',
required: true,
refreshers: [],
options: async ({ auth }) => {
if (!auth) {
return {
disabled: true,
options: [],
placeholder: 'Please connect your account first',
};
}
try {
const client = new ChatDataClient(auth.secret_text);
const chatbots = await client.listChatbots();
return {
options: chatbots.map((chatbot) => ({
label: chatbot.name,
value: chatbot.id,
})),
};
} catch (error) {
return {
disabled: true,
options: [],
placeholder: 'Failed to load chatbots',
};
}
},
}),
},
async run(context) {
const client = new ChatDataClient(context.auth.secret_text);
const result = await client.deleteChatbot(context.propsValue.chatbotId);
return result;
},
});

View File

@@ -0,0 +1,170 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { ChatDataClient } from '../common/client';
import { chatDataAuth, RetrainOptions } from '../common/types';
export const retrainChatbot = createAction({
auth: chatDataAuth,
name: 'retrain_chatbot',
displayName: 'Retrain Chatbot',
description:
'Retrain an existing chatbot with new data or remove existing data (custom-data-upload model only)',
props: {
chatbotId: Property.Dropdown({
auth: chatDataAuth,
displayName: 'Chatbot',
description: 'Select the chatbot to retrain',
required: true,
refreshers: [],
options: async ({ auth }) => {
if (!auth) {
return {
disabled: true,
options: [],
placeholder: 'Please connect your account first',
};
}
try {
const client = new ChatDataClient(auth.secret_text);
const chatbots = await client.listChatbots();
return {
options: chatbots.map((chatbot) => ({
label: chatbot.name,
value: chatbot.id,
})),
};
} catch (error) {
return {
disabled: true,
options: [],
placeholder: 'Failed to load chatbots',
};
}
},
}),
sourceText: Property.LongText({
displayName: 'Source Text',
description: 'New text data for training the chatbot',
required: false,
}),
urlsToScrape: Property.Array({
displayName: 'URLs to Scrape',
description:
'List of URLs to extract content from (existing URLs will be recrawled)',
required: false,
properties: {
url: Property.ShortText({
displayName: 'URL',
description: 'Website URL starting with http:// or https://',
required: true,
}),
},
}),
cookies: Property.LongText({
displayName: 'Cookies',
description:
'Cookies for authorization (semicolon-separated: "cookie1=value1; cookie2=value2")',
required: false,
}),
extractMainContent: Property.Checkbox({
displayName: 'Extract Main Content',
description:
'Automatically remove headers, footers, nav, sidebar, and ads',
required: false,
}),
includeOnlyTags: Property.ShortText({
displayName: 'Include Only Tags',
description: 'CSS selectors to exclusively extract (comma-separated)',
required: false,
}),
excludeTags: Property.ShortText({
displayName: 'Exclude Tags',
description: 'CSS selectors to exclude from scraping (comma-separated)',
required: false,
}),
products: Property.Array({
displayName: 'Products',
description:
'List of products for training (existing products with same ID will be overwritten)',
required: false,
properties: {
id: Property.ShortText({
displayName: 'Product ID',
description: 'Unique ID for tracking the product',
required: true,
}),
information: Property.Json({
displayName: 'Product Information',
description: 'Structured product data in key-value format',
required: true,
defaultValue: {
name: 'Product Name',
description: 'Product description'
},
}),
},
}),
qAndAs: Property.Array({
displayName: 'Q&As',
description: 'List of questions and answers for the chatbot to learn',
required: false,
properties: {
question: Property.LongText({
displayName: 'Question',
description: 'The question on a specific topic',
required: true,
}),
answer: Property.LongText({
displayName: 'Answer',
description: 'The answer to the question',
required: true,
}),
},
}),
deletes: Property.Array({
displayName: 'Knowledge to Delete',
description: 'List of knowledge sources to remove from the chatbot',
required: false,
properties: {
type: Property.StaticDropdown({
displayName: 'Type',
description: 'The type of knowledge chunk to delete',
required: true,
options: {
options: [
{ label: 'Website', value: 'website' },
{ label: 'Q&A', value: 'q&a' },
{ label: 'Product', value: 'product' },
{ label: 'Text', value: 'text' },
{ label: 'File', value: 'file' },
],
},
}),
url: Property.ShortText({
displayName: 'URL',
description: 'The URL to delete (required if type is website)',
required: false,
}),
},
}),
},
async run(context) {
const client = new ChatDataClient(context.auth.secret_text);
const payload = RetrainOptions.parse({
chatbotId: context.propsValue.chatbotId,
sourceText: context.propsValue.sourceText,
urlsToScrape: context.propsValue.urlsToScrape?.map((item: any) => item.url),
options: {
Cookies: context.propsValue.cookies,
extractMainContent: context.propsValue.extractMainContent,
includeOnlyTags: context.propsValue.includeOnlyTags,
excludeTags: context.propsValue.excludeTags,
},
products: context.propsValue.products,
qAndAs: context.propsValue.qAndAs,
deletes: context.propsValue.deletes,
});
return await client.retrainChatbot(payload);
},
});

View File

@@ -0,0 +1,223 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { ChatDataClient } from '../common/client';
import { chatDataAuth, SendMessageDto } from '../common/types';
export const sendMessage = createAction({
name: 'send_message',
displayName: 'Send Message to Chatbot',
description:
'Send messages to a chatbot and receive a response with support for streaming and OpenAI-compatible formats',
auth: chatDataAuth,
props: {
chatbotId: Property.Dropdown({
displayName: 'Chatbot',
description: 'Select the chatbot to send message to',
required: true,
refreshers: [],
auth: chatDataAuth,
options: async ({ auth }) => {
if (!auth) {
return {
disabled: true,
options: [],
placeholder: 'Please connect your account first',
};
}
try {
const client = new ChatDataClient(auth.secret_text);
const chatbots = await client.listChatbots();
return {
options: chatbots.map((chatbot) => ({
label: chatbot.name,
value: chatbot.id,
})),
};
} catch (error) {
return {
disabled: true,
options: [],
placeholder: 'Failed to load chatbots',
};
}
},
}),
messageContent: Property.LongText({
displayName: 'Message Content',
description: 'The text content of the message to send',
required: true,
}),
messageRole: Property.StaticDropdown({
displayName: 'Message Role',
description: 'The role of the message sender',
required: false,
defaultValue: 'user',
options: {
options: [
{ label: 'User', value: 'user' },
{ label: 'Assistant', value: 'assistant' },
],
},
}),
conversationId: Property.Dropdown({
auth: chatDataAuth,
displayName: 'Conversation',
description:
'Select an existing conversation or leave empty to start a new one',
required: false,
refreshers: ['chatbotId'],
options: async ({ auth, chatbotId }) => {
if (!auth || !chatbotId) {
return {
disabled: true,
options: [{ label: 'New Conversation', value: '' }],
placeholder: 'Select a chatbot first',
};
}
try {
const client = new ChatDataClient(auth.secret_text);
const conversations = await client.listConversations(
chatbotId as string
);
return {
options: [
{ label: 'New Conversation', value: '' },
...conversations.map((conversation) => ({
label:
conversation.title ||
`Conversation ${conversation.id.slice(-8)}`,
value: conversation.id,
})),
],
};
} catch (error) {
return {
disabled: true,
options: [{ label: 'New Conversation', value: '' }],
placeholder: 'Failed to load conversations',
};
}
},
}),
includeReasoning: Property.Checkbox({
displayName: 'Include Reasoning',
description:
'Include reasoning in the response (overrides chatbot settings)',
required: false,
}),
baseModel: Property.StaticDropdown({
displayName: 'Base Model',
description: "Override the chatbot's base model for this request",
required: false,
options: {
options: [
{ label: 'GPT-4o Mini', value: 'gpt-4o-mini' },
{ label: 'GPT-4o', value: 'gpt-4o' },
{ label: 'GPT-4', value: 'gpt-4' },
{ label: 'GPT-4.1 Nano', value: 'gpt-4.1-nano' },
{ label: 'GPT-4.1 Mini', value: 'gpt-4.1-mini' },
{ label: 'GPT-4.1', value: 'gpt-4.1' },
{ label: 'GPT-5 Nano', value: 'gpt-5-nano' },
{ label: 'GPT-5 Mini', value: 'gpt-5-mini' },
{ label: 'GPT-5', value: 'gpt-5' },
{ label: 'GPT-O1', value: 'gpt-o1' },
{ label: 'GPT-O3 Mini', value: 'gpt-o3-mini' },
{ label: 'GPT-O3', value: 'gpt-o3' },
{ label: 'GPT-O4 Mini', value: 'gpt-o4-mini' },
{ label: 'Claude 3.5 Sonnet', value: 'claude-3-5-sonnet' },
{ label: 'Claude 3.7 Sonnet', value: 'claude-3-7-sonnet' },
{ label: 'Claude 4 Sonnet', value: 'claude-4-sonnet' },
{ label: 'Claude 4.5 Sonnet', value: 'claude-4-5-sonnet' },
{ label: 'Claude 3.5 Haiku', value: 'claude-3-5-haiku' },
{ label: 'Claude 3 Haiku', value: 'claude-3-haiku' },
{ label: 'Claude 4 Opus', value: 'claude-4-opus' },
{ label: 'Claude 4.1 Opus', value: 'claude-4.1-opus' },
{ label: 'Gemini 2.5 Flash', value: 'gemini-2.5-flash' },
{ label: 'Gemini 2.0 Flash', value: 'gemini-2.0-flash' },
{ label: 'Gemini 1.5 Flash', value: 'gemini-1.5-flash' },
{ label: 'Gemini 2.5 Pro', value: 'gemini-2.5-pro' },
{ label: 'DeepSeek R1', value: 'deepseek-r1' },
],
},
}),
basePrompt: Property.LongText({
displayName: 'Base Prompt Override',
description: "Override the chatbot's base prompt for this request",
required: false,
}),
openAIFormat: Property.Checkbox({
displayName: 'OpenAI Format',
description: 'Return response in OpenAI-compatible format',
required: false,
}),
appendMessages: Property.Checkbox({
displayName: 'Append to Conversation',
description:
'Append this message to previous messages with the same conversationId',
required: false,
}),
attachedFiles: Property.Array({
displayName: 'Attached Files',
description: 'Files to attach to the message (max 3 files)',
required: false,
properties: {
name: Property.ShortText({
displayName: 'File Name',
description: 'The name of the attached file',
required: true,
}),
type: Property.StaticDropdown({
displayName: 'File Type',
description: 'The MIME type of the file',
required: true,
options: {
options: [
{ label: 'PDF', value: 'application/pdf' },
{ label: 'Word Document', value: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' },
{ label: 'HTML', value: 'text/html' },
{ label: 'Plain Text', value: 'text/plain' },
{ label: 'PNG Image', value: 'image/png' },
{ label: 'JPG Image', value: 'image/jpg' },
{ label: 'JPEG Image', value: 'image/jpeg' },
{ label: 'WebP Image', value: 'image/webp' },
],
},
}),
url: Property.ShortText({
displayName: 'File URL',
description: 'Publicly accessible URL where the file is hosted',
required: true,
}),
content: Property.LongText({
displayName: 'File Content (Optional)',
description: 'Pre-parsed textual content. If provided, file won\'t be downloaded. Required for files > 3MB.',
required: false,
}),
},
}),
},
async run(context) {
const client = new ChatDataClient(context.auth.secret_text);
const messages = [
{
role: context.propsValue.messageRole || 'user',
content: context.propsValue.messageContent,
files: context.propsValue.attachedFiles || undefined,
},
];
const payload = SendMessageDto.parse({
messages,
chatbotId: context.propsValue.chatbotId,
conversationId: context.propsValue.conversationId,
includeReasoning: context.propsValue.includeReasoning,
baseModel: context.propsValue.baseModel,
basePrompt: context.propsValue.basePrompt,
stream: false,
openAIFormat: context.propsValue.openAIFormat || false,
appendMessages: context.propsValue.appendMessages || false,
});
return await client.sendMessage(payload);
},
});

View File

@@ -0,0 +1,236 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { ChatDataClient } from '../common/client';
import { chatDataAuth, UpdateChatbotSettingsDto } from '../common/types';
export const updateBasePrompt = createAction({
auth: chatDataAuth,
name: 'update_chatbot_settings',
displayName: 'Update Chatbot Settings',
description: 'Update comprehensive settings for a chatbot including name, prompts, behavior, and appearance',
props: {
chatbotId: Property.Dropdown({
auth: chatDataAuth,
displayName: 'Chatbot',
description: 'Select the chatbot to update',
required: true,
refreshers: [],
options: async ({ auth }) => {
if (!auth) {
return {
disabled: true,
options: [],
placeholder: 'Please connect your account first',
};
}
try {
const client = new ChatDataClient(auth.secret_text);
const chatbots = await client.listChatbots();
return {
options: chatbots.map((chatbot) => ({
label: chatbot.name,
value: chatbot.id,
})),
};
} catch (error) {
return {
disabled: true,
options: [],
placeholder: 'Failed to load chatbots',
};
}
},
}),
chatbotName: Property.ShortText({
displayName: 'Chatbot Name',
description: 'Update the name of the chatbot',
required: false,
}),
basePrompt: Property.LongText({
displayName: 'Base Prompt',
description: 'Update the base prompt for the chatbot',
required: false,
}),
initialMessages: Property.Array({
displayName: 'Initial Messages',
description: 'Array of initial messages to be used by the chatbot',
required: false,
properties: {
message: Property.LongText({
displayName: 'Message',
description: 'Initial message text',
required: true,
}),
},
}),
suggestedMessages: Property.Array({
displayName: 'Suggested Messages',
description: 'Array of suggested messages shown in the chatbot',
required: false,
properties: {
message: Property.ShortText({
displayName: 'Message',
description: 'Suggested message text',
required: true,
}),
},
}),
visibility: Property.StaticDropdown({
displayName: 'Visibility',
description: 'Control whether your chatbot is accessible to others',
required: false,
options: {
options: [
{ label: 'Private', value: 'private' },
{ label: 'Public', value: 'public' },
],
},
}),
baseModel: Property.StaticDropdown({
displayName: 'Base Model',
description: 'The AI model used in the RAG processing pipeline',
required: false,
options: {
options: [
{ label: 'GPT-4o Mini', value: 'gpt-4o-mini' },
{ label: 'GPT-4o', value: 'gpt-4o' },
{ label: 'GPT-4', value: 'gpt-4' },
{ label: 'GPT-4.1 Nano', value: 'gpt-4.1-nano' },
{ label: 'GPT-4.1 Mini', value: 'gpt-4.1-mini' },
{ label: 'GPT-4.1', value: 'gpt-4.1' },
{ label: 'GPT-5 Nano', value: 'gpt-5-nano' },
{ label: 'GPT-5 Mini', value: 'gpt-5-mini' },
{ label: 'GPT-5', value: 'gpt-5' },
{ label: 'GPT-O1', value: 'gpt-o1' },
{ label: 'GPT-O3 Mini', value: 'gpt-o3-mini' },
{ label: 'GPT-O3', value: 'gpt-o3' },
{ label: 'GPT-O4 Mini', value: 'gpt-o4-mini' },
{ label: 'Claude 3.5 Sonnet', value: 'claude-3-5-sonnet' },
{ label: 'Claude 3.7 Sonnet', value: 'claude-3-7-sonnet' },
{ label: 'Claude 4 Sonnet', value: 'claude-4-sonnet' },
{ label: 'Claude 4.5 Sonnet', value: 'claude-4-5-sonnet' },
{ label: 'Claude 3.5 Haiku', value: 'claude-3-5-haiku' },
{ label: 'Claude 3 Haiku', value: 'claude-3-haiku' },
{ label: 'Claude 4 Opus', value: 'claude-4-opus' },
{ label: 'Claude 4.1 Opus', value: 'claude-4.1-opus' },
{ label: 'Gemini 2.5 Flash', value: 'gemini-2.5-flash' },
{ label: 'Gemini 2.0 Flash', value: 'gemini-2.0-flash' },
{ label: 'Gemini 1.5 Flash', value: 'gemini-1.5-flash' },
{ label: 'Gemini 2.5 Pro', value: 'gemini-2.5-pro' },
{ label: 'DeepSeek R1', value: 'deepseek-r1' },
],
},
}),
temperature: Property.Number({
displayName: 'Temperature',
description: 'AI model temperature (0-1, controls randomness)',
required: false,
}),
storeChat: Property.Checkbox({
displayName: 'Store Chat History',
description: 'Whether chat history will be stored on the server',
required: false,
}),
trackIpAddress: Property.Checkbox({
displayName: 'Track IP Address',
description: 'Whether IP addresses will be stored for conversations and leads',
required: false,
}),
rateLimitPoints: Property.Number({
displayName: 'Rate Limit Points',
description: 'Maximum number of messages per timeframe from one device',
required: false,
}),
rateLimitTimeframe: Property.Number({
displayName: 'Rate Limit Timeframe',
description: 'Timeframe in seconds for rate limiting',
required: false,
}),
rateLimitMessage: Property.ShortText({
displayName: 'Rate Limit Message',
description: 'Error message shown when rate limited',
required: false,
}),
onlyAllowOnAddedDomains: Property.Checkbox({
displayName: 'Restrict to Added Domains',
description: 'Only allow the iframe and widget on specific domains',
required: false,
}),
domains: Property.Array({
displayName: 'Allowed Domains',
description: 'Array of domains where the chatbot is allowed',
required: false,
properties: {
domain: Property.ShortText({
displayName: 'Domain',
description: 'Domain URL (e.g., example.com)',
required: true,
}),
},
}),
showCalendar: Property.Checkbox({
displayName: 'Show Calendar',
description: 'Display Calendly booking button in the chatbot',
required: false,
}),
calendarUrl: Property.ShortText({
displayName: 'Calendar URL',
description: 'Calendly URL for appointment scheduling',
required: false,
}),
calendarMessage: Property.ShortText({
displayName: 'Calendar Message',
description: 'Message to display for appointment scheduling',
required: false,
}),
enableBouncingAnimation: Property.Checkbox({
displayName: 'Enable Bouncing Animation',
description: 'Whether the chatbot bubble should bounce to attract attention',
required: false,
}),
ignoreDataSource: Property.Checkbox({
displayName: 'Ignore Data Source',
description: 'Ignore custom data and act like pure ChatGPT',
required: false,
}),
customBackend: Property.ShortText({
displayName: 'Custom Backend URL',
description: 'URL of a custom backend for the chatbot',
required: false,
}),
bearer: Property.ShortText({
displayName: 'Bearer Token',
description: 'Authentication token for custom backend',
required: false,
}),
},
async run(context) {
const client = new ChatDataClient(context.auth.secret_text);
const payload = UpdateChatbotSettingsDto.parse({
chatbotId: context.propsValue.chatbotId,
chatbotName: context.propsValue.chatbotName,
basePrompt: context.propsValue.basePrompt,
initialMessages: context.propsValue.initialMessages?.map((item: any) => item.message),
suggestedMessages: context.propsValue.suggestedMessages?.map((item: any) => item.message),
visibility: context.propsValue.visibility,
baseModel: context.propsValue.baseModel,
temperature: context.propsValue.temperature,
storeChat: context.propsValue.storeChat,
trackIpAddress: context.propsValue.trackIpAddress,
rateLimitPoints: context.propsValue.rateLimitPoints,
rateLimitTimeframe: context.propsValue.rateLimitTimeframe,
rateLimitMessage: context.propsValue.rateLimitMessage,
onlyAllowOnAddedDomains: context.propsValue.onlyAllowOnAddedDomains,
domains: context.propsValue.domains?.map((item: any) => item.domain),
showCalendar: context.propsValue.showCalendar,
calendarUrl: context.propsValue.calendarUrl,
calendarMessage: context.propsValue.calendarMessage,
enableBouncingAnimation: context.propsValue.enableBouncingAnimation,
ignoreDataSource: context.propsValue.ignoreDataSource,
customBackend: context.propsValue.customBackend,
bearer: context.propsValue.bearer,
});
return await client.updateChatbotSettings(payload);
},
});

View File

@@ -0,0 +1,65 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { ChatDataClient } from '../common/client';
import { chatDataAuth } from '../common/types';
export const uploadFile = createAction({
auth: chatDataAuth,
name: 'upload_file',
displayName: 'Upload File',
description:
'Upload a file to be used with a chatbot for training or knowledge base',
props: {
chatbotId: Property.Dropdown({
auth: chatDataAuth,
displayName: 'Chatbot',
description: 'Select the chatbot to upload file to',
required: true,
refreshers: [],
options: async ({ auth }) => {
if (!auth) {
return {
disabled: true,
options: [],
placeholder: 'Please connect your account first',
};
}
try {
const client = new ChatDataClient(auth.secret_text);
const chatbots = await client.listChatbots();
return {
options: chatbots.map((chatbot) => ({
label: chatbot.name,
value: chatbot.id,
})),
};
} catch (error) {
return {
disabled: true,
options: [],
placeholder: 'Failed to load chatbots',
};
}
},
}),
file: Property.File({
displayName: 'File',
description: 'The file to upload to the chatbot',
required: true,
}),
},
async run(context) {
const client = new ChatDataClient(context.auth.secret_text);
const { file, chatbotId } = context.propsValue;
const fileData = Buffer.from(file.base64, 'base64');
const fileMeta = {
filename: file.filename || 'uploaded-file',
contentType: file.extension
? `application/${file.extension}`
: 'application/octet-stream',
};
return await client.uploadFile(chatbotId, fileData, fileMeta);
},
});

View File

@@ -0,0 +1,236 @@
import { httpClient, HttpMethod } from '@activepieces/pieces-common';
import * as fs from 'fs';
import FormData from 'form-data';
import {
CreateChatbotDto,
SendMessageDto,
RetrainOptions,
Chatbot,
Message,
RetrainJob,
FileMeta,
UpdateChatbotSettingsDto,
} from './types';
export class ChatDataClient {
private baseURL: string;
private apiKey: string;
constructor(apiKey?: string) {
this.apiKey = apiKey || process.env['CHATDATA_API_KEY'] || '';
if (!this.apiKey) {
throw new Error('CHATDATA_API_KEY environment variable is required');
}
this.baseURL =
process.env['CHATDATA_BASE_URL'] || 'https://api.chat-data.com';
}
private getHeaders() {
return {
Authorization: `Bearer ${this.apiKey}`,
'Content-Type': 'application/json',
};
}
private handleError(error: any): Error {
if (error.response) {
const status = error.response.status;
const data = error.response.body || error.response.data;
const apiMessage = data?.message || data?.error;
switch (status) {
case 400:
return new Error(apiMessage || 'Bad Request - Check your input parameters or account limits');
case 401:
return new Error(apiMessage || 'Authentication failed - Invalid API key');
case 403:
return new Error(apiMessage || 'Insufficient permissions');
case 422:
return new Error(`Validation error: ${apiMessage || 'Invalid request data'}`);
case 429:{
const retryAfter = error.response.headers?.['retry-after'];
const retryMsg = retryAfter ? ` Retry after ${retryAfter} seconds.` : '';
return new Error(apiMessage || `Rate limit exceeded.${retryMsg}`);
}
default:
return new Error(apiMessage || `HTTP ${status} error`);
}
}
return new Error('Network error occurred - Unable to connect to Chat Data API');
}
async createChatbot(payload: CreateChatbotDto): Promise<Chatbot> {
try {
const response = await httpClient.sendRequest({
method: HttpMethod.POST,
url: `${this.baseURL}/api/v2/create-chatbot`,
headers: this.getHeaders(),
body: payload,
timeout: 30000,
retries: 3,
});
return Chatbot.parse(response.body);
} catch (error) {
throw this.handleError(error);
}
}
async deleteChatbot(chatbotId: string): Promise<{ status: string }> {
try {
const response = await httpClient.sendRequest({
method: HttpMethod.DELETE,
url: `${this.baseURL}/api/v2/delete-chatbot/${chatbotId}`,
headers: this.getHeaders(),
timeout: 30000,
retries: 3,
});
return response.body;
} catch (error) {
throw this.handleError(error);
}
}
async sendMessage(payload: SendMessageDto): Promise<Message> {
try {
const response = await httpClient.sendRequest({
method: HttpMethod.POST,
url: `${this.baseURL}/api/v2/chat`,
headers: this.getHeaders(),
body: payload,
timeout: 30000,
retries: 3,
});
// Response is text/plain for non-streaming
if (typeof response.body === 'string') {
return {
response: response.body,
conversationId: payload.conversationId,
};
}
return Message.parse(response.body);
} catch (error) {
throw this.handleError(error);
}
}
async updateChatbotSettings(
payload: UpdateChatbotSettingsDto
): Promise<{ status: string }> {
try {
const response = await httpClient.sendRequest({
method: HttpMethod.POST,
url: `${this.baseURL}/api/v2/update-chatbot-settings`,
headers: this.getHeaders(),
body: payload,
timeout: 30000,
retries: 3,
});
return response.body;
} catch (error) {
throw this.handleError(error);
}
}
async retrainChatbot(payload: RetrainOptions): Promise<RetrainJob> {
try {
const response = await httpClient.sendRequest({
method: HttpMethod.POST,
url: `${this.baseURL}/api/v2/retrain-chatbot`,
headers: this.getHeaders(),
body: payload,
timeout: 30000,
retries: 3,
});
return RetrainJob.parse(response.body);
} catch (error) {
throw this.handleError(error);
}
}
async uploadFile(
chatbotId: string,
file: string | Buffer,
meta: { filename: string; contentType: string }
): Promise<FileMeta> {
try {
const formData = new FormData();
if (typeof file === 'string') {
if (file.startsWith('data:') || file.match(/^[A-Za-z0-9+/]+=*$/)) {
const buffer = Buffer.from(
file.replace(/^data:[^;]+;base64,/, ''),
'base64'
);
formData.append('file', buffer, {
filename: meta.filename,
contentType: meta.contentType,
});
} else {
const fileStream = fs.createReadStream(file);
formData.append('file', fileStream, {
filename: meta.filename,
contentType: meta.contentType,
});
}
} else {
formData.append('file', file, {
filename: meta.filename,
contentType: meta.contentType,
});
}
const headers = {
Authorization: `Bearer ${this.apiKey}`,
...formData.getHeaders(),
};
const response = await httpClient.sendRequest({
method: HttpMethod.POST,
url: `${this.baseURL}/api/v2/upload-file/${chatbotId}`,
headers,
body: formData,
timeout: 30000,
retries: 3,
});
return FileMeta.parse(response.body);
} catch (error) {
throw this.handleError(error);
}
}
async listChatbots(): Promise<Array<{ id: string; name: string }>> {
try {
const response = await httpClient.sendRequest({
method: HttpMethod.GET,
url: `${this.baseURL}/api/v2/chatbots`,
headers: this.getHeaders(),
timeout: 30000,
retries: 3,
});
return response.body.chatbots || [];
} catch (error) {
throw this.handleError(error);
}
}
async listConversations(
chatbotId: string
): Promise<Array<{ id: string; title: string; lastMessage?: string }>> {
try {
const response = await httpClient.sendRequest({
method: HttpMethod.GET,
url: `${this.baseURL}/api/v2/conversations/${chatbotId}`,
headers: this.getHeaders(),
timeout: 30000,
retries: 3,
});
return response.body.conversations || [];
} catch (error) {
throw this.handleError(error);
}
}
}

View File

@@ -0,0 +1,149 @@
import { PieceAuth } from '@activepieces/pieces-framework';
import { z } from 'zod';
export const CreateChatbotDto = z.object({
chatbotName: z.string().min(1, 'Chatbot name is required'),
sourceText: z.string().optional(),
urlsToScrape: z.array(z.string().url('Invalid URL format')).optional(),
products: z.array(z.object({
id: z.string().min(1, 'Product ID is required'),
information: z.record(z.string(), z.unknown()),
})).optional(),
qAndAs: z.array(z.object({
question: z.string().min(1, 'Question is required'),
answer: z.string().min(1, 'Answer is required'),
})).optional(),
customBackend: z.string().url('Invalid backend URL').optional(),
bearer: z.string().optional(),
model: z.enum(['custom-data-upload', 'medical-chat-human', 'medical-chat-vet', 'custom-model']).default('custom-data-upload'),
});
export const SendMessageDto = z.object({
messages: z.array(z.object({
role: z.enum(['user', 'assistant']),
content: z.string(),
files: z.array(z.object({
name: z.string(),
type: z.enum(['application/pdf', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'text/html', 'text/plain', 'image/png', 'image/jpg', 'image/jpeg', 'image/webp']),
url: z.string().url(),
content: z.string().optional(),
})).max(3).optional(),
})),
chatbotId: z.string(),
includeReasoning: z.boolean().optional(),
baseModel: z.enum(['gpt-4o-mini', 'gpt-4o', 'gpt-4', 'gpt-4.1-nano', 'gpt-4.1-mini', 'gpt-4.1', 'gpt-5-nano', 'gpt-5-mini', 'gpt-5', 'gpt-o1', 'gpt-o3-mini', 'gpt-o3', 'gpt-o4-mini', 'claude-3-5-sonnet', 'claude-3-7-sonnet', 'claude-4-sonnet', 'claude-4-5-sonnet', 'claude-3-5-haiku', 'claude-3-haiku', 'claude-4-opus', 'claude-4.1-opus', 'gemini-2.5-flash', 'gemini-2.0-flash', 'gemini-1.5-flash', 'gemini-2.5-pro', 'deepseek-r1']).optional(),
basePrompt: z.string().optional(),
stream: z.boolean().default(false),
openAIFormat: z.boolean().default(false),
appendMessages: z.boolean().default(false),
conversationId: z.string().optional(),
});
export const RetrainOptions = z.object({
chatbotId: z.string(),
sourceText: z.string().optional(),
urlsToScrape: z.array(z.string()).optional(),
options: z.object({
Cookies: z.string().optional(),
extractMainContent: z.boolean().optional(),
includeOnlyTags: z.string().optional(),
excludeTags: z.string().optional(),
}).optional(),
products: z.array(z.object({
id: z.string(),
information: z.record(z.string(), z.unknown()),
})).optional(),
qAndAs: z.array(z.object({
question: z.string(),
answer: z.string(),
})).optional(),
deletes: z.array(z.object({
type: z.enum(['website', 'q&a', 'product', 'text', 'file']),
url: z.string().optional(),
})).optional(),
});
export const Chatbot = z.object({
chatbotId: z.string(),
consumedCharacters: z.number(),
remainingCharacters: z.number(),
dataSources: z.array(z.object({
name: z.string(),
characters: z.number(),
type: z.string(),
})),
status: z.string(),
});
export const Message = z.object({
response: z.string(),
conversationId: z.string().optional(),
});
export const RetrainJob = z.object({
chatbotId: z.string(),
consumedCharacters: z.number(),
remainingCharacters: z.number(),
dataSources: z.array(z.object({
name: z.string(),
characters: z.number(),
type: z.string(),
})),
status: z.string(),
});
export const RetrainJobStatus = z.object({
id: z.string(),
status: z.enum(['pending', 'running', 'completed', 'failed']),
progress: z.number().optional(),
error: z.string().optional(),
});
export const FileMeta = z.object({
status: z.string(),
url: z.string(),
});
export type CreateChatbotDto = z.infer<typeof CreateChatbotDto>;
export type SendMessageDto = z.infer<typeof SendMessageDto>;
export type RetrainOptions = z.infer<typeof RetrainOptions>;
export type Chatbot = z.infer<typeof Chatbot>;
export type Message = z.infer<typeof Message>;
export type RetrainJob = z.infer<typeof RetrainJob>;
export type RetrainJobStatus = z.infer<typeof RetrainJobStatus>;
export type FileMeta = z.infer<typeof FileMeta>;
export const UpdateChatbotSettingsDto = z.object({
chatbotId: z.string(),
chatbotName: z.string().optional(),
basePrompt: z.string().optional(),
initialMessages: z.array(z.string()).optional(),
suggestedMessages: z.array(z.string()).optional(),
visibility: z.enum(['private', 'public']).optional(),
onlyAllowOnAddedDomains: z.boolean().optional(),
domains: z.array(z.string()).optional(),
rateLimitPoints: z.number().optional(),
rateLimitTimeframe: z.number().optional(),
rateLimitMessage: z.string().optional(),
baseModel: z.enum(['gpt-4o-mini', 'gpt-4o', 'gpt-4', 'gpt-4.1-nano', 'gpt-4.1-mini', 'gpt-4.1', 'gpt-5-nano', 'gpt-5-mini', 'gpt-5', 'gpt-o1', 'gpt-o3-mini', 'gpt-o3', 'gpt-o4-mini', 'claude-3-5-sonnet', 'claude-3-7-sonnet', 'claude-4-sonnet', 'claude-4-5-sonnet', 'claude-3-5-haiku', 'claude-3-haiku', 'claude-4-opus', 'claude-4.1-opus', 'gemini-2.5-flash', 'gemini-2.0-flash', 'gemini-1.5-flash', 'gemini-2.5-pro', 'deepseek-r1']).optional(),
temperature: z.number().min(0).max(1).optional(),
storeChat: z.boolean().optional(),
trackIpAddress: z.boolean().optional(),
showCalendar: z.boolean().optional(),
calendarUrl: z.string().optional(),
calendarMessage: z.string().optional(),
enableBouncingAnimation: z.boolean().optional(),
ignoreDataSource: z.boolean().optional(),
customBackend: z.string().optional(),
bearer: z.string().optional(),
});
export type UpdateChatbotSettingsDto = z.infer<typeof UpdateChatbotSettingsDto>;
export const chatDataAuth = PieceAuth.SecretText({
displayName: 'API Key',
description: 'Enter your Chat Data API key',
required: true,
})

View File

@@ -0,0 +1,20 @@
{
"extends": "../../../../tsconfig.base.json",
"compilerOptions": {
"module": "commonjs",
"forceConsistentCasingInFileNames": true,
"strict": true,
"importHelpers": true,
"noImplicitOverride": true,
"noImplicitReturns": true,
"noFallthroughCasesInSwitch": true,
"noPropertyAccessFromIndexSignature": true
},
"files": [],
"include": [],
"references": [
{
"path": "./tsconfig.lib.json"
}
]
}

View File

@@ -0,0 +1,9 @@
{
"extends": "./tsconfig.json",
"compilerOptions": {
"outDir": "../../../../dist/out-tsc",
"declaration": true,
"types": ["node"]
},
"include": ["src/**/*.ts"]
}