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-aidbase
This library was generated with [Nx](https://nx.dev).
## Building
Run `nx build pieces-aidbase` to build the library.

View File

@@ -0,0 +1,10 @@
{
"name": "@activepieces/piece-aidbase",
"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-aidbase",
"$schema": "../../../../node_modules/nx/schemas/project-schema.json",
"sourceRoot": "packages/pieces/community/aidbase/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/aidbase",
"tsConfig": "packages/pieces/community/aidbase/tsconfig.lib.json",
"packageJson": "packages/pieces/community/aidbase/package.json",
"main": "packages/pieces/community/aidbase/src/index.ts",
"assets": [
"packages/pieces/community/aidbase/*.md",
{
"input": "packages/pieces/community/aidbase/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/aidbase",
"command": "bun install --no-save --silent"
},
"dependsOn": [
"^build"
]
}
}
}

View File

@@ -0,0 +1,93 @@
{
"\n To get your API Key:\n 1. Log in to your Aidbase dashboard.\n 2. Navigate to **Settings** in the sidebar.\n 3. Click on the **API** section.\n 4. Generate and copy your new API Key.\n ": "\n Um Ihren API-Schlüssel zu erhalten:\n 1. Loggen Sie sich in Ihr Aidbase-Dashboard ein.\n 2. Navigiere zu **Einstellungen** in der Seitenleiste.\n 3. Klicken Sie auf den Abschnitt **API**\n Generieren und kopieren Sie Ihren neuen API-Schlüssel.\n ",
"Add Video": "Video hinzufügen",
"Add Website": "Webseite hinzufügen",
"Add FAQ Item": "FAQ Element hinzufügen",
"Create FAQ": "FAQ erstellen",
"Create Chatbot Reply": "Chatbot Antwort erstellen",
"Start Training": "Training starten",
"Custom API Call": "Eigener API-Aufruf",
"Adds a YouTube video URL as knowledge to the Aidbase knowledge base.": "Fügt der Aidbase Wissensdatenbank eine YouTube-Video-URL als Wissen hinzu.",
"Adds a website URL as a knowledge source for Aidbase.": "Fügt eine Website-URL als Wissensquelle für Aidbase hinzu.",
"Adds a new question/answer item to an existing FAQ; supports categories.": "Fügt eine neue Frage/Antwort zu einer bestehenden FAQ hinzu; unterstützt Kategorien.",
"Creates a new FAQ entry with title and description.": "Erstellt einen neuen FAQ-Eintrag mit Titel und Beschreibung.",
"Generates an AI chatbot reply given a message and optional session context.": "Erzeugt eine KI-Chatbot-Antwort mit einer Nachricht und optionalem Session-Kontext.",
"Starts a training job on an existing knowledge base item (FAQ, website, video, etc.).": "Startet einen Ausbildungsjob auf einem vorhandenen Wissensdatenbank-Artikel (FAQ, Website, Video, etc.).",
"Make a custom API call to a specific endpoint": "Einen benutzerdefinierten API-Aufruf an einen bestimmten Endpunkt machen",
"YouTube Video URL": "YouTube-Video-URL",
"Website URL": "Website-URL",
"FAQ": "FAQ",
"Question": "Frage",
"Answer": "Antwort",
"Source URL": "Quell-URL",
"Categories": "Kategorien",
"Title": "Titel",
"Description": "Beschreibung",
"Chatbot": "Chatbot",
"Message": "Nachricht",
"Session ID": "Sitzungs-ID",
"Knowledge Item": "Wissensgegenstand",
"Method": "Methode",
"Headers": "Kopfzeilen",
"Query Parameters": "Abfrageparameter",
"Body": "Körper",
"Response is Binary ?": "Antwort ist binär?",
"No Error on Failure": "Kein Fehler bei Fehler",
"Timeout (in seconds)": "Timeout (in Sekunden)",
"The URL of the YouTube video to add as a knowledge source.": "Die URL des YouTube-Videos, das als Wissensquelle hinzugefügt werden soll.",
"The URL of the website to add as a knowledge source (e.g., https://www.example.com).": "Die URL der Website, die als Wissensquelle hinzugefügt werden soll (z.B. https://www.example.com).",
"Select the FAQ to which the item will be added.": "Wählen Sie die FAQ aus, zu der das Element hinzugefügt werden soll.",
"An optional URL for the source of the information.": "Eine optionale URL für die Quelle der Informationen.",
"A list of category names. New categories will be created if they do not exist.": "Eine Liste von Kategoriennamen. Neue Kategorien werden erzeugt, wenn sie nicht existieren.",
"The title of the new FAQ knowledge base.": "Der Titel der neuen FAQ-Wissensdatenbank.",
"An optional description for the FAQ.": "Eine optionale Beschreibung für die FAQ.",
"Select the chatbot that will generate the reply.": "Wählen Sie den Chatbot, der die Antwort generieren soll.",
"The message or question to send to the chatbot.": "Die Nachricht oder Frage, die an den Chatbot gesendet werden soll.",
"An optional session ID to maintain conversation context. If omitted, a new conversation will start.": "Eine optionale Session-ID, um den Unterhaltung-Kontext zu erhalten. Wenn weggelassen wird eine neue Unterhaltung gestartet.",
"Select the knowledge item to train.": "Wählen Sie den Wissensgegenstand, der trainiert werden soll.",
"Authorization headers are injected automatically from your connection.": "Autorisierungs-Header werden automatisch von Ihrer Verbindung injiziert.",
"Enable for files like PDFs, images, etc..": "Aktivieren für Dateien wie PDFs, Bilder, etc..",
"GET": "ERHALTEN",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "LÖSCHEN",
"HEAD": "HEAD",
"Email Received": "E-Mail empfangen",
"Email Status Changed": "E-Mail-Status geändert",
"Email Priority Changed": "E-Mail-Priorität geändert",
"Email Sent": "E-Mail gesendet",
"Ticket Created": "Ticket erstellt",
"Ticket Priority Changed": "Ticket-Priorität geändert",
"Ticket Status Changed": "Ticket-Status geändert",
"Ticket New Comment": "Ticket Neuer Kommentar",
"Fires when a new email is received in an Aidbase inbox.": "Feuert ab, wenn eine neue E-Mail in einem Aidbas-Posteingang empfangen wird.",
"Fires when the status of an email changes.": "Löscht ab, wenn sich der Status einer E-Mail ändert.",
"Fires when an emails priority is changed.": "Brände, wenn die Priorität einer E-Mail geändert wird.",
"Fires when an email is sent from Aidbase.": "Feuert ab, wenn eine E-Mail von Aidbase gesendet wird.",
"Fires when a new ticket is created in Aidbase.": "Feuert ab, wenn in Aidbase ein neues Ticket erstellt wird.",
"Fires when the priority of an existing ticket changes.": "Brände, wenn sich die Priorität eines bestehenden Tickets ändert.",
"Fires when a tickets overall status changes.": "Feuert ab, wenn sich der Gesamtstatus eines Tickets ändert.",
"Fires when a new comment is added to an existing ticket.": "Löscht ab, wenn ein neuer Kommentar zu einem bestehenden Ticket hinzugefügt wird.",
"Email Inbox": "E-Mail Posteingang",
"New Status": "Neuer Status",
"New Priority": "Neue Priorität",
"Ticket Form": "Ticketformular",
"Commenter Type": "Kommentar-Typ",
"Select the email inbox to watch. Leave blank to trigger for all inboxes.": "Wählen Sie den Posteingang zum Ansehen. Lassen Sie leer um alle Posteingänge auszulösen.",
"Select the status to trigger on. Leave blank to trigger for any status change.": "Wählen Sie den Status aus, der ausgelöst werden soll. Lassen Sie leer, um eine Statusänderung auszulösen.",
"Select the priority to trigger on. Leave blank to trigger for any priority change.": "Wählen Sie die Priorität aus, die ausgelöst werden soll. Leer lassen um eine Änderung der Priorität auszulösen.",
"Select the ticket form to watch. Leave blank to trigger for all forms.": "Wählen Sie das zu beobachtende Ticket-Formular. Lassen Sie leer um für alle Formulare auszulösen.",
"Select the type of commenter to trigger on. Leave blank for all comments.": "Wählen Sie den Typ des Kommentars, der ausgelöst werden soll. Leer lassen für alle Kommentare.",
"Opened": "Geöffnet",
"Assigned": "Zugewiesen",
"Need More Info": "Benötigen mehr Info",
"Resolved": "Gelöst",
"Closed": "Geschlossen",
"Low": "Niedrig",
"Medium": "Mittel",
"High": "Hoch",
"Open": "Öffnen",
"User (Customer)": "Benutzer (Kunde)",
"Agent (Support Staff)": "Agent (Support Personal)"
}

View File

@@ -0,0 +1,93 @@
{
"\n To get your API Key:\n 1. Log in to your Aidbase dashboard.\n 2. Navigate to **Settings** in the sidebar.\n 3. Click on the **API** section.\n 4. Generate and copy your new API Key.\n ": "\n To get your API Key:\n 1. Log in to your Aidbase dashboard.\n 2. Navigate to **Settings** in the sidebar.\n 3. Click on the **API** section.\n 4. Generate and copy your new API Key.\n ",
"Add Video": "Añadir vídeo",
"Add Website": "Añadir sitio web",
"Add FAQ Item": "Añadir artículo FAQ",
"Create FAQ": "Crear FAQ",
"Create Chatbot Reply": "Crear respuesta Chatbot",
"Start Training": "Comenzar entrenamiento",
"Custom API Call": "Llamada API personalizada",
"Adds a YouTube video URL as knowledge to the Aidbase knowledge base.": "Añade una URL de vídeo de YouTube como conocimiento a la base de conocimiento de Aidbase.",
"Adds a website URL as a knowledge source for Aidbase.": "Añade una URL del sitio web como fuente de conocimiento para Aidbase.",
"Adds a new question/answer item to an existing FAQ; supports categories.": "Añade un nuevo elemento de pregunta/respuesta a un FAQ existente; soporta categorías.",
"Creates a new FAQ entry with title and description.": "Crea una nueva entrada de FAQ con título y descripción.",
"Generates an AI chatbot reply given a message and optional session context.": "Genera una respuesta de un chatbot de IA dado un mensaje y un contexto de sesión opcional.",
"Starts a training job on an existing knowledge base item (FAQ, website, video, etc.).": "Inicia un trabajo de formación en un elemento de base de conocimiento existente (FAQ, sitio web, vídeo, etc.).",
"Make a custom API call to a specific endpoint": "Hacer una llamada API personalizada a un extremo específico",
"YouTube Video URL": "URL del vídeo de YouTube",
"Website URL": "URL del sitio web",
"FAQ": "FAQ",
"Question": "Pregunta",
"Answer": "Respuesta",
"Source URL": "URL de origen",
"Categories": "Categorías",
"Title": "Título",
"Description": "Descripción",
"Chatbot": "Chatbot",
"Message": "Mensaje",
"Session ID": "ID de sesión",
"Knowledge Item": "Objeto de conocimiento",
"Method": "Método",
"Headers": "Encabezados",
"Query Parameters": "Parámetros de consulta",
"Body": "Cuerpo",
"Response is Binary ?": "¿Respuesta es binaria?",
"No Error on Failure": "No hay ningún error en fallo",
"Timeout (in seconds)": "Tiempo de espera (en segundos)",
"The URL of the YouTube video to add as a knowledge source.": "La URL del vídeo de YouTube para agregar como una fuente de conocimiento.",
"The URL of the website to add as a knowledge source (e.g., https://www.example.com).": "La URL del sitio web para añadir como fuente de conocimiento (por ejemplo, https://www.example.com).",
"Select the FAQ to which the item will be added.": "Seleccione el FAQ al que se añadirá el elemento.",
"An optional URL for the source of the information.": "Una URL opcional para la fuente de la información.",
"A list of category names. New categories will be created if they do not exist.": "Una lista de nombres de categorías. Se crearán nuevas categorías si no existen.",
"The title of the new FAQ knowledge base.": "El título de la nueva base de conocimiento de FAQ.",
"An optional description for the FAQ.": "Una descripción opcional para el FAQ.",
"Select the chatbot that will generate the reply.": "Selecciona el chatbot que generará la respuesta.",
"The message or question to send to the chatbot.": "El mensaje o pregunta a enviar al chatbot.",
"An optional session ID to maintain conversation context. If omitted, a new conversation will start.": "Un ID de sesión opcional para mantener el contexto de conversación. Si se omite, se iniciará una nueva conversación.",
"Select the knowledge item to train.": "Seleccione el elemento de conocimiento a entrenar.",
"Authorization headers are injected automatically from your connection.": "Las cabeceras de autorización se inyectan automáticamente desde tu conexión.",
"Enable for files like PDFs, images, etc..": "Activar para archivos como PDFs, imágenes, etc.",
"GET": "RECOGER",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "BORRAR",
"HEAD": "LIMPIO",
"Email Received": "Email recibido",
"Email Status Changed": "Estado del email cambiado",
"Email Priority Changed": "Prioridad de correo cambiada",
"Email Sent": "Correo enviado",
"Ticket Created": "Ticket creado",
"Ticket Priority Changed": "Prioridad del ticket cambiada",
"Ticket Status Changed": "Estado del Ticket cambiado",
"Ticket New Comment": "Nuevo comentario del Ticket",
"Fires when a new email is received in an Aidbase inbox.": "Dispara cuando se recibe un nuevo correo electrónico en la bandeja de entrada de Aidbase.",
"Fires when the status of an email changes.": "Dispara cuando el estado de un correo electrónico cambia.",
"Fires when an emails priority is changed.": "Dispara cuando se cambia la prioridad de un correo electrónico.",
"Fires when an email is sent from Aidbase.": "Dispara cuando se envía un correo electrónico desde Aidbase.",
"Fires when a new ticket is created in Aidbase.": "Dispara cuando se crea un nuevo billete en Aidbase.",
"Fires when the priority of an existing ticket changes.": "Dispara cuando cambia la prioridad de un ticket existente.",
"Fires when a tickets overall status changes.": "Dispara cuando el estado general de un ticket cambia.",
"Fires when a new comment is added to an existing ticket.": "Dispara cuando se agrega un nuevo comentario a un ticket existente.",
"Email Inbox": "Correo",
"New Status": "Nuevo estado",
"New Priority": "Nueva prioridad",
"Ticket Form": "Formulario del Ticket",
"Commenter Type": "Tipo de comentario",
"Select the email inbox to watch. Leave blank to trigger for all inboxes.": "Seleccione la bandeja de entrada para ver. Dejar en blanco para activar todas las bandejas.",
"Select the status to trigger on. Leave blank to trigger for any status change.": "Seleccione el estado al que se activará. Dejar en blanco para activar cualquier cambio de estado.",
"Select the priority to trigger on. Leave blank to trigger for any priority change.": "Seleccione la prioridad a activar. Dejar en blanco para activar cualquier cambio de prioridad.",
"Select the ticket form to watch. Leave blank to trigger for all forms.": "Seleccione el formulario de ticket para ver. Deje en blanco para activar todos los formularios.",
"Select the type of commenter to trigger on. Leave blank for all comments.": "Seleccione el tipo de comentario a activar. Dejar en blanco para todos los comentarios.",
"Opened": "Abierto",
"Assigned": "Asignado",
"Need More Info": "Necesita más información",
"Resolved": "Resuelto",
"Closed": "Cerrado",
"Low": "Baja",
"Medium": "Medio",
"High": "Alta",
"Open": "Abrir",
"User (Customer)": "Usuario (Cliente)",
"Agent (Support Staff)": "Agente (Personal de soporte)"
}

View File

@@ -0,0 +1,93 @@
{
"\n To get your API Key:\n 1. Log in to your Aidbase dashboard.\n 2. Navigate to **Settings** in the sidebar.\n 3. Click on the **API** section.\n 4. Generate and copy your new API Key.\n ": "\n To get your API Key:\n 1. Log in to your Aidbase dashboard.\n 2. Navigate to **Settings** in the sidebar.\n 3. Click on the **API** section.\n 4. Generate and copy your new API Key.\n ",
"Add Video": "Ajouter une vidéo",
"Add Website": "Ajouter un site web",
"Add FAQ Item": "Ajouter un article de FAQ",
"Create FAQ": "Créer une FAQ",
"Create Chatbot Reply": "Créer une réponse Chatbot",
"Start Training": "Commencer l'entraînement",
"Custom API Call": "Appel d'API personnalisé",
"Adds a YouTube video URL as knowledge to the Aidbase knowledge base.": "Ajoute une URL vidéo YouTube en tant que connaissance à la base de connaissances Aidbase.",
"Adds a website URL as a knowledge source for Aidbase.": "Ajoute une URL du site Web en tant que source de connaissances pour Aidbase.",
"Adds a new question/answer item to an existing FAQ; supports categories.": "Ajoute un nouvel élément question/réponse à une FAQ existante; prend en charge les catégories.",
"Creates a new FAQ entry with title and description.": "Crée une nouvelle entrée avec le titre et la description.",
"Generates an AI chatbot reply given a message and optional session context.": "Génère une réponse AI chatbot dans un message et un contexte de session optionnel.",
"Starts a training job on an existing knowledge base item (FAQ, website, video, etc.).": "Commence un poste de formation sur une base de connaissances existante (FAQ, site web, vidéo, etc.).",
"Make a custom API call to a specific endpoint": "Passer un appel API personnalisé à un endpoint spécifique",
"YouTube Video URL": "URL de la vidéo YouTube",
"Website URL": "URL du site web",
"FAQ": "Foire Aux Questions",
"Question": "Question",
"Answer": "Répondre",
"Source URL": "URL de la source",
"Categories": "Catégories",
"Title": "Titre de la feuille de calcul",
"Description": "Libellé",
"Chatbot": "Chatbot",
"Message": "Message",
"Session ID": "ID de session",
"Knowledge Item": "Élément de connaissance",
"Method": "Méthode",
"Headers": "Headers",
"Query Parameters": "Paramètres de requête",
"Body": "Body",
"Response is Binary ?": "La réponse est Binaire ?",
"No Error on Failure": "Aucune erreur en cas d'échec",
"Timeout (in seconds)": "Délai d'expiration (en secondes)",
"The URL of the YouTube video to add as a knowledge source.": "L'URL de la vidéo YouTube à ajouter comme source de connaissances.",
"The URL of the website to add as a knowledge source (e.g., https://www.example.com).": "L'URL du site Web à ajouter en tant que source de connaissances (par exemple, https://www.example.com).",
"Select the FAQ to which the item will be added.": "Sélectionnez la FAQ à laquelle l'élément sera ajouté.",
"An optional URL for the source of the information.": "Une URL optionnelle pour la source de l'information.",
"A list of category names. New categories will be created if they do not exist.": "Une liste de noms de catégories. De nouvelles catégories seront créées si elles n'existent pas.",
"The title of the new FAQ knowledge base.": "Le titre de la nouvelle base de connaissances de la FAQ.",
"An optional description for the FAQ.": "Une description optionnelle de la FAQ.",
"Select the chatbot that will generate the reply.": "Sélectionnez le chatbot qui va générer la réponse.",
"The message or question to send to the chatbot.": "Le message ou la question à envoyer au chatbot.",
"An optional session ID to maintain conversation context. If omitted, a new conversation will start.": "Un ID de session optionnel pour maintenir le contexte de conversation. Si omis, une nouvelle conversation démarrera.",
"Select the knowledge item to train.": "Sélectionnez l'élément de connaissance à former.",
"Authorization headers are injected automatically from your connection.": "Les Headers d'autorisation sont injectés automatiquement à partir de votre connexion.",
"Enable for files like PDFs, images, etc..": "Activer pour les fichiers comme les PDFs, les images, etc.",
"GET": "GET",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "DELETE",
"HEAD": "HEAD",
"Email Received": "Courriel reçu",
"Email Status Changed": "Statut de l'e-mail modifié",
"Email Priority Changed": "Priorité de l'e-mail modifiée",
"Email Sent": "Courriel envoyé",
"Ticket Created": "Ticket créé",
"Ticket Priority Changed": "Priorité du ticket modifiée",
"Ticket Status Changed": "Statut du ticket modifié",
"Ticket New Comment": "Nouveau commentaire de ticket",
"Fires when a new email is received in an Aidbase inbox.": "Déclenche lorsqu'un nouvel e-mail est reçu dans une boîte de réception Aidbase.",
"Fires when the status of an email changes.": "Déclenche lorsque le statut d'un e-mail change.",
"Fires when an emails priority is changed.": "Tire quand la priorité dun courriel est modifiée.",
"Fires when an email is sent from Aidbase.": "Tire quand un email est envoyé depuis Aidbase.",
"Fires when a new ticket is created in Aidbase.": "Tire quand un nouveau ticket est créé dans Aidbase.",
"Fires when the priority of an existing ticket changes.": "Tire lorsque la priorité d'un ticket existant change.",
"Fires when a tickets overall status changes.": "Déclenche quand le statut global d'un ticket change.",
"Fires when a new comment is added to an existing ticket.": "Se déclenche lorsqu'un nouveau commentaire est ajouté à un ticket existant.",
"Email Inbox": "Boîte de réception de courriel",
"New Status": "Nouveau statut",
"New Priority": "Nouvelle priorité",
"Ticket Form": "Formulaire de ticket",
"Commenter Type": "Type de commentateur",
"Select the email inbox to watch. Leave blank to trigger for all inboxes.": "Sélectionnez la boîte de réception à surveiller. Laissez vide pour déclencher toutes les boîtes de réception.",
"Select the status to trigger on. Leave blank to trigger for any status change.": "Sélectionnez le statut à activer. Laissez vide pour déclencher tout changement de statut.",
"Select the priority to trigger on. Leave blank to trigger for any priority change.": "Sélectionnez la priorité à activer. Laissez vide pour déclencher tout changement de priorité.",
"Select the ticket form to watch. Leave blank to trigger for all forms.": "Sélectionnez le formulaire de ticket à surveiller. Laissez vide pour déclencher tous les formulaires.",
"Select the type of commenter to trigger on. Leave blank for all comments.": "Sélectionnez le type de commentaire à activer. Laissez vide pour tous les commentaires.",
"Opened": "Ouvert",
"Assigned": "Assigné",
"Need More Info": "Besoin de plus d'informations",
"Resolved": "Résolu",
"Closed": "Fermé",
"Low": "Bas",
"Medium": "Moyenne",
"High": "Élevé",
"Open": "Ouvert",
"User (Customer)": "Utilisateur (client)",
"Agent (Support Staff)": "Agent (personnel de soutien)"
}

View File

@@ -0,0 +1,93 @@
{
"\n To get your API Key:\n 1. Log in to your Aidbase dashboard.\n 2. Navigate to **Settings** in the sidebar.\n 3. Click on the **API** section.\n 4. Generate and copy your new API Key.\n ": "\n To get your API Key:\n 1. Log in to your Aidbase dashboard.\n 2. Navigate to **Settings** in the sidebar.\n 3. Click on the **API** section.\n 4. Generate and copy your new API Key.\n ",
"Add Video": "動画を追加",
"Add Website": "ウェブサイトを追加",
"Add FAQ Item": "FAQアイテムを追加",
"Create FAQ": "FAQを作成",
"Create Chatbot Reply": "チャットボットの返信を作成",
"Start Training": "トレーニングを開始",
"Custom API Call": "カスタムAPI通話",
"Adds a YouTube video URL as knowledge to the Aidbase knowledge base.": "Aidbaseナレッジベースに知識としてYouTube動画URLを追加します。",
"Adds a website URL as a knowledge source for Aidbase.": "Aidbase のナレッジソースとしてウェブサイト URL を追加します。",
"Adds a new question/answer item to an existing FAQ; supports categories.": "既存のFAQに新しい質問/回答項目を追加します。カテゴリをサポートします。",
"Creates a new FAQ entry with title and description.": "タイトルと説明を含む新しいFAQエントリを作成します。",
"Generates an AI chatbot reply given a message and optional session context.": "メッセージとオプションのセッションコンテキストを指定すると、AIチャットボットの返信が生成されます。",
"Starts a training job on an existing knowledge base item (FAQ, website, video, etc.).": "既存のナレッジベース項目(FAQ、ウェブサイト、ビデオなど)でトレーニングジョブを開始します。",
"Make a custom API call to a specific endpoint": "特定のエンドポイントへのカスタム API コールを実行します。",
"YouTube Video URL": "YouTube 動画の URL",
"Website URL": "Website URL",
"FAQ": "FAQ",
"Question": "質問",
"Answer": "回答",
"Source URL": "ソースURL",
"Categories": "カテゴリ",
"Title": "タイトル",
"Description": "説明",
"Chatbot": "チャットボット",
"Message": "メッセージ",
"Session ID": "セッションID",
"Knowledge Item": "知識項目",
"Method": "方法",
"Headers": "ヘッダー",
"Query Parameters": "クエリパラメータ",
"Body": "本文",
"Response is Binary ?": "応答はバイナリですか?",
"No Error on Failure": "失敗時にエラーはありません",
"Timeout (in seconds)": "タイムアウト(秒)",
"The URL of the YouTube video to add as a knowledge source.": "ナレッジソースとして追加するYouTube動画のURL。",
"The URL of the website to add as a knowledge source (e.g., https://www.example.com).": "知識ソースとして追加するウェブサイトの URL (https://www.example.com)",
"Select the FAQ to which the item will be added.": "項目を追加するFAQを選択します。",
"An optional URL for the source of the information.": "情報のソースに対するオプションのURL。",
"A list of category names. New categories will be created if they do not exist.": "カテゴリ名のリスト。存在しない場合、新しいカテゴリが作成されます。",
"The title of the new FAQ knowledge base.": "新しいFAQナレッジベースのタイトル",
"An optional description for the FAQ.": "FAQの任意の説明。",
"Select the chatbot that will generate the reply.": "返信を生成するチャットボットを選択します。",
"The message or question to send to the chatbot.": "チャットボットに送信するメッセージまたは質問。",
"An optional session ID to maintain conversation context. If omitted, a new conversation will start.": "会話コンテキストを維持するためのオプションのセッションID。省略した場合、新しい会話が開始されます。",
"Select the knowledge item to train.": "トレーニングする知識項目を選択します。",
"Authorization headers are injected automatically from your connection.": "認証ヘッダは接続から自動的に注入されます。",
"Enable for files like PDFs, images, etc..": "PDF、画像などのファイルを有効にします。",
"GET": "取得",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "削除",
"HEAD": "頭",
"Email Received": "メールを受信しました",
"Email Status Changed": "電子メールの状態が変更されました",
"Email Priority Changed": "メールの優先度が変更されました",
"Email Sent": "メールを送信しました",
"Ticket Created": "作成されたチケット",
"Ticket Priority Changed": "チケットの優先度が変更されました",
"Ticket Status Changed": "チケットのステータスが変更されました",
"Ticket New Comment": "チケットの新しいコメント",
"Fires when a new email is received in an Aidbase inbox.": "新しいメールが Aidbase インボックスで受信したときに発行されます。",
"Fires when the status of an email changes.": "メールのステータスが変更されたときに発行されます。",
"Fires when an emails priority is changed.": "メールの優先度が変更されたときに発生します。",
"Fires when an email is sent from Aidbase.": "Aidbaseからメールが送信されたときに発火します。",
"Fires when a new ticket is created in Aidbase.": "Aidbaseで新しいチケットが作成されたときに発行されます。",
"Fires when the priority of an existing ticket changes.": "既存のチケットの優先度が変更されたときに発行されます。",
"Fires when a tickets overall status changes.": "チケットのステータスが変更されたときに発生します。",
"Fires when a new comment is added to an existing ticket.": "既存のチケットに新しいコメントが追加されたときに発行されます。",
"Email Inbox": "Eメール受信トレイ",
"New Status": "新しいステータス",
"New Priority": "新しい優先度",
"Ticket Form": "チケットフォーム",
"Commenter Type": "コメントの種類",
"Select the email inbox to watch. Leave blank to trigger for all inboxes.": "見る電子メールの受信トレイを選択します。すべての受信トレイをトリガーするには空白のままにします。",
"Select the status to trigger on. Leave blank to trigger for any status change.": "トリガーするステータスを選択します。状態の変更をトリガーする場合は空白のままにします。",
"Select the priority to trigger on. Leave blank to trigger for any priority change.": "トリガーする優先度を選択します。優先度を変更する場合は空白のままにします。",
"Select the ticket form to watch. Leave blank to trigger for all forms.": "ウォッチするチケットフォームを選択します。すべてのフォームをトリガーする場合は空白のままにします。",
"Select the type of commenter to trigger on. Leave blank for all comments.": "トリガーするコメントの種類を選択します。すべてのコメントは空白のままにします。",
"Opened": "開放済み",
"Assigned": "割り当て",
"Need More Info": "もっと詳しい情報が必要",
"Resolved": "解決済み",
"Closed": "クローズ済み",
"Low": "低い",
"Medium": "ミディアム",
"High": "高い",
"Open": "開く",
"User (Customer)": "ユーザー (顧客)",
"Agent (Support Staff)": "エージェント(サポートスタッフ)"
}

View File

@@ -0,0 +1,93 @@
{
"\n To get your API Key:\n 1. Log in to your Aidbase dashboard.\n 2. Navigate to **Settings** in the sidebar.\n 3. Click on the **API** section.\n 4. Generate and copy your new API Key.\n ": "\n Om uw API-sleutel te krijgen:\n 1. Log in op uw Aidbase dashboard.\n 2. Navigeer naar **Instellingen** in de zijbalk.\n 3. Klik op de **API** sectie.\n 4. Genereer en kopieer uw nieuwe API-sleutel.\n ",
"Add Video": "Video toevoegen",
"Add Website": "Website toevoegen",
"Add FAQ Item": "Voeg FAQ item toe",
"Create FAQ": "Maak FAQ",
"Create Chatbot Reply": "Chatbot antwoord maken",
"Start Training": "Start training",
"Custom API Call": "Custom API Call",
"Adds a YouTube video URL as knowledge to the Aidbase knowledge base.": "Voegt een YouTube-video-URL toe als kennis van de Aidbase kennis.",
"Adds a website URL as a knowledge source for Aidbase.": "Voegt een website-URL toe als kennisbron voor Aidbase.",
"Adds a new question/answer item to an existing FAQ; supports categories.": "Voegt een nieuw vraag/antwoord item toe aan een bestaande FAQ; ondersteunt categorieën.",
"Creates a new FAQ entry with title and description.": "Maak een nieuwe FAQ vermelding met titel en beschrijving.",
"Generates an AI chatbot reply given a message and optional session context.": "Genereert een AI chatbot antwoord met een bericht en optionele sessie context.",
"Starts a training job on an existing knowledge base item (FAQ, website, video, etc.).": "Start een training job op een bestaande kennisbank (FAQ, website, video, enz.).",
"Make a custom API call to a specific endpoint": "Maak een aangepaste API call naar een specifiek eindpunt",
"YouTube Video URL": "YouTube Video URL",
"Website URL": "Website URL",
"FAQ": "FAQ",
"Question": "Vraag",
"Answer": "Beantwoorden",
"Source URL": "Bron URL",
"Categories": "Categoriechar@@0n",
"Title": "Aanspreektitel",
"Description": "Beschrijving",
"Chatbot": "Chatbot",
"Message": "bericht",
"Session ID": "Sessie ID",
"Knowledge Item": "Kennisitem",
"Method": "Methode",
"Headers": "Kopteksten",
"Query Parameters": "Query parameters",
"Body": "Lichaam",
"Response is Binary ?": "Antwoord is binair?",
"No Error on Failure": "Geen fout bij fout",
"Timeout (in seconds)": "Time-out (in seconden)",
"The URL of the YouTube video to add as a knowledge source.": "De URL van de YouTube video die moet worden toegevoegd als kennisbron.",
"The URL of the website to add as a knowledge source (e.g., https://www.example.com).": "De URL van de website om toe te voegen als kennisbron (bijv. https://www.voorbeeld.com).",
"Select the FAQ to which the item will be added.": "Selecteer de FAQ waaraan het item zal worden toegevoegd.",
"An optional URL for the source of the information.": "Een optionele URL voor de bron van de informatie.",
"A list of category names. New categories will be created if they do not exist.": "Een lijst met categorienamen. Nieuwe categorieën worden gemaakt als ze niet bestaan.",
"The title of the new FAQ knowledge base.": "De titel van de nieuwe FAQ kennisbasis.",
"An optional description for the FAQ.": "Een optionele beschrijving voor de FAQ.",
"Select the chatbot that will generate the reply.": "Selecteer de chatbot die het antwoord zal genereren.",
"The message or question to send to the chatbot.": "Het bericht of de vraag om naar de chatbot te sturen.",
"An optional session ID to maintain conversation context. If omitted, a new conversation will start.": "Een optionele sessie-ID om de gesprekscontext te onderhouden. Indien weggelaten zal een nieuw gesprek beginnen.",
"Select the knowledge item to train.": "Selecteer het kennisitem om te trainen.",
"Authorization headers are injected automatically from your connection.": "Autorisatie headers worden automatisch geïnjecteerd vanuit uw verbinding.",
"Enable for files like PDFs, images, etc..": "Inschakelen voor bestanden zoals PDF's, afbeeldingen etc..",
"GET": "KRIJG",
"POST": "POSTE",
"PATCH": "BEKIJK",
"PUT": "PUT",
"DELETE": "VERWIJDEREN",
"HEAD": "HOOFD",
"Email Received": "E-mail ontvangen",
"Email Status Changed": "E-mailstatus gewijzigd",
"Email Priority Changed": "E-mail prioriteit gewijzigd",
"Email Sent": "E-mail verzonden",
"Ticket Created": "Ticket aangemaakt",
"Ticket Priority Changed": "Ticket prioriteit gewijzigd",
"Ticket Status Changed": "Ticketstatus gewijzigd",
"Ticket New Comment": "Ticket nieuwe reactie",
"Fires when a new email is received in an Aidbase inbox.": "Vuurt wanneer een nieuwe e-mail wordt ontvangen in een Aidbase inbox.",
"Fires when the status of an email changes.": "Vuurt wanneer de status van een e-mail verandert.",
"Fires when an emails priority is changed.": "Vuurt wanneer de prioriteit van een e-mail wordt veranderd.",
"Fires when an email is sent from Aidbase.": "Vuurt wanneer een e-mail wordt verzonden vanuit Aidbase.",
"Fires when a new ticket is created in Aidbase.": "Vuurt wanneer een nieuw ticket wordt gemaakt in Aidbase.",
"Fires when the priority of an existing ticket changes.": "Vuurt wanneer de prioriteit van een bestaande ticket verandert.",
"Fires when a tickets overall status changes.": "Vuurt wanneer de algemene status van een ticket verandert.",
"Fires when a new comment is added to an existing ticket.": "Vuurt wanneer een nieuwe reactie is toegevoegd aan een bestaand ticket.",
"Email Inbox": "E-mail inbox",
"New Status": "Nieuwe status",
"New Priority": "Nieuwe prioriteit",
"Ticket Form": "Ticket formulier",
"Commenter Type": "Type reactieeur",
"Select the email inbox to watch. Leave blank to trigger for all inboxes.": "Selecteer de e-mail inbox om te bekijken. Laat leeg voor trigger voor alle inboxes.",
"Select the status to trigger on. Leave blank to trigger for any status change.": "Selecteer de status waarop je wilt activeren. Laat leeg om te trigger voor elke statuswijziging.",
"Select the priority to trigger on. Leave blank to trigger for any priority change.": "Selecteer de prioriteit om aan te triggeren. Laat leeg om te trigger voor elke prioriteit wijziging.",
"Select the ticket form to watch. Leave blank to trigger for all forms.": "Selecteer het ticketformulier om te bekijken. Laat leeg voor alle formulieren.",
"Select the type of commenter to trigger on. Leave blank for all comments.": "Selecteer het type commentaar om aan te sluiten. Laat leeg voor alle reacties.",
"Opened": "Geopend",
"Assigned": "Toegewezen",
"Need More Info": "Meer informatie nodig",
"Resolved": "Opgelost",
"Closed": "gesloten",
"Low": "laag",
"Medium": "Middelgroot",
"High": "hoog",
"Open": "Open",
"User (Customer)": "Gebruiker (klant)",
"Agent (Support Staff)": "Medewerker (Support Staff)"
}

View File

@@ -0,0 +1,93 @@
{
"\n To get your API Key:\n 1. Log in to your Aidbase dashboard.\n 2. Navigate to **Settings** in the sidebar.\n 3. Click on the **API** section.\n 4. Generate and copy your new API Key.\n ": "\n To get your API Key:\n 1. Log in to your Aidbase dashboard.\n 2. Navigate to **Settings** in the sidebar.\n 3. Click on the **API** section.\n 4. Generate and copy your new API Key.\n ",
"Add Video": "Adicionar vídeo",
"Add Website": "Adicionar Site",
"Add FAQ Item": "Adicionar Item da FAQ",
"Create FAQ": "Criar FAQ",
"Create Chatbot Reply": "Criar resposta do Chatbot",
"Start Training": "Iniciar treinamento",
"Custom API Call": "Chamada de API personalizada",
"Adds a YouTube video URL as knowledge to the Aidbase knowledge base.": "Adiciona uma URL de vídeo do YouTube como conhecimento para a base de conhecimento da Aidbase.",
"Adds a website URL as a knowledge source for Aidbase.": "Adiciona uma URL do site como fonte de conhecimento para o Aidbase.",
"Adds a new question/answer item to an existing FAQ; supports categories.": "Adiciona um novo item de pergunta/resposta a uma FAQ existente; suporta categorias.",
"Creates a new FAQ entry with title and description.": "Cria uma nova entrada de FAQ com título e descrição.",
"Generates an AI chatbot reply given a message and optional session context.": "Gera uma resposta do ChatBot IA dada uma mensagem e contexto opcional de sessão.",
"Starts a training job on an existing knowledge base item (FAQ, website, video, etc.).": "Inicia um trabalho de treinamento em um item da base de conhecimento existente (FAQ, website, vídeo, etc.).",
"Make a custom API call to a specific endpoint": "Faça uma chamada de API personalizada para um ponto de extremidade específico",
"YouTube Video URL": "URL do Vídeo do YouTube",
"Website URL": "URL do site",
"FAQ": "Perguntas Frequentes",
"Question": "Questão",
"Answer": "Responder",
"Source URL": "URL de origem",
"Categories": "categorias",
"Title": "Título",
"Description": "Descrição",
"Chatbot": "Chatbot",
"Message": "mensagem",
"Session ID": "ID da sessão",
"Knowledge Item": "Item de Conhecimento",
"Method": "Método",
"Headers": "Cabeçalhos",
"Query Parameters": "Parâmetros da consulta",
"Body": "Conteúdo",
"Response is Binary ?": "A resposta é binária ?",
"No Error on Failure": "Nenhum erro no Failure",
"Timeout (in seconds)": "Tempo limite (em segundos)",
"The URL of the YouTube video to add as a knowledge source.": "O URL do vídeo do YouTube para adicionar como fonte de conhecimento.",
"The URL of the website to add as a knowledge source (e.g., https://www.example.com).": "A URL do site para adicionar como fonte de conhecimento (por exemplo, https://www.exemplo.com).",
"Select the FAQ to which the item will be added.": "Selecione o FAQ ao qual o item será adicionado.",
"An optional URL for the source of the information.": "Uma URL opcional para a fonte de informações.",
"A list of category names. New categories will be created if they do not exist.": "Uma lista de nomes de categoria. Novas categorias serão criadas se não existir.",
"The title of the new FAQ knowledge base.": "O título da nova base de conhecimento de Perguntas Frequentes.",
"An optional description for the FAQ.": "Uma descrição opcional para o FAQ.",
"Select the chatbot that will generate the reply.": "Selecione o ChatBot que irá gerar a resposta.",
"The message or question to send to the chatbot.": "A mensagem ou pergunta a ser enviada para o Chatbot.",
"An optional session ID to maintain conversation context. If omitted, a new conversation will start.": "Um ID de sessão opcional para manter o contexto de conversa. Se omitido, uma nova conversa será iniciada.",
"Select the knowledge item to train.": "Selecione o item conhecimento para treinar.",
"Authorization headers are injected automatically from your connection.": "Os cabeçalhos de autorização são inseridos automaticamente a partir da sua conexão.",
"Enable for files like PDFs, images, etc..": "Habilitar para arquivos como PDFs, imagens, etc..",
"GET": "OBTER",
"POST": "POSTAR",
"PATCH": "COMPRAR",
"PUT": "COLOCAR",
"DELETE": "EXCLUIR",
"HEAD": "CABEÇA",
"Email Received": "E-mail recebido",
"Email Status Changed": "Status do e-mail alterado",
"Email Priority Changed": "Prioridade do e-mail alterada",
"Email Sent": "Email enviado",
"Ticket Created": "Ticket criado",
"Ticket Priority Changed": "Prioridade do Ticket Alterada",
"Ticket Status Changed": "Status do Ticket Alterado",
"Ticket New Comment": "Novo Comentário de Ticket",
"Fires when a new email is received in an Aidbase inbox.": "aciona quando um novo e-mail é recebido em uma caixa de entrada AidBase.",
"Fires when the status of an email changes.": "Atira quando o status de um e-mail é alterado.",
"Fires when an emails priority is changed.": "Atira quando a prioridade de um e-mail é alterada.",
"Fires when an email is sent from Aidbase.": "aciona quando um e-mail é enviado do Aidbase.",
"Fires when a new ticket is created in Aidbase.": "Atira quando um novo ticket é criado na base de identificação.",
"Fires when the priority of an existing ticket changes.": "Atira quando a prioridade de um ticket existente muda.",
"Fires when a tickets overall status changes.": "Emite quando o status geral de um ticket muda.",
"Fires when a new comment is added to an existing ticket.": "Efetua quando um novo comentário é adicionado a um ticket existente.",
"Email Inbox": "Caixa de Entrada",
"New Status": "Novo status",
"New Priority": "Nova Prioridade",
"Ticket Form": "Formulário do Ticket",
"Commenter Type": "Tipo comentador",
"Select the email inbox to watch. Leave blank to trigger for all inboxes.": "Selecione a caixa de entrada para assistir. Deixe em branco para acionar todas as caixas de entrada.",
"Select the status to trigger on. Leave blank to trigger for any status change.": "Selecione o status para ativar. Deixe em branco para acionar qualquer mudança de estado.",
"Select the priority to trigger on. Leave blank to trigger for any priority change.": "Selecione a prioridade a ser acionada. Deixe em branco para acionar qualquer mudança de prioridade.",
"Select the ticket form to watch. Leave blank to trigger for all forms.": "Selecione o formulário do ticket a ser observado. Deixe em branco para acionar todos os formulários.",
"Select the type of commenter to trigger on. Leave blank for all comments.": "Selecione o tipo de compositor para ativar. Deixe em branco para todos os comentários.",
"Opened": "Aberto",
"Assigned": "Atribuído",
"Need More Info": "Precisa de mais informações",
"Resolved": "Resolvido",
"Closed": "Fechado",
"Low": "baixa",
"Medium": "Média",
"High": "alta",
"Open": "Abertas",
"User (Customer)": "Usuário (Cliente)",
"Agent (Support Staff)": "Agente (equipe upport)"
}

View File

@@ -0,0 +1,93 @@
{
"\n To get your API Key:\n 1. Log in to your Aidbase dashboard.\n 2. Navigate to **Settings** in the sidebar.\n 3. Click on the **API** section.\n 4. Generate and copy your new API Key.\n ": "\n To get your API Key:\n 1. Log in to your Aidbase dashboard.\n 2. Navigate to **Settings** in the sidebar.\n 3. Click on the **API** section.\n 4. Generate and copy your new API Key.\n ",
"Add Video": "Add Video",
"Add Website": "Add Website",
"Add FAQ Item": "Add FAQ Item",
"Create FAQ": "Create FAQ",
"Create Chatbot Reply": "Create Chatbot Reply",
"Start Training": "Start Training",
"Custom API Call": "Custom API Call",
"Adds a YouTube video URL as knowledge to the Aidbase knowledge base.": "Adds a YouTube video URL as knowledge to the Aidbase knowledge base.",
"Adds a website URL as a knowledge source for Aidbase.": "Adds a website URL as a knowledge source for Aidbase.",
"Adds a new question/answer item to an existing FAQ; supports categories.": "Adds a new question/answer item to an existing FAQ; supports categories.",
"Creates a new FAQ entry with title and description.": "Creates a new FAQ entry with title and description.",
"Generates an AI chatbot reply given a message and optional session context.": "Generates an AI chatbot reply given a message and optional session context.",
"Starts a training job on an existing knowledge base item (FAQ, website, video, etc.).": "Starts a training job on an existing knowledge base item (FAQ, website, video, etc.).",
"Make a custom API call to a specific endpoint": "Make a custom API call to a specific endpoint",
"YouTube Video URL": "YouTube Video URL",
"Website URL": "Website URL",
"FAQ": "FAQ",
"Question": "Question",
"Answer": "Answer",
"Source URL": "Source URL",
"Categories": "Categories",
"Title": "Title",
"Description": "Description",
"Chatbot": "Chatbot",
"Message": "Message",
"Session ID": "Session ID",
"Knowledge Item": "Knowledge Item",
"Method": "Method",
"Headers": "Headers",
"Query Parameters": "Query Parameters",
"Body": "Body",
"Response is Binary ?": "Response is Binary ?",
"No Error on Failure": "No Error on Failure",
"Timeout (in seconds)": "Timeout (in seconds)",
"The URL of the YouTube video to add as a knowledge source.": "The URL of the YouTube video to add as a knowledge source.",
"The URL of the website to add as a knowledge source (e.g., https://www.example.com).": "The URL of the website to add as a knowledge source (e.g., https://www.example.com).",
"Select the FAQ to which the item will be added.": "Select the FAQ to which the item will be added.",
"An optional URL for the source of the information.": "An optional URL for the source of the information.",
"A list of category names. New categories will be created if they do not exist.": "A list of category names. New categories will be created if they do not exist.",
"The title of the new FAQ knowledge base.": "The title of the new FAQ knowledge base.",
"An optional description for the FAQ.": "An optional description for the FAQ.",
"Select the chatbot that will generate the reply.": "Select the chatbot that will generate the reply.",
"The message or question to send to the chatbot.": "The message or question to send to the chatbot.",
"An optional session ID to maintain conversation context. If omitted, a new conversation will start.": "An optional session ID to maintain conversation context. If omitted, a new conversation will start.",
"Select the knowledge item to train.": "Select the knowledge item to train.",
"Authorization headers are injected automatically from your connection.": "Authorization headers are injected automatically from your connection.",
"Enable for files like PDFs, images, etc..": "Enable for files like PDFs, images, etc..",
"GET": "GET",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "DELETE",
"HEAD": "HEAD",
"Email Received": "Email Received",
"Email Status Changed": "Email Status Changed",
"Email Priority Changed": "Email Priority Changed",
"Email Sent": "Email Sent",
"Ticket Created": "Ticket Created",
"Ticket Priority Changed": "Ticket Priority Changed",
"Ticket Status Changed": "Ticket Status Changed",
"Ticket New Comment": "Ticket New Comment",
"Fires when a new email is received in an Aidbase inbox.": "Fires when a new email is received in an Aidbase inbox.",
"Fires when the status of an email changes.": "Fires when the status of an email changes.",
"Fires when an emails priority is changed.": "Fires when an emails priority is changed.",
"Fires when an email is sent from Aidbase.": "Fires when an email is sent from Aidbase.",
"Fires when a new ticket is created in Aidbase.": "Fires when a new ticket is created in Aidbase.",
"Fires when the priority of an existing ticket changes.": "Fires when the priority of an existing ticket changes.",
"Fires when a tickets overall status changes.": "Fires when a tickets overall status changes.",
"Fires when a new comment is added to an existing ticket.": "Fires when a new comment is added to an existing ticket.",
"Email Inbox": "Email Inbox",
"New Status": "New Status",
"New Priority": "New Priority",
"Ticket Form": "Ticket Form",
"Commenter Type": "Commenter Type",
"Select the email inbox to watch. Leave blank to trigger for all inboxes.": "Select the email inbox to watch. Leave blank to trigger for all inboxes.",
"Select the status to trigger on. Leave blank to trigger for any status change.": "Select the status to trigger on. Leave blank to trigger for any status change.",
"Select the priority to trigger on. Leave blank to trigger for any priority change.": "Select the priority to trigger on. Leave blank to trigger for any priority change.",
"Select the ticket form to watch. Leave blank to trigger for all forms.": "Select the ticket form to watch. Leave blank to trigger for all forms.",
"Select the type of commenter to trigger on. Leave blank for all comments.": "Select the type of commenter to trigger on. Leave blank for all comments.",
"Opened": "Opened",
"Assigned": "Assigned",
"Need More Info": "Need More Info",
"Resolved": "Resolved",
"Closed": "Closed",
"Low": "Low",
"Medium": "Medium",
"High": "High",
"Open": "Open",
"User (Customer)": "User (Customer)",
"Agent (Support Staff)": "Agent (Support Staff)"
}

View File

@@ -0,0 +1,93 @@
{
"\n To get your API Key:\n 1. Log in to your Aidbase dashboard.\n 2. Navigate to **Settings** in the sidebar.\n 3. Click on the **API** section.\n 4. Generate and copy your new API Key.\n ": "\n To get your API Key:\n 1. Log in to your Aidbase dashboard.\n 2. Navigate to **Settings** in the sidebar.\n 3. Click on the **API** section.\n 4. Generate and copy your new API Key.\n ",
"Add Video": "Add Video",
"Add Website": "Add Website",
"Add FAQ Item": "Add FAQ Item",
"Create FAQ": "Create FAQ",
"Create Chatbot Reply": "Create Chatbot Reply",
"Start Training": "Start Training",
"Custom API Call": "自定义 API 呼叫",
"Adds a YouTube video URL as knowledge to the Aidbase knowledge base.": "Adds a YouTube video URL as knowledge to the Aidbase knowledge base.",
"Adds a website URL as a knowledge source for Aidbase.": "Adds a website URL as a knowledge source for Aidbase.",
"Adds a new question/answer item to an existing FAQ; supports categories.": "Adds a new question/answer item to an existing FAQ; supports categories.",
"Creates a new FAQ entry with title and description.": "Creates a new FAQ entry with title and description.",
"Generates an AI chatbot reply given a message and optional session context.": "Generates an AI chatbot reply given a message and optional session context.",
"Starts a training job on an existing knowledge base item (FAQ, website, video, etc.).": "Starts a training job on an existing knowledge base item (FAQ, website, video, etc.).",
"Make a custom API call to a specific endpoint": "将一个自定义 API 调用到一个特定的终点",
"YouTube Video URL": "YouTube Video URL",
"Website URL": "Website URL",
"FAQ": "FAQ",
"Question": "Question",
"Answer": "Answer",
"Source URL": "Source URL",
"Categories": "Categories",
"Title": "标题",
"Description": "描述",
"Chatbot": "Chatbot",
"Message": "Message",
"Session ID": "Session ID",
"Knowledge Item": "Knowledge Item",
"Method": "方法",
"Headers": "信头",
"Query Parameters": "查询参数",
"Body": "正文内容",
"Response is Binary ?": "Response is Binary ?",
"No Error on Failure": "失败时没有错误",
"Timeout (in seconds)": "超时(秒)",
"The URL of the YouTube video to add as a knowledge source.": "The URL of the YouTube video to add as a knowledge source.",
"The URL of the website to add as a knowledge source (e.g., https://www.example.com).": "The URL of the website to add as a knowledge source (e.g., https://www.example.com).",
"Select the FAQ to which the item will be added.": "Select the FAQ to which the item will be added.",
"An optional URL for the source of the information.": "An optional URL for the source of the information.",
"A list of category names. New categories will be created if they do not exist.": "A list of category names. New categories will be created if they do not exist.",
"The title of the new FAQ knowledge base.": "The title of the new FAQ knowledge base.",
"An optional description for the FAQ.": "An optional description for the FAQ.",
"Select the chatbot that will generate the reply.": "Select the chatbot that will generate the reply.",
"The message or question to send to the chatbot.": "The message or question to send to the chatbot.",
"An optional session ID to maintain conversation context. If omitted, a new conversation will start.": "An optional session ID to maintain conversation context. If omitted, a new conversation will start.",
"Select the knowledge item to train.": "Select the knowledge item to train.",
"Authorization headers are injected automatically from your connection.": "授权头自动从您的连接中注入。",
"Enable for files like PDFs, images, etc..": "Enable for files like PDFs, images, etc..",
"GET": "获取",
"POST": "帖子",
"PATCH": "PATCH",
"PUT": "弹出",
"DELETE": "删除",
"HEAD": "黑色",
"Email Received": "Email Received",
"Email Status Changed": "Email Status Changed",
"Email Priority Changed": "Email Priority Changed",
"Email Sent": "Email Sent",
"Ticket Created": "Ticket Created",
"Ticket Priority Changed": "Ticket Priority Changed",
"Ticket Status Changed": "Ticket Status Changed",
"Ticket New Comment": "Ticket New Comment",
"Fires when a new email is received in an Aidbase inbox.": "Fires when a new email is received in an Aidbase inbox.",
"Fires when the status of an email changes.": "Fires when the status of an email changes.",
"Fires when an emails priority is changed.": "Fires when an emails priority is changed.",
"Fires when an email is sent from Aidbase.": "Fires when an email is sent from Aidbase.",
"Fires when a new ticket is created in Aidbase.": "Fires when a new ticket is created in Aidbase.",
"Fires when the priority of an existing ticket changes.": "Fires when the priority of an existing ticket changes.",
"Fires when a tickets overall status changes.": "Fires when a tickets overall status changes.",
"Fires when a new comment is added to an existing ticket.": "Fires when a new comment is added to an existing ticket.",
"Email Inbox": "Email Inbox",
"New Status": "New Status",
"New Priority": "New Priority",
"Ticket Form": "Ticket Form",
"Commenter Type": "Commenter Type",
"Select the email inbox to watch. Leave blank to trigger for all inboxes.": "Select the email inbox to watch. Leave blank to trigger for all inboxes.",
"Select the status to trigger on. Leave blank to trigger for any status change.": "Select the status to trigger on. Leave blank to trigger for any status change.",
"Select the priority to trigger on. Leave blank to trigger for any priority change.": "Select the priority to trigger on. Leave blank to trigger for any priority change.",
"Select the ticket form to watch. Leave blank to trigger for all forms.": "Select the ticket form to watch. Leave blank to trigger for all forms.",
"Select the type of commenter to trigger on. Leave blank for all comments.": "Select the type of commenter to trigger on. Leave blank for all comments.",
"Opened": "Opened",
"Assigned": "Assigned",
"Need More Info": "Need More Info",
"Resolved": "已解决",
"Closed": "Closed",
"Low": "Low",
"Medium": "Medium",
"High": "High",
"Open": "Open",
"User (Customer)": "User (Customer)",
"Agent (Support Staff)": "Agent (Support Staff)"
}

View File

@@ -0,0 +1,55 @@
import { createPiece } from '@activepieces/pieces-framework';
import { aidbaseAuth } from './lib/common/auth';
import { emailReceived } from './lib/triggers/email-received';
import { emailStatusChanged } from './lib/triggers/email-status-changed';
import { emailPriorityChanged } from './lib/triggers/email-priority-changed';
import { emailSent } from './lib/triggers/email-sent';
import { ticketCreated } from './lib/triggers/ticket-created';
import { ticketPriorityChanged } from './lib/triggers/ticket-priority-changed';
import { ticketStatusChanged } from './lib/triggers/ticket-status-changed';
import { ticketNewComment } from './lib/triggers/ticket-new-comment';
import { addVideo } from './lib/actions/add-video';
import { addWebsite } from './lib/actions/add-website';
import { addFaqItem } from './lib/actions/add-faq-item';
import { createFaq } from './lib/actions/create-faq';
import { createChatbotReply } from './lib/actions/create-chatbot-reply';
import { startTraining } from './lib/actions/start-training';
import { createCustomApiCallAction } from '@activepieces/pieces-common';
import { API_BASE_URL } from './lib/common/client';
import { PieceCategory } from '@activepieces/shared';
export const aidbase = createPiece({
displayName: 'Aidbase',
auth: aidbaseAuth,
minimumSupportedRelease: '0.36.1',
categories:[PieceCategory.CUSTOMER_SUPPORT, PieceCategory.COMMUNICATION],
logoUrl: 'https://cdn.activepieces.com/pieces/aidbase.png',
authors: ['Prabhukiran161', 'sanket-a11y'],
actions: [
addVideo,
addWebsite,
addFaqItem,
createFaq,
createChatbotReply,
startTraining,
createCustomApiCallAction({
auth: aidbaseAuth,
baseUrl: () => API_BASE_URL,
authMapping: async (auth) => {
return {
Authorization: `Bearer ${auth.secret_text}`,
};
},
}),
],
triggers: [
emailReceived,
emailStatusChanged,
emailPriorityChanged,
emailSent,
ticketCreated,
ticketPriorityChanged,
ticketStatusChanged,
ticketNewComment,
],
});

View File

@@ -0,0 +1,47 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { aidbaseAuth } from '../common/auth';
import { aidbaseClient } from '../common/client';
import { faqDropdown } from '../common/props';
export const addFaqItem = createAction({
auth: aidbaseAuth,
name: 'add_faq_item',
displayName: 'Add FAQ Item',
description:
'Adds a new question/answer item to an existing FAQ; supports categories.',
props: {
faq_id: faqDropdown,
question: Property.ShortText({
displayName: 'Question',
required: true,
}),
answer: Property.LongText({
displayName: 'Answer',
required: true,
}),
source_url: Property.ShortText({
displayName: 'Source URL',
description: 'An optional URL for the source of the information.',
required: false,
}),
categories: Property.Array({
displayName: 'Categories',
description:
'A list of category names. New categories will be created if they do not exist.',
required: false,
}),
},
async run(context) {
const { auth: apiKey, propsValue } = context;
const { faq_id, question, answer, source_url, categories } = propsValue;
return await aidbaseClient.addFaqItem(apiKey.secret_text, faq_id, {
question,
answer,
source_url,
categories: categories as string[] | undefined,
});
},
});

View File

@@ -0,0 +1,26 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { aidbaseAuth } from '../common/auth';
import { aidbaseClient } from '../common/client';
export const addVideo = createAction({
auth: aidbaseAuth,
name: 'add_video',
displayName: 'Add Video',
description:
'Adds a YouTube video URL as knowledge to the Aidbase knowledge base.',
props: {
video_url: Property.ShortText({
displayName: 'YouTube Video URL',
description: 'The URL of the YouTube video to add as a knowledge source.',
required: true,
}),
},
async run(context) {
const { auth: apiKey, propsValue } = context;
const { video_url } = propsValue;
return await aidbaseClient.addVideo(apiKey.secret_text, video_url);
},
});

View File

@@ -0,0 +1,26 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { aidbaseAuth } from '../common/auth';
import { aidbaseClient } from '../common/client';
export const addWebsite = createAction({
auth: aidbaseAuth,
name: 'add_website',
displayName: 'Add Website',
description: 'Adds a website URL as a knowledge source for Aidbase.',
props: {
website_url: Property.ShortText({
displayName: 'Website URL',
description:
'The URL of the website to add as a knowledge source (e.g., https://www.example.com).',
required: true,
}),
},
async run(context) {
const { auth: apiKey, propsValue } = context;
const { website_url } = propsValue;
return await aidbaseClient.addWebsite(apiKey.secret_text, website_url);
},
});

View File

@@ -0,0 +1,37 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { aidbaseAuth } from '../common/auth';
import { aidbaseClient } from '../common/client';
import { chatbotDropdown } from '../common/props';
export const createChatbotReply = createAction({
auth: aidbaseAuth,
name: 'create_chatbot_reply',
displayName: 'Create Chatbot Reply',
description:
'Generates an AI chatbot reply given a message and optional session context.',
props: {
chatbot_id: chatbotDropdown,
message: Property.LongText({
displayName: 'Message',
description: 'The message or question to send to the chatbot.',
required: true,
}),
session_id: Property.ShortText({
displayName: 'Session ID',
description:
'An optional session ID to maintain conversation context. If omitted, a new conversation will start.',
required: false,
}),
},
async run(context) {
const { auth: apiKey, propsValue } = context;
const { chatbot_id, message, session_id } = propsValue;
return await aidbaseClient.createChatbotReply(apiKey.secret_text, chatbot_id, {
message,
session_id,
});
},
});

View File

@@ -0,0 +1,33 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { aidbaseAuth } from '../common/auth';
import { aidbaseClient } from '../common/client';
export const createFaq = createAction({
auth: aidbaseAuth,
name: 'create_faq',
displayName: 'Create FAQ',
description: 'Creates a new FAQ entry with title and description.',
props: {
title: Property.ShortText({
displayName: 'Title',
description: 'The title of the new FAQ knowledge base.',
required: true,
}),
description: Property.LongText({
displayName: 'Description',
description: 'An optional description for the FAQ.',
required: false,
}),
},
async run(context) {
const { auth: apiKey, propsValue } = context;
const { title, description } = propsValue;
return await aidbaseClient.createFaq(apiKey.secret_text, {
title,
description,
});
},
});

View File

@@ -0,0 +1,21 @@
import { createAction } from '@activepieces/pieces-framework';
import { aidbaseAuth } from '../common/auth';
import { aidbaseClient } from '../common/client';
import { knowledgeItemDropdown } from '../common/props';
export const startTraining = createAction({
auth: aidbaseAuth,
name: 'start_training',
displayName: 'Start Training',
description: 'Starts a training job on an existing knowledge base item (FAQ, website, video, etc.).',
props: {
knowledge_id: knowledgeItemDropdown,
},
async run({ auth: apiKey, propsValue }) {
const { knowledge_id } = propsValue;
return await aidbaseClient.startTraining(apiKey.secret_text, knowledge_id);
},
});

View File

@@ -0,0 +1,36 @@
import { PieceAuth } from '@activepieces/pieces-framework';
import { httpClient, HttpMethod } from '@activepieces/pieces-common';
export const aidbaseAuth = PieceAuth.SecretText({
displayName: 'API Key',
description: `
To get your API Key:
1. Log in to your Aidbase dashboard.
2. Navigate to **Settings** in the sidebar.
3. Click on the **API** section.
4. Generate and copy your new API Key.
`,
required: true,
validate: async ({ auth }) => {
const baseUrl = 'https://api.aidbase.ai/v1';
try {
await httpClient.sendRequest({
method: HttpMethod.GET,
url: `${baseUrl}/knowledge`,
headers: {
Authorization: `Bearer ${auth}`,
},
});
return {
valid: true,
};
} catch (e) {
return {
valid: false,
error: 'Invalid API Key. Please check the key and try again.',
};
}
},
});

View File

@@ -0,0 +1,207 @@
import { httpClient, HttpMethod } from '@activepieces/pieces-common';
import {
ListKnowledgeItemsResponse,
AddFaqItemParams,
CreateFaqParams,
Chatbot,
ListChatbotsResponse,
CreateReplyParams,
} from './types';
export const API_BASE_URL = 'https://api.aidbase.ai/v1';
function getHeaders(apiKey: string) {
return {
Authorization: `Bearer ${apiKey}`,
'Content-Type': 'application/json',
};
}
async function addVideo(apiKey: string, videoUrl: string) {
const response = await httpClient.sendRequest<{
success: boolean;
data?: unknown;
message?: string;
}>({
method: HttpMethod.POST,
url: `${API_BASE_URL}/knowledge/video`,
headers: getHeaders(apiKey),
body: {
video_url: videoUrl,
video_type: 'YOUTUBE', // This is hardcoded as per the API documentation
},
});
if (response.body.success) {
return response.body.data;
} else {
throw new Error(response.body.message || 'Failed to add video to Aidbase.');
}
}
async function addWebsite(apiKey: string, websiteUrl: string) {
const response = await httpClient.sendRequest<{
success: boolean;
data?: unknown;
message?: string;
}>({
method: HttpMethod.POST,
url: `${API_BASE_URL}/knowledge/website`,
headers: getHeaders(apiKey),
body: {
website_url: websiteUrl,
},
});
if (response.body.success) {
return response.body.data;
} else {
throw new Error(
response.body.message || 'Failed to add website to Aidbase.'
);
}
}
async function listKnowledgeItems(
apiKey: string
): Promise<ListKnowledgeItemsResponse> {
const response = await httpClient.sendRequest<{
success: boolean;
data?: ListKnowledgeItemsResponse;
message?: string;
}>({
method: HttpMethod.GET,
url: `${API_BASE_URL}/knowledge`,
headers: getHeaders(apiKey),
});
if (response.body.success && response.body.data) {
return response.body.data;
} else {
throw new Error(
response.body.message || 'Failed to list knowledge items from Aidbase.'
);
}
}
async function addFaqItem(
apiKey: string,
faqId: string,
params: AddFaqItemParams
) {
const response = await httpClient.sendRequest<{
success: boolean;
data?: unknown;
message?: string;
}>({
method: HttpMethod.POST,
url: `${API_BASE_URL}/knowledge/${faqId}/faq-item`,
headers: getHeaders(apiKey),
body: params,
});
if (response.body.success) {
return response.body.data;
} else {
throw new Error(
response.body.message || 'Failed to add FAQ item to Aidbase.'
);
}
}
async function createFaq(apiKey: string, params: CreateFaqParams) {
const response = await httpClient.sendRequest<{
success: boolean;
data?: unknown;
message?: string;
}>({
method: HttpMethod.POST,
url: `${API_BASE_URL}/knowledge/faq`,
headers: getHeaders(apiKey),
body: params,
});
if (response.body.success) {
return response.body.data;
} else {
throw new Error(
response.body.message || 'Failed to create FAQ in Aidbase.'
);
}
}
async function listChatbots(apiKey: string): Promise<ListChatbotsResponse> {
const response = await httpClient.sendRequest<{
success: boolean;
data?: { items: Chatbot[] };
message?: string;
}>({
method: HttpMethod.GET,
url: `${API_BASE_URL}/chatbots`,
headers: getHeaders(apiKey),
});
if (response.body.success && response.body.data?.items) {
return { items: response.body.data.items };
} else {
throw new Error(
response.body.message || 'Failed to list chatbots from Aidbase.'
);
}
}
async function createChatbotReply(
apiKey: string,
chatbotId: string,
params: CreateReplyParams
) {
const response = await httpClient.sendRequest<{
success: boolean;
data?: unknown;
message?: string;
}>({
method: HttpMethod.POST,
url: `${API_BASE_URL}/chatbot/${chatbotId}/reply`,
headers: getHeaders(apiKey),
body: params,
});
if (response.body.success) {
return response.body.data;
} else {
throw new Error(
response.body.message || 'Failed to create chatbot reply in Aidbase.'
);
}
}
async function startTraining(apiKey: string, knowledgeId: string) {
const response = await httpClient.sendRequest<{
success: boolean;
data?: unknown;
message?: string;
}>({
method: HttpMethod.PUT,
url: `${API_BASE_URL}/knowledge/${knowledgeId}/train`,
headers: getHeaders(apiKey),
});
if (response.body.success) {
return response.body.data;
} else {
throw new Error(
response.body.message || 'Failed to start training in Aidbase.'
);
}
}
export const aidbaseClient = {
addVideo,
addWebsite,
listKnowledgeItems,
addFaqItem,
createFaq,
listChatbots,
createChatbotReply,
startTraining,
};

View File

@@ -0,0 +1,197 @@
import { Property } from '@activepieces/pieces-framework';
import { httpClient, HttpMethod } from '@activepieces/pieces-common';
import { aidbaseClient } from './client';
import { aidbaseAuth } from './auth';
export const emailInboxDropdown = Property.Dropdown<string,false,typeof aidbaseAuth>({
auth: aidbaseAuth,
displayName: 'Email Inbox',
description:
'Select the email inbox to watch. Leave blank to trigger for all inboxes.',
required: false,
refreshers: [],
options: async ({ auth }) => {
if (!auth) {
return {
disabled: true,
placeholder: 'Please connect your Aidbase account first.',
options: [],
};
}
const response = await httpClient.sendRequest<{
success: boolean;
data: { items: { id: string; title: string }[] };
}>({
method: HttpMethod.GET,
url: 'https://api.aidbase.ai/v1/email-inboxes',
headers: {
Authorization: `Bearer ${auth.secret_text}`,
},
});
if (response.body.success) {
return {
disabled: false,
options: response.body.data.items.map((inbox) => ({
label: inbox.title,
value: inbox.id,
})),
};
}
return {
disabled: true,
placeholder: 'Could not load inboxes.',
options: [],
};
},
});
export const ticketFormDropdown = Property.Dropdown<string, false,typeof aidbaseAuth>({
auth: aidbaseAuth,
displayName: 'Ticket Form',
description:
'Select the ticket form to watch. Leave blank to trigger for all forms.',
required: false,
refreshers: [],
options: async ({ auth }) => {
if (!auth) {
return {
disabled: true,
placeholder: 'Please connect your Aidbase account first.',
options: [],
};
}
const response = await httpClient.sendRequest<{
success: boolean;
data: { items: { public_id: string; title: string }[] };
}>({
method: HttpMethod.GET,
url: 'https://api.aidbase.ai/v1/ticket-forms',
headers: {
Authorization: `Bearer ${auth.secret_text}`,
},
});
if (response.body.success) {
return {
disabled: false,
options: response.body.data.items.map((form) => ({
label: form.title,
value: form.public_id,
})),
};
}
return {
disabled: true,
placeholder: 'Could not load ticket forms.',
options: [],
};
},
});
export const faqDropdown = Property.Dropdown<string,true,typeof aidbaseAuth>({
auth: aidbaseAuth,
displayName: 'FAQ',
description: 'Select the FAQ to which the item will be added.',
required: true,
refreshers: [],
options: async ({ auth }) => {
if (!auth) {
return {
disabled: true,
placeholder: 'Please connect your Aidbase account first.',
options: [],
};
}
const response = await aidbaseClient.listKnowledgeItems(auth.secret_text);
const faqItems = response.items.filter((item) => item.type === 'faq');
return {
disabled: false,
options: faqItems.map((item) => ({
label: item.title || item.id,
value: item.id,
})),
};
},
});
export const chatbotDropdown = Property.Dropdown<string,true,typeof aidbaseAuth>({
auth: aidbaseAuth,
displayName: 'Chatbot',
description: 'Select the chatbot that will generate the reply.',
required: true,
refreshers: [],
options: async ({ auth }) => {
if (!auth) {
return {
disabled: true,
placeholder: 'Please connect your Aidbase account first.',
options: [],
};
}
const response = await aidbaseClient.listChatbots(auth.secret_text);
return {
disabled: false,
options: response.items.map((chatbot) => ({
label: chatbot.title,
value: chatbot.id,
})),
};
},
});
export const knowledgeItemDropdown = Property.Dropdown<string,true,typeof aidbaseAuth>({
auth: aidbaseAuth,
displayName: 'Knowledge Item',
description: 'Select the knowledge item to train.',
required: true,
refreshers: [],
options: async ({ auth }) => {
if (!auth) {
return {
disabled: true,
placeholder: 'Please connect your Aidbase account first.',
options: [],
};
}
const response = await aidbaseClient.listKnowledgeItems(auth.secret_text);
const getLabel = (item: {
type: string;
title?: string;
base_url?: string;
id: string;
}) => {
switch (item.type) {
case 'faq':
return `[FAQ] ${item.title || item.id}`;
case 'website':
return `[Website] ${item.base_url || item.id}`;
case 'video':
return `[Video] ${item.title || item.id}`;
case 'document':
return `[Document] ${item.title || item.id}`;
default:
return `[${item.type}] ${item.id}`;
}
};
return {
disabled: false,
options: response.items.map((item) => ({
label: getLabel(item),
value: item.id,
})),
};
},
});

View File

@@ -0,0 +1,36 @@
export interface KnowledgeItem {
id: string;
type: 'faq' | 'website' | 'video' | 'document';
title?: string;
base_url?: string;
}
export interface ListKnowledgeItemsResponse {
items: KnowledgeItem[];
}
export interface AddFaqItemParams {
question: string;
answer: string;
source_url?: string;
categories?: string[];
}
export interface CreateFaqParams {
title: string;
description?: string;
}
export interface Chatbot {
id: string;
title: string;
}
export interface ListChatbotsResponse {
items: Chatbot[];
}
export interface CreateReplyParams {
message: string;
session_id?: string;
}

View File

@@ -0,0 +1,83 @@
import {
createTrigger,
Property,
TriggerStrategy,
} from '@activepieces/pieces-framework';
import { aidbaseAuth } from '../common/auth';
import { emailInboxDropdown } from '../common/props';
export const emailPriorityChanged = createTrigger({
auth: aidbaseAuth,
name: 'email_priority_changed',
displayName: 'Email Priority Changed',
description: 'Fires when an emails priority is changed.',
props: {
inbox_id: emailInboxDropdown,
priority: Property.StaticDropdown({
displayName: 'New Priority',
description:
'Select the priority to trigger on. Leave blank to trigger for any priority change.',
required: false,
options: {
options: [
{ label: 'Low', value: 'LOW' },
{ label: 'Medium', value: 'MEDIUM' },
{ label: 'High', value: 'HIGH' },
],
},
}),
},
sampleData: {
id: 'evt_1Hc2a8f36qsa23e',
type: 'email.priority.changed',
changes: {
priority: {
previous: 'MEDIUM',
new: 'HIGH',
},
},
data: {
id: '7c3c5609-b838-4643-8e8c-2a2da0a14c4a',
email_inbox_id: '286d123e-5961-457c-8fd5-56f192ec315d',
priority: 'HIGH',
},
},
type: TriggerStrategy.WEBHOOK,
// onEnable is not needed due to manual webhook setup in the Aidbase Dashboard.
async onEnable(context) {
return;
},
// onDisable is not needed as Activepieces does not manage the webhook lifecycle.
async onDisable(context) {
return;
},
async run(context) {
const payloadBody = context.payload.body as {
type: string;
changes: { priority: { new: string } };
data: { email_inbox_id: string };
};
const { inbox_id, priority } = context.propsValue;
if (payloadBody.type !== 'email.priority.changed') {
return [];
}
if (inbox_id && payloadBody.data.email_inbox_id !== inbox_id) {
return [];
}
if (priority && payloadBody.changes.priority.new !== priority) {
return [];
}
return [payloadBody];
},
});

View File

@@ -0,0 +1,61 @@
import { createTrigger, TriggerStrategy } from '@activepieces/pieces-framework';
import { aidbaseAuth } from '../common/auth';
import { emailInboxDropdown } from '../common/props';
export const emailReceived = createTrigger({
auth: aidbaseAuth,
name: 'email_received',
displayName: 'Email Received',
description: 'Fires when a new email is received in an Aidbase inbox.',
props: {
inbox_id: emailInboxDropdown,
},
sampleData: {
id: 'evt_1Hc2a8f36qsa23e',
type: 'email.received',
data: {
id: '7c3c5609-b838-4643-8e8c-2a2da0a14c4a',
email_inbox_id: '286d123e-5961-457c-8fd5-56f192ec315d',
topic: 'Question about something',
session_data: {
username: 'John Doe',
email: 'john@doe.com',
},
},
},
type: TriggerStrategy.WEBHOOK,
// onEnable is not needed because the user manually creates the webhook in the Aidbase UI.
async onEnable(context) {
return;
},
// onDisable is not needed because the webhook is managed outside of Activepieces.
async onDisable(context) {
return;
},
async run(context) {
const payloadBody = context.payload.body as {
type: string;
data: { email_inbox_id: string };
};
const selectedInboxId = context.propsValue.inbox_id;
if (payloadBody.type !== 'email.received') {
return [];
}
if (
selectedInboxId &&
payloadBody.data.email_inbox_id !== selectedInboxId
) {
return [];
}
return [payloadBody];
},
});

View File

@@ -0,0 +1,70 @@
import { createTrigger, TriggerStrategy } from '@activepieces/pieces-framework';
import { aidbaseAuth } from '../common/auth';
import { emailInboxDropdown } from '../common/props';
export const emailSent = createTrigger({
auth: aidbaseAuth,
name: 'email_sent',
displayName: 'Email Sent',
description: 'Fires when an email is sent from Aidbase.',
props: {
inbox_id: emailInboxDropdown,
},
sampleData: {
id: 'evt_1Hc2a8f36qsa23e',
webhook_id: 'c1042e89-fea5-415c-8bd2-e557abf25307',
object: 'webhook_event',
created: '2023-10-31T17:36:56.491Z',
type: 'email.sent',
changes: {
message: {
id: '00bcde85-2b4d-4682-ac8b-b280dc819559',
type: 'AGENT',
created: '2023-10-31T17:39:56.491Z',
message: 'Hi John, than you for your message...',
session_data: {
id: '2b06ada3f5bb',
username: 'jamesdoe',
email: 'james@doe.com',
},
},
},
data: {
id: '7c3c5609-b838-4643-8e8c-2a2da0a14c4a',
email_inbox_id: '286d123e-5961-457c-8fd5-56f192ec315d',
status: 'OPEN',
},
},
type: TriggerStrategy.WEBHOOK,
// onEnable is not needed due to manual webhook setup in the Aidbase Dashboard.
async onEnable(context) {
return;
},
// onDisable is not needed as Activepieces does not manage the webhook lifecycle.
async onDisable(context) {
return;
},
async run(context) {
const payloadBody = context.payload.body as {
type: string;
data: { email_inbox_id: string };
};
const { inbox_id } = context.propsValue;
if (payloadBody.type !== 'email.sent') {
return [];
}
if (inbox_id && payloadBody.data.email_inbox_id !== inbox_id) {
return [];
}
return [payloadBody];
},
});

View File

@@ -0,0 +1,88 @@
import {
createTrigger,
Property,
TriggerStrategy,
} from '@activepieces/pieces-framework';
import { aidbaseAuth } from '../common/auth';
import { emailInboxDropdown } from '../common/props';
export const emailStatusChanged = createTrigger({
auth: aidbaseAuth,
name: 'email_status_changed',
displayName: 'Email Status Changed',
description: 'Fires when the status of an email changes.',
props: {
inbox_id: emailInboxDropdown,
status: Property.StaticDropdown({
displayName: 'New Status',
description:
'Select the status to trigger on. Leave blank to trigger for any status change.',
required: false,
options: {
options: [
{ label: 'Opened', value: 'OPEN' },
{ label: 'Assigned', value: 'ASSIGNED' },
{ label: 'Need More Info', value: 'NEED_MORE_INFO' },
{ label: 'Resolved', value: 'RESOLVED' },
{ label: 'Closed', value: 'CLOSED' },
],
},
}),
},
sampleData: {
id: 'evt_1Hc2a8f36qsa23e',
webhook_id: 'c1042e89-fea5-415c-8bd2-e557abf25307',
object: 'webhook_event',
created: '2023-10-31T17:36:56.491Z',
type: 'email.status.changed',
changes: {
status: {
previous: 'ASSIGNED',
new: 'RESOLVED',
},
},
data: {
id: '7c3c5609-b838-4643-8e8c-2a2da0a14c4a',
email_inbox_id: '286d123e-5961-457c-8fd5-56f192ec315d',
status: 'RESOLVED',
},
},
type: TriggerStrategy.WEBHOOK,
// onEnable is not needed because the user manually creates the webhook in the Aidbase UI.
async onEnable(context) {
return;
},
// onDisable is not needed because the webhook is managed outside of Activepieces.
async onDisable(context) {
return;
},
async run(context) {
const payloadBody = context.payload.body as {
type: string;
changes: { status: { new: string } };
data: { email_inbox_id: string };
};
const { inbox_id, status } = context.propsValue;
if (payloadBody.type !== 'email.status.changed') {
return [];
}
if (inbox_id && payloadBody.data.email_inbox_id !== inbox_id) {
return [];
}
if (status && payloadBody.changes.status.new !== status) {
return [];
}
return [payloadBody];
},
});

View File

@@ -0,0 +1,58 @@
import { createTrigger, TriggerStrategy } from '@activepieces/pieces-framework';
import { aidbaseAuth } from '../common/auth';
import { ticketFormDropdown } from '../common/props';
export const ticketCreated = createTrigger({
auth: aidbaseAuth,
name: 'ticket_created',
displayName: 'Ticket Created',
description: 'Fires when a new ticket is created in Aidbase.',
props: {
ticket_form_id: ticketFormDropdown,
},
sampleData: {
id: 'evt_1Hc2X2JZ6qsJ5XQ',
type: 'ticket.created',
data: {
id: 'a36306fa-0cc4-4497-8c2a-c7798cfdc720',
ticket_form_id: 'I2o6Ii_4U6m48bmKTTMoR',
status: 'OPEN',
priority: 'MEDIUM',
field_values: [
{ id: 'uv9xA', name: 'Your name', type: 'TEXT', value: 'John Doe' },
],
},
},
type: TriggerStrategy.WEBHOOK,
// onEnable is not needed due to manual webhook setup in the Aidbase Dashboard.
async onEnable(context) {
return;
},
// onDisable is not needed as Activepieces does not manage the webhook lifecycle.
async onDisable(context) {
return;
},
async run(context) {
const payloadBody = context.payload.body as {
type: string;
data: { ticket_form_id: string };
};
const { ticket_form_id } = context.propsValue;
if (payloadBody.type !== 'ticket.created') {
return [];
}
if (ticket_form_id && payloadBody.data.ticket_form_id !== ticket_form_id) {
return [];
}
return [payloadBody];
},
});

View File

@@ -0,0 +1,83 @@
import {
createTrigger,
Property,
TriggerStrategy,
} from '@activepieces/pieces-framework';
import { aidbaseAuth } from '../common/auth';
import { ticketFormDropdown } from '../common/props';
export const ticketNewComment = createTrigger({
auth: aidbaseAuth,
name: 'ticket_new_comment',
displayName: 'Ticket New Comment',
description: 'Fires when a new comment is added to an existing ticket.',
props: {
ticket_form_id: ticketFormDropdown,
commenter_type: Property.StaticDropdown({
displayName: 'Commenter Type',
description:
'Select the type of commenter to trigger on. Leave blank for all comments.',
required: false,
options: {
options: [
{ label: 'User (Customer)', value: 'USER' },
{ label: 'Agent (Support Staff)', value: 'AGENT' },
],
},
}),
},
sampleData: {
id: 'evt_1Hc2X2JZ6qsJ5XQ',
type: 'ticket.new.comment',
changes: {
comment: {
id: '443968de-64d8-4018-9185-ffb9afb4751d',
type: 'AGENT',
comment: 'Great question! Here is the answer...',
},
},
data: {
id: 'a36306fa-0cc4-4497-8c2a-c7798cfdc720',
ticket_form_id: 'I2o6Ii_4U6m48bmKTTMoR',
status: 'OPEN',
},
},
type: TriggerStrategy.WEBHOOK,
// onEnable is not needed due to manual webhook setup in the Aidbase Dashboard.
async onEnable(context) {
return;
},
// onDisable is not needed as Activepieces does not manage the webhook lifecycle.
async onDisable(context) {
return;
},
async run(context) {
const payloadBody = context.payload.body as {
type: string;
changes: { comment: { type: string } };
data: { ticket_form_id: string };
};
const { ticket_form_id, commenter_type } = context.propsValue;
if (payloadBody.type !== 'ticket.new.comment') {
return [];
}
if (ticket_form_id && payloadBody.data.ticket_form_id !== ticket_form_id) {
return [];
}
if (commenter_type && payloadBody.changes.comment.type !== commenter_type) {
return [];
}
return [payloadBody];
},
});

View File

@@ -0,0 +1,84 @@
import {
createTrigger,
Property,
TriggerStrategy,
} from '@activepieces/pieces-framework';
import { aidbaseAuth } from '../common/auth';
import { ticketFormDropdown } from '../common/props';
export const ticketPriorityChanged = createTrigger({
auth: aidbaseAuth,
name: 'ticket_priority_changed',
displayName: 'Ticket Priority Changed',
description: 'Fires when the priority of an existing ticket changes.',
props: {
ticket_form_id: ticketFormDropdown,
priority: Property.StaticDropdown({
displayName: 'New Priority',
description:
'Select the priority to trigger on. Leave blank to trigger for any priority change.',
required: false,
options: {
options: [
{ label: 'Low', value: 'LOW' },
{ label: 'Medium', value: 'MEDIUM' },
{ label: 'High', value: 'HIGH' },
],
},
}),
},
sampleData: {
id: 'evt_1Hc2X2JZ6qsJ5XQ',
type: 'ticket.priority.changed',
changes: {
priority: {
previous: 'MEDIUM',
new: 'HIGH',
},
},
data: {
id: 'a36306fa-0cc4-4497-8c2a-c7798cfdc720',
ticket_form_id: 'I2o6Ii_4U6m48bmKTTMoR',
status: 'OPEN',
priority: 'HIGH',
},
},
type: TriggerStrategy.WEBHOOK,
// onEnable is not needed due to manual webhook setup in the Aidbase Dashboard.
async onEnable(context) {
return;
},
// onDisable is not needed as Activepieces does not manage the webhook lifecycle.
async onDisable(context) {
return;
},
async run(context) {
const payloadBody = context.payload.body as {
type: string;
changes: { priority: { new: string } };
data: { ticket_form_id: string };
};
const { ticket_form_id, priority } = context.propsValue;
if (payloadBody.type !== 'ticket.priority.changed') {
return [];
}
if (ticket_form_id && payloadBody.data.ticket_form_id !== ticket_form_id) {
return [];
}
if (priority && payloadBody.changes.priority.new !== priority) {
return [];
}
return [payloadBody];
},
});

View File

@@ -0,0 +1,85 @@
import {
createTrigger,
Property,
TriggerStrategy,
} from '@activepieces/pieces-framework';
import { aidbaseAuth } from '../common/auth';
import { ticketFormDropdown } from '../common/props';
export const ticketStatusChanged = createTrigger({
auth: aidbaseAuth,
name: 'ticket_status_changed',
displayName: 'Ticket Status Changed',
description: 'Fires when a tickets overall status changes.',
props: {
ticket_form_id: ticketFormDropdown,
status: Property.StaticDropdown({
displayName: 'New Status',
description:
'Select the status to trigger on. Leave blank to trigger for any status change.',
required: false,
options: {
options: [
{ label: 'Open', value: 'OPEN' },
{ label: 'Assigned', value: 'ASSIGNED' },
{ label: 'Need More Info', value: 'NEED_MORE_INFO' },
{ label: 'Resolved', value: 'RESOLVED' },
{ label: 'Closed', value: 'CLOSED' },
],
},
}),
},
sampleData: {
id: 'evt_1Hc2X2JZ6qsJ5XQ',
type: 'ticket.status.changed',
changes: {
status: {
previous: 'ASSIGNED',
new: 'RESOLVED',
},
},
data: {
id: 'a36306fa-0cc4-4497-8c2a-c7798cfdc720',
ticket_form_id: 'I2o6Ii_4U6m48bmKTTMoR',
status: 'RESOLVED',
},
},
type: TriggerStrategy.WEBHOOK,
// onEnable is not needed due to manual webhook setup in the Aidbase Dashboard.
async onEnable(context) {
return;
},
// onDisable is not needed as Activepieces does not manage the webhook lifecycle.
async onDisable(context) {
return;
},
async run(context) {
const payloadBody = context.payload.body as {
type: string;
changes: { status: { new: string } };
data: { ticket_form_id: string };
};
const { ticket_form_id, status } = context.propsValue;
console.log(payloadBody)
if (payloadBody.type !== 'ticket.status.changed') {
return [];
}
if (ticket_form_id && payloadBody.data.ticket_form_id !== ticket_form_id) {
return [];
}
if (status && payloadBody.changes.status.new !== status) {
return [];
}
return [payloadBody];
},
});

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"]
}