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,70 @@
{
"AI-powered voice agents and conversational interfaces.": "KI-gestützte Sprachakteure und Konversationsschnittstellen.",
"\nFollow these steps to obtain your Kallbot API Key:\n\n1. Go to [Kallabot](https://kallabot.com/) and log in to your account.\n2. Click on your profile picture in the top right corner.\n3. Select **Settings** from the dropdown menu.\n4. Navigate to the **API & Integrations** tab.\n5. Copy the generated API key and paste it here.\n": "\nFolgen Sie diesen Schritten, um Ihren Kallbot API Schlüssel zu erhalten:\n\n1. Gehen Sie zu [Kallabot](https://kallabot.com/) und melden Sie sich bei Ihrem Konto an.\n2. Klicken Sie auf Ihr Profilbild in der rechten oberen Ecke.\n3. Wählen Sie **Einstellungen** aus dem Dropdown-Menü.\n4. Navigieren Sie zur Registerkarte **API & Integration** .\n5. Kopieren Sie den generierten API-Schlüssel und fügen Sie ihn hier ein.\n",
"Make Call": "Anruf tätigen",
"Get Call Details": "Anrufdetails abrufen",
"Get Contacts from List": "Kontakte aus der Liste abrufen",
"Edit Contact List": "Kontaktliste bearbeiten",
"Add Contacts to List": "Kontakte zur Liste hinzufügen",
"Create Contact List": "Kontaktliste erstellen",
"Create Campaign": "Kampagne erstellen",
"Delete Campaign": "Kampagne löschen",
"Initiate an outbound call using Kallabot AI agent.": "Initiieren Sie einen ausgehenden Anruf mit Kallabot AI Agent.",
"Retrieve details of a specific call by call SID.": "Rufen Sie Details zu einem bestimmten Anruf per SID ab.",
"Retrieve all contacts from a specific contact list.": "Alle Kontakte aus einer bestimmten Kontaktliste abrufen.",
"Update/replace all contacts in an existing contact list.": "Alle Kontakte in einer bestehenden Kontaktliste aktualisieren/ersetzen.",
"Add a contact or multiple contacts to an existing contact list.": "Fügen Sie einen Kontakt oder mehrere Kontakte zu einer bestehenden Kontaktliste hinzu.",
"Create a new contact list.": "Neue Kontaktliste anlegen.",
"Create a new outbound calling campaign.": "Erstellen Sie eine neue Anruf-Kampagne.",
"Delete a campaign with optional contact list deletion.": "Löschen Sie eine Kampagne mit optionaler Löschung der Kontaktliste.",
"Agent": "Agent",
"Recipient Phone Number": "Telefonnummer des Empfängers",
"Sender Phone Number": "Absender-Telefonnummer",
"Template Variables": "Template-Variablen",
"Webhook URL": "Webhook-URL",
"Call SID": "SID anrufen",
"Contact List": "Kontaktliste",
"Contacts": "Kontakte",
"Contacts JSON": "Kontakte JSON",
"List Name": "Listenname",
"Description": "Beschreibung",
"Campaign Name": "Kampagnenname",
"Sender Phone Numbers": "Absender-Telefonnummern",
"Delay Between Calls (seconds)": "Zwischen Anrufen verzögern (Sekunden)",
"Scheduled Time": "Geplante Zeit",
"Timezone": "Timezone",
"Rotate Numbers After": "Nummern drehen nach",
"Campaign ID": "Kampagnen-ID",
"Delete Contact List": "Kontaktliste löschen",
"Select the AI agent to use for the call.": "Wählen Sie den für den Anruf zu verwendenden KI-Agenten.",
"The phone number to call in E.164 format (e.g., +1234567890).": "Telefonnummer, die im E.164-Format angerufen werden soll (z.B. +1234567890).",
"The phone number to make the call from.": "Die Telefonnummer, von der aus Sie den Anruf tätigen.",
"Variables to be used in the agent template (optional).": "Variablen, die im Agenten-Template verwendet werden sollen (optional).",
"URL to receive call status updates (optional).": "URL für den Status von Anrufen (optional).",
"The unique identifier of the call.": "Der eindeutige Identifikator des Aufrufs.",
"Select the contact list to retrieve contacts from.": "Wählen Sie die Kontaktliste aus, von der Kontakte abgerufen werden sollen.",
"Select the contact list to edit.": "Wählen Sie die Kontaktliste zum Bearbeiten aus.",
"JSON array of contacts to replace the entire list": "JSON-Array von Kontakten, die die gesamte Liste ersetzen sollen",
"Select the contact list to add contacts to.": "Wählen Sie die Kontaktliste aus, zu der Kontakte hinzugefügt werden sollen.",
"JSON array of contacts to add to the list. Each contact must have phone_number and can include name and template_variables.": "JSON-Array von Kontakten, die zur Liste hinzugefügt werden sollen. Jeder Kontakt muss eine phone_number haben und kann Namen und Template_variablen enthalten.",
"The name of the contact list.": "Der Name der Kontaktliste.",
"A description of the contact list (optional).": "Eine Beschreibung der Kontaktliste (optional).",
"JSON array of contacts. Each contact must have phone_number and can include name, template_variables.": "JSON-Array von Kontakten. Jeder Kontakt muss phone_number haben und kann Namen, template_variablen enthalten.",
"The name of the campaign.": "Der Name der Kampagne.",
"A description of the campaign (optional).": "Eine Beschreibung der Kampagne (optional).",
"Select the AI agent to use for the campaign.": "Wählen Sie den KI-Agenten, der für die Kampagne verwendet werden soll.",
"Select the contact list for the campaign.": "Wählen Sie die Kontaktliste für die Kampagne.",
"Select phone numbers to use for making calls.": "Telefonnummern für Anrufe auswählen.",
"Time to wait between calls in seconds.": "Wartezeit zwischen Anrufen in Sekunden.",
"When to start the campaign (format: YYYY-MM-DDTHH:MM:SS) ISO 8601.": "Wann die Kampagne gestartet wird (Format: YYYY-MM-DTHH:MM:SS) ISO 8601.",
"Timezone for the scheduled time (e.g., America/New_York).": "Zeitzone für die geplante Zeit (z.B. Amerika/New_York).",
"Number of contacts to call before rotating to the next phone number.": "Anzahl der anzurufenden Kontakte, bevor sie zur nächsten Telefonnummer wechseln.",
"The ID of the campaign to delete.": "Die ID der zu löschenden Kampagne.",
"Also delete the associated contact list (optional).": "Löschen Sie auch die zugehörige Kontaktliste (optional).",
"Call Events Webhook": "Anruf Events Webhook",
"Receives webhook data when call events occur from Kallabot AI agents.": "Erhält Webhook-Daten, wenn Anrufereignisse von Kallabot KI-Agenten auftreten.",
"Markdown": "Markdown",
"**Webhook URL:**\n```text\n{{webhookUrl}}\n```": "**Webhook URL:**\n```text\n{{webhookUrl}}\n```",
"**Setup Instructions:**\n1. Copy the webhook URL below.\n2. In your Kallabot AI agent configuration, go to Actions/Webhooks settings .\n3. Enable webhooks and paste the webhook URL.\n4. Your agent will now send call data to this webhook when a call ends.": "**Installationsanweisungen:**\n1. Kopieren Sie die Webhook-URL unten.\n2. In Ihrer Kallabot AI-Agenten-Konfiguration gehen Sie zu Actions/Webhooks Einstellungen .\n3. Aktivieren Sie Webhooks und fügen Sie die Webhook-URL ein.\n4. Ihr Agent wird nun Anrufdaten an diesen Webhook senden, wenn ein Anruf endet.",
"\n**Test URL:**\n\nIf you want to generate sample data without triggering the flow, append `/test` to your webhook URL.\n\n": "\n**Test-URL:**\n\nWenn du Sample-Daten erzeugen möchtest, ohne den Fluss auszulösen, hänge `/test` an deine Webhook-URL an.\n\n"
}

View File

@@ -0,0 +1,70 @@
{
"AI-powered voice agents and conversational interfaces.": "Agentes de voz impulsados por la AI y interfaces de conversación.",
"\nFollow these steps to obtain your Kallbot API Key:\n\n1. Go to [Kallabot](https://kallabot.com/) and log in to your account.\n2. Click on your profile picture in the top right corner.\n3. Select **Settings** from the dropdown menu.\n4. Navigate to the **API & Integrations** tab.\n5. Copy the generated API key and paste it here.\n": "\nSigue estos pasos para obtener tu clave API de Kallbot:\n\n1. Ve a [Kallabot](https://kallabot.com/) e inicia sesión en tu cuenta.\n2. Haz clic en tu foto de perfil en la esquina superior derecha.\n3. Seleccione **Ajustes** del menú desplegable.\n4. Navegue a la pestaña **API e integraciones**.\n5. Copia la clave API generada y pégala aquí.\n",
"Make Call": "Hacer Llamada",
"Get Call Details": "Detalles de llamada",
"Get Contacts from List": "Obtener contactos de la lista",
"Edit Contact List": "Editar lista de contactos",
"Add Contacts to List": "Añadir contactos a la lista",
"Create Contact List": "Crear lista de contactos",
"Create Campaign": "Crear Campaña",
"Delete Campaign": "Eliminar Campaña",
"Initiate an outbound call using Kallabot AI agent.": "Inicie una llamada saliente usando el agente de IA de Kallabot.",
"Retrieve details of a specific call by call SID.": "Recuperar los detalles de una llamada específica por llamada SID.",
"Retrieve all contacts from a specific contact list.": "Recuperar todos los contactos de una lista de contactos específica.",
"Update/replace all contacts in an existing contact list.": "Actualizar/reemplazar todos los contactos en una lista de contactos existente.",
"Add a contact or multiple contacts to an existing contact list.": "Añadir un contacto o varios contactos a una lista de contactos existente.",
"Create a new contact list.": "Crear una nueva lista de contactos.",
"Create a new outbound calling campaign.": "Crear una nueva campaña de llamadas salientes.",
"Delete a campaign with optional contact list deletion.": "Eliminar una campaña con eliminación opcional de la lista de contactos.",
"Agent": "Agente",
"Recipient Phone Number": "Número de teléfono del destinatario",
"Sender Phone Number": "Número de teléfono del remitente",
"Template Variables": "Variables de Plantilla",
"Webhook URL": "URL de Webhook",
"Call SID": "Llamar a SID",
"Contact List": "Lista de contactos",
"Contacts": "Contactos",
"Contacts JSON": "Contactos JSON",
"List Name": "Nombre de lista",
"Description": "Descripción",
"Campaign Name": "Nombre de Campaña",
"Sender Phone Numbers": "Números de teléfono del remitente",
"Delay Between Calls (seconds)": "Retraso entre llamadas (segundos)",
"Scheduled Time": "Tiempo programado",
"Timezone": "Timezone",
"Rotate Numbers After": "Girar números después de",
"Campaign ID": "ID de Campaña",
"Delete Contact List": "Borrar lista de contactos",
"Select the AI agent to use for the call.": "Seleccione el agente de IA a usar para la llamada.",
"The phone number to call in E.164 format (e.g., +1234567890).": "El número de teléfono a llamar en formato E.164 (por ejemplo, +1234567890).",
"The phone number to make the call from.": "El número de teléfono desde el que realizar la llamada.",
"Variables to be used in the agent template (optional).": "Variables a ser utilizadas en la plantilla del agente (opcional).",
"URL to receive call status updates (optional).": "URL para recibir actualizaciones de estado de llamada (opcional).",
"The unique identifier of the call.": "El identificador único de la llamada.",
"Select the contact list to retrieve contacts from.": "Seleccione la lista de contactos de la que recuperar contactos.",
"Select the contact list to edit.": "Seleccione la lista de contactos a editar.",
"JSON array of contacts to replace the entire list": "Matriz JSON de contactos para reemplazar la lista completa",
"Select the contact list to add contacts to.": "Seleccione la lista de contactos a los que agregar contactos.",
"JSON array of contacts to add to the list. Each contact must have phone_number and can include name and template_variables.": "Matriz JSON de contactos para añadir a la lista. Cada contacto debe tener número de teléfono y puede incluir nombre y variables de plantilla.",
"The name of the contact list.": "El nombre de la lista de contactos.",
"A description of the contact list (optional).": "Una descripción de la lista de contactos (opcional).",
"JSON array of contacts. Each contact must have phone_number and can include name, template_variables.": "array JSON de contactos. Cada contacto debe tener phone_number y puede incluir nombre, plantilla_variables.",
"The name of the campaign.": "El nombre de la campaña.",
"A description of the campaign (optional).": "Una descripción de la campaña (opcional).",
"Select the AI agent to use for the campaign.": "Seleccione el agente de IA a utilizar para la campaña.",
"Select the contact list for the campaign.": "Seleccione la lista de contactos para la campaña.",
"Select phone numbers to use for making calls.": "Seleccione los números de teléfono a usar para hacer llamadas.",
"Time to wait between calls in seconds.": "Tiempo de espera entre llamadas en segundos.",
"When to start the campaign (format: YYYY-MM-DDTHH:MM:SS) ISO 8601.": "Cuándo iniciar la campaña (formato: YYY-MM-DDTHH:MM:SS) ISO 8601.",
"Timezone for the scheduled time (e.g., America/New_York).": "Zona horaria para la hora programada (por ej., América/Nuevo_Parlamento).",
"Number of contacts to call before rotating to the next phone number.": "Número de contactos a llamar antes de girar al siguiente número de teléfono.",
"The ID of the campaign to delete.": "El ID de la campaña a eliminar.",
"Also delete the associated contact list (optional).": "Elimine también la lista de contactos asociada (opcional).",
"Call Events Webhook": "Llamar a Eventos Webhook",
"Receives webhook data when call events occur from Kallabot AI agents.": "Recibe datos de webhook cuando ocurran eventos de llamadas de agentes de IA de Kallabot.",
"Markdown": "Markdown",
"**Webhook URL:**\n```text\n{{webhookUrl}}\n```": "**Webhook URL:**\n```text\n{{webhookUrl}}\n```",
"**Setup Instructions:**\n1. Copy the webhook URL below.\n2. In your Kallabot AI agent configuration, go to Actions/Webhooks settings .\n3. Enable webhooks and paste the webhook URL.\n4. Your agent will now send call data to this webhook when a call ends.": "**Instrucciones de configuración:**\n1. Copie la URL del webhook debajo.\n2. En la configuración de su agente de Kallabot AI, vaya a la configuración de Actions/Webhooks .\n3. Habilitar webhooks y pegar la URL del webhook.\n4. Su agente ahora enviará datos de llamada a este webhook cuando finalice una llamada.",
"\n**Test URL:**\n\nIf you want to generate sample data without triggering the flow, append `/test` to your webhook URL.\n\n": "\n**Test URL:**\n\nIf you want to generate sample data without triggering the flow, append `/test` to your webhook URL.\n\n"
}

View File

@@ -0,0 +1,70 @@
{
"AI-powered voice agents and conversational interfaces.": "Des agents vocaux et des interfaces de conversation.",
"\nFollow these steps to obtain your Kallbot API Key:\n\n1. Go to [Kallabot](https://kallabot.com/) and log in to your account.\n2. Click on your profile picture in the top right corner.\n3. Select **Settings** from the dropdown menu.\n4. Navigate to the **API & Integrations** tab.\n5. Copy the generated API key and paste it here.\n": "\nFollow these steps to obtain your Kallbot API Key:\n\n1. Go to [Kallabot](https://kallabot.com/) and log in to your account.\n2. Click on your profile picture in the top right corner.\n3. Select **Settings** from the dropdown menu.\n4. Navigate to the **API & Integrations** tab.\n5. Copy the generated API key and paste it here.\n",
"Make Call": "Passer un appel",
"Get Call Details": "Obtenir les détails de lappel",
"Get Contacts from List": "Obtenir des contacts de la liste",
"Edit Contact List": "Modifier la liste de contacts",
"Add Contacts to List": "Ajouter des contacts à la liste",
"Create Contact List": "Créer une liste de contacts",
"Create Campaign": "Créer une campagne",
"Delete Campaign": "Supprimer la campagne",
"Initiate an outbound call using Kallabot AI agent.": "Lancez un appel sortant avec un agent de Kallabot AI.",
"Retrieve details of a specific call by call SID.": "Récupérez les détails d'un appel spécifique par appel SID.",
"Retrieve all contacts from a specific contact list.": "Récupérer tous les contacts d'une liste de contacts spécifique.",
"Update/replace all contacts in an existing contact list.": "Mettre à jour/remplacer tous les contacts dans une liste de contacts existante.",
"Add a contact or multiple contacts to an existing contact list.": "Ajouter un contact ou plusieurs contacts à une liste de contacts existante.",
"Create a new contact list.": "Créer une nouvelle liste de contacts.",
"Create a new outbound calling campaign.": "Créer une nouvelle campagne d'appel sortant.",
"Delete a campaign with optional contact list deletion.": "Supprimer une campagne avec suppression optionnelle de la liste de contacts.",
"Agent": "Agent",
"Recipient Phone Number": "Numéro de téléphone du destinataire",
"Sender Phone Number": "Numéro de téléphone de l'expéditeur",
"Template Variables": "Variables de modèle",
"Webhook URL": "URL du Webhook",
"Call SID": "Appel SID",
"Contact List": "Liste des contacts",
"Contacts": "Contacts",
"Contacts JSON": "Contacts JSON",
"List Name": "Nom de la liste",
"Description": "Libellé",
"Campaign Name": "Nom de la campagne",
"Sender Phone Numbers": "Numéros de téléphone de l'expéditeur",
"Delay Between Calls (seconds)": "Délai entre les appels (secondes)",
"Scheduled Time": "Heure programmée",
"Timezone": "Fuseau horaire",
"Rotate Numbers After": "Faire pivoter les nombres après",
"Campaign ID": "ID de la campagne",
"Delete Contact List": "Supprimer la liste de contacts",
"Select the AI agent to use for the call.": "Sélectionnez l'agent IA à utiliser pour l'appel.",
"The phone number to call in E.164 format (e.g., +1234567890).": "Le numéro de téléphone à appeler au format E.164 (par exemple, +1234567890).",
"The phone number to make the call from.": "Le numéro de téléphone à partir duquel passer l'appel.",
"Variables to be used in the agent template (optional).": "Variables à utiliser dans le modèle de l'agent (optionnel).",
"URL to receive call status updates (optional).": "URL pour recevoir les mises à jour de l'état des appels (facultatif).",
"The unique identifier of the call.": "L'identifiant unique de l'appel.",
"Select the contact list to retrieve contacts from.": "Sélectionnez la liste de contacts depuis laquelle récupérer les contacts.",
"Select the contact list to edit.": "Sélectionnez la liste de contacts à modifier.",
"JSON array of contacts to replace the entire list": "Tableau JSON de contacts pour remplacer la liste entière",
"Select the contact list to add contacts to.": "Sélectionnez la liste de contacts à laquelle ajouter des contacts.",
"JSON array of contacts to add to the list. Each contact must have phone_number and can include name and template_variables.": "Tableau JSON de contacts à ajouter à la liste. Chaque contact doit avoir phone_number et peut inclure le nom et template_variables.",
"The name of the contact list.": "Le nom de la liste de contacts.",
"A description of the contact list (optional).": "Une description de la liste de contacts (facultatif).",
"JSON array of contacts. Each contact must have phone_number and can include name, template_variables.": "Tableau JSON de contacts. Chaque contact doit avoir phone_number et peut inclure le nom, template_variables.",
"The name of the campaign.": "Le nom de la campagne.",
"A description of the campaign (optional).": "Une description de la campagne (facultatif).",
"Select the AI agent to use for the campaign.": "Sélectionnez l'agent IA à utiliser pour la campagne.",
"Select the contact list for the campaign.": "Sélectionnez la liste de contacts pour la campagne.",
"Select phone numbers to use for making calls.": "Sélectionnez les numéros de téléphone à utiliser pour passer des appels.",
"Time to wait between calls in seconds.": "Temps d'attente entre les appels en secondes.",
"When to start the campaign (format: YYYY-MM-DDTHH:MM:SS) ISO 8601.": "Quand démarrer la campagne (format: AAAA-MM-JDTHH:MM:SS) ISO 8601.",
"Timezone for the scheduled time (e.g., America/New_York).": "Fuseau horaire pour l'heure programmée (par exemple, Amérique/New_York).",
"Number of contacts to call before rotating to the next phone number.": "Nombre de contacts à appeler avant de passer au numéro de téléphone suivant.",
"The ID of the campaign to delete.": "L'ID de la campagne à supprimer.",
"Also delete the associated contact list (optional).": "Supprimer également la liste de contacts associée (facultatif).",
"Call Events Webhook": "Webhook d'événements d'appel",
"Receives webhook data when call events occur from Kallabot AI agents.": "Recevoir des données sur le webhook lorsque des événements dappels se produisent de la part dagents de Kallabot AA.",
"Markdown": "Markdown",
"**Webhook URL:**\n```text\n{{webhookUrl}}\n```": "**URL du Webhook :**\n```text\n{{webhookUrl}}\n```",
"**Setup Instructions:**\n1. Copy the webhook URL below.\n2. In your Kallabot AI agent configuration, go to Actions/Webhooks settings .\n3. Enable webhooks and paste the webhook URL.\n4. Your agent will now send call data to this webhook when a call ends.": "**Setup Instructions:**\n1. Copy the webhook URL below.\n2. In your Kallabot AI agent configuration, go to Actions/Webhooks settings .\n3. Enable webhooks and paste the webhook URL.\n4. Your agent will now send call data to this webhook when a call ends.",
"\n**Test URL:**\n\nIf you want to generate sample data without triggering the flow, append `/test` to your webhook URL.\n\n": "\n**Test URL:**\n\nIf you want to generate sample data without triggering the flow, append `/test` to your webhook URL.\n\n"
}

View File

@@ -0,0 +1,70 @@
{
"AI-powered voice agents and conversational interfaces.": "AIを搭載した音声エージェントや会話インターフェース。",
"\nFollow these steps to obtain your Kallbot API Key:\n\n1. Go to [Kallabot](https://kallabot.com/) and log in to your account.\n2. Click on your profile picture in the top right corner.\n3. Select **Settings** from the dropdown menu.\n4. Navigate to the **API & Integrations** tab.\n5. Copy the generated API key and paste it here.\n": "\nFollow these steps to obtain your Kallbot API Key:\n\n1. Go to [Kallabot](https://kallabot.com/) and log in to your account.\n2. Click on your profile picture in the top right corner.\n3. Select **Settings** from the dropdown menu.\n4. Navigate to the **API & Integrations** tab.\n5. Copy the generated API key and paste it here.\n",
"Make Call": "電話をかける",
"Get Call Details": "通話の詳細を取得",
"Get Contacts from List": "一覧から連絡先を取得する",
"Edit Contact List": "連絡先リストを編集",
"Add Contacts to List": "連絡先を一覧に追加",
"Create Contact List": "連絡先リストを作成",
"Create Campaign": "キャンペーンを作成",
"Delete Campaign": "キャンペーンの削除",
"Initiate an outbound call using Kallabot AI agent.": "Kallabot AI エージェントを使用してアウトバウンドコールを開始します。",
"Retrieve details of a specific call by call SID.": "呼び出しSIDで特定の呼び出しの詳細を取得します。",
"Retrieve all contacts from a specific contact list.": "特定の連絡先リストからすべての連絡先を取得します。",
"Update/replace all contacts in an existing contact list.": "既存の連絡先リスト内のすべての連絡先を更新/置き換えます。",
"Add a contact or multiple contacts to an existing contact list.": "既存の連絡先リストに連絡先または複数の連絡先を追加します。",
"Create a new contact list.": "新しい連絡先リストを作成します。",
"Create a new outbound calling campaign.": "新しい発信キャンペーンを作成します。",
"Delete a campaign with optional contact list deletion.": "オプションの連絡先リストの削除でキャンペーンを削除します。",
"Agent": "エージェント",
"Recipient Phone Number": "受信者電話番号",
"Sender Phone Number": "差出人の電話番号",
"Template Variables": "テンプレート変数",
"Webhook URL": "Webhook URL",
"Call SID": "SIDに発信",
"Contact List": "連絡先リスト",
"Contacts": "連絡先",
"Contacts JSON": "連絡先JSON",
"List Name": "リスト名",
"Description": "説明",
"Campaign Name": "キャンペーン名",
"Sender Phone Numbers": "差出人の電話番号",
"Delay Between Calls (seconds)": "通話間の遅延 (秒)",
"Scheduled Time": "予定日時",
"Timezone": "Timezone",
"Rotate Numbers After": "数字を回転させた後",
"Campaign ID": "キャンペーンID",
"Delete Contact List": "連絡先リストを削除",
"Select the AI agent to use for the call.": "通話に使用する AI エージェントを選択します。",
"The phone number to call in E.164 format (e.g., +1234567890).": "E.164形式(例:+1234567890)で通話する電話番号。",
"The phone number to make the call from.": "発信元となる電話番号。",
"Variables to be used in the agent template (optional).": "エージェントテンプレートで使用する変数(任意)。",
"URL to receive call status updates (optional).": "通話状況の更新を受信するURL任意。",
"The unique identifier of the call.": "呼び出しの一意の識別子",
"Select the contact list to retrieve contacts from.": "連絡先を取得する連絡先リストを選択します。",
"Select the contact list to edit.": "編集する連絡先リストを選択します。",
"JSON array of contacts to replace the entire list": "リスト全体を置き換える連絡先の JSON 配列",
"Select the contact list to add contacts to.": "連絡先を追加する連絡先リストを選択します。",
"JSON array of contacts to add to the list. Each contact must have phone_number and can include name and template_variables.": "リストに追加する連絡先の JSON 配列。それぞれの連絡先は phone_number で、name と template_variable を含めることができます。",
"The name of the contact list.": "連絡先リストの名前。",
"A description of the contact list (optional).": "連絡先リストの説明 (オプション)",
"JSON array of contacts. Each contact must have phone_number and can include name, template_variables.": "連絡先のJSON配列。それぞれの連絡先はphone_numberを持ち、name, template_variablesを含めることができます。",
"The name of the campaign.": "キャンペーンの名前",
"A description of the campaign (optional).": "キャンペーンの説明(任意)。",
"Select the AI agent to use for the campaign.": "キャンペーンに使用する AI エージェントを選択します。",
"Select the contact list for the campaign.": "キャンペーンの連絡先リストを選択します。",
"Select phone numbers to use for making calls.": "通話の発信に使用する電話番号を選択します。",
"Time to wait between calls in seconds.": "通話間隔を秒単位で待機します。",
"When to start the campaign (format: YYYY-MM-DDTHH:MM:SS) ISO 8601.": "キャンペーンを開始するタイミング(フォーマット:YYYY-MM-DDTHH:MM:SS) ISO 8601。",
"Timezone for the scheduled time (e.g., America/New_York).": "スケジュールされた時刻のタイムゾーン(例:アメリカ/ニュー_ヨーク。",
"Number of contacts to call before rotating to the next phone number.": "次の電話番号に回転する前に呼び出す連絡先の数。",
"The ID of the campaign to delete.": "削除するキャンペーンのID。",
"Also delete the associated contact list (optional).": "また、関連付けられている連絡先リストを削除します(オプション)。",
"Call Events Webhook": "コールイベント Webhook",
"Receives webhook data when call events occur from Kallabot AI agents.": "Kallabot AIエージェントからコールイベントが発生したときにWebフックデータを受信します。",
"Markdown": "Markdown",
"**Webhook URL:**\n```text\n{{webhookUrl}}\n```": "**Webhook URL:**\n```text\n{{webhookUrl}}\n```",
"**Setup Instructions:**\n1. Copy the webhook URL below.\n2. In your Kallabot AI agent configuration, go to Actions/Webhooks settings .\n3. Enable webhooks and paste the webhook URL.\n4. Your agent will now send call data to this webhook when a call ends.": "**Setup Instructions:**\n1. Copy the webhook URL below.\n2. In your Kallabot AI agent configuration, go to Actions/Webhooks settings .\n3. Enable webhooks and paste the webhook URL.\n4. Your agent will now send call data to this webhook when a call ends.",
"\n**Test URL:**\n\nIf you want to generate sample data without triggering the flow, append `/test` to your webhook URL.\n\n": "\n**Test URL:**\n\nIf you want to generate sample data without triggering the flow, append `/test` to your webhook URL.\n\n"
}

View File

@@ -0,0 +1,70 @@
{
"AI-powered voice agents and conversational interfaces.": "AI-aangedreven spraakagenten en gespreksinterfaces.",
"\nFollow these steps to obtain your Kallbot API Key:\n\n1. Go to [Kallabot](https://kallabot.com/) and log in to your account.\n2. Click on your profile picture in the top right corner.\n3. Select **Settings** from the dropdown menu.\n4. Navigate to the **API & Integrations** tab.\n5. Copy the generated API key and paste it here.\n": "\nVolg deze stappen om je Kallbot API-sleutel te verkrijgen:\n\n1. Ga naar [Kallabot](https://kallabot.com/) en log in op uw account.\n2. Klik op uw profielfoto in de rechterbovenhoek.\n3. Selecteer **instellingen** in het dropdown menu.\n4. Navigeer naar het **API & Integraties** tabblad.\n5. Kopieer de gegenereerde API-sleutel en plak deze hier.\n",
"Make Call": "Gesprek voeren",
"Get Call Details": "Oproepgegevens ophalen",
"Get Contacts from List": "Contacten ophalen uit lijst",
"Edit Contact List": "Bewerk contactpersonen lijst",
"Add Contacts to List": "Contacten toevoegen aan de lijst",
"Create Contact List": "Lijst met contactpersonen aanmaken",
"Create Campaign": "Nieuwe campagne",
"Delete Campaign": "Campagne Verwijderen",
"Initiate an outbound call using Kallabot AI agent.": "Start een uitgaande oproep met Kallabot AI agent.",
"Retrieve details of a specific call by call SID.": "Ophalen details van een specifieke oproep per oproep SID.",
"Retrieve all contacts from a specific contact list.": "Haal alle contacten op uit een specifieke lijst met contactpersonen.",
"Update/replace all contacts in an existing contact list.": "Alle contacten in een bestaand adresboek bijwerken/vervangen.",
"Add a contact or multiple contacts to an existing contact list.": "Voeg een contactpersoon of meerdere contactpersonen toe aan een bestaand adresboek.",
"Create a new contact list.": "Maak een nieuw adresboek aan.",
"Create a new outbound calling campaign.": "Maak een nieuwe uitgaande belcampagne.",
"Delete a campaign with optional contact list deletion.": "Verwijder een campagne met optioneel verwijderen van adresboek",
"Agent": "Agent",
"Recipient Phone Number": "Telefoonnummer ontvanger",
"Sender Phone Number": "Telefoonnummer van afzender",
"Template Variables": "Template variabelen",
"Webhook URL": "Webhook URL",
"Call SID": "Oproep SID",
"Contact List": "Lijst met contactpersonen",
"Contacts": "Contactpersonen",
"Contacts JSON": "Contacten JSON",
"List Name": "Lijst Naam",
"Description": "Beschrijving",
"Campaign Name": "Campagne Naam",
"Sender Phone Numbers": "Telefoonnummers afzender",
"Delay Between Calls (seconds)": "Vertraging tussen oproepen (seconden)",
"Scheduled Time": "Geplande tijd",
"Timezone": "Timezone",
"Rotate Numbers After": "Nummers roteren na",
"Campaign ID": "Campagne ID",
"Delete Contact List": "Lijst met contactpersonen verwijderen",
"Select the AI agent to use for the call.": "Selecteer de AI agent om te gebruiken voor het bellen.",
"The phone number to call in E.164 format (e.g., +1234567890).": "Het telefoonnummer om in E.164 formaat te bellen (bijv. +1234567890).",
"The phone number to make the call from.": "Het telefoonnummer om vanuit te bellen.",
"Variables to be used in the agent template (optional).": "Variabelen die gebruikt moeten worden in het agent template (optioneel).",
"URL to receive call status updates (optional).": "URL om oproepstatusupdates te ontvangen (optioneel).",
"The unique identifier of the call.": "De unieke id van de oproep.",
"Select the contact list to retrieve contacts from.": "Selecteer de lijst met contactpersonen om contacten van op te halen.",
"Select the contact list to edit.": "Selecteer het te wijzigen adresboek",
"JSON array of contacts to replace the entire list": "JSON reeks contacten om de hele lijst te vervangen",
"Select the contact list to add contacts to.": "Selecteer de lijst met contactpersonen waaraan u contactpersonen wilt toevoegen.",
"JSON array of contacts to add to the list. Each contact must have phone_number and can include name and template_variables.": "JSON array van contactpersonen om toe te voegen aan de lijst. Elke contactpersoon moet phone_number hebben en kan naam en template_variabelen bevatten.",
"The name of the contact list.": "De naam van het adresboek.",
"A description of the contact list (optional).": "Een beschrijving van de adresboek (optioneel).",
"JSON array of contacts. Each contact must have phone_number and can include name, template_variables.": "JSON reeks contacten. Elke contactpersoon moet phone_number hebben en kan naam, template_variabelen bevatten.",
"The name of the campaign.": "De naam van de campagne.",
"A description of the campaign (optional).": "Een beschrijving van de campagne (optioneel).",
"Select the AI agent to use for the campaign.": "Selecteer de AI agent om te gebruiken voor de campagne.",
"Select the contact list for the campaign.": "Selecteer het adresboek voor de campagne.",
"Select phone numbers to use for making calls.": "Selecteer telefoonnummers om te gebruiken voor gesprekken.",
"Time to wait between calls in seconds.": "Tijd om te wachten tussen oproepen in seconden.",
"When to start the campaign (format: YYYY-MM-DDTHH:MM:SS) ISO 8601.": "Wanneer de campagne moet starten (formaat: YYYY-MM-DDDTHH:MM:SS) ISO 8601.",
"Timezone for the scheduled time (e.g., America/New_York).": "Tijdzone voor de geplande tijd (bijv. Amerika/New_York).",
"Number of contacts to call before rotating to the next phone number.": "Aantal contactpersonen dat moet bellen voordat het naar het volgende telefoonnummer wordt gedraaid.",
"The ID of the campaign to delete.": "Het ID van de te verwijderen campagne",
"Also delete the associated contact list (optional).": "Verwijder ook de bijbehorende adressenlijst (optioneel).",
"Call Events Webhook": "Oproep gebeurtenissen Webhook",
"Receives webhook data when call events occur from Kallabot AI agents.": "Ontvangen webhook gegevens wanneer oproepen plaatsvinden van Kallabot AI agents.",
"Markdown": "Markdown",
"**Webhook URL:**\n```text\n{{webhookUrl}}\n```": "**Webhook URL:**\n```text\n{{webhookUrl}}\n```",
"**Setup Instructions:**\n1. Copy the webhook URL below.\n2. In your Kallabot AI agent configuration, go to Actions/Webhooks settings .\n3. Enable webhooks and paste the webhook URL.\n4. Your agent will now send call data to this webhook when a call ends.": "**Setup Instructions:**\n1. Copy the webhook URL below.\n2. In your Kallabot AI agent configuration, go to Actions/Webhooks settings .\n3. Enable webhooks and paste the webhook URL.\n4. Your agent will now send call data to this webhook when a call ends.",
"\n**Test URL:**\n\nIf you want to generate sample data without triggering the flow, append `/test` to your webhook URL.\n\n": "\n**Test URL:**\n\nAls je voorbeelddata wilt genereren zonder de flow te activeren, voeg dan `/test` toe aan je webhook URL.\n\n"
}

View File

@@ -0,0 +1,70 @@
{
"AI-powered voice agents and conversational interfaces.": "Agentes de voz e interfaces de conversação com o AI.",
"\nFollow these steps to obtain your Kallbot API Key:\n\n1. Go to [Kallabot](https://kallabot.com/) and log in to your account.\n2. Click on your profile picture in the top right corner.\n3. Select **Settings** from the dropdown menu.\n4. Navigate to the **API & Integrations** tab.\n5. Copy the generated API key and paste it here.\n": "\nSiga estes passos para obter sua Chave de API Kallbot:\n\n1. Vá para [Kallabot](https://kallabot.com/) e entre na sua conta.\n2. Clique na foto do seu perfil no canto superior direito.\n3. Selecione **Configurações** no menu suspenso.\n4. Navegue até a guia **API & integrações**.\n5. Copie a chave de API gerada e cole aqui.\n",
"Make Call": "Fazer uma chamada",
"Get Call Details": "Obter detalhes da chamada",
"Get Contacts from List": "Obter contatos da lista",
"Edit Contact List": "Editar lista de contatos",
"Add Contacts to List": "Adicionar Contatos à Lista",
"Create Contact List": "Criar lista de contatos",
"Create Campaign": "Criar Campanha",
"Delete Campaign": "Excluir Campanha",
"Initiate an outbound call using Kallabot AI agent.": "Inicie uma chamada encaminhada usando o agente Kallabot AI.",
"Retrieve details of a specific call by call SID.": "Recuperar detalhes de uma chamada específica por chamada SID.",
"Retrieve all contacts from a specific contact list.": "Recuperar todos os contatos de uma lista de contatos específica.",
"Update/replace all contacts in an existing contact list.": "Atualizar/substituir todos os contatos em uma lista de contatos existente.",
"Add a contact or multiple contacts to an existing contact list.": "Adicione um contato ou vários contatos a uma lista de contatos existente.",
"Create a new contact list.": "Criar uma nova lista de contatos.",
"Create a new outbound calling campaign.": "Criar uma nova campanha de chamadas de saída.",
"Delete a campaign with optional contact list deletion.": "Exclua uma campanha com exclusão opcional de lista de contatos.",
"Agent": "Representante",
"Recipient Phone Number": "Número de telefone destinatário",
"Sender Phone Number": "Número de telefone remetente",
"Template Variables": "Variáveis de Template",
"Webhook URL": "URL do webhook",
"Call SID": "Ligar para SID",
"Contact List": "Lista de Contatos",
"Contacts": "CONTATOS",
"Contacts JSON": "Contatos JSON",
"List Name": "Lista de nomes",
"Description": "Descrição",
"Campaign Name": "Nome Da Campanha",
"Sender Phone Numbers": "Número de Telefone Remetente",
"Delay Between Calls (seconds)": "Atraso entre chamadas (segundos)",
"Scheduled Time": "Horário agendado",
"Timezone": "Timezone",
"Rotate Numbers After": "Girar Números Após",
"Campaign ID": "ID da Campanha",
"Delete Contact List": "Excluir lista de contatos",
"Select the AI agent to use for the call.": "Selecione o AI agente a usar para a chamada.",
"The phone number to call in E.164 format (e.g., +1234567890).": "O número de telefone para ligar no formato E.164 (por exemplo, +1234567890).",
"The phone number to make the call from.": "O número de telefone para efetuar a ligação.",
"Variables to be used in the agent template (optional).": "Variáveis a serem usadas no modelo de agente (opcional).",
"URL to receive call status updates (optional).": "URL para receber status de chamada (opcional).",
"The unique identifier of the call.": "O identificador exclusivo da chamada.",
"Select the contact list to retrieve contacts from.": "Selecione a lista de contatos para recuperar contatos.",
"Select the contact list to edit.": "Selecione a lista de contatos para editar.",
"JSON array of contacts to replace the entire list": "Matriz JSON de contatos para substituir a lista inteira",
"Select the contact list to add contacts to.": "Selecione a lista de contatos para adicionar contatos.",
"JSON array of contacts to add to the list. Each contact must have phone_number and can include name and template_variables.": "Matriz JSON de contatos para adicionar à lista. Cada contato deve ter número de telefone e pode incluir nome e variáveis_modelo.",
"The name of the contact list.": "O nome da lista de contatos.",
"A description of the contact list (optional).": "Uma descrição da lista de contatos (opcional).",
"JSON array of contacts. Each contact must have phone_number and can include name, template_variables.": "Matriz JSON de contatos. Cada contato deve ter telefone_number e pode incluir nome, variáveis_modelo.",
"The name of the campaign.": "O nome da campanha.",
"A description of the campaign (optional).": "Uma descrição da campanha (opcional).",
"Select the AI agent to use for the campaign.": "Selecione o agente de IA a ser usado para a campanha.",
"Select the contact list for the campaign.": "Selecione a lista de contatos para a campanha.",
"Select phone numbers to use for making calls.": "Selecione números de telefone para fazer chamadas.",
"Time to wait between calls in seconds.": "Tempo de espera entre chamadas em segundos.",
"When to start the campaign (format: YYYY-MM-DDTHH:MM:SS) ISO 8601.": "Quando iniciar a campanha (formato: YYYY-MM-DDTHH:MM:SS) ISO 8601.",
"Timezone for the scheduled time (e.g., America/New_York).": "Fuso horário agendado (por exemplo, América/New_York).",
"Number of contacts to call before rotating to the next phone number.": "Número de contatos a ligar antes de girar para o número seguinte.",
"The ID of the campaign to delete.": "O ID da campanha para excluir.",
"Also delete the associated contact list (optional).": "Também exclui a lista de contatos associada (opcional).",
"Call Events Webhook": "Eventos de chamada Webhook",
"Receives webhook data when call events occur from Kallabot AI agents.": "Recebe dados de webhook quando ocorrem eventos de chamadas de agentes Kallabot AI.",
"Markdown": "Markdown",
"**Webhook URL:**\n```text\n{{webhookUrl}}\n```": "**URL Webhook:**\n```text\n{{webhookUrl}}\n```",
"**Setup Instructions:**\n1. Copy the webhook URL below.\n2. In your Kallabot AI agent configuration, go to Actions/Webhooks settings .\n3. Enable webhooks and paste the webhook URL.\n4. Your agent will now send call data to this webhook when a call ends.": "**Instruções de configuração:**\n1. Copie a URL do webhook abaixo.\n2. Na sua configuração de agente de IA do Kallabot, vá para configurações de ações/Webhooks.\n3. Habilite webhooks e cole a URL do webhook.\n4. Seu agente agora enviará dados de chamada para este webhook quando uma chamada terminar.",
"\n**Test URL:**\n\nIf you want to generate sample data without triggering the flow, append `/test` to your webhook URL.\n\n": "\n**Teste URL:**\n\nSe você quiser gerar dados de amostra sem acionar o fluxo, acrescente `/test` à sua URL de webhook.\n\n"
}

View File

@@ -0,0 +1,71 @@
{
"Kallabot": "Каллабот",
"AI-powered voice agents and conversational interfaces.": "Голосовые агенты и разговорные интерфейсы.",
"\nFollow these steps to obtain your Kallbot API Key:\n\n1. Go to [Kallabot](https://kallabot.com/) and log in to your account.\n2. Click on your profile picture in the top right corner.\n3. Select **Settings** from the dropdown menu.\n4. Navigate to the **API & Integrations** tab.\n5. Copy the generated API key and paste it here.\n": "\nВыполните следующие шаги, чтобы получить ваш ключ API Kallbot:\n\n1. Перейдите на [Kallabot](https://kallabot.com/) и войдите в свою учетную запись.\n2. Нажмите на изображение профиля в правом верхнем углу.\n3. Выберите **Настройки** из выпадающего меню.\n4. Перейдите на вкладку **API и интеграции**.\n5. Скопируйте сгенерированный ключ API и вставьте его здесь.\n",
"Make Call": "Позвонить",
"Get Call Details": "Получить подробности звонка",
"Get Contacts from List": "Получить контакты из списка",
"Edit Contact List": "Изменить список контактов",
"Add Contacts to List": "Добавить контакты в список",
"Create Contact List": "Создать список контактов",
"Create Campaign": "Создать Кампанию",
"Delete Campaign": "Удалить кампанию",
"Initiate an outbound call using Kallabot AI agent.": "Инициировать исходящий звонок с помощью агента Kallabot AI.",
"Retrieve details of a specific call by call SID.": "Получить информацию о конкретном вызове по SID.",
"Retrieve all contacts from a specific contact list.": "Получить все контакты из определенного списка контактов.",
"Update/replace all contacts in an existing contact list.": "Обновление/замена всех контактов в существующем списке контактов.",
"Add a contact or multiple contacts to an existing contact list.": "Добавить контакт или несколько контактов в существующий список контактов.",
"Create a new contact list.": "Создать новый список контактов.",
"Create a new outbound calling campaign.": "Создать новую исходящую кампанию.",
"Delete a campaign with optional contact list deletion.": "Удалить кампанию с необязательным удалением списка контактов.",
"Agent": "Агент",
"Recipient Phone Number": "Телефонный номер получателя",
"Sender Phone Number": "Телефон отправителя",
"Template Variables": "Переменные шаблона",
"Webhook URL": "URL вебхука",
"Call SID": "Вызов SID",
"Contact List": "Список контактов",
"Contacts": "Контакты",
"Contacts JSON": "Контакты JSON",
"List Name": "Название списка",
"Description": "Описание",
"Campaign Name": "Название кампании",
"Sender Phone Numbers": "Номера телефонов отправителя",
"Delay Between Calls (seconds)": "Задержка между звонками (секунд)",
"Scheduled Time": "Запланированное время",
"Timezone": "Timezone",
"Rotate Numbers After": "Повернуть числа после",
"Campaign ID": "ID Кампании",
"Delete Contact List": "Удалить список контактов",
"Select the AI agent to use for the call.": "Выберите AI агента, который будет использоваться для вызова.",
"The phone number to call in E.164 format (e.g., +1234567890).": "Телефонный номер для звонка в формате Е.164 (например, +1234567890).",
"The phone number to make the call from.": "Номер телефона, с которого можно позвонить.",
"Variables to be used in the agent template (optional).": "Переменные для использования в шаблоне агента (не обязательно).",
"URL to receive call status updates (optional).": "URL-адрес для получения обновлений статуса вызова (опционально).",
"The unique identifier of the call.": "Уникальный идентификатор вызова.",
"Select the contact list to retrieve contacts from.": "Выберите список контактов для получения контактов.",
"Select the contact list to edit.": "Выберите список контактов для редактирования.",
"JSON array of contacts to replace the entire list": "JSON массив контактов для замены всего списка",
"Select the contact list to add contacts to.": "Выберите список контактов для добавления контактов.",
"JSON array of contacts to add to the list. Each contact must have phone_number and can include name and template_variables.": "JSON массив контактов для добавления в список. Каждый контакт должен иметь телефон_номер и может включать имя и template_variables.",
"The name of the contact list.": "Название списка контактов.",
"A description of the contact list (optional).": "Описание списка контактов (необязательно).",
"JSON array of contacts. Each contact must have phone_number and can include name, template_variables.": "JSON массив контактов. Каждый контакт должен иметь телефон_номер и может включать имя, template_variables.",
"The name of the campaign.": "Название кампании.",
"A description of the campaign (optional).": "Описание кампании (опционально).",
"Select the AI agent to use for the campaign.": "Выберите Агента ИИ для кампании.",
"Select the contact list for the campaign.": "Выберите список контактов для кампании.",
"Select phone numbers to use for making calls.": "Выберите телефонные номера для совершения звонков.",
"Time to wait between calls in seconds.": "Время ожидания между звонками в секундах.",
"When to start the campaign (format: YYYY-MM-DDTHH:MM:SS) ISO 8601.": "Когда начать кампанию (формат: YYYYY-MM-DDTHH:MM:SS) ISO 8601.",
"Timezone for the scheduled time (e.g., America/New_York).": "Часовой пояс для запланированного времени (например, Америка/Нью-Йорк).",
"Number of contacts to call before rotating to the next phone number.": "Номер контакта перед поворотом на следующий номер телефона.",
"The ID of the campaign to delete.": "ID кампании для удаления.",
"Also delete the associated contact list (optional).": "Также удалить список контактов (необязательно).",
"Call Events Webhook": "События вызова Webhook",
"Receives webhook data when call events occur from Kallabot AI agents.": "Получает данные вебхука при возникновении звонков от агентов Kallabot AI.",
"Markdown": "Markdown",
"**Webhook URL:**\n```text\n{{webhookUrl}}\n```": "**URL-адрес вебхука:**\n```text\n{{webhookUrl}}\n```",
"**Setup Instructions:**\n1. Copy the webhook URL below.\n2. In your Kallabot AI agent configuration, go to Actions/Webhooks settings .\n3. Enable webhooks and paste the webhook URL.\n4. Your agent will now send call data to this webhook when a call ends.": "**Инструкция:**\n1. Скопируйте URL-адрес вебхука ниже.\n2. В конфигурации агента Kallabot AI перейдите в настройки Actions/Webhooks .\n3. Включите вебхуки и вставьте URL-адрес вебхука.\n4. Ваш агент теперь будет отправлять данные по вызовам этому вебхуку после завершения звонка.",
"\n**Test URL:**\n\nIf you want to generate sample data without triggering the flow, append `/test` to your webhook URL.\n\n": "\n**Тестовый URL:**\n\nЕсли вы хотите сгенерировать образцы без срабатывания потока, добавьте `/test` в URL вашего вебхука.\n\n"
}

View File

@@ -0,0 +1,70 @@
{
"AI-powered voice agents and conversational interfaces.": "AI-powered voice agents and conversational interfaces.",
"\nFollow these steps to obtain your Kallbot API Key:\n\n1. Go to [Kallabot](https://kallabot.com/) and log in to your account.\n2. Click on your profile picture in the top right corner.\n3. Select **Settings** from the dropdown menu.\n4. Navigate to the **API & Integrations** tab.\n5. Copy the generated API key and paste it here.\n": "\nFollow these steps to obtain your Kallbot API Key:\n\n1. Go to [Kallabot](https://kallabot.com/) and log in to your account.\n2. Click on your profile picture in the top right corner.\n3. Select **Settings** from the dropdown menu.\n4. Navigate to the **API & Integrations** tab.\n5. Copy the generated API key and paste it here.\n",
"Make Call": "Make Call",
"Get Call Details": "Get Call Details",
"Get Contacts from List": "Get Contacts from List",
"Edit Contact List": "Edit Contact List",
"Add Contacts to List": "Add Contacts to List",
"Create Contact List": "Create Contact List",
"Create Campaign": "Create Campaign",
"Delete Campaign": "Delete Campaign",
"Initiate an outbound call using Kallabot AI agent.": "Initiate an outbound call using Kallabot AI agent.",
"Retrieve details of a specific call by call SID.": "Retrieve details of a specific call by call SID.",
"Retrieve all contacts from a specific contact list.": "Retrieve all contacts from a specific contact list.",
"Update/replace all contacts in an existing contact list.": "Update/replace all contacts in an existing contact list.",
"Add a contact or multiple contacts to an existing contact list.": "Add a contact or multiple contacts to an existing contact list.",
"Create a new contact list.": "Create a new contact list.",
"Create a new outbound calling campaign.": "Create a new outbound calling campaign.",
"Delete a campaign with optional contact list deletion.": "Delete a campaign with optional contact list deletion.",
"Agent": "Agent",
"Recipient Phone Number": "Recipient Phone Number",
"Sender Phone Number": "Sender Phone Number",
"Template Variables": "Template Variables",
"Webhook URL": "Webhook URL",
"Call SID": "Call SID",
"Contact List": "Contact List",
"Contacts": "Contacts",
"Contacts JSON": "Contacts JSON",
"List Name": "List Name",
"Description": "Description",
"Campaign Name": "Campaign Name",
"Sender Phone Numbers": "Sender Phone Numbers",
"Delay Between Calls (seconds)": "Delay Between Calls (seconds)",
"Scheduled Time": "Scheduled Time",
"Timezone": "Timezone",
"Rotate Numbers After": "Rotate Numbers After",
"Campaign ID": "Campaign ID",
"Delete Contact List": "Delete Contact List",
"Select the AI agent to use for the call.": "Select the AI agent to use for the call.",
"The phone number to call in E.164 format (e.g., +1234567890).": "The phone number to call in E.164 format (e.g., +1234567890).",
"The phone number to make the call from.": "The phone number to make the call from.",
"Variables to be used in the agent template (optional).": "Variables to be used in the agent template (optional).",
"URL to receive call status updates (optional).": "URL to receive call status updates (optional).",
"The unique identifier of the call.": "The unique identifier of the call.",
"Select the contact list to retrieve contacts from.": "Select the contact list to retrieve contacts from.",
"Select the contact list to edit.": "Select the contact list to edit.",
"JSON array of contacts to replace the entire list": "JSON array of contacts to replace the entire list",
"Select the contact list to add contacts to.": "Select the contact list to add contacts to.",
"JSON array of contacts to add to the list. Each contact must have phone_number and can include name and template_variables.": "JSON array of contacts to add to the list. Each contact must have phone_number and can include name and template_variables.",
"The name of the contact list.": "The name of the contact list.",
"A description of the contact list (optional).": "A description of the contact list (optional).",
"JSON array of contacts. Each contact must have phone_number and can include name, template_variables.": "JSON array of contacts. Each contact must have phone_number and can include name, template_variables.",
"The name of the campaign.": "The name of the campaign.",
"A description of the campaign (optional).": "A description of the campaign (optional).",
"Select the AI agent to use for the campaign.": "Select the AI agent to use for the campaign.",
"Select the contact list for the campaign.": "Select the contact list for the campaign.",
"Select phone numbers to use for making calls.": "Select phone numbers to use for making calls.",
"Time to wait between calls in seconds.": "Time to wait between calls in seconds.",
"When to start the campaign (format: YYYY-MM-DDTHH:MM:SS) ISO 8601.": "When to start the campaign (format: YYYY-MM-DDTHH:MM:SS) ISO 8601.",
"Timezone for the scheduled time (e.g., America/New_York).": "Timezone for the scheduled time (e.g., America/New_York).",
"Number of contacts to call before rotating to the next phone number.": "Number of contacts to call before rotating to the next phone number.",
"The ID of the campaign to delete.": "The ID of the campaign to delete.",
"Also delete the associated contact list (optional).": "Also delete the associated contact list (optional).",
"Call Events Webhook": "Call Events Webhook",
"Receives webhook data when call events occur from Kallabot AI agents.": "Receives webhook data when call events occur from Kallabot AI agents.",
"Markdown": "Markdown",
"**Webhook URL:**\n```text\n{{webhookUrl}}\n```": "**Webhook URL:**\n```text\n{{webhookUrl}}\n```",
"**Setup Instructions:**\n1. Copy the webhook URL below.\n2. In your Kallabot AI agent configuration, go to Actions/Webhooks settings .\n3. Enable webhooks and paste the webhook URL.\n4. Your agent will now send call data to this webhook when a call ends.": "**Setup Instructions:**\n1. Copy the webhook URL below.\n2. In your Kallabot AI agent configuration, go to Actions/Webhooks settings .\n3. Enable webhooks and paste the webhook URL.\n4. Your agent will now send call data to this webhook when a call ends.",
"\n**Test URL:**\n\nIf you want to generate sample data without triggering the flow, append `/test` to your webhook URL.\n\n": "\n**Test URL:**\n\nIf you want to generate sample data without triggering the flow, append `/test` to your webhook URL.\n\n"
}

View File

@@ -0,0 +1,27 @@
{
"Kallabot": "Kallabot",
"AI-powered voice agents and conversational interfaces.": "AI-powered voice agents and conversational interfaces.",
"\nFollow these steps to obtain your Kallbot API Key:\n\n1. Go to [Kallabot](https://kallabot.com/) and log in to your account.\n2. Click on your profile picture in the top right corner.\n3. Select **Settings** from the dropdown menu.\n4. Navigate to the **API & Integrations** tab.\n5. Copy the generated API key and paste it here.\n": "\nFollow these steps to obtain your Kallbot API Key:\n\n1. Go to [Kallabot](https://kallabot.com/) and log in to your account.\n2. Click on your profile picture in the top right corner.\n3. Select **Settings** from the dropdown menu.\n4. Navigate to the **API & Integrations** tab.\n5. Copy the generated API key and paste it here.\n",
"Make Call": "Make Call",
"Get Call Details": "Get Call Details",
"Initiate an outbound call using an AI voice agent.": "Initiate an outbound call using an AI voice agent.",
"Retrieve details of a specific call by call SID.": "Retrieve details of a specific call by call SID.",
"Agent": "Agent",
"Recipient Phone Number": "Recipient Phone Number",
"Sender Phone Number": "Sender Phone Number",
"Template Variables": "Template Variables",
"Webhook URL": "Webhook URL",
"Call SID": "Call SID",
"Select the agent to make the call.": "Select the agent to make the call.",
"The phone number to call in E.164 format (e.g., +1234567890).": "The phone number to call in E.164 format (e.g., +1234567890).",
"Select the phone number to send the call from.": "Select the phone number to send the call from.",
"Variables to replace placeholders in agent prompts. Only required if your agent prompts contain variables in {{variable.name}} format. Example: if prompt has {{customer.name}}, provide {\"customer\": {\"name\": \"John\"}}": "Variables to replace placeholders in agent prompts. Only required if your agent prompts contain variables in {{variable.name}} format. Example: if prompt has {{customer.name}}, provide {\"customer\": {\"name\": \"John\"}}",
"Optional webhook URL to receive call completion events. Use this for \"Respond and Wait for Next Webhook\" flows.": "Optional webhook URL to receive call completion events. Use this for \"Respond and Wait for Next Webhook\" flows.",
"The unique identifier of the call.": "The unique identifier of the call.",
"Call Events Webhook": "Call Events Webhook",
"Receives webhook data when call events occur from Kallabot AI agents.": "Receives webhook data when call events occur from Kallabot AI agents.",
"Markdown": "Markdown",
"**Webhook URL:**\n```text\n{{webhookUrl}}\n```": "**Webhook URL:**\n```text\n{{webhookUrl}}\n```",
"**Setup Instructions:**\n1. Copy the webhook URL below.\n2. In your Kallabot AI agent configuration, go to Actions/Webhooks settings .\n3. Enable webhooks and paste the webhook URL.\n4. Your agent will now send call data to this webhook when a call ends.": "**Setup Instructions:**\n1. Copy the webhook URL below.\n2. In your Kallabot AI agent configuration, go to Actions/Webhooks settings .\n3. Enable webhooks and paste the webhook URL.\n4. Your agent will now send call data to this webhook when a call ends.",
"\n**Test URL:**\n\nIf you want to generate sample data without triggering the flow, append `/test` to your webhook URL.\n\n": "\n**Test URL:**\n\nIf you want to generate sample data without triggering the flow, append `/test` to your webhook URL.\n\n"
}

View File

@@ -0,0 +1,70 @@
{
"AI-powered voice agents and conversational interfaces.": "AI-powered voice agents and conversational interfaces.",
"\nFollow these steps to obtain your Kallbot API Key:\n\n1. Go to [Kallabot](https://kallabot.com/) and log in to your account.\n2. Click on your profile picture in the top right corner.\n3. Select **Settings** from the dropdown menu.\n4. Navigate to the **API & Integrations** tab.\n5. Copy the generated API key and paste it here.\n": "\nFollow these steps to obtain your Kallbot API Key:\n\n1. Go to [Kallabot](https://kallabot.com/) and log in to your account.\n2. Click on your profile picture in the top right corner.\n3. Select **Settings** from the dropdown menu.\n4. Navigate to the **API & Integrations** tab.\n5. Copy the generated API key and paste it here.\n",
"Make Call": "Make Call",
"Get Call Details": "Get Call Details",
"Get Contacts from List": "Get Contacts from List",
"Edit Contact List": "Edit Contact List",
"Add Contacts to List": "Add Contacts to List",
"Create Contact List": "Create Contact List",
"Create Campaign": "Create Campaign",
"Delete Campaign": "Delete Campaign",
"Initiate an outbound call using Kallabot AI agent.": "Initiate an outbound call using Kallabot AI agent.",
"Retrieve details of a specific call by call SID.": "Retrieve details of a specific call by call SID.",
"Retrieve all contacts from a specific contact list.": "Retrieve all contacts from a specific contact list.",
"Update/replace all contacts in an existing contact list.": "Update/replace all contacts in an existing contact list.",
"Add a contact or multiple contacts to an existing contact list.": "Add a contact or multiple contacts to an existing contact list.",
"Create a new contact list.": "Create a new contact list.",
"Create a new outbound calling campaign.": "Create a new outbound calling campaign.",
"Delete a campaign with optional contact list deletion.": "Delete a campaign with optional contact list deletion.",
"Agent": "Agent",
"Recipient Phone Number": "Recipient Phone Number",
"Sender Phone Number": "Sender Phone Number",
"Template Variables": "Template Variables",
"Webhook URL": "Webhook URL",
"Call SID": "Call SID",
"Contact List": "Contact List",
"Contacts": "Contacts",
"Contacts JSON": "Contacts JSON",
"List Name": "List Name",
"Description": "描述",
"Campaign Name": "Campaign Name",
"Sender Phone Numbers": "Sender Phone Numbers",
"Delay Between Calls (seconds)": "Delay Between Calls (seconds)",
"Scheduled Time": "Scheduled Time",
"Timezone": "Timezone",
"Rotate Numbers After": "Rotate Numbers After",
"Campaign ID": "Campaign ID",
"Delete Contact List": "Delete Contact List",
"Select the AI agent to use for the call.": "Select the AI agent to use for the call.",
"The phone number to call in E.164 format (e.g., +1234567890).": "The phone number to call in E.164 format (e.g., +1234567890).",
"The phone number to make the call from.": "The phone number to make the call from.",
"Variables to be used in the agent template (optional).": "Variables to be used in the agent template (optional).",
"URL to receive call status updates (optional).": "URL to receive call status updates (optional).",
"The unique identifier of the call.": "The unique identifier of the call.",
"Select the contact list to retrieve contacts from.": "Select the contact list to retrieve contacts from.",
"Select the contact list to edit.": "Select the contact list to edit.",
"JSON array of contacts to replace the entire list": "JSON array of contacts to replace the entire list",
"Select the contact list to add contacts to.": "Select the contact list to add contacts to.",
"JSON array of contacts to add to the list. Each contact must have phone_number and can include name and template_variables.": "JSON array of contacts to add to the list. Each contact must have phone_number and can include name and template_variables.",
"The name of the contact list.": "The name of the contact list.",
"A description of the contact list (optional).": "A description of the contact list (optional).",
"JSON array of contacts. Each contact must have phone_number and can include name, template_variables.": "JSON array of contacts. Each contact must have phone_number and can include name, template_variables.",
"The name of the campaign.": "The name of the campaign.",
"A description of the campaign (optional).": "A description of the campaign (optional).",
"Select the AI agent to use for the campaign.": "Select the AI agent to use for the campaign.",
"Select the contact list for the campaign.": "Select the contact list for the campaign.",
"Select phone numbers to use for making calls.": "Select phone numbers to use for making calls.",
"Time to wait between calls in seconds.": "Time to wait between calls in seconds.",
"When to start the campaign (format: YYYY-MM-DDTHH:MM:SS) ISO 8601.": "When to start the campaign (format: YYYY-MM-DDTHH:MM:SS) ISO 8601.",
"Timezone for the scheduled time (e.g., America/New_York).": "Timezone for the scheduled time (e.g., America/New_York).",
"Number of contacts to call before rotating to the next phone number.": "Number of contacts to call before rotating to the next phone number.",
"The ID of the campaign to delete.": "The ID of the campaign to delete.",
"Also delete the associated contact list (optional).": "Also delete the associated contact list (optional).",
"Call Events Webhook": "Call Events Webhook",
"Receives webhook data when call events occur from Kallabot AI agents.": "Receives webhook data when call events occur from Kallabot AI agents.",
"Markdown": "Markdown",
"**Webhook URL:**\n```text\n{{webhookUrl}}\n```": "**Webhook URL:**\n```text\n{{webhookUrl}}\n```",
"**Setup Instructions:**\n1. Copy the webhook URL below.\n2. In your Kallabot AI agent configuration, go to Actions/Webhooks settings .\n3. Enable webhooks and paste the webhook URL.\n4. Your agent will now send call data to this webhook when a call ends.": "**Setup Instructions:**\n1. Copy the webhook URL below.\n2. In your Kallabot AI agent configuration, go to Actions/Webhooks settings .\n3. Enable webhooks and paste the webhook URL.\n4. Your agent will now send call data to this webhook when a call ends.",
"\n**Test URL:**\n\nIf you want to generate sample data without triggering the flow, append `/test` to your webhook URL.\n\n": "\n**Test URL:**\n\nIf you want to generate sample data without triggering the flow, append `/test` to your webhook URL.\n\n"
}

View File

@@ -0,0 +1,51 @@
import {
createPiece,
PieceAuth,
} from '@activepieces/pieces-framework';
import { PieceCategory } from '@activepieces/shared';
import { makeCallAction } from './lib/actions/make-call';
import { getCallDetailsAction } from './lib/actions/get-call-details';
import { addContactToListAction } from './lib/actions/add-contact-to-list';
import { createContactListAction } from './lib/actions/create-contact-list';
import { createCampaignAction } from './lib/actions/create-campaign';
import { deleteCampaignAction } from './lib/actions/delete-campaign';
import { callEventsTrigger } from './lib/triggers/call-events';
import { getContactsFromListAction } from './lib/actions/get-contacts-from-list';
import { editContactListAction } from './lib/actions/edit-contact-list';
const authDescription = `
Follow these steps to obtain your Kallbot API Key:
1. Go to [Kallabot](https://kallabot.com/) and log in to your account.
2. Click on your profile picture in the top right corner.
3. Select **Settings** from the dropdown menu.
4. Navigate to the **API & Integrations** tab.
5. Copy the generated API key and paste it here.
`;
export const kallabotAuth = PieceAuth.SecretText({
description: authDescription,
displayName: 'API Key',
required: true
});
export const kallabotAi = createPiece({
displayName: 'Kallabot',
minimumSupportedRelease: '0.36.1',
logoUrl: 'https://cdn.activepieces.com/pieces/kallabot-ai.png',
categories: [PieceCategory.ARTIFICIAL_INTELLIGENCE],
authors: ['abdulrahmanmajid'],
auth: kallabotAuth,
actions: [
makeCallAction,
getCallDetailsAction,
getContactsFromListAction,
editContactListAction,
addContactToListAction,
createContactListAction,
createCampaignAction,
deleteCampaignAction
],
triggers: [callEventsTrigger],
description: 'AI-powered voice agents and conversational interfaces.',
});

View File

@@ -0,0 +1,137 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { httpClient, HttpMethod } from '@activepieces/pieces-common';
import { kallabotAuth } from '../..';
export const addContactToListAction = createAction({
name: 'add-contact-to-list',
displayName: 'Add Contacts to List',
description: 'Add a contact or multiple contacts to an existing contact list.',
auth: kallabotAuth,
props: {
list_id: Property.Dropdown({
auth: kallabotAuth,
displayName: 'Contact List',
description: 'Select the contact list to add contacts to.',
required: true,
refreshers: [],
options: async ({ auth }) => {
if (!auth) {
return {
disabled: true,
options: [],
placeholder: 'Please connect your account first'
};
}
try {
const response = await httpClient.sendRequest({
method: HttpMethod.GET,
url: 'https://api.kallabot.com/contacts/lists',
headers: {
'Authorization': `Bearer ${auth.secret_text}`,
'Content-Type': 'application/json'
}
});
// Handle different response structures
let lists: any[] = [];
if (Array.isArray(response.body)) {
lists = response.body;
} else if (response.body && Array.isArray(response.body.data)) {
lists = response.body.data;
} else if (response.body && Array.isArray(response.body.lists)) {
lists = response.body.lists;
} else if (response.body && Array.isArray(response.body.contact_lists)) {
lists = response.body.contact_lists;
} else {
console.error('Unexpected API response structure:', response.body);
return {
disabled: true,
options: [],
placeholder: 'Invalid response format from API'
};
}
if (!Array.isArray(lists)) {
console.error('Lists is not an array:', lists);
return {
disabled: true,
options: [],
placeholder: 'Invalid data format'
};
}
return {
options: lists.map(list => {
const listId = list.list_id || list.id;
const listName = list.name || 'Unnamed List';
const shortId = listId ? listId.substring(0, 8) + '...' : 'xxxxxxxx...';
return {
label: `(${shortId}) ${listName} (${list.contact_count || 0} contacts)`,
value: listId
};
})
};
} catch (error) {
console.error('Error fetching contact lists:', error);
return {
disabled: true,
options: [],
placeholder: 'Error loading contact lists'
};
}
}
}),
contacts: Property.Json({
displayName: 'Contacts JSON',
description: 'JSON array of contacts to add to the list. Each contact must have phone_number and can include name and template_variables.',
required: true,
defaultValue: [
{
"phone_number": "+1234567890",
"name": "John Smith",
"template_variables": {
"first_name": "John",
"last_name": "Smith",
"company": "Acme Corp",
"custom_field": "value"
}
},
{
"phone_number": "+1987654321",
"name": "Jane Doe",
"template_variables": {
"first_name": "Jane",
"last_name": "Doe",
"company": "Tech Solutions",
"priority": "high"
}
}
]
})
},
async run(context) {
const contacts = context.propsValue.contacts || [];
if (!Array.isArray(contacts) || contacts.length === 0) {
throw new Error('At least one contact must be provided');
}
const payload = {
contacts: contacts
};
const response = await httpClient.sendRequest({
method: HttpMethod.POST,
url: `https://api.kallabot.com/contacts/${context.propsValue.list_id}/add`,
headers: {
'Authorization': `Bearer ${context.auth}`,
'Content-Type': 'application/json'
},
body: payload
});
return response.body;
}
});

View File

@@ -0,0 +1,294 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { httpClient, HttpMethod } from '@activepieces/pieces-common';
import { kallabotAuth } from '../..';
export const createCampaignAction = createAction({
name: 'create-campaign',
displayName: 'Create Campaign',
description: 'Create a new outbound calling campaign.',
auth: kallabotAuth,
props: {
name: Property.ShortText({
displayName: 'Campaign Name',
description: 'The name of the campaign.',
required: true
}),
description: Property.LongText({
displayName: 'Description',
description: 'A description of the campaign (optional).',
required: false
}),
agent_id: Property.Dropdown({
displayName: 'Agent',
description: 'Select the AI agent to use for the campaign.',
required: true,
refreshers: ['auth'],
auth: kallabotAuth,
options: async ({ auth }) => {
if (!auth) {
return {
disabled: true,
options: [],
placeholder: 'Please connect your account first'
};
}
try {
const response = await httpClient.sendRequest({
method: HttpMethod.GET,
url: 'https://api.kallabot.com/agents',
headers: {
'Authorization': `Bearer ${auth.secret_text}`,
'Content-Type': 'application/json'
}
});
let agents = response.body;
// Handle different response structures
if (agents && typeof agents === 'object') {
if (agents.data && Array.isArray(agents.data)) {
agents = agents.data;
}
else if (agents.agents && Array.isArray(agents.agents)) {
agents = agents.agents;
}
else if (!Array.isArray(agents)) {
console.warn('Agents response is not an array:', agents);
return {
disabled: true,
options: [],
placeholder: 'Invalid response format from API'
};
}
}
if (!Array.isArray(agents)) {
console.warn('Agents is not an array after processing:', agents);
return {
disabled: true,
options: [],
placeholder: 'Invalid agents data format'
};
}
// Filter out inbound-only agents
const outboundAgents = agents.filter(agent => agent.call_direction !== 'inbound');
return {
options: outboundAgents.map(agent => {
const agentId = agent.agent_id || agent.id;
const agentName = agent.name || 'Unnamed Agent';
const shortId = agentId ? agentId.substring(0, 8) + '...' : 'xxxxxxxx...';
return {
label: `(${shortId}) ${agentName}`,
value: agentId
};
})
};
} catch (error) {
console.error('Error fetching agents:', error);
console.error('Error details:', error instanceof Error ? error.message : String(error));
return {
disabled: true,
options: [],
placeholder: `Error loading agents: ${error instanceof Error ? error.message : 'Network error'}`
};
}
}
}),
list_id: Property.Dropdown({
displayName: 'Contact List',
description: 'Select the contact list for the campaign.',
required: true,
refreshers: ['auth'],
auth: kallabotAuth,
options: async ({ auth }) => {
if (!auth) {
return {
disabled: true,
options: [],
placeholder: 'Please connect your account first'
};
}
try {
const response = await httpClient.sendRequest({
method: HttpMethod.GET,
url: 'https://api.kallabot.com/contacts/lists',
headers: {
'Authorization': `Bearer ${auth.secret_text}`,
'Content-Type': 'application/json'
}
});
let lists: any[] = [];
if (Array.isArray(response.body)) {
lists = response.body;
} else if (response.body && Array.isArray(response.body.data)) {
lists = response.body.data;
} else if (response.body && Array.isArray(response.body.lists)) {
lists = response.body.lists;
} else if (response.body && Array.isArray(response.body.contact_lists)) {
lists = response.body.contact_lists;
} else {
console.error('Unexpected API response structure:', response.body);
return {
disabled: true,
options: [],
placeholder: 'Invalid response format from API'
};
}
if (!Array.isArray(lists)) {
console.error('Lists is not an array:', lists);
return {
disabled: true,
options: [],
placeholder: 'Invalid data format'
};
}
return {
options: lists.map(list => {
const listId = list.list_id || list.id;
const listName = list.name || 'Unnamed List';
const shortId = listId ? listId.substring(0, 8) + '...' : 'xxxxxxxx...';
return {
label: `(${shortId}) ${listName} (${list.contact_count || 0} contacts)`,
value: listId
};
})
};
} catch (error) {
console.error('Error fetching contact lists:', error);
return {
disabled: true,
options: [],
placeholder: 'Error loading contact lists'
};
}
}
}),
sender_phone_numbers: Property.MultiSelectDropdown({
displayName: 'Sender Phone Numbers',
description: 'Select phone numbers to use for making calls.',
required: true,
refreshers: ['auth'],
auth: kallabotAuth,
options: async ({ auth }) => {
if (!auth) {
return {
disabled: true,
options: [],
placeholder: 'Please connect your account first'
};
}
try {
const response = await httpClient.sendRequest({
method: HttpMethod.GET,
url: 'https://api.kallabot.com/account-phone-numbers',
headers: {
'Authorization': `Bearer ${auth.secret_text}`,
'Content-Type': 'application/json'
}
});
let phoneNumbers: any[] = [];
if (Array.isArray(response.body)) {
phoneNumbers = response.body;
} else if (response.body && Array.isArray(response.body.data)) {
phoneNumbers = response.body.data;
} else if (response.body && Array.isArray(response.body.phone_numbers)) {
phoneNumbers = response.body.phone_numbers;
} else {
console.error('Unexpected API response structure:', response.body);
return {
disabled: true,
options: [],
placeholder: 'Invalid response format from API'
};
}
if (!Array.isArray(phoneNumbers)) {
console.error('Phone numbers is not an array:', phoneNumbers);
return {
disabled: true,
options: [],
placeholder: 'Invalid data format'
};
}
return {
disabled: false,
options: phoneNumbers.map(number => ({
label: `${number.phone_number || number.number} (${number.friendly_name || 'No name'})`,
value: number.phone_number || number.number
}))
};
} catch (error) {
console.error('Error fetching phone numbers:', error);
return {
disabled: true,
options: [],
placeholder: 'Error loading phone numbers'
};
}
}
}),
delay_between_calls: Property.Number({
displayName: 'Delay Between Calls (seconds)',
description: 'Time to wait between calls in seconds.',
required: false,
defaultValue: 10
}),
scheduled_time: Property.DateTime({
displayName: 'Scheduled Time',
description: 'When to start the campaign (format: YYYY-MM-DDTHH:MM:SS) ISO 8601.',
required: true,
defaultValue: '2026-08-01T13:15:00'
}),
timezone: Property.ShortText({
displayName: 'Timezone',
description: 'Timezone for the scheduled time (e.g., America/New_York).',
required: false,
defaultValue: 'UTC'
}),
rotate_numbers_after: Property.Number({
displayName: 'Rotate Numbers After',
description: 'Number of contacts to call before rotating to the next phone number.',
required: false,
defaultValue: 60
})
},
async run(context) {
const payload: any = {
name: context.propsValue.name,
list_id: context.propsValue.list_id,
agent_id: context.propsValue.agent_id,
sender_phone_numbers: context.propsValue.sender_phone_numbers || [],
delay_between_calls: context.propsValue.delay_between_calls || 10,
scheduled_time: new Date(context.propsValue.scheduled_time).toISOString().slice(0, 19),
timezone: context.propsValue.timezone || 'UTC',
rotate_numbers_after: context.propsValue.rotate_numbers_after || 10
};
if (context.propsValue.description) {
payload.description = context.propsValue.description;
}
const response = await httpClient.sendRequest({
method: HttpMethod.POST,
url: 'https://api.kallabot.com/campaign',
headers: {
'Authorization': `Bearer ${context.auth.secret_text}`,
'Content-Type': 'application/json'
},
body: payload
});
return response.body;
}
});

View File

@@ -0,0 +1,72 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { httpClient, HttpMethod } from '@activepieces/pieces-common';
import { kallabotAuth } from '../..';
export const createContactListAction = createAction({
name: 'create-contact-list',
displayName: 'Create Contact List',
description: 'Create a new contact list.',
auth: kallabotAuth,
props: {
name: Property.ShortText({
displayName: 'List Name',
description: 'The name of the contact list.',
required: true
}),
description: Property.LongText({
displayName: 'Description',
description: 'A description of the contact list (optional).',
required: false
}),
contacts: Property.Json({
displayName: 'Contacts JSON',
description: 'JSON array of contacts. Each contact must have phone_number and can include name, template_variables.',
required: true,
defaultValue: [
{
"phone_number": "+1234567890",
"name": "John Smith",
"template_variables": {
"first_name": "John",
"last_name": "Smith",
"company": "Acme Corp",
"custom_field": "value"
}
},
{
"phone_number": "+1987654321",
"name": "Jane Doe",
"template_variables": {
"first_name": "Jane",
"last_name": "Doe",
"company": "Tech Solutions",
"priority": "high"
}
}
]
})
},
async run(context) {
const payload: any = {
name: context.propsValue.name,
contacts: context.propsValue.contacts || []
};
if (context.propsValue.description) {
payload.description = context.propsValue.description;
}
const response = await httpClient.sendRequest({
method: HttpMethod.POST,
url: 'https://api.kallabot.com/contacts',
headers: {
'Authorization': `Bearer ${context.auth.secret_text}`,
'Content-Type': 'application/json'
},
body: payload
});
return response.body;
}
});

View File

@@ -0,0 +1,42 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { httpClient, HttpMethod } from '@activepieces/pieces-common';
import { kallabotAuth } from '../..';
export const deleteCampaignAction = createAction({
name: 'delete-campaign',
displayName: 'Delete Campaign',
description: 'Delete a campaign with optional contact list deletion.',
auth: kallabotAuth,
props: {
campaign_id: Property.ShortText({
displayName: 'Campaign ID',
description: 'The ID of the campaign to delete.',
required: true
}),
delete_contact_list: Property.Checkbox({
displayName: 'Delete Contact List',
description: 'Also delete the associated contact list (optional).',
required: false,
defaultValue: false
})
},
async run(context) {
const params = new URLSearchParams();
if (context.propsValue.delete_contact_list) {
params.append('delete_contact_list', 'true');
}
const url = `https://api.kallabot.com/campaign/${context.propsValue.campaign_id}${params.toString() ? '?' + params.toString() : ''}`;
const response = await httpClient.sendRequest({
method: HttpMethod.DELETE,
url: url,
headers: {
'Authorization': `Bearer ${context.auth.secret_text}`,
'Content-Type': 'application/json'
}
});
return response.body;
}
});

View File

@@ -0,0 +1,183 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { httpClient, HttpMethod } from '@activepieces/pieces-common';
import { kallabotAuth } from '../..';
export const editContactListAction = createAction({
name: 'edit-contact-list',
displayName: 'Edit Contact List',
description: 'Update/replace all contacts in an existing contact list.',
auth: kallabotAuth,
props: {
list_id: Property.Dropdown({
auth: kallabotAuth,
displayName: 'Contact List',
description: 'Select the contact list to edit.',
required: true,
refreshers: [],
options: async ({ auth }) => {
if (!auth) {
return {
disabled: true,
options: [],
placeholder: 'Please connect your account first'
};
}
try {
const response = await httpClient.sendRequest({
method: HttpMethod.GET,
url: 'https://api.kallabot.com/contacts/lists',
headers: {
'Authorization': `Bearer ${auth.secret_text}`,
'Content-Type': 'application/json'
}
});
let lists: any[] = [];
if (Array.isArray(response.body)) {
lists = response.body;
} else if (response.body && Array.isArray(response.body.data)) {
lists = response.body.data;
} else if (response.body && Array.isArray(response.body.lists)) {
lists = response.body.lists;
} else if (response.body && Array.isArray(response.body.contact_lists)) {
lists = response.body.contact_lists;
} else {
return {
disabled: true,
options: [],
placeholder: 'Invalid response format from API'
};
}
return {
options: lists.map(list => {
const listId = list.list_id || list.id;
const listName = list.name || 'Unnamed List';
const shortId = listId ? listId.substring(0, 8) + '...' : 'xxxxxxxx...';
return {
label: `(${shortId}) ${listName} (${list.contact_count || 0} contacts)`,
value: listId
};
})
};
} catch (error) {
return {
disabled: true,
options: [],
placeholder: 'Error loading contact lists'
};
}
}
}),
contacts: Property.DynamicProperties({
auth: kallabotAuth,
displayName: 'Contacts',
description: 'JSON array of contacts to replace the entire list',
required: true,
refreshers: ['list_id'],
props: async ({ list_id, auth }) => {
if (!list_id || !auth) {
return {
contacts: Property.Json({
displayName: 'Contacts JSON',
description: 'JSON array of contacts to replace the entire list. Each contact must have phone_number and can include name and template_variables.',
required: true,
defaultValue: [
{
"phone_number": "+1234567890",
"name": "Sample Contact",
"template_variables": {}
}
]
})
};
}
try {
// Use the correct endpoint format with query parameter
const response = await httpClient.sendRequest({
method: HttpMethod.GET,
url: `https://api.kallabot.com/contacts?list_id=${list_id}`,
headers: {
'Authorization': `Bearer ${auth}`,
'Content-Type': 'application/json'
}
});
let contacts: any[] = [];
if (Array.isArray(response.body)) {
contacts = response.body;
} else if (response.body && Array.isArray(response.body.contacts)) {
contacts = response.body.contacts;
} else if (response.body && Array.isArray(response.body.data)) {
contacts = response.body.data;
} else {
contacts = [];
}
const formattedContacts = contacts.map(contact => ({
phone_number: contact.phone_number || contact.phone || '',
name: contact.name || '',
template_variables: contact.template_variables || contact.custom_fields || {}
})).filter(contact => contact.phone_number);
return {
contacts: Property.Json({
displayName: 'Contacts JSON',
description: `Current contacts from list. Edit this JSON to update the entire list.`,
required: true,
defaultValue: formattedContacts.length > 0 ? formattedContacts : [
{
"phone_number": "+1234567890",
"name": "New Contact",
"template_variables": {}
}
]
})
};
} catch (error) {
return {
contacts: Property.Json({
displayName: 'Contacts JSON',
description: 'Could not load contacts. Please enter manually.',
required: true,
defaultValue: [
{
"phone_number": "+1234567890",
"name": "New Contact",
"template_variables": {}
}
]
})
};
}
}
})
},
async run(context) {
// Fix the TypeScript error by using bracket notation for DynamicProperties
const contacts = context.propsValue['contacts']?.['contacts'] || [];
if (!Array.isArray(contacts) || contacts.length === 0) {
throw new Error('At least one contact must be provided');
}
const payload = {
contacts: contacts
};
const response = await httpClient.sendRequest({
method: HttpMethod.PUT,
url: `https://api.kallabot.com/contacts/${context.propsValue.list_id}`,
headers: {
'Authorization': `Bearer ${context.auth}`,
'Content-Type': 'application/json'
},
body: payload
});
return response.body;
}
});

View File

@@ -0,0 +1,68 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { httpClient, HttpMethod } from '@activepieces/pieces-common';
import { kallabotAuth } from '../..';
export const getCallDetailsAction = createAction({
name: 'get-call-details',
displayName: 'Get Call Details',
description: 'Retrieve details of a specific call by call SID.',
auth: kallabotAuth,
props: {
call_sid: Property.ShortText({
displayName: 'Call SID',
description: 'The unique identifier of the call.',
required: true,
})
},
async run(context) {
const response = await httpClient.sendRequest({
method: HttpMethod.GET,
url: `https://api.kallabot.com/call-details/${context.propsValue.call_sid}`,
headers: {
'Authorization': `Bearer ${context.auth.secret_text}`,
'Content-Type': 'application/json'
}
});
// Mock response data for development/testing
const mockResponse = {
call_sid: context.propsValue.call_sid,
agent_id: "agent-123e4567-e89b-12d3-a456-426614174000",
account_id: "account-123e4567-e89b-12d3-a456-426614174000",
from_number: "+1234567890",
to_number: "+0987654321",
duration: 120.5,
recording_url: "https://api.twilio.com/2010-04-01/Accounts/AC123/Recordings/RE123.wav",
transcription: {
conversation: [
{
speaker: "agent",
message: "Hello! This is regarding your recent order cancellation. How can I help you today?",
timestamp: "2024-01-15T10:30:05Z"
},
{
speaker: "customer",
message: "Hi, yes I cancelled my order because I found a better price elsewhere.",
timestamp: "2024-01-15T10:30:15Z"
},
{
speaker: "agent",
message: "I understand. Would you be interested if I could match that price for you?",
timestamp: "2024-01-15T10:30:25Z"
}
],
sentiment: "neutral",
summary: "Customer cancelled order due to price. Interested in price matching discussion."
},
status: "completed",
call_type: "outbound",
cost: 0.25,
created_at: "2024-01-15T10:30:00Z",
transferred: false,
transfer_info: null
};
// Return actual response in production, mock data for development
return process.env['NODE_ENV'] === 'development' ? mockResponse : response.body;
}
});

View File

@@ -0,0 +1,99 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { httpClient, HttpMethod } from '@activepieces/pieces-common';
import { kallabotAuth } from '../..';
export const getContactsFromListAction = createAction({
name: 'get-contacts-from-list',
displayName: 'Get Contacts from List',
description: 'Retrieve all contacts from a specific contact list.',
auth: kallabotAuth,
props: {
list_id: Property.Dropdown({
displayName: 'Contact List',
description: 'Select the contact list to retrieve contacts from.',
required: true,
auth: kallabotAuth,
refreshers: [],
options: async ({ auth }) => {
if (!auth) {
return {
disabled: true,
options: [],
placeholder: 'Please connect your account first'
};
}
try {
const response = await httpClient.sendRequest({
method: HttpMethod.GET,
url: 'https://api.kallabot.com/contacts/lists',
headers: {
'Authorization': `Bearer ${auth.secret_text}`,
'Content-Type': 'application/json'
}
});
// Handle different response structures
let lists: any[] = [];
if (Array.isArray(response.body)) {
lists = response.body;
} else if (response.body && Array.isArray(response.body.data)) {
lists = response.body.data;
} else if (response.body && Array.isArray(response.body.lists)) {
lists = response.body.lists;
} else if (response.body && Array.isArray(response.body.contact_lists)) {
lists = response.body.contact_lists;
} else {
console.error('Unexpected API response structure:', response.body);
return {
disabled: true,
options: [],
placeholder: 'Invalid response format from API'
};
}
if (!Array.isArray(lists)) {
console.error('Lists is not an array:', lists);
return {
disabled: true,
options: [],
placeholder: 'Invalid data format'
};
}
return {
options: lists.map(list => {
const listId = list.list_id || list.id;
const listName = list.name || 'Unnamed List';
const shortId = listId ? listId.substring(0, 8) + '...' : 'xxxxxxxx...';
return {
label: `(${shortId}) ${listName} (${list.contact_count || 0} contacts)`,
value: listId
};
})
};
} catch (error) {
console.error('Error fetching contact lists:', error);
return {
disabled: true,
options: [],
placeholder: 'Error loading contact lists'
};
}
}
})
},
async run(context) {
const response = await httpClient.sendRequest({
method: HttpMethod.GET,
url: `https://api.kallabot.com/contacts?list_id=${context.propsValue.list_id}`,
headers: {
'Authorization': `Bearer ${context.auth}`,
'Content-Type': 'application/json'
}
});
return response.body;
}
});

View File

@@ -0,0 +1,226 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { httpClient, HttpMethod } from '@activepieces/pieces-common';
import { kallabotAuth } from '../..';
export const makeCallAction = createAction({
name: 'make-call',
displayName: 'Make Call',
description: 'Initiate an outbound call using Kallabot AI agent.',
auth: kallabotAuth,
props: {
agent_id: Property.Dropdown({
displayName: 'Agent',
description: 'Select the AI agent to use for the call.',
required: true,
refreshers: ['auth'],
auth: kallabotAuth,
options: async ({ auth }) => {
if (!auth) {
return {
disabled: true,
options: [],
placeholder: 'Please connect your account first'
};
}
try {
const response = await httpClient.sendRequest({
method: HttpMethod.GET,
url: 'https://api.kallabot.com/agents',
headers: {
'Authorization': `Bearer ${auth.secret_text}`,
'Content-Type': 'application/json'
}
});
let agents = response.body;
if (agents && typeof agents === 'object') {
if (agents.data && Array.isArray(agents.data)) {
agents = agents.data;
}
else if (agents.agents && Array.isArray(agents.agents)) {
agents = agents.agents;
}
else if (!Array.isArray(agents)) {
return {
disabled: true,
options: [],
placeholder: 'Invalid response format from API'
};
}
}
if (!Array.isArray(agents)) {
return {
disabled: true,
options: [],
placeholder: 'Invalid agents data format'
};
}
const outboundAgents = agents.filter(agent => agent.call_direction !== 'inbound');
return {
options: outboundAgents.map(agent => {
const agentId = agent.agent_id || agent.id;
const agentName = agent.name || 'Unnamed Agent';
const shortId = agentId ? agentId.substring(0, 8) + '...' : 'xxxxxxxx...';
return {
label: `(${shortId}) ${agentName}`,
value: agentId
};
})
};
} catch (error) {
console.error('Error fetching agents:', error);
return {
disabled: true,
options: [],
placeholder: `Error loading agents: ${error instanceof Error ? error.message : 'Network error'}`
};
}
}
}),
recipient_phone_number: Property.ShortText({
displayName: 'Recipient Phone Number',
description: 'The phone number to call in E.164 format (e.g., +1234567890).',
required: true,
}),
sender_phone_number: Property.Dropdown({
displayName: 'Sender Phone Number',
description: 'The phone number to make the call from.',
required: true,
refreshers: ['auth'],
auth: kallabotAuth,
options: async ({ auth }) => {
if (!auth) {
return {
disabled: true,
options: [],
placeholder: 'Please connect your account first'
};
}
try {
const response = await httpClient.sendRequest({
method: HttpMethod.GET,
url: 'https://api.kallabot.com/account-phone-numbers',
headers: {
'Authorization': `Bearer ${auth.secret_text}`,
'Content-Type': 'application/json'
}
});
let phoneNumbers = response.body;
// Handle different response structures
if (phoneNumbers && typeof phoneNumbers === 'object') {
// If response has a data property containing the array
if (phoneNumbers.data && Array.isArray(phoneNumbers.data)) {
phoneNumbers = phoneNumbers.data;
}
// If response has a phone_numbers property containing the array
else if (phoneNumbers.phone_numbers && Array.isArray(phoneNumbers.phone_numbers)) {
phoneNumbers = phoneNumbers.phone_numbers;
}
// If response is not an array, try to convert or handle gracefully
else if (!Array.isArray(phoneNumbers)) {
console.warn('Phone numbers response is not an array:', phoneNumbers);
return {
disabled: true,
options: [],
placeholder: 'Invalid response format from API'
};
}
}
// Ensure phoneNumbers is an array before mapping
if (!Array.isArray(phoneNumbers)) {
console.warn('Phone numbers is not an array after processing:', phoneNumbers);
return {
disabled: true,
options: [],
placeholder: 'Invalid phone numbers data format'
};
}
return {
options: phoneNumbers.map(phone => {
const phoneNumber = phone.phone_number || phone.number || 'Unknown Number';
const friendlyName = phone.friendly_name || phone.name || phoneNumber;
return {
label: `(${phoneNumber}) ${friendlyName}`,
value: phoneNumber
};
})
};
} catch (error) {
console.error('Error fetching phone numbers:', error);
return {
disabled: true,
options: [],
placeholder: 'Error loading phone numbers'
};
}
}
}),
template_variables: Property.Object({
displayName: 'Template Variables',
description: 'Variables to be used in the agent template (optional).',
required: false
}),
webhook_url: Property.ShortText({
displayName: 'Webhook URL',
description: 'URL to receive call status updates (optional).',
required: false
})
},
async run(context) {
const { agent_id, recipient_phone_number, sender_phone_number, template_variables, webhook_url } = context.propsValue;
const requestBody: any = {
agent_id,
recipient_phone_number,
sender_phone_number,
};
if (template_variables) {
requestBody.template_variables = template_variables;
}
if (webhook_url) {
requestBody.webhook_url = webhook_url;
}
try {
const response = await httpClient.sendRequest({
method: HttpMethod.POST,
url: 'https://api.kallabot.com/call',
headers: {
'Authorization': `Bearer ${context.auth}`,
'Content-Type': 'application/json'
},
body: requestBody
});
return {
success: true,
call_id: response.body.call_id || response.body.id,
status: response.body.status || 'initiated',
message: 'Call initiated successfully',
response: response.body
};
} catch (error) {
console.error('Error making call:', error);
let errorMessage = 'Failed to initiate call';
if (error && typeof error === 'object') {
const err = error as any;
if (err.response && err.response.body) {
errorMessage = err.response.body.message || err.response.body.error || errorMessage;
} else if (err.message) {
errorMessage = err.message;
}
}
throw new Error(`Failed to initiate call: ${errorMessage}`);
}
}
});

View File

@@ -0,0 +1,96 @@
import {
createTrigger,
TriggerStrategy,
Property,
} from '@activepieces/pieces-framework';
import { MarkdownVariant } from '@activepieces/shared';
const webhookInstructions = `**Setup Instructions:**
1. Copy the webhook URL below.
2. In your Kallabot AI agent configuration, go to Actions/Webhooks settings .
3. Enable webhooks and paste the webhook URL.
4. Your agent will now send call data to this webhook when a call ends.`;
const testInstructions = `
**Test URL:**
If you want to generate sample data without triggering the flow, append \`/test\` to your webhook URL.
`;
export const callEventsTrigger = createTrigger({
name: 'catch_webhook',
displayName: 'Call Events Webhook',
description:
'Receives webhook data when call events occur from Kallabot AI agents.',
requireAuth: false,
props: {
webhookUrl: Property.MarkDown({
value: `**Webhook URL:**
\`\`\`text
{{webhookUrl}}
\`\`\``,
variant: MarkdownVariant.BORDERLESS,
}),
instructions: Property.MarkDown({
value: webhookInstructions,
variant: MarkdownVariant.INFO,
}),
testInstructions: Property.MarkDown({
value: testInstructions,
variant: MarkdownVariant.INFO,
}),
},
sampleData: {
"event_type": "call_completed",
"call_sid": "CAxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"status": "completed",
"call_type": "inbound",
"from_number": "+1234567890",
"to_number": "+1987654321",
"duration": 125.5,
"cost": 1.25,
"created_at": "2024-01-15T10:30:00Z",
"agent": {
"agent_id": "agent_123456789",
"name": "Customer Service Agent"
},
"recording": {
"url": "https://kallabot-s3-amazon.com/recordings/recording_123.wav",
"sid": "RExxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
},
"transcription": {
"conversation": [
{
"speaker": "agent",
"text": "Hello, thank you for calling. How can I help you today?",
"timestamp": "2024-01-15T10:30:05Z"
},
{
"speaker": "customer",
"text": "Hi, I need help with my account.",
"timestamp": "2024-01-15T10:30:10Z"
}
]
},
"transfer": {
"transferred": false,
"department": null,
"number": null,
"time": null
}
},
type: TriggerStrategy.WEBHOOK,
async onEnable() {
// No specific setup needed for webhook triggers
},
async onDisable() {
// No cleanup needed for webhook triggers
},
async run(context) {
const payloadBody = context.payload.body as any;
// Return the webhook payload data
return [payloadBody];
},
});