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:
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"Integrate with Sitespeakai to leverage AI-powered chatbots and enhance user interactions on your website.": "Integrieren Sie mit Sitespeakai, um die KI-gestützten Chatbots zu nutzen und die Benutzerinteraktionen auf Ihrer Website zu verbessern.",
|
||||
"**Enter your SiteSpeakAI API Key.**\n---\n### How to obtain your API key\n1. Sign up / log in at [SiteSpeakAI](https://sitespeak.ai/).\n2. Go to **Dashboard → Settings → API Keys**.\n3. Generate or copy an API key.\n4. Paste it here.\n": "**Geben Sie Ihren SiteSpeakAI API-Schlüssel ein.**\n---\n### Wie Sie Ihren API-Schlüssel\nerhalten. Registrieren / anmelden unter [SiteSpeakAI](https://sitespeak.ai/).\n2. Gehen Sie zu **Dashboard → Einstellungen → API-Tasten**.\n3. Generieren oder kopieren Sie einen API-Schlüssel.\n4. Fügen Sie ihn hier ein.\n",
|
||||
"Send Query": "Abfrage senden",
|
||||
"Create Finetune": "Erstelle Finetune",
|
||||
"Delete Finetune": "Finetune löschen",
|
||||
"Sends a query to the specified chatbot and retrieves a response.": "Sendet eine Anfrage an den angegebenen Chatbot und ruft eine Antwort ab.",
|
||||
"Adds a new fine-tune (question + suggested answer) for the specified chatbot in SiteSpeakAI.": "Fügt eine neue Feinabstimmung (Frage + Antwort) für den angegebenen Chatbot in SiteSpeakAI hinzu.",
|
||||
"Deletes a fine-tune entry from the selected chatbot.": "Löscht einen Feineintrag aus dem ausgewählten Chatbot.",
|
||||
"chatbotId": "chatbotId",
|
||||
"Prompt": "Prompt",
|
||||
"Conversation": "Unterhaltung",
|
||||
"Response Format": "Antwortformat",
|
||||
"Question": "Frage",
|
||||
"Suggested Answer": "Empfohlene Antwort",
|
||||
"Finetune Entry": "Finetune Eintrag",
|
||||
"Chat bot ID ": "Chat bot ID ",
|
||||
"The question or query text you want the chatbot to answer.": "Die Frage oder der Abfragetext, den der Chatbot beantworten soll.",
|
||||
"Pick a conversation for context, or leave empty to start a new one.": "Wählen Sie eine Konversation aus oder lassen Sie leer, um ein neues zu starten.",
|
||||
"Format of the returned response; markdown or html.": "Format der zurückgegebenen Antwort; Markdown oder html.",
|
||||
"The question text you want the chatbot to be able to answer.": "Der Fragentext, den Sie möchten, dass der Chatbot in der Lage ist zu beantworten.",
|
||||
"The answer you suggest the chatbot use for that question.": "Die Antwort, die Sie dem Chatbot für diese Frage vorschlagen.",
|
||||
"Select the finetune entry to delete.": "Wählen Sie den finetune-Eintrag zum Löschen aus.",
|
||||
"Markdown": "Markdown",
|
||||
"HTML": "HTML",
|
||||
"New Lead": "Neuer Lead",
|
||||
"Triggers when a new lead with an email address is created in SiteSpeakAI.": "Wird ausgelöst, wenn ein neuer Lead mit einer E-Mail-Adresse in SiteSpeakAI erstellt wird."
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"Integrate with Sitespeakai to leverage AI-powered chatbots and enhance user interactions on your website.": "Integre con Sitespeakai para aprovechar los chatbots impulsados por AIs y mejorar las interacciones de los usuarios en su sitio web.",
|
||||
"**Enter your SiteSpeakAI API Key.**\n---\n### How to obtain your API key\n1. Sign up / log in at [SiteSpeakAI](https://sitespeak.ai/).\n2. Go to **Dashboard → Settings → API Keys**.\n3. Generate or copy an API key.\n4. Paste it here.\n": "**Introduzca su clave API SiteSpeakAI.**\n---\n### Cómo obtener su clave API\n1. Regístrate / inicia sesión en [SiteSpeakAI](https://sitespeak.ai/).\n2. Ve al **Panel → Configuración → Claves API**.\n3. Genera o copia una clave API.\n4. Pégala aquí.\n",
|
||||
"Send Query": "Enviar consulta",
|
||||
"Create Finetune": "Crear Finetune",
|
||||
"Delete Finetune": "Eliminar Finetune",
|
||||
"Sends a query to the specified chatbot and retrieves a response.": "Envía una consulta al chatbot especificado y recupera una respuesta.",
|
||||
"Adds a new fine-tune (question + suggested answer) for the specified chatbot in SiteSpeakAI.": "Añade una nueva sintonización (pregunta + respuesta sugerida) para el chatbot especificado en SiteSpeakAI.",
|
||||
"Deletes a fine-tune entry from the selected chatbot.": "Elimina una entrada afinada del chatbot seleccionado.",
|
||||
"chatbotId": "chatbotId",
|
||||
"Prompt": "Petición",
|
||||
"Conversation": "Conversación",
|
||||
"Response Format": "Formato de respuesta",
|
||||
"Question": "Pregunta",
|
||||
"Suggested Answer": "Respuesta sugerida",
|
||||
"Finetune Entry": "Entrada Finetune",
|
||||
"Chat bot ID ": "Chat bot ID ",
|
||||
"The question or query text you want the chatbot to answer.": "El texto de pregunta o consulta que quieres que responda el chatbot.",
|
||||
"Pick a conversation for context, or leave empty to start a new one.": "Escoge una conversación para el contexto, o deja vacío para iniciar una nueva.",
|
||||
"Format of the returned response; markdown or html.": "Formato de la respuesta devuelta; markdown o html.",
|
||||
"The question text you want the chatbot to be able to answer.": "El texto de la pregunta que quieres que el chatbot sea capaz de responder.",
|
||||
"The answer you suggest the chatbot use for that question.": "La respuesta que sugieres el uso del chatbot para esa pregunta.",
|
||||
"Select the finetune entry to delete.": "Seleccione la entrada finetune a eliminar.",
|
||||
"Markdown": "Markdown",
|
||||
"HTML": "HTML",
|
||||
"New Lead": "Nuevo plomo",
|
||||
"Triggers when a new lead with an email address is created in SiteSpeakAI.": "Dispara cuando un nuevo líder con una dirección de correo electrónico es creado en SiteSpeakAI."
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"Integrate with Sitespeakai to leverage AI-powered chatbots and enhance user interactions on your website.": "Intégrez avec Sitespeakai pour tirer parti des chatbots alimentés par l'IA et améliorer les interactions utilisateur sur votre site Web.",
|
||||
"**Enter your SiteSpeakAI API Key.**\n---\n### How to obtain your API key\n1. Sign up / log in at [SiteSpeakAI](https://sitespeak.ai/).\n2. Go to **Dashboard → Settings → API Keys**.\n3. Generate or copy an API key.\n4. Paste it here.\n": "**Entrez votre clé API SiteSpeakAI.**\n---\n### Comment obtenir votre clé API\n1. S'inscrire / se connecter à [SiteSpeakAI](https://sitespeak.ai/).\n2. Allez dans **Tableau de bord → Paramètres → Clés API**.\n3. Générez ou copiez une clé API.\n4. Collez-la ici.\n",
|
||||
"Send Query": "Envoyer une requête",
|
||||
"Create Finetune": "Créer Finetune",
|
||||
"Delete Finetune": "Supprimer Finetune",
|
||||
"Sends a query to the specified chatbot and retrieves a response.": "Envoie une requête au chatbot spécifié et récupère une réponse.",
|
||||
"Adds a new fine-tune (question + suggested answer) for the specified chatbot in SiteSpeakAI.": "Ajoute une nouvelle mise à jour (question + réponse suggérée) pour le chatbot spécifié dans SiteSpeakAI.",
|
||||
"Deletes a fine-tune entry from the selected chatbot.": "Supprime une entrée de fine-tune du chatbot sélectionné.",
|
||||
"chatbotId": "chatbotId",
|
||||
"Prompt": "Prompt",
|
||||
"Conversation": "Conversation",
|
||||
"Response Format": "Format de réponse",
|
||||
"Question": "Question",
|
||||
"Suggested Answer": "Réponse suggérée",
|
||||
"Finetune Entry": "Entrée Finetune",
|
||||
"Chat bot ID ": "Chat bot ID ",
|
||||
"The question or query text you want the chatbot to answer.": "Le texte de la question ou de la requête que vous voulez que le chatbot réponde.",
|
||||
"Pick a conversation for context, or leave empty to start a new one.": "Choisissez une conversation pour le contexte, ou laissez vide pour en démarrer une nouvelle.",
|
||||
"Format of the returned response; markdown or html.": "Format de la réponse retournée; markdown ou html.",
|
||||
"The question text you want the chatbot to be able to answer.": "Le texte de la question que vous voulez que le chatbot soit en mesure de répondre.",
|
||||
"The answer you suggest the chatbot use for that question.": "La réponse que vous suggérez à l'utilisation du chatbot pour cette question.",
|
||||
"Select the finetune entry to delete.": "Sélectionnez l'entrée finetune à supprimer.",
|
||||
"Markdown": "Markdown",
|
||||
"HTML": "HTML",
|
||||
"New Lead": "Nouveau prospect",
|
||||
"Triggers when a new lead with an email address is created in SiteSpeakAI.": "Déclenche lorsqu'un nouveau prospect avec une adresse e-mail est créé dans SiteSpeakAI."
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"Integrate with Sitespeakai to leverage AI-powered chatbots and enhance user interactions on your website.": "Sitespeakaiと統合し、AIを活用したチャットボットを活用し、ウェブサイトでのユーザーのインタラクションを強化します。",
|
||||
"**Enter your SiteSpeakAI API Key.**\n---\n### How to obtain your API key\n1. Sign up / log in at [SiteSpeakAI](https://sitespeak.ai/).\n2. Go to **Dashboard → Settings → API Keys**.\n3. Generate or copy an API key.\n4. Paste it here.\n": "**Enter your SiteSpeakAI API Key.**\n---\n### How to obtain your API key\n1. Sign up / log in at [SiteSpeakAI](https://sitespeak.ai/).\n2. Go to **Dashboard → Settings → API Keys**.\n3. Generate or copy an API key.\n4. Paste it here.\n",
|
||||
"Send Query": "クエリを送信",
|
||||
"Create Finetune": "Finetuneを作成",
|
||||
"Delete Finetune": "Finetuneを削除",
|
||||
"Sends a query to the specified chatbot and retrieves a response.": "指定したチャットボットにクエリを送信し、レスポンスを取得します。",
|
||||
"Adds a new fine-tune (question + suggested answer) for the specified chatbot in SiteSpeakAI.": "SiteSpeakAI で指定されたチャットボットに新しい微調整(質問 + 提案された回答)を追加します。",
|
||||
"Deletes a fine-tune entry from the selected chatbot.": "選択したチャットボットから微調整項目を削除します。",
|
||||
"chatbotId": "chatbotId",
|
||||
"Prompt": "Prompt",
|
||||
"Conversation": "会話",
|
||||
"Response Format": "応答形式",
|
||||
"Question": "質問",
|
||||
"Suggested Answer": "提案された回答",
|
||||
"Finetune Entry": "Finetune Entry",
|
||||
"Chat bot ID ": "Chat bot ID ",
|
||||
"The question or query text you want the chatbot to answer.": "チャットボットに回答させたい質問またはクエリテキスト。",
|
||||
"Pick a conversation for context, or leave empty to start a new one.": "コンテキストの会話を選択するか、空白のままにして新しい会話を開始します。",
|
||||
"Format of the returned response; markdown or html.": "返されるレスポンスのフォーマット。markdown または html 。",
|
||||
"The question text you want the chatbot to be able to answer.": "チャットボットが答えられる質問テキストです。",
|
||||
"The answer you suggest the chatbot use for that question.": "チャットボットがその質問に使用することをお勧めします。",
|
||||
"Select the finetune entry to delete.": "削除する有限項目を選択します。",
|
||||
"Markdown": "Markdown",
|
||||
"HTML": "HTML",
|
||||
"New Lead": "新しいリード",
|
||||
"Triggers when a new lead with an email address is created in SiteSpeakAI.": "SiteSpeakAI にメールアドレスを持つ新しいリードが作成されたときにトリガーされます。"
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"Integrate with Sitespeakai to leverage AI-powered chatbots and enhance user interactions on your website.": "Integreer met Sitespeakai om AI-powered chatbots te gebruiken en de gebruikersinteracties op je website te verbeteren.",
|
||||
"**Enter your SiteSpeakAI API Key.**\n---\n### How to obtain your API key\n1. Sign up / log in at [SiteSpeakAI](https://sitespeak.ai/).\n2. Go to **Dashboard → Settings → API Keys**.\n3. Generate or copy an API key.\n4. Paste it here.\n": "**Voer je SiteSpeakAI API Key in.**\n---\n### Hoe je je API key\n1 kunt bemachtigen. Meld je aan / log in bij [SiteSpeakAI](https://sitespeak.ai/).\n2. Ga naar **Dashboard → Instellingen → API Keys**.\n3. Een API-sleutel genereren of kopiëren.\n4. Plak het hier.\n",
|
||||
"Send Query": "Query verzenden",
|
||||
"Create Finetune": "Finetune aanmaken",
|
||||
"Delete Finetune": "Verwijder Finetune",
|
||||
"Sends a query to the specified chatbot and retrieves a response.": "Verstuurt een query naar de opgegeven chatbot en haalt een antwoord op.",
|
||||
"Adds a new fine-tune (question + suggested answer) for the specified chatbot in SiteSpeakAI.": "Voegt een nieuwe fine-tune toe (vraag + voorgesteld antwoord) voor de opgegeven chatbot in SiteSpeakAI.",
|
||||
"Deletes a fine-tune entry from the selected chatbot.": "Verwijdert een prima afstemming item van de geselecteerde chatbot.",
|
||||
"chatbotId": "chatbotId",
|
||||
"Prompt": "Prompt",
|
||||
"Conversation": "Gesprek",
|
||||
"Response Format": "Antwoord formaat",
|
||||
"Question": "Vraag",
|
||||
"Suggested Answer": "Voorgesteld antwoord",
|
||||
"Finetune Entry": "Afronden Invoer",
|
||||
"Chat bot ID ": "Chat bot ID ",
|
||||
"The question or query text you want the chatbot to answer.": "De vraag of vraag naar de tekst die je wilt dat de chatbot beantwoordt.",
|
||||
"Pick a conversation for context, or leave empty to start a new one.": "Kies een gesprek voor de context, of laat leeg om een nieuwe te starten.",
|
||||
"Format of the returned response; markdown or html.": "Formaat van het geretourneerde antwoord; markdown of html.",
|
||||
"The question text you want the chatbot to be able to answer.": "De vraagtekst die je wilt dat de chatbot kan beantwoorden.",
|
||||
"The answer you suggest the chatbot use for that question.": "Het antwoord dat je de chatbot voorstelt voor die vraag.",
|
||||
"Select the finetune entry to delete.": "Selecteer de finetune om te verwijderen.",
|
||||
"Markdown": "Markdown",
|
||||
"HTML": "HTML",
|
||||
"New Lead": "Nieuwe Lead",
|
||||
"Triggers when a new lead with an email address is created in SiteSpeakAI.": "Triggert wanneer een nieuwe lead met een e-mailadres wordt gemaakt in SiteSpeakAI."
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"Integrate with Sitespeakai to leverage AI-powered chatbots and enhance user interactions on your website.": "Integre com Sitespeakai para alavancar chatbots fortalecidos com IA e aprimorar as interações dos usuários em seu site.",
|
||||
"**Enter your SiteSpeakAI API Key.**\n---\n### How to obtain your API key\n1. Sign up / log in at [SiteSpeakAI](https://sitespeak.ai/).\n2. Go to **Dashboard → Settings → API Keys**.\n3. Generate or copy an API key.\n4. Paste it here.\n": "**Digite sua chave de API do SiteSpeakAI.**\n---\n### Como obter a sua chave de API\n1. Registrar-se / entrar em [SiteSpeakAI](https://sitespeak.ai/).\n2. Vá para **Painel → Configurações → Chaves API**.\n3. Gere ou copie uma chave API.\n4. Cole aqui.\n",
|
||||
"Send Query": "Enviar consulta",
|
||||
"Create Finetune": "Criar Finetune",
|
||||
"Delete Finetune": "Excluir Finetune",
|
||||
"Sends a query to the specified chatbot and retrieves a response.": "Envia uma consulta para o ChatBot especificado e obtém uma resposta.",
|
||||
"Adds a new fine-tune (question + suggested answer) for the specified chatbot in SiteSpeakAI.": "Adiciona uma nova melodia (pergunta + resposta sugerida) para o ChatBot especificado no SiteSpeakAI.",
|
||||
"Deletes a fine-tune entry from the selected chatbot.": "Exclui uma entrada refinada do ChatBot selecionado.",
|
||||
"chatbotId": "chatbotId",
|
||||
"Prompt": "Aviso",
|
||||
"Conversation": "Conversa",
|
||||
"Response Format": "Formato de Resposta",
|
||||
"Question": "Questão",
|
||||
"Suggested Answer": "Resposta sugerida",
|
||||
"Finetune Entry": "Entrada de Finetune",
|
||||
"Chat bot ID ": "Chat bot ID ",
|
||||
"The question or query text you want the chatbot to answer.": "A pergunta ou o texto de consulta que você quer que o ChatBot responda.",
|
||||
"Pick a conversation for context, or leave empty to start a new one.": "Escolha uma conversa para o contexto, ou deixe vazio para iniciar uma nova.",
|
||||
"Format of the returned response; markdown or html.": "Formato da resposta retornada; markdown ou html.",
|
||||
"The question text you want the chatbot to be able to answer.": "O texto da pergunta que você quer que o ChatBot seja capaz de responder.",
|
||||
"The answer you suggest the chatbot use for that question.": "A resposta que você sugere que o ChatBot use para essa pergunta.",
|
||||
"Select the finetune entry to delete.": "Selecione a entrada finetune para excluir.",
|
||||
"Markdown": "Markdown",
|
||||
"HTML": "HTML",
|
||||
"New Lead": "Novo Potencial",
|
||||
"Triggers when a new lead with an email address is created in SiteSpeakAI.": "Aciona quando um novo lead com um endereço de e-mail é criado no SiteSpeakAI."
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"Integrate with Sitespeakai to leverage AI-powered chatbots and enhance user interactions on your website.": "Integrate with Sitespeakai to leverage AI-powered chatbots and enhance user interactions on your website.",
|
||||
"**Enter your SiteSpeakAI API Key.**\n---\n### How to obtain your API key\n1. Sign up / log in at [SiteSpeakAI](https://sitespeak.ai/).\n2. Go to **Dashboard → Settings → API Keys**.\n3. Generate or copy an API key.\n4. Paste it here.\n": "**Enter your SiteSpeakAI API Key.**\n---\n### How to obtain your API key\n1. Sign up / log in at [SiteSpeakAI](https://sitespeak.ai/).\n2. Go to **Dashboard → Settings → API Keys**.\n3. Generate or copy an API key.\n4. Paste it here.\n",
|
||||
"Send Query": "Send Query",
|
||||
"Create Finetune": "Create Finetune",
|
||||
"Delete Finetune": "Delete Finetune",
|
||||
"Sends a query to the specified chatbot and retrieves a response.": "Sends a query to the specified chatbot and retrieves a response.",
|
||||
"Adds a new fine-tune (question + suggested answer) for the specified chatbot in SiteSpeakAI.": "Adds a new fine-tune (question + suggested answer) for the specified chatbot in SiteSpeakAI.",
|
||||
"Deletes a fine-tune entry from the selected chatbot.": "Deletes a fine-tune entry from the selected chatbot.",
|
||||
"chatbotId": "chatbotId",
|
||||
"Prompt": "Prompt",
|
||||
"Conversation": "Conversation",
|
||||
"Response Format": "Response Format",
|
||||
"Question": "Question",
|
||||
"Suggested Answer": "Suggested Answer",
|
||||
"Finetune Entry": "Finetune Entry",
|
||||
"Chat bot ID ": "Chat bot ID ",
|
||||
"The question or query text you want the chatbot to answer.": "The question or query text you want the chatbot to answer.",
|
||||
"Pick a conversation for context, or leave empty to start a new one.": "Pick a conversation for context, or leave empty to start a new one.",
|
||||
"Format of the returned response; markdown or html.": "Format of the returned response; markdown or html.",
|
||||
"The question text you want the chatbot to be able to answer.": "The question text you want the chatbot to be able to answer.",
|
||||
"The answer you suggest the chatbot use for that question.": "The answer you suggest the chatbot use for that question.",
|
||||
"Select the finetune entry to delete.": "Select the finetune entry to delete.",
|
||||
"Markdown": "Markdown",
|
||||
"HTML": "HTML",
|
||||
"New Lead": "New Lead",
|
||||
"Triggers when a new lead with an email address is created in SiteSpeakAI.": "Triggers when a new lead with an email address is created in SiteSpeakAI."
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"Integrate with Sitespeakai to leverage AI-powered chatbots and enhance user interactions on your website.": "Integrate with Sitespeakai to leverage AI-powered chatbots and enhance user interactions on your website.",
|
||||
"**Enter your SiteSpeakAI API Key.**\n---\n### How to obtain your API key\n1. Sign up / log in at [SiteSpeakAI](https://sitespeak.ai/).\n2. Go to **Dashboard → Settings → API Keys**.\n3. Generate or copy an API key.\n4. Paste it here.\n": "**Enter your SiteSpeakAI API Key.**\n---\n### How to obtain your API key\n1. Sign up / log in at [SiteSpeakAI](https://sitespeak.ai/).\n2. Go to **Dashboard → Settings → API Keys**.\n3. Generate or copy an API key.\n4. Paste it here.\n",
|
||||
"Send Query": "Send Query",
|
||||
"Create Finetune": "Create Finetune",
|
||||
"Delete Finetune": "Delete Finetune",
|
||||
"Sends a query to the specified chatbot and retrieves a response.": "Sends a query to the specified chatbot and retrieves a response.",
|
||||
"Adds a new fine-tune (question + suggested answer) for the specified chatbot in SiteSpeakAI.": "Adds a new fine-tune (question + suggested answer) for the specified chatbot in SiteSpeakAI.",
|
||||
"Deletes a fine-tune entry from the selected chatbot.": "Deletes a fine-tune entry from the selected chatbot.",
|
||||
"chatbotId": "chatbotId",
|
||||
"Prompt": "Prompt",
|
||||
"Conversation": "Conversation",
|
||||
"Response Format": "Response Format",
|
||||
"Question": "Question",
|
||||
"Suggested Answer": "Suggested Answer",
|
||||
"Finetune Entry": "Finetune Entry",
|
||||
"Chat bot ID ": "Chat bot ID ",
|
||||
"The question or query text you want the chatbot to answer.": "The question or query text you want the chatbot to answer.",
|
||||
"Pick a conversation for context, or leave empty to start a new one.": "Pick a conversation for context, or leave empty to start a new one.",
|
||||
"Format of the returned response; markdown or html.": "Format of the returned response; markdown or html.",
|
||||
"The question text you want the chatbot to be able to answer.": "The question text you want the chatbot to be able to answer.",
|
||||
"The answer you suggest the chatbot use for that question.": "The answer you suggest the chatbot use for that question.",
|
||||
"Select the finetune entry to delete.": "Select the finetune entry to delete.",
|
||||
"Markdown": "Markdown",
|
||||
"HTML": "HTML",
|
||||
"New Lead": "New Lead",
|
||||
"Triggers when a new lead with an email address is created in SiteSpeakAI.": "Triggers when a new lead with an email address is created in SiteSpeakAI."
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
|
||||
import { createPiece, PieceAuth } from "@activepieces/pieces-framework";
|
||||
import { sendQuery } from "./lib/actions/send-query";
|
||||
import { createFinetune } from "./lib/actions/create-finetune";
|
||||
import { deleteFinetune } from "./lib/actions/delete-finetune";
|
||||
import { newLead } from "./lib/triggers/new-lead";
|
||||
import { SiteSpeakAuth } from "./lib/common/auth";
|
||||
import { PieceCategory } from "@activepieces/shared";
|
||||
|
||||
export const sitespeakai = createPiece({
|
||||
displayName: "SiteSpeakAI",
|
||||
description: "Integrate with Sitespeakai to leverage AI-powered chatbots and enhance user interactions on your website.",
|
||||
auth: SiteSpeakAuth,
|
||||
minimumSupportedRelease: '0.36.1',
|
||||
logoUrl: "https://cdn.activepieces.com/pieces/sitespeakai.png",
|
||||
categories:[PieceCategory.ARTIFICIAL_INTELLIGENCE],
|
||||
authors: ["Niket2035"],
|
||||
actions: [sendQuery, createFinetune, deleteFinetune],
|
||||
triggers: [newLead],
|
||||
});
|
||||
@@ -0,0 +1,40 @@
|
||||
import { createAction, Property } from "@activepieces/pieces-framework";
|
||||
import { SiteSpeakAuth } from "../common/auth";
|
||||
import { makeRequest } from "../common/client";
|
||||
import { HttpMethod } from "@activepieces/pieces-common";
|
||||
import { chatbotIdDropdown } from "../common/dropdown";
|
||||
|
||||
export const createFinetune = createAction({
|
||||
auth: SiteSpeakAuth,
|
||||
name: 'create_finetune',
|
||||
displayName: 'Create Finetune',
|
||||
description: 'Adds a new fine-tune (question + suggested answer) for the specified chatbot in SiteSpeakAI.',
|
||||
props: {
|
||||
chatbotId: chatbotIdDropdown,
|
||||
question: Property.LongText({
|
||||
displayName: 'Question',
|
||||
required: true,
|
||||
description: 'The question text you want the chatbot to be able to answer.',
|
||||
}),
|
||||
suggestedAnswer: Property.LongText({
|
||||
displayName: 'Suggested Answer',
|
||||
required: true,
|
||||
description: 'The answer you suggest the chatbot use for that question.',
|
||||
}),
|
||||
},
|
||||
async run({ auth, propsValue }) {
|
||||
const body = {
|
||||
question: propsValue.question,
|
||||
suggested_answer: propsValue.suggestedAnswer,
|
||||
};
|
||||
|
||||
const response = await makeRequest(
|
||||
auth.secret_text,
|
||||
HttpMethod.POST,
|
||||
`/${propsValue.chatbotId}/finetunes`,
|
||||
body
|
||||
);
|
||||
|
||||
return response;
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,30 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { SiteSpeakAuth } from '../common/auth';
|
||||
import { makeRequest } from '../common/client';
|
||||
import { HttpMethod } from '@activepieces/pieces-common';
|
||||
import { chatbotIdDropdown, finetuneIdDropdown } from '../common/dropdown';
|
||||
|
||||
export const deleteFinetune = createAction({
|
||||
name: 'delete_finetune',
|
||||
displayName: 'Delete Finetune',
|
||||
description: 'Deletes a fine-tune entry from the selected chatbot.',
|
||||
auth: SiteSpeakAuth,
|
||||
props: {
|
||||
chatbotId: chatbotIdDropdown,
|
||||
finetuneId: finetuneIdDropdown,
|
||||
},
|
||||
async run({ auth, propsValue }) {
|
||||
const props = propsValue as { chatbotId: string; finetuneId: string };
|
||||
|
||||
const response = await makeRequest(
|
||||
auth.secret_text,
|
||||
HttpMethod.DELETE,
|
||||
`/${props.chatbotId}/finetunes/${props.finetuneId}`
|
||||
);
|
||||
|
||||
return {
|
||||
success: true,
|
||||
data: response,
|
||||
};
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,55 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { SiteSpeakAuth } from '../common/auth';
|
||||
import { HttpMethod } from '@activepieces/pieces-common';
|
||||
import { makeRequest } from '../common/client';
|
||||
import { chatbotIdDropdown, conversationIdDropdown } from '../common/dropdown';
|
||||
|
||||
export const sendQuery = createAction({
|
||||
auth: SiteSpeakAuth,
|
||||
name: 'sendQuery',
|
||||
displayName: 'Send Query',
|
||||
description:
|
||||
'Sends a query to the specified chatbot and retrieves a response.',
|
||||
props: {
|
||||
chatbotId: chatbotIdDropdown,
|
||||
prompt: Property.LongText({
|
||||
displayName: 'Prompt',
|
||||
required: true,
|
||||
description: 'The question or query text you want the chatbot to answer.',
|
||||
}),
|
||||
conversationId: conversationIdDropdown,
|
||||
format: Property.StaticDropdown({
|
||||
displayName: 'Response Format',
|
||||
required: false,
|
||||
defaultValue: 'markdown',
|
||||
options: {
|
||||
disabled: false,
|
||||
options: [
|
||||
{ label: 'Markdown', value: 'markdown' },
|
||||
{ label: 'HTML', value: 'html' },
|
||||
],
|
||||
},
|
||||
description: 'Format of the returned response; markdown or html.',
|
||||
}),
|
||||
},
|
||||
async run({ auth, propsValue }) {
|
||||
const body: Record<string, any> = {
|
||||
prompt: propsValue.prompt,
|
||||
};
|
||||
|
||||
if (propsValue.conversationId) {
|
||||
body['conversation_id'] = propsValue.conversationId;
|
||||
}
|
||||
if (propsValue.format) {
|
||||
body['format'] = propsValue.format;
|
||||
}
|
||||
|
||||
const response = await makeRequest(
|
||||
auth.secret_text,
|
||||
HttpMethod.POST,
|
||||
`/${propsValue.chatbotId}/query`,
|
||||
body
|
||||
);
|
||||
return response;
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,36 @@
|
||||
import { PieceAuth } from "@activepieces/pieces-framework";
|
||||
import { makeRequest } from "./client";
|
||||
import { HttpMethod } from "@activepieces/pieces-common";
|
||||
|
||||
export const SiteSpeakAuth = PieceAuth.SecretText({
|
||||
displayName: 'SiteSpeakAI API Key',
|
||||
description: `**Enter your SiteSpeakAI API Key.**
|
||||
---
|
||||
### How to obtain your API key
|
||||
1. Sign up / log in at [SiteSpeakAI](https://sitespeak.ai/).
|
||||
2. Go to **Dashboard → Settings → API Keys**.
|
||||
3. Generate or copy an API key.
|
||||
4. Paste it here.
|
||||
`,
|
||||
required: true,
|
||||
validate: async ({ auth }) => {
|
||||
if (!auth) {
|
||||
return {
|
||||
valid: false,
|
||||
error: 'API Key is required',
|
||||
};
|
||||
}
|
||||
|
||||
try {
|
||||
await makeRequest(auth as string, HttpMethod.GET, `/me`);
|
||||
return {
|
||||
valid: true,
|
||||
};
|
||||
} catch (error) {
|
||||
return {
|
||||
valid: false,
|
||||
error: 'Invalid SiteSpeakAI API Key',
|
||||
};
|
||||
}
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,22 @@
|
||||
import { HttpMethod, httpClient } from '@activepieces/pieces-common';
|
||||
|
||||
export const BASE_URL = `https://api.sitespeak.ai/v1`;
|
||||
|
||||
export async function makeRequest(
|
||||
api_key: string, method: HttpMethod, path: string, body?: unknown, p0?: { Accept: string; }) {
|
||||
try {
|
||||
const response = await httpClient.sendRequest({
|
||||
method,
|
||||
url: `${BASE_URL}${path}`,
|
||||
headers: {
|
||||
Authorization: `Bearer ${api_key}`,
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
body,
|
||||
});
|
||||
|
||||
return response.body;
|
||||
} catch (error: any) {
|
||||
throw new Error(`Unexpected error: ${error.message || String(error)}`);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,129 @@
|
||||
import { Property } from "@activepieces/pieces-framework";
|
||||
import { makeRequest } from "./client";
|
||||
import { HttpMethod } from "@activepieces/pieces-common";
|
||||
import { SiteSpeakAuth } from "./auth";
|
||||
|
||||
export const chatbotIdDropdown = Property.Dropdown({
|
||||
auth: SiteSpeakAuth,
|
||||
displayName: 'chatbotId',
|
||||
description: 'Chat bot ID ',
|
||||
required: false,
|
||||
refreshers: ['auth'],
|
||||
async options({ auth, }) {
|
||||
if (!auth ) {
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Select a chatbot first',
|
||||
};
|
||||
}
|
||||
|
||||
try {
|
||||
const response = await makeRequest(
|
||||
auth.secret_text,
|
||||
HttpMethod.GET,
|
||||
`/me/chatbots`
|
||||
);
|
||||
|
||||
return {
|
||||
disabled: false,
|
||||
options: response.map((chatbot: any) => ({
|
||||
label: chatbot.name || chatbot.id,
|
||||
value: chatbot.id,
|
||||
})),
|
||||
};
|
||||
} catch (e: any) {
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Failed to fetch conversations',
|
||||
};
|
||||
}
|
||||
},
|
||||
});
|
||||
export const conversationIdDropdown = Property.Dropdown<string,false,typeof SiteSpeakAuth>({
|
||||
auth: SiteSpeakAuth,
|
||||
displayName: 'Conversation',
|
||||
description: 'Pick a conversation for context, or leave empty to start a new one.',
|
||||
required: false,
|
||||
refreshers: ['chatbotId'],
|
||||
async options({ auth, chatbotId }) {
|
||||
|
||||
if (!auth || !chatbotId) {
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: "Select a chatbot first",
|
||||
};
|
||||
}
|
||||
|
||||
try {
|
||||
const response = await makeRequest(
|
||||
auth.secret_text,
|
||||
HttpMethod.GET,
|
||||
`/${chatbotId}/conversations`
|
||||
);
|
||||
|
||||
return {
|
||||
disabled: false,
|
||||
options: response.map((conv: any) => ({
|
||||
label: `Speaker: ${conv.speaker}, Started: ${new Date(conv.created_at).toLocaleDateString()}` || conv.id,
|
||||
value: conv.id,
|
||||
})),
|
||||
};
|
||||
} catch (e: any) {
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: "Failed to fetch conversations",
|
||||
};
|
||||
}
|
||||
},
|
||||
});
|
||||
export const finetuneIdDropdown = Property.Dropdown<string,true,typeof SiteSpeakAuth>({
|
||||
auth: SiteSpeakAuth,
|
||||
displayName: 'Finetune Entry',
|
||||
description: 'Select the finetune entry to delete.',
|
||||
required: true,
|
||||
refreshers: ['chatbotId'],
|
||||
async options({ auth, chatbotId }) {
|
||||
|
||||
if (!auth || !chatbotId) {
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: "Please enter/select a chatbot ID first",
|
||||
};
|
||||
}
|
||||
|
||||
try {
|
||||
const response = await makeRequest(
|
||||
auth.secret_text,
|
||||
HttpMethod.GET,
|
||||
`/${chatbotId}/finetunes`
|
||||
);
|
||||
|
||||
if (!response || response.length === 0) {
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: "No finetune entries found for this chatbot",
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
disabled: false,
|
||||
options: response.map((item: any) => ({
|
||||
label: item.question || item.id,
|
||||
value: item.id,
|
||||
})),
|
||||
};
|
||||
} catch (e: any) {
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: "Failed to fetch finetune entries",
|
||||
};
|
||||
}
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,74 @@
|
||||
import { createTrigger, TriggerStrategy, StaticPropsValue, AppConnectionValueForAuthProperty } from '@activepieces/pieces-framework';
|
||||
import { DedupeStrategy, Polling, pollingHelper, HttpMethod } from '@activepieces/pieces-common';
|
||||
import dayjs from 'dayjs';
|
||||
import { makeRequest } from '../common/client';
|
||||
import { SiteSpeakAuth } from '../common/auth';
|
||||
import { chatbotIdDropdown } from '../common/dropdown';
|
||||
const props = {
|
||||
chatbotId: chatbotIdDropdown,
|
||||
}
|
||||
const polling: Polling<AppConnectionValueForAuthProperty<typeof SiteSpeakAuth>, StaticPropsValue<typeof props>> = {
|
||||
strategy: DedupeStrategy.TIMEBASED,
|
||||
items: async ({ auth, propsValue }) => {
|
||||
if (!propsValue.chatbotId) {
|
||||
return [];
|
||||
}
|
||||
const response = await makeRequest(
|
||||
auth.secret_text,
|
||||
HttpMethod.GET,
|
||||
`/${propsValue.chatbotId}/leads`,
|
||||
undefined,
|
||||
{
|
||||
Accept: 'application/json',
|
||||
}
|
||||
);
|
||||
console.log(response);
|
||||
const leads = response || [];
|
||||
|
||||
return leads
|
||||
.filter((lead: any) => lead.email)
|
||||
.map((lead: any) => ({
|
||||
epochMilliSeconds: dayjs(lead.created_at).valueOf(),
|
||||
data: lead,
|
||||
}));
|
||||
},
|
||||
};
|
||||
|
||||
export const newLead = createTrigger({
|
||||
auth: SiteSpeakAuth,
|
||||
name: 'newLead',
|
||||
displayName: 'New Lead',
|
||||
description: 'Triggers when a new lead with an email address is created in SiteSpeakAI.',
|
||||
props,
|
||||
sampleData: {
|
||||
id: 'lead_12345',
|
||||
chatbot_id: 'chatbot_6789',
|
||||
visitor_id: 'visitor_9876',
|
||||
name: 'John Doe',
|
||||
email: 'john.doe@example.com',
|
||||
phone: null,
|
||||
status: 'read',
|
||||
last_entry_at: '2023-09-30 13:10:39',
|
||||
created_at: '2023-09-30 13:10:19',
|
||||
updated_at: '2023-10-03 05:49:48',
|
||||
},
|
||||
type: TriggerStrategy.POLLING,
|
||||
|
||||
async test(context) {
|
||||
return await pollingHelper.test(polling, context);
|
||||
},
|
||||
|
||||
async onEnable(context) {
|
||||
const { store, auth, propsValue } = context;
|
||||
await pollingHelper.onEnable(polling, { store, auth, propsValue });
|
||||
},
|
||||
|
||||
async onDisable(context) {
|
||||
const { store, auth, propsValue } = context;
|
||||
await pollingHelper.onDisable(polling, { store, auth, propsValue });
|
||||
},
|
||||
|
||||
async run(context) {
|
||||
return await pollingHelper.poll(polling, context);
|
||||
},
|
||||
});
|
||||
Reference in New Issue
Block a user