Add Activepieces integration for workflow automation
- Add Activepieces fork with SmoothSchedule custom piece - Create integrations app with Activepieces service layer - Add embed token endpoint for iframe integration - Create Automations page with embedded workflow builder - Add sidebar visibility fix for embed mode - Add list inactive customers endpoint to Public API - Include SmoothSchedule triggers: event created/updated/cancelled - Include SmoothSchedule actions: create/update/cancel events, list resources/services/customers 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,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"
|
||||
}
|
||||
@@ -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"
|
||||
}
|
||||
@@ -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 l’appel",
|
||||
"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 d’appels se produisent de la part d’agents 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"
|
||||
}
|
||||
@@ -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"
|
||||
}
|
||||
@@ -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"
|
||||
}
|
||||
@@ -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"
|
||||
}
|
||||
@@ -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"
|
||||
}
|
||||
@@ -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"
|
||||
}
|
||||
@@ -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"
|
||||
}
|
||||
@@ -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"
|
||||
}
|
||||
@@ -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.',
|
||||
});
|
||||
@@ -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;
|
||||
}
|
||||
});
|
||||
@@ -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;
|
||||
}
|
||||
});
|
||||
@@ -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;
|
||||
}
|
||||
});
|
||||
@@ -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;
|
||||
}
|
||||
});
|
||||
@@ -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;
|
||||
}
|
||||
});
|
||||
@@ -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;
|
||||
}
|
||||
});
|
||||
@@ -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;
|
||||
}
|
||||
});
|
||||
@@ -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}`);
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -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];
|
||||
},
|
||||
});
|
||||
Reference in New Issue
Block a user