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,140 @@
|
||||
{
|
||||
"\n To get your API token:\n \n 1. Go to your Missive preferences\n 2. Click the API tab \n 3. Click \"Create a new token\"\n 4. Copy the generated token (starts with 'missive_pat-')\n \n Note: You need to be part of an organization subscribed to the Productive plan to generate API tokens.\n ": "\n Um Ihr API-Token zu erhalten:\n \n 1. Gehen Sie zu Ihren Missive-Einstellungen\n 2. Klicken Sie auf die API Registerkarte \n 3. Klicken Sie auf \"Neues Token erstellen\"\n 4. Kopieren Sie den generierten Token (beginnt mit 'missive_pat-')\n \n Hinweis: Sie müssen Teil einer Organisation sein, die den Produktivitätsplan abonniert hat, um API-Token zu generieren.\n ",
|
||||
"Create Contact": "Kontakt erstellen",
|
||||
"Update Contact": "Kontakt aktualisieren",
|
||||
"Create Draft/Post": "Entwurf/Post erstellen",
|
||||
"Create Task": "Aufgabe erstellen",
|
||||
"Find Contact": "Kontakt finden",
|
||||
"Custom API Call": "Eigener API-Aufruf",
|
||||
"Add a new contact within a specified contact book": "Neuen Kontakt in einem angegebenen Kontaktbuch hinzufügen",
|
||||
"Modify fields for an existing contact": "Felder für einen bestehenden Kontakt ändern",
|
||||
"Create a draft message or post in Missive, with option to send": "Erstellen Sie einen Entwurf oder posten Sie in Missive, mit der Option zu senden",
|
||||
"Create a task that can be standalone or associated with a conversation": "Erstellen Sie eine Aufgabe, die eigenständig oder mit einer Unterhaltung verbunden sein kann",
|
||||
"Search for contacts by text, email, name, or any contact information": "Suche nach Kontakten per Text, E-Mail, Name oder beliebigen Kontaktinformationen",
|
||||
"Make a custom API call to a specific endpoint": "Einen benutzerdefinierten API-Aufruf an einen bestimmten Endpunkt machen",
|
||||
"Contact Book": "Kontaktbuch",
|
||||
"First Name": "Vorname",
|
||||
"Last Name": "Nachname",
|
||||
"Middle Name": "Mittlerer Name",
|
||||
"Phonetic First Name": "Phonetischer Vorname",
|
||||
"Phonetic Last Name": "Phonetischer Nachname",
|
||||
"Phonetic Middle Name": "Phonetischer Mittelname",
|
||||
"Prefix": "Präfix",
|
||||
"Suffix": "Suffix",
|
||||
"Nickname": "Spitzname",
|
||||
"File As": "Datei als",
|
||||
"Notes": "Notizen",
|
||||
"Starred": "Markiert",
|
||||
"Gender": "Geschlecht",
|
||||
"Contact Information": "Kontaktinformationen",
|
||||
"Memberships": "Mitgliedschaft",
|
||||
"Contact": "Kontakt",
|
||||
"Move to Contact Book": "In das Kontaktbuch verschieben",
|
||||
"Message Type": "Nachrichtenart",
|
||||
"Subject": "Betreff",
|
||||
"Message Body": "Nachrichtentext",
|
||||
"Message Configuration": "Nachrichtenkonfiguration",
|
||||
"Conversation Options": "Konversationsoptionen",
|
||||
"Send Immediately": "Sofort senden",
|
||||
"Schedule Send": "Zeitplan senden",
|
||||
"Send At (Unix Timestamp)": "Senden an (Unix-Zeitstempel)",
|
||||
"Auto Follow-up": "Automatische Nachverfolgung",
|
||||
"Attachments": "Anhänge",
|
||||
"Task Type": "Aufgabentyp",
|
||||
"Task Title": "Aufgabentitel",
|
||||
"Description": "Beschreibung",
|
||||
"Task State": "Aufgabenstatus",
|
||||
"Due Date": "Fälligkeitsdatum",
|
||||
"Task Configuration": "Aufgabenkonfiguration",
|
||||
"Search Term": "Suchbegriff",
|
||||
"Search & Filter Options": "Such- & Filteroptionen",
|
||||
"Result Format": "Ergebnisformat",
|
||||
"Method": "Methode",
|
||||
"Headers": "Kopfzeilen",
|
||||
"Query Parameters": "Abfrageparameter",
|
||||
"Body": "Körper",
|
||||
"Response is Binary ?": "Antwort ist binär?",
|
||||
"No Error on Failure": "Kein Fehler bei Fehler",
|
||||
"Timeout (in seconds)": "Timeout (in Sekunden)",
|
||||
"Select the contact book where the contact will be created": "Wählen Sie das Kontaktbuch, in dem der Kontakt erstellt werden soll",
|
||||
"First name of the contact": "Vorname des Kontakts",
|
||||
"Last name of the contact": "Nachname des Kontakts",
|
||||
"Middle name of the contact": "Mittlerer Name des Kontakts",
|
||||
"Phonetic spelling of the first name": "Phonetische Schreibweise des Vornamens",
|
||||
"Phonetic spelling of the last name": "Phonetische Schreibweise des Nachnamens",
|
||||
"Phonetic spelling of the middle name": "Phonetische Rechtschreibung des Mittelnamens",
|
||||
"Name prefix (e.g., Mr., Mrs., Dr.)": "Namenspräfix (z. B. Mr., Mrs., Dr.)",
|
||||
"Name suffix (e.g., Jr., Sr., III)": "Namenssuffix (z. B. Jr., Sr., III)",
|
||||
"Nickname for the contact": "Spitzname für den Kontakt",
|
||||
"How the contact should be filed/sorted": "Wie der Kontakt abgelegt / sortiert werden soll",
|
||||
"Additional notes about the contact": "Zusätzliche Notizen zum Kontakt",
|
||||
"Whether the contact should be starred": "Ob der Kontakt markiert werden soll",
|
||||
"Gender of the contact": "Geschlecht des Kontakts",
|
||||
"Email addresses, phone numbers, and other contact information": "E-Mail-Adressen, Telefonnummern und andere Kontaktinformationen",
|
||||
"Organizations and groups the contact belongs to": "Organisationen und Gruppen, zu denen der Kontakt gehört",
|
||||
"Select the contact to update": "Kontakt zum Update auswählen",
|
||||
"Move contact to a different contact book (optional)": "Kontakt in ein anderes Kontaktbuch verschieben (optional)",
|
||||
"Email addresses, phone numbers, and other contact information. Note: When updating infos, all existing infos will be replaced with the ones provided here.": "E-Mail-Adressen, Telefonnummern und andere Kontaktinformationen. Hinweis: Beim Aktualisieren von Informationen werden alle vorhandenen Informationen durch die hier angegebenen ersetzt.",
|
||||
"Organizations and groups the contact belongs to. Note: When updating memberships, all existing memberships will be replaced with the ones provided here.": "Organisationen und Gruppen, zu denen der Kontakt gehört. Hinweis: Beim Aktualisieren der Mitgliedschaften werden alle bestehenden Mitgliedschaften durch die hier angegebenen ersetzt.",
|
||||
"Type of message to create": "Art der Nachricht zu erstellen",
|
||||
"Subject line (primarily for email)": "Betreffzeile (hauptsächlich für E-Mail)",
|
||||
"The content of your message (supports HTML for email)": "Der Inhalt Ihrer Nachricht (unterstützt HTML für E-Mail)",
|
||||
"Configure sender, recipients, and message-specific options": "Sender, Empfänger und Nachrichten spezifische Optionen konfigurieren",
|
||||
"Advanced conversation management options": "Erweiterte Optionen für die Verwaltung von Unterhaltungen",
|
||||
"Send the draft immediately instead of saving as draft": "Entwurf sofort senden anstatt als Entwurf zu speichern",
|
||||
"Schedule the message to be sent later": "Planen Sie die Nachricht später zu senden",
|
||||
"Unix timestamp when to send the message (required if scheduling)": "Unix-Zeitstempel, wenn die Nachricht gesendet wird (erforderlich bei Zeitplanung)",
|
||||
"Cancel scheduled send if there is a reply (requires scheduling)": "Geplanten Versand abbrechen, wenn eine Antwort vorhanden ist (erfordert Zeitplanung)",
|
||||
"File attachments (up to 25 files, max 10MB total)": "Dateianhänge (bis zu 25 Dateien, max. 10 MB insgesamt)",
|
||||
"Type of task to create": "Art der Aufgabe zu erstellen",
|
||||
"Title of the task (max 1000 characters)": "Titel der Aufgabe (max. 1000 Zeichen)",
|
||||
"Description of the task (max 10000 characters)": "Beschreibung der Aufgabe (max. 10000 Zeichen)",
|
||||
"Current state of the task": "Aktueller Status der Aufgabe",
|
||||
"Due date for the task": "Enddatum der Aufgabe",
|
||||
"Configure task assignment and organization based on task type": "Aufgabenaufgabe und -organisation basierend auf Aufgabentyp konfigurieren",
|
||||
"Search across all contact information including name, email, phone, organization, custom fields, notes, etc. Leave empty to get all contacts.": "Suchen Sie über alle Kontaktinformationen einschließlich Name, E-Mail, Telefon, Organisation, benutzerdefinierte Felder, Notizen usw. Lassen Sie leer um alle Kontakte zu erhalten.",
|
||||
"Configure how to search and filter contacts": "Konfigurieren, wie Kontakte gesucht und gefiltert werden sollen",
|
||||
"How to format the returned contact data": "Formatieren der zurückgegebenen Kontaktdaten",
|
||||
"Authorization headers are injected automatically from your connection.": "Autorisierungs-Header werden automatisch von Ihrer Verbindung injiziert.",
|
||||
"Enable for files like PDFs, images, etc..": "Aktivieren für Dateien wie PDFs, Bilder, etc..",
|
||||
"Male": "Mann",
|
||||
"Female": "Weiblich",
|
||||
"Other": "Andere",
|
||||
"Email": "E-Mail",
|
||||
"SMS": "SMS",
|
||||
"WhatsApp": "WhatsApp",
|
||||
"Missive Live Chat": "Live-Chat starten",
|
||||
"Custom Channel": "Eigener Kanal",
|
||||
"Messenger": "Messenger",
|
||||
"Instagram": "Instagram",
|
||||
"Standalone Task": "Eigenständige Aufgabe",
|
||||
"Conversation Subtask": "Unteraufgabe für Unterhaltungen",
|
||||
"Todo": "Todo",
|
||||
"In Progress": "In Bearbeitung",
|
||||
"Closed": "Geschlossen",
|
||||
"Full Contact Data": "Komplette Kontaktdaten",
|
||||
"Summary Only": "Nur Zusammenfassung",
|
||||
"Count Only": "Nur Zählen",
|
||||
"GET": "ERHALTEN",
|
||||
"POST": "POST",
|
||||
"PATCH": "PATCH",
|
||||
"PUT": "PUT",
|
||||
"DELETE": "LÖSCHEN",
|
||||
"HEAD": "HEAD",
|
||||
"New Message": "Neue Nachricht",
|
||||
"New Comment": "Neuer Kommentar",
|
||||
"New Contact": "Neuer Kontakt",
|
||||
"New Contact Book": "Neues Kontaktbuch",
|
||||
"New Contact Group": "Neue Kontaktgruppe",
|
||||
"Triggers when new messages are received (email, SMS, WhatsApp, Facebook, etc.)": "Auslöser wenn neue Nachrichten empfangen werden (E-Mail, SMS, WhatsApp, Facebook, etc.)",
|
||||
"Triggers when new comments are added to conversations": "Auslöser wenn neue Kommentare zu Unterhaltungen hinzugefügt werden",
|
||||
"Triggers when new contacts are added to contact books": "Auslöser wenn neue Kontakte zu Kontakten hinzugefügt werden",
|
||||
"Triggers when new contact books are created": "Auslöser wenn neue Kontaktbücher erstellt werden",
|
||||
"Triggers when new contact groups are created": "Auslöser wenn neue Kontaktgruppen erstellt werden",
|
||||
"Markdown": "Markdown",
|
||||
"\n## Setup Instructions\n\nTo use this trigger, you need to manually create a webhook rule in your Missive account:\n\n### 1. Access Missive Rules\n- Open Missive and go to **Settings > Rules**\n- Click **\"New incoming rule\"** or **\"New outgoing rule\"**\n\n### 2. Configure the Trigger\nChoose from these message types:\n- **Email** - Incoming email messages\n- **SMS** - Text messages \n- **WhatsApp** - WhatsApp messages\n- **Facebook Messenger** - Facebook messages\n- **Instagram** - Instagram messages\n- **Twitter** - Twi": "\n## Einrichtungsanweisungen\n\nUm diesen Trigger zu verwenden, müssen Sie manuell eine Webhook-Regel in Ihrem Missive-Konto erstellen:\n\n### 1. Zugriff auf Missive-Regeln\n- Öffnen Sie Missive und gehen Sie zu **Einstellungen > Regeln**\n- Klicken Sie **\"Neue Eingehende Regel\"** oder **\"Neue ausgehende Regel\"**\n\n### 2. Konfigurieren Sie den Trigger\nWählen Sie aus diesen Nachrichtentypen:\n- **Email** - Eingehende E-Mail-Nachrichten\n- **SMS** - Textnachrichten \n- **WhatsApp** - WhatsApp Nachrichten\n- **Facebook Messenger** - Facebook Nachrichten\n- **Instagram** - Instagram** - Instagram Nachrichten\n- **Twitter** - Twitter Nachrichten\n- **Missive Live Chat** - Live Chat Nachrichten\n\n### 3. Filter hinzufügen (Optional)\nFilter einrichten wie:\n- Spezifische Absender-E-Mail-Adressen\n- Betreffzeile enthält Text\n- Nachrichteninhalt enthält Schlüsselwörter\n- Organisation oder Teambereich\n\n### 4. Setze Webhook Aktion\n1. Im Abschnitt **Aktionen** wähle **\"Webhook\"**\n2. Fügen Sie diese URL in das **Webhook URL** Feld ein:\n```text\n{{webhookUrl}}\n```\n3. Setze **HTTP-Methode** auf **POST**\n4. Lass **Content-Typ** als **application/json**\n\n### 5. Speichern Sie die Regel\n- Klicken Sie auf **Speichern** um den Webhook\n- Missive wird Ihren Endpunkt automatisch überprüfen\n\n---\n\n**Hinweis:** Sie benötigen Administrator/Besitzerrechte und einen produktiven Plan, um Regeln zu erstellen.\n\n**Beispiel Fälle verwenden:**\n- Trigger wenn E-Mails bestimmter Kunden\n- Prozess alle WhatsApp Nachrichten für Kundensupport\n- Route dringender E-Mails (Betreff enthält \"URGENT\") zu speziellen Workflows\n- Log alle Social Media Interaktionen in Ihrem CRM\n ",
|
||||
"\n## Setup Instructions\n\nTo use this trigger, you need to manually create a webhook rule in your Missive account:\n\n### 1. Access Missive Rules\n- Open Missive and go to **Settings > Rules**\n- Click **\"New incoming rule\"** or **\"New outgoing rule\"**\n\n### 2. Configure the Trigger\nIn the **When should rule trigger?** section:\n- Select **\"New comment\"** from the User actions\n\n### 3. Add Filters (Optional)\nConfigure filters like:\n- **Specific author** - Only comments from certain team members\n- **Task comments onl": "\n## Einrichtungsanweisungen\n\nUm diesen Trigger zu verwenden, müssen Sie manuell eine Webhook-Regel in Ihrem Missive-Konto erstellen:\n\n### 1. Zugriff auf Missive-Regeln\n- Öffnen Sie Missive und gehen Sie zu **Einstellungen > Regeln**\n- Klicken Sie **\"Neue Eingehende Regel\"** oder **\"Neue ausgehende Regel\"**\n\n### 2. Konfigurieren Sie den Trigger\nIm Abschnitt **Wann sollte die Regel auslösen?** :\n- Wählen Sie **\"Neuer Kommentar\"** aus den Benutzeraktionen\n\n### 3. Filter hinzufügen (Optional)\nFilter einrichten wie:\n- **Spezifischer Autor** - Nur Kommentare von bestimmten Teammitgliedern\n- **Nur Aufgabenkommentare** - Nur Kommentare zu Aufgaben\n- **Inhalt enthält** - Kommentare mit bestimmten Schlüsselwörtern\n- **Erwähnungen** - Wenn bestimmte Benutzer\n- **Organisationsbereich** - Organisation vs persönliche Gespräche\n\n### 4. Setze Webhook Aktion\n1. Im Abschnitt **Aktionen** wähle **\"Webhook\"**\n2. Fügen Sie diese URL in das **Webhook URL** Feld ein:\n```text\n{{webhookUrl}}\n```\n3. Setzen Sie **HTTP-Methode** auf **POST**\n4. Verlasse **Content-Typ** als **application/json**\n\n### 5. Speichern Sie die Regel\n- Klicken Sie auf **Speichern** um den Webhook\n- Missive überprüft Ihren Endpunkt automatisch\n\n---\n\n**Hinweis:** Sie benötigen Administrator/Besitzerrechte und einen produktiven Plan, um Regeln zu erstellen.\n\n**Beispiel Fälle verwenden:**\n- Alarm-Manager, wenn Teammitglieder kritische Gespräche kommentieren,\n- Aufgabenfortschritt durch Kommentar-Benachrichtigungen verfolgen\n- Kommentare mit spezifischen Schlüsselwörtern an spezialisierte Arbeitsabläufe\n- Team-Zusammenarbeit mit Projektmanagementwerkzeugen\n protokollieren ",
|
||||
"\n## Setup Instructions\n\nTo use this trigger, you need to manually create a webhook rule in your Missive account:\n\n### 1. Access Missive Rules\n- Open Missive and go to **Settings > Rules**\n- Click **\"New incoming rule\"** or **\"New outgoing rule\"**\n\n### 2. Configure the Trigger\nIn the **When should rule trigger?** section:\n- Look for **\"New contact\"** or **\"Contact created\"** in the available trigger types\n- Select this option to trigger on contact creation\n\n### 3. Add Filters (Optional)\nConfigure filters lik": "\n## Einrichtungsanweisungen\n\nUm diesen Trigger zu verwenden, müssen Sie manuell eine Webhook-Regel in Ihrem Missive-Konto erstellen:\n\n### 1. Zugriff auf Missive-Regeln\n- Öffnen Sie Missive und gehen Sie zu **Einstellungen > Regeln**\n- Klicken Sie **\"Neue Eingehende Regel\"** oder **\"Neue ausgehende Regel\"**\n\n### 2. Den Auslöser\nKonfigurieren im **Wann sollte die Regel ausgelöst werden? * Abschnitt:\n- Suchen Sie nach **\"Neuer Kontakt\" ** oder **\"Kontakt erstellt\"** in den verfügbaren Triggertypen\n- Wählen Sie diese Option, um beim Erstellen von Kontakten zu starten\n\n### 3. Filter hinzufügen (Optional)\nFilter einrichten wie:\n- **Kontaktbuch** - Nur Kontakte, die zu bestimmten Kontakten hinzugefügt wurden\n- **Kontaktbesitzer** - Nur Kontakte, die bestimmten Benutzern zugewiesen wurden\n- **Hat E-Mail** - Nur Kontakte mit E-Mail-Adressen\n- **Hat Telefon** - Nur Kontakte mit Telefonnummern\n- **Organisationsmitgliedschaft** - Kontakte zu bestimmten Organisationen\n- **Favoriten** - Nur markierte Kontakte\n\n### 4. Setze Webhook Aktion\n1. Im Abschnitt **Aktionen** wähle **\"Webhook\"**\n2. Fügen Sie diese URL in das **Webhook URL** Feld ein:\n```text\n{{webhookUrl}}\n```\n3. Setzen Sie **HTTP-Methode** auf **POST**\n4. Verlasse **Content-Typ** als **application/json**\n\n### 5. Speichern Sie die Regel\n- Klicken Sie auf **Speichern** um den Webhook\n- Missive überprüft Ihren Endpunkt automatisch\n\n---\n\n**Hinweis:** Sie benötigen Administrator/Besitzerrechte und einen produktiven Plan, um Regeln zu erstellen.\n\n**Beispiel Fälle verwenden:**\n- Synchronisieren Sie neue Kontakte automatisch mit Ihrem CRM\n- Senden Sie willkommene E-Mails an neue Geschäftskontakte\n- Fügen Sie neue Kontakte zu Marketing-Automatisierungs-Workflows\n- Alert Sales Team, wenn neue Perspektiven hinzugefügt werden\n- Sichern Sie Kontaktdaten auf externen Systemen\n ",
|
||||
"\n## Setup Instructions\n\nTo use this trigger, you need to manually create a webhook rule in your Missive account:\n\n### 1. Access Missive Rules\n- Open Missive and go to **Settings > Rules**\n- Click **\"New incoming rule\"** or **\"New outgoing rule\"**\n\n### 2. Configure the Trigger\nIn the **When should rule trigger?** section:\n- Look for **\"New contact book\"** or **\"Contact book created\"** in the available trigger types\n- Select this option to trigger on contact book creation\n\n### 3. Add Filters (Optional)\nConfig": "\n## Setup Instructions\n\nTo use this trigger, you need to manually create a webhook rule in your Missive account:\n\n### 1. Access Missive Rules\n- Open Missive and go to **Settings > Rules**\n- Click **\"New incoming rule\"** or **\"New outgoing rule\"**\n\n### 2. Configure the Trigger\nIn the **When should rule trigger?** section:\n- Look for **\"New contact book\"** or **\"Contact book created\"** in the available trigger types\n- Select this option to trigger on contact book creation\n\n### 3. Add Filters (Optional)\nConfigure filters like:\n- **Book owner** - Only contact books created by specific users\n- **Organization scope** - Organization vs personal contact books\n- **Book name contains** - Contact books with specific naming patterns\n\n### 4. Set Webhook Action\n1. In the **Actions** section, select **\"Webhook\"**\n2. Paste this URL in the **Webhook URL** field:\n```text\n{{webhookUrl}}\n```\n3. Set **HTTP Method** to **POST**\n4. Leave **Content Type** as **application/json**\n\n### 5. Save the Rule\n- Click **Save** to activate the webhook\n- Missive will validate your endpoint automatically\n\n---\n\n**Note:** You need admin/owner permissions and a Productive plan to create rules.\n\n**Example Use Cases:**\n- Set up automatic contact book backups when new books are created\n- Initialize contact book permissions and sharing settings\n- Notify administrators when teams create new contact databases\n- Create corresponding contact lists in external CRM systems\n- Track contact book creation for audit and compliance\n ",
|
||||
"\n## Setup Instructions\n\nTo use this trigger, you need to manually create a webhook rule in your Missive account:\n\n### 1. Access Missive Rules\n- Open Missive and go to **Settings > Rules**\n- Click **\"New incoming rule\"** or **\"New outgoing rule\"**\n\n### 2. Configure the Trigger\nIn the **When should rule trigger?** section:\n- Look for **\"New contact group\"** or **\"Contact group created\"** in the available trigger types\n- Select this option to trigger on contact group creation\n\n### 3. Add Filters (Optional)\nCon": "\n## Einrichtungsanweisungen\n\nUm diesen Trigger zu verwenden, müssen Sie manuell eine Webhook-Regel in Ihrem Missive-Konto erstellen:\n\n### 1. Zugriff auf Missive-Regeln\n- Öffnen Sie Missive und gehen Sie zu **Einstellungen > Regeln**\n- Klicken Sie **\"Neue Eingehende Regel\"** oder **\"Neue ausgehende Regel\"**\n\n### 2. Den Auslöser\nKonfigurieren im **Wann sollte die Regel ausgelöst werden? * Abschnitt:\n- Suchen Sie nach **\"Neue Kontaktgruppe\"** oder **\"Kontaktgruppe erstellt\"** in den verfügbaren Triggertypen\n- Wählen Sie diese Option, um die Kontaktgruppenerstellung\n\n### 3. Filter hinzufügen (Optional)\nFilter einrichten wie:\n- **Kontaktbuch** - Nur Gruppen die in bestimmten Kontaktlisten erstellt wurden\n- **Gruppentyp** - Organisationen vs regulären Gruppen\n- **Gruppenersteller** - Nur Gruppen von bestimmten Benutzern\n- **Gruppenname enthält** - Gruppen mit spezifischen Namensmustern\n\n### 4. Setze Webhook Aktion\n1. Im Abschnitt **Aktionen** wähle **\"Webhook\"**\n2. Fügen Sie diese URL in das **Webhook URL** Feld ein:\n```text\n{{webhookUrl}}\n```\n3. Setzen Sie **HTTP-Methode** auf **POST**\n4. Verlasse **Content-Typ** als **application/json**\n\n### 5. Speichern Sie die Regel\n- Klicken Sie auf **Speichern** um den Webhook\n- Missive überprüft Ihren Endpunkt automatisch\n\n---\n\n**Hinweis:** Sie benötigen Administrator/Besitzerrechte und einen produktiven Plan, um Regeln zu erstellen.\n\n**Beispiel Fälle verwenden:**\n- Neue Kontaktgruppen mit externen CRM-Systemen synchronisieren\n- Automatische Gruppenberechtigungen und Zugriffssteuerungen einrichten\n- Erstelle entsprechende Listen in den Marketing-Automatisierungsplattformen\n- Kontaktorganisation für Vertriebsleitung verwalten\n- Initialisiere gruppenspezifische Workflows und Vorlagen\n "
|
||||
}
|
||||
@@ -0,0 +1,140 @@
|
||||
{
|
||||
"\n To get your API token:\n \n 1. Go to your Missive preferences\n 2. Click the API tab \n 3. Click \"Create a new token\"\n 4. Copy the generated token (starts with 'missive_pat-')\n \n Note: You need to be part of an organization subscribed to the Productive plan to generate API tokens.\n ": "\n To get your API token:\n \n 1. Go to your Missive preferences\n 2. Click the API tab \n 3. Click \"Create a new token\"\n 4. Copy the generated token (starts with 'missive_pat-')\n \n Note: You need to be part of an organization subscribed to the Productive plan to generate API tokens.\n ",
|
||||
"Create Contact": "Crear contacto",
|
||||
"Update Contact": "Actualizar contacto",
|
||||
"Create Draft/Post": "Crear borrador/Post",
|
||||
"Create Task": "Crear tarea",
|
||||
"Find Contact": "Encontrar contacto",
|
||||
"Custom API Call": "Llamada API personalizada",
|
||||
"Add a new contact within a specified contact book": "Añadir un nuevo contacto dentro de un libro de contactos especificado",
|
||||
"Modify fields for an existing contact": "Modificar campos para un contacto existente",
|
||||
"Create a draft message or post in Missive, with option to send": "Crear un borrador de mensaje o mensaje en Missive, con opción de enviar",
|
||||
"Create a task that can be standalone or associated with a conversation": "Crear una tarea que puede ser independiente o estar asociada con una conversación",
|
||||
"Search for contacts by text, email, name, or any contact information": "Buscar contactos por texto, correo electrónico, nombre o cualquier información de contacto",
|
||||
"Make a custom API call to a specific endpoint": "Hacer una llamada API personalizada a un extremo específico",
|
||||
"Contact Book": "Libro de contactos",
|
||||
"First Name": "Nombre",
|
||||
"Last Name": "Apellido",
|
||||
"Middle Name": "Segundo nombre",
|
||||
"Phonetic First Name": "Nombre fonético",
|
||||
"Phonetic Last Name": "Apellido fonético",
|
||||
"Phonetic Middle Name": "Nombre central fonético",
|
||||
"Prefix": "Prefijo",
|
||||
"Suffix": "Suffix",
|
||||
"Nickname": "Apodo",
|
||||
"File As": "Archivo como",
|
||||
"Notes": "Notas",
|
||||
"Starred": "Favoritos",
|
||||
"Gender": "Sexo",
|
||||
"Contact Information": "Información de contacto",
|
||||
"Memberships": "Membresías",
|
||||
"Contact": "Contacto",
|
||||
"Move to Contact Book": "Mover al libro de contactos",
|
||||
"Message Type": "Tipo de mensaje",
|
||||
"Subject": "Asunto",
|
||||
"Message Body": "Cuerpo",
|
||||
"Message Configuration": "Configuración del mensaje",
|
||||
"Conversation Options": "Opciones de conversación",
|
||||
"Send Immediately": "Enviar inmediatamente",
|
||||
"Schedule Send": "Programar envío",
|
||||
"Send At (Unix Timestamp)": "Enviar en (Timestamp Unix)",
|
||||
"Auto Follow-up": "Seguimiento automático",
|
||||
"Attachments": "Adjuntos",
|
||||
"Task Type": "Tipo de tarea",
|
||||
"Task Title": "Título de la tarea",
|
||||
"Description": "Descripción",
|
||||
"Task State": "Estado de la tarea",
|
||||
"Due Date": "Fecha de fin",
|
||||
"Task Configuration": "Configuración de la tarea",
|
||||
"Search Term": "Buscar término",
|
||||
"Search & Filter Options": "Opciones de búsqueda y filtro",
|
||||
"Result Format": "Formato de resultado",
|
||||
"Method": "Método",
|
||||
"Headers": "Encabezados",
|
||||
"Query Parameters": "Parámetros de consulta",
|
||||
"Body": "Cuerpo",
|
||||
"Response is Binary ?": "¿Respuesta es binaria?",
|
||||
"No Error on Failure": "No hay ningún error en fallo",
|
||||
"Timeout (in seconds)": "Tiempo de espera (en segundos)",
|
||||
"Select the contact book where the contact will be created": "Seleccione el libro de contactos donde se creará el contacto",
|
||||
"First name of the contact": "Nombre del contacto",
|
||||
"Last name of the contact": "Apellido del contacto",
|
||||
"Middle name of the contact": "Nombre central del contacto",
|
||||
"Phonetic spelling of the first name": "Ortografía fonética del nombre",
|
||||
"Phonetic spelling of the last name": "Ortografía fonética del apellido",
|
||||
"Phonetic spelling of the middle name": "Ortografía fonética del segundo nombre",
|
||||
"Name prefix (e.g., Mr., Mrs., Dr.)": "Prefijo de nombre (p.ej...m..-.m.).",
|
||||
"Name suffix (e.g., Jr., Sr., III)": "Sufijo de nombre (por ej., Jr., MI, II)",
|
||||
"Nickname for the contact": "Apodo del contacto",
|
||||
"How the contact should be filed/sorted": "Cómo se debe archivar/ordenar el contacto",
|
||||
"Additional notes about the contact": "Notas adicionales sobre el contacto",
|
||||
"Whether the contact should be starred": "Si el contacto debe ser protagonizado",
|
||||
"Gender of the contact": "Género del contacto",
|
||||
"Email addresses, phone numbers, and other contact information": "Direcciones de correo electrónico, números de teléfono y otra información de contacto",
|
||||
"Organizations and groups the contact belongs to": "Organizaciones y grupos a los que pertenece el contacto",
|
||||
"Select the contact to update": "Seleccione el contacto a actualizar",
|
||||
"Move contact to a different contact book (optional)": "Mover contacto a un libro de contactos diferente (opcional)",
|
||||
"Email addresses, phone numbers, and other contact information. Note: When updating infos, all existing infos will be replaced with the ones provided here.": "Direcciones de correo electrónico, números de teléfono y otra información de contacto. Nota: Al actualizar información, todas las informaciones existentes serán reemplazadas por las proporcionadas aquí.",
|
||||
"Organizations and groups the contact belongs to. Note: When updating memberships, all existing memberships will be replaced with the ones provided here.": "Organizaciones y grupos a los que pertenece el contacto. Nota: Cuando se actualiza la membresía, todas las membresías existentes serán reemplazadas por las que se proporcionen aquí.",
|
||||
"Type of message to create": "Tipo de mensaje a crear",
|
||||
"Subject line (primarily for email)": "Línea del asunto (principalmente para correo electrónico)",
|
||||
"The content of your message (supports HTML for email)": "El contenido de su mensaje (soporta HTML para correo electrónico)",
|
||||
"Configure sender, recipients, and message-specific options": "Configurar las opciones del remitente, destinatarios y específicos del mensaje",
|
||||
"Advanced conversation management options": "Opciones avanzadas de gestión de conversaciones",
|
||||
"Send the draft immediately instead of saving as draft": "Enviar el borrador inmediatamente en lugar de guardar como borrador",
|
||||
"Schedule the message to be sent later": "Programar el mensaje para ser enviado más tarde",
|
||||
"Unix timestamp when to send the message (required if scheduling)": "Marca de tiempo Unix cuando enviar el mensaje (requerido si se programa)",
|
||||
"Cancel scheduled send if there is a reply (requires scheduling)": "Cancelar envío programado si hay una respuesta (requiere programación)",
|
||||
"File attachments (up to 25 files, max 10MB total)": "Archivos adjuntos (hasta 25 archivos, máximo 10MB total)",
|
||||
"Type of task to create": "Tipo de tarea a crear",
|
||||
"Title of the task (max 1000 characters)": "Título de la tarea (máx. 1000 caracteres)",
|
||||
"Description of the task (max 10000 characters)": "Descripción de la tarea (máx. 10000 caracteres)",
|
||||
"Current state of the task": "Estado actual de la tarea",
|
||||
"Due date for the task": "Fecha límite para la tarea",
|
||||
"Configure task assignment and organization based on task type": "Configurar la tarea y la organización basada en el tipo de tarea",
|
||||
"Search across all contact information including name, email, phone, organization, custom fields, notes, etc. Leave empty to get all contacts.": "Buscar a través de toda la información de contacto, incluyendo nombre, correo electrónico, teléfono, organización, campos personalizados, notas, etc. Dejar en blanco para obtener todos los contactos.",
|
||||
"Configure how to search and filter contacts": "Configurar cómo buscar y filtrar contactos",
|
||||
"How to format the returned contact data": "Cómo formatear los datos de contacto devueltos",
|
||||
"Authorization headers are injected automatically from your connection.": "Las cabeceras de autorización se inyectan automáticamente desde tu conexión.",
|
||||
"Enable for files like PDFs, images, etc..": "Activar para archivos como PDFs, imágenes, etc.",
|
||||
"Male": "Hombre",
|
||||
"Female": "Mujer",
|
||||
"Other": "Otro",
|
||||
"Email": "E-mail",
|
||||
"SMS": "SMS",
|
||||
"WhatsApp": "WhatsApp",
|
||||
"Missive Live Chat": "Chat en vivo Misivo",
|
||||
"Custom Channel": "Canal personalizado",
|
||||
"Messenger": "Mensajero",
|
||||
"Instagram": "Instagrama",
|
||||
"Standalone Task": "Tarea independiente",
|
||||
"Conversation Subtask": "Subtarea de conversación",
|
||||
"Todo": "Todo",
|
||||
"In Progress": "En curso",
|
||||
"Closed": "Cerrado",
|
||||
"Full Contact Data": "Datos de contacto completos",
|
||||
"Summary Only": "Resumen sólo",
|
||||
"Count Only": "Sólo contador",
|
||||
"GET": "RECOGER",
|
||||
"POST": "POST",
|
||||
"PATCH": "PATCH",
|
||||
"PUT": "PUT",
|
||||
"DELETE": "BORRAR",
|
||||
"HEAD": "LIMPIO",
|
||||
"New Message": "Nuevo mensaje",
|
||||
"New Comment": "Nuevo comentario",
|
||||
"New Contact": "Nuevo contacto",
|
||||
"New Contact Book": "Nuevo libro de contactos",
|
||||
"New Contact Group": "Nuevo grupo de contactos",
|
||||
"Triggers when new messages are received (email, SMS, WhatsApp, Facebook, etc.)": "Dispara cuando se reciben nuevos mensajes (correo electrónico, SMS, WhatsApp, Facebook, etc.)",
|
||||
"Triggers when new comments are added to conversations": "Activadores cuando se añaden nuevos comentarios a las conversaciones",
|
||||
"Triggers when new contacts are added to contact books": "Activadores cuando se añaden nuevos contactos a los libros de contactos",
|
||||
"Triggers when new contact books are created": "Activadores cuando se crean nuevos libros de contactos",
|
||||
"Triggers when new contact groups are created": "Activadores cuando se crean nuevos grupos de contactos",
|
||||
"Markdown": "Markdown",
|
||||
"\n## Setup Instructions\n\nTo use this trigger, you need to manually create a webhook rule in your Missive account:\n\n### 1. Access Missive Rules\n- Open Missive and go to **Settings > Rules**\n- Click **\"New incoming rule\"** or **\"New outgoing rule\"**\n\n### 2. Configure the Trigger\nChoose from these message types:\n- **Email** - Incoming email messages\n- **SMS** - Text messages \n- **WhatsApp** - WhatsApp messages\n- **Facebook Messenger** - Facebook messages\n- **Instagram** - Instagram messages\n- **Twitter** - Twi": "\n## Setup Instructions\n\nTo use this trigger, you need to manually create a webhook rule in your Missive account:\n\n### 1. Access Missive Rules\n- Open Missive and go to **Settings > Rules**\n- Click **\"New incoming rule\"** or **\"New outgoing rule\"**\n\n### 2. Configure the Trigger\nChoose from these message types:\n- **Email** - Incoming email messages\n- **SMS** - Text messages \n- **WhatsApp** - WhatsApp messages\n- **Facebook Messenger** - Facebook messages\n- **Instagram** - Instagram messages\n- **Twitter** - Twitter messages\n- **Missive Live Chat** - Live chat messages\n\n### 3. Add Filters (Optional)\nConfigure filters like:\n- Specific sender email addresses\n- Subject line contains text\n- Message content contains keywords\n- Organization or team scope\n\n### 4. Set Webhook Action\n1. In the **Actions** section, select **\"Webhook\"**\n2. Paste this URL in the **Webhook URL** field:\n```text\n{{webhookUrl}}\n```\n3. Set **HTTP Method** to **POST**\n4. Leave **Content Type** as **application/json**\n\n### 5. Save the Rule\n- Click **Save** to activate the webhook\n- Missive will validate your endpoint automatically\n\n---\n\n**Note:** You need admin/owner permissions and a Productive plan to create rules.\n\n**Example Use Cases:**\n- Trigger when emails from specific customers arrive\n- Process all WhatsApp messages for customer support\n- Route urgent emails (subject contains \"URGENT\") to special workflows\n- Log all social media interactions to your CRM\n ",
|
||||
"\n## Setup Instructions\n\nTo use this trigger, you need to manually create a webhook rule in your Missive account:\n\n### 1. Access Missive Rules\n- Open Missive and go to **Settings > Rules**\n- Click **\"New incoming rule\"** or **\"New outgoing rule\"**\n\n### 2. Configure the Trigger\nIn the **When should rule trigger?** section:\n- Select **\"New comment\"** from the User actions\n\n### 3. Add Filters (Optional)\nConfigure filters like:\n- **Specific author** - Only comments from certain team members\n- **Task comments onl": "\n## Setup Instructions\n\nTo use this trigger, you need to manually create a webhook rule in your Missive account:\n\n### 1. Access Missive Rules\n- Open Missive and go to **Settings > Rules**\n- Click **\"New incoming rule\"** or **\"New outgoing rule\"**\n\n### 2. Configure the Trigger\nIn the **When should rule trigger?** section:\n- Select **\"New comment\"** from the User actions\n\n### 3. Add Filters (Optional)\nConfigure filters like:\n- **Specific author** - Only comments from certain team members\n- **Task comments only** - Only comments on tasks\n- **Content contains** - Comments with specific keywords\n- **Mentions** - When specific users are mentioned\n- **Organization scope** - Organization vs personal conversations\n\n### 4. Set Webhook Action\n1. In the **Actions** section, select **\"Webhook\"**\n2. Paste this URL in the **Webhook URL** field:\n```text\n{{webhookUrl}}\n```\n3. Set **HTTP Method** to **POST**\n4. Leave **Content Type** as **application/json**\n\n### 5. Save the Rule\n- Click **Save** to activate the webhook\n- Missive will validate your endpoint automatically\n\n---\n\n**Note:** You need admin/owner permissions and a Productive plan to create rules.\n\n**Example Use Cases:**\n- Alert managers when team members comment on critical conversations\n- Track task progress through comment notifications\n- Route comments with specific keywords to specialized workflows\n- Log team collaboration activity to project management tools\n ",
|
||||
"\n## Setup Instructions\n\nTo use this trigger, you need to manually create a webhook rule in your Missive account:\n\n### 1. Access Missive Rules\n- Open Missive and go to **Settings > Rules**\n- Click **\"New incoming rule\"** or **\"New outgoing rule\"**\n\n### 2. Configure the Trigger\nIn the **When should rule trigger?** section:\n- Look for **\"New contact\"** or **\"Contact created\"** in the available trigger types\n- Select this option to trigger on contact creation\n\n### 3. Add Filters (Optional)\nConfigure filters lik": "\n## Setup Instructions\n\nTo use this trigger, you need to manually create a webhook rule in your Missive account:\n\n### 1. Access Missive Rules\n- Open Missive and go to **Settings > Rules**\n- Click **\"New incoming rule\"** or **\"New outgoing rule\"**\n\n### 2. Configure the Trigger\nIn the **When should rule trigger?** section:\n- Look for **\"New contact\"** or **\"Contact created\"** in the available trigger types\n- Select this option to trigger on contact creation\n\n### 3. Add Filters (Optional)\nConfigure filters like:\n- **Contact book** - Only contacts added to specific contact books\n- **Contact owner** - Only contacts assigned to specific users\n- **Has email** - Only contacts with email addresses\n- **Has phone** - Only contacts with phone numbers\n- **Organization membership** - Contacts belonging to specific organizations\n- **Starred contacts** - Only starred contacts\n\n### 4. Set Webhook Action\n1. In the **Actions** section, select **\"Webhook\"**\n2. Paste this URL in the **Webhook URL** field:\n```text\n{{webhookUrl}}\n```\n3. Set **HTTP Method** to **POST**\n4. Leave **Content Type** as **application/json**\n\n### 5. Save the Rule\n- Click **Save** to activate the webhook\n- Missive will validate your endpoint automatically\n\n---\n\n**Note:** You need admin/owner permissions and a Productive plan to create rules.\n\n**Example Use Cases:**\n- Sync new contacts to your CRM automatically\n- Send welcome emails to new business contacts\n- Add new contacts to marketing automation workflows\n- Alert sales team when new prospects are added\n- Backup contact data to external systems\n ",
|
||||
"\n## Setup Instructions\n\nTo use this trigger, you need to manually create a webhook rule in your Missive account:\n\n### 1. Access Missive Rules\n- Open Missive and go to **Settings > Rules**\n- Click **\"New incoming rule\"** or **\"New outgoing rule\"**\n\n### 2. Configure the Trigger\nIn the **When should rule trigger?** section:\n- Look for **\"New contact book\"** or **\"Contact book created\"** in the available trigger types\n- Select this option to trigger on contact book creation\n\n### 3. Add Filters (Optional)\nConfig": "\n## Setup Instructions\n\nTo use this trigger, you need to manually create a webhook rule in your Missive account:\n\n### 1. Access Missive Rules\n- Open Missive and go to **Settings > Rules**\n- Click **\"New incoming rule\"** or **\"New outgoing rule\"**\n\n### 2. Configure the Trigger\nIn the **When should rule trigger?** section:\n- Look for **\"New contact book\"** or **\"Contact book created\"** in the available trigger types\n- Select this option to trigger on contact book creation\n\n### 3. Add Filters (Optional)\nConfigure filters like:\n- **Book owner** - Only contact books created by specific users\n- **Organization scope** - Organization vs personal contact books\n- **Book name contains** - Contact books with specific naming patterns\n\n### 4. Set Webhook Action\n1. In the **Actions** section, select **\"Webhook\"**\n2. Paste this URL in the **Webhook URL** field:\n```text\n{{webhookUrl}}\n```\n3. Set **HTTP Method** to **POST**\n4. Leave **Content Type** as **application/json**\n\n### 5. Save the Rule\n- Click **Save** to activate the webhook\n- Missive will validate your endpoint automatically\n\n---\n\n**Note:** You need admin/owner permissions and a Productive plan to create rules.\n\n**Example Use Cases:**\n- Set up automatic contact book backups when new books are created\n- Initialize contact book permissions and sharing settings\n- Notify administrators when teams create new contact databases\n- Create corresponding contact lists in external CRM systems\n- Track contact book creation for audit and compliance\n ",
|
||||
"\n## Setup Instructions\n\nTo use this trigger, you need to manually create a webhook rule in your Missive account:\n\n### 1. Access Missive Rules\n- Open Missive and go to **Settings > Rules**\n- Click **\"New incoming rule\"** or **\"New outgoing rule\"**\n\n### 2. Configure the Trigger\nIn the **When should rule trigger?** section:\n- Look for **\"New contact group\"** or **\"Contact group created\"** in the available trigger types\n- Select this option to trigger on contact group creation\n\n### 3. Add Filters (Optional)\nCon": "\n## Setup Instructions\n\nTo use this trigger, you need to manually create a webhook rule in your Missive account:\n\n### 1. Access Missive Rules\n- Open Missive and go to **Settings > Rules**\n- Click **\"New incoming rule\"** or **\"New outgoing rule\"**\n\n### 2. Configure the Trigger\nIn the **When should rule trigger?** section:\n- Look for **\"New contact group\"** or **\"Contact group created\"** in the available trigger types\n- Select this option to trigger on contact group creation\n\n### 3. Add Filters (Optional)\nConfigure filters like:\n- **Contact book** - Only groups created in specific contact books\n- **Group type** - Organizations vs regular groups\n- **Group creator** - Only groups created by specific users\n- **Group name contains** - Groups with specific naming patterns\n\n### 4. Set Webhook Action\n1. In the **Actions** section, select **\"Webhook\"**\n2. Paste this URL in the **Webhook URL** field:\n```text\n{{webhookUrl}}\n```\n3. Set **HTTP Method** to **POST**\n4. Leave **Content Type** as **application/json**\n\n### 5. Save the Rule\n- Click **Save** to activate the webhook\n- Missive will validate your endpoint automatically\n\n---\n\n**Note:** You need admin/owner permissions and a Productive plan to create rules.\n\n**Example Use Cases:**\n- Sync new contact groups to external CRM systems\n- Set up automatic group permissions and access controls\n- Create corresponding lists in marketing automation platforms\n- Track contact organization for sales pipeline management\n- Initialize group-specific workflows and templates\n "
|
||||
}
|
||||
@@ -0,0 +1,140 @@
|
||||
{
|
||||
"\n To get your API token:\n \n 1. Go to your Missive preferences\n 2. Click the API tab \n 3. Click \"Create a new token\"\n 4. Copy the generated token (starts with 'missive_pat-')\n \n Note: You need to be part of an organization subscribed to the Productive plan to generate API tokens.\n ": "\n To get your API token:\n \n 1. Go to your Missive preferences\n 2. Click the API tab \n 3. Click \"Create a new token\"\n 4. Copy the generated token (starts with 'missive_pat-')\n \n Note: You need to be part of an organization subscribed to the Productive plan to generate API tokens.\n ",
|
||||
"Create Contact": "Créer un contact",
|
||||
"Update Contact": "Mettre à jour le contact",
|
||||
"Create Draft/Post": "Créer un brouillon/Post",
|
||||
"Create Task": "Créer une tâche",
|
||||
"Find Contact": "Trouver un contact",
|
||||
"Custom API Call": "Appel API personnalisé",
|
||||
"Add a new contact within a specified contact book": "Ajouter un nouveau contact dans un carnet de contacts spécifié",
|
||||
"Modify fields for an existing contact": "Modifier les champs pour un contact existant",
|
||||
"Create a draft message or post in Missive, with option to send": "Créer un brouillon de message ou un message dans Missive, avec l'option à envoyer",
|
||||
"Create a task that can be standalone or associated with a conversation": "Créer une tâche qui peut être autonome ou associée à une conversation",
|
||||
"Search for contacts by text, email, name, or any contact information": "Rechercher des contacts par texte, e-mail, nom ou toute information de contact",
|
||||
"Make a custom API call to a specific endpoint": "Passez un appel API personnalisé à un point de terminaison spécifique",
|
||||
"Contact Book": "Carnet de contacts",
|
||||
"First Name": "First Name",
|
||||
"Last Name": "Last Name",
|
||||
"Middle Name": "Deuxième prénom",
|
||||
"Phonetic First Name": "Prénom phonétique",
|
||||
"Phonetic Last Name": "Nom phonétique",
|
||||
"Phonetic Middle Name": "Deuxième prénom phonétique",
|
||||
"Prefix": "Préfixe",
|
||||
"Suffix": "Suffix",
|
||||
"Nickname": "Pseudo",
|
||||
"File As": "Fichier comme",
|
||||
"Notes": "Notes",
|
||||
"Starred": "Favoris",
|
||||
"Gender": "Sexe",
|
||||
"Contact Information": "Coordonnées",
|
||||
"Memberships": "Adhésions",
|
||||
"Contact": "Contacter",
|
||||
"Move to Contact Book": "Déplacer vers le carnet de contacts",
|
||||
"Message Type": "Type de message",
|
||||
"Subject": "Sujet",
|
||||
"Message Body": "Corps du message",
|
||||
"Message Configuration": "Configuration des messages",
|
||||
"Conversation Options": "Options de conversation",
|
||||
"Send Immediately": "Envoyer immédiatement",
|
||||
"Schedule Send": "Programmer l'envoi",
|
||||
"Send At (Unix Timestamp)": "Envoyer à (Unix Timestamp)",
|
||||
"Auto Follow-up": "Suivi automatique",
|
||||
"Attachments": "Fichiers joints",
|
||||
"Task Type": "Type de tâche",
|
||||
"Task Title": "Titre de la tâche",
|
||||
"Description": "Libellé",
|
||||
"Task State": "État de la tâche",
|
||||
"Due Date": "Date de fin",
|
||||
"Task Configuration": "Configuration de la tâche",
|
||||
"Search Term": "Terme de recherche",
|
||||
"Search & Filter Options": "Options de recherche et de filtre",
|
||||
"Result Format": "Format du résultat",
|
||||
"Method": "Méthode",
|
||||
"Headers": "En-têtes",
|
||||
"Query Parameters": "Paramètres de requête",
|
||||
"Body": "Corps",
|
||||
"Response is Binary ?": "La réponse est Binaire ?",
|
||||
"No Error on Failure": "Aucune erreur en cas d'échec",
|
||||
"Timeout (in seconds)": "Délai d'attente (en secondes)",
|
||||
"Select the contact book where the contact will be created": "Sélectionnez le carnet de contacts où le contact sera créé",
|
||||
"First name of the contact": "Prénom du contact",
|
||||
"Last name of the contact": "Nom du contact",
|
||||
"Middle name of the contact": "Deuxième nom du contact",
|
||||
"Phonetic spelling of the first name": "orthographe phonétique du prénom",
|
||||
"Phonetic spelling of the last name": "orthographe phonétique du nom de famille",
|
||||
"Phonetic spelling of the middle name": "orthographe phonétique du deuxième nom",
|
||||
"Name prefix (e.g., Mr., Mrs., Dr.)": "Préfixe de nom (ex: M.M., M.M., Dr.)",
|
||||
"Name suffix (e.g., Jr., Sr., III)": "Suffixe de nom (par exemple, Jr., Sr., III)",
|
||||
"Nickname for the contact": "Pseudo pour le contact",
|
||||
"How the contact should be filed/sorted": "Comment le contact doit être classé/trié",
|
||||
"Additional notes about the contact": "Remarques supplémentaires sur le contact",
|
||||
"Whether the contact should be starred": "Si le contact doit être favori",
|
||||
"Gender of the contact": "Sexe du contact",
|
||||
"Email addresses, phone numbers, and other contact information": "Adresses e-mail, numéros de téléphone et autres informations de contact",
|
||||
"Organizations and groups the contact belongs to": "Organisations et groupes auxquels appartient le contact",
|
||||
"Select the contact to update": "Sélectionnez le contact à mettre à jour",
|
||||
"Move contact to a different contact book (optional)": "Déplacer le contact vers un autre carnet de contact (optionnel)",
|
||||
"Email addresses, phone numbers, and other contact information. Note: When updating infos, all existing infos will be replaced with the ones provided here.": "Adresses e-mail, numéros de téléphone et autres informations de contact. Remarque : lors de la mise à jour des informations, toutes les infos existantes seront remplacées par celles fournies ici.",
|
||||
"Organizations and groups the contact belongs to. Note: When updating memberships, all existing memberships will be replaced with the ones provided here.": "Organisations et groupes auxquels appartient le contact. Note: Lors de la mise à jour des adhésions, toutes les adhésions existantes seront remplacées par celles fournies ici.",
|
||||
"Type of message to create": "Type de message à créer",
|
||||
"Subject line (primarily for email)": "Subject line (principalement pour les e-mails)",
|
||||
"The content of your message (supports HTML for email)": "Le contenu de votre message (supporte le HTML pour les e-mails)",
|
||||
"Configure sender, recipients, and message-specific options": "Configurer les options de l'expéditeur, des destinataires et des messages",
|
||||
"Advanced conversation management options": "Options avancées de gestion des conversations",
|
||||
"Send the draft immediately instead of saving as draft": "Envoyer le brouillon immédiatement au lieu de l'enregistrer comme brouillon",
|
||||
"Schedule the message to be sent later": "Planifier le message à envoyer plus tard",
|
||||
"Unix timestamp when to send the message (required if scheduling)": "Horodatage Unix quand envoyer le message (requis pour la planification)",
|
||||
"Cancel scheduled send if there is a reply (requires scheduling)": "Annuler l'envoi planifié s'il y a une réponse (nécessite une planification)",
|
||||
"File attachments (up to 25 files, max 10MB total)": "Pièces jointes (jusqu'à 25 fichiers, maximum 10Mo au total)",
|
||||
"Type of task to create": "Type de tâche à créer",
|
||||
"Title of the task (max 1000 characters)": "Titre de la tâche (max 1000 caractères)",
|
||||
"Description of the task (max 10000 characters)": "Description de la tâche (max 10000 caractères)",
|
||||
"Current state of the task": "État actuel de la tâche",
|
||||
"Due date for the task": "Date d'échéance pour la tâche",
|
||||
"Configure task assignment and organization based on task type": "Configurer l'affectation et l'organisation des tâches en fonction du type de tâche",
|
||||
"Search across all contact information including name, email, phone, organization, custom fields, notes, etc. Leave empty to get all contacts.": "Recherchez sur toutes les informations de contact, y compris le nom, le courriel, le téléphone, l'organisation, les champs personnalisés, les notes, etc. Laissez vide pour obtenir tous les contacts.",
|
||||
"Configure how to search and filter contacts": "Configurer comment rechercher et filtrer les contacts",
|
||||
"How to format the returned contact data": "Comment formater les données de contact retournées",
|
||||
"Authorization headers are injected automatically from your connection.": "Les en-têtes d'autorisation sont injectés automatiquement à partir de votre connexion.",
|
||||
"Enable for files like PDFs, images, etc..": "Activer pour les fichiers comme les PDFs, les images, etc.",
|
||||
"Male": "Homme",
|
||||
"Female": "Femme",
|
||||
"Other": "Autres",
|
||||
"Email": "Courriel",
|
||||
"SMS": "SMS",
|
||||
"WhatsApp": "WhatsApp",
|
||||
"Missive Live Chat": "Chat en direct",
|
||||
"Custom Channel": "Canal personnalisé",
|
||||
"Messenger": "Messager",
|
||||
"Instagram": "Instagram",
|
||||
"Standalone Task": "Tâche autonome",
|
||||
"Conversation Subtask": "Sous-tâche de la conversation",
|
||||
"Todo": "Todo",
|
||||
"In Progress": "En cours",
|
||||
"Closed": "Fermé",
|
||||
"Full Contact Data": "Données de contact complètes",
|
||||
"Summary Only": "Résumé seulement",
|
||||
"Count Only": "Compter seulement",
|
||||
"GET": "OBTENIR",
|
||||
"POST": "POSTER",
|
||||
"PATCH": "PATCH",
|
||||
"PUT": "EFFACER",
|
||||
"DELETE": "SUPPRIMER",
|
||||
"HEAD": "TÊTE",
|
||||
"New Message": "Nouveau message",
|
||||
"New Comment": "Nouveau commentaire",
|
||||
"New Contact": "Nouveau contact",
|
||||
"New Contact Book": "Nouveau carnet de contacts",
|
||||
"New Contact Group": "Nouveau groupe de contacts",
|
||||
"Triggers when new messages are received (email, SMS, WhatsApp, Facebook, etc.)": "Déclenche quand de nouveaux messages sont reçus (e-mail, SMS, WhatsApp, Facebook, etc.)",
|
||||
"Triggers when new comments are added to conversations": "Déclenche lorsque de nouveaux commentaires sont ajoutés aux conversations",
|
||||
"Triggers when new contacts are added to contact books": "Déclenche quand de nouveaux contacts sont ajoutés aux carnet de contacts",
|
||||
"Triggers when new contact books are created": "Déclenche quand de nouveaux carnets de contact sont créés",
|
||||
"Triggers when new contact groups are created": "Déclenche quand de nouveaux groupes de contacts sont créés",
|
||||
"Markdown": "Markdown",
|
||||
"\n## Setup Instructions\n\nTo use this trigger, you need to manually create a webhook rule in your Missive account:\n\n### 1. Access Missive Rules\n- Open Missive and go to **Settings > Rules**\n- Click **\"New incoming rule\"** or **\"New outgoing rule\"**\n\n### 2. Configure the Trigger\nChoose from these message types:\n- **Email** - Incoming email messages\n- **SMS** - Text messages \n- **WhatsApp** - WhatsApp messages\n- **Facebook Messenger** - Facebook messages\n- **Instagram** - Instagram messages\n- **Twitter** - Twi": "\n## Setup Instructions\n\nTo use this trigger, you need to manually create a webhook rule in your Missive account:\n\n### 1. Access Missive Rules\n- Open Missive and go to **Settings > Rules**\n- Click **\"New incoming rule\"** or **\"New outgoing rule\"**\n\n### 2. Configure the Trigger\nChoose from these message types:\n- **Email** - Incoming email messages\n- **SMS** - Text messages \n- **WhatsApp** - WhatsApp messages\n- **Facebook Messenger** - Facebook messages\n- **Instagram** - Instagram messages\n- **Twitter** - Twitter messages\n- **Missive Live Chat** - Live chat messages\n\n### 3. Add Filters (Optional)\nConfigure filters like:\n- Specific sender email addresses\n- Subject line contains text\n- Message content contains keywords\n- Organization or team scope\n\n### 4. Set Webhook Action\n1. In the **Actions** section, select **\"Webhook\"**\n2. Paste this URL in the **Webhook URL** field:\n```text\n{{webhookUrl}}\n```\n3. Set **HTTP Method** to **POST**\n4. Leave **Content Type** as **application/json**\n\n### 5. Save the Rule\n- Click **Save** to activate the webhook\n- Missive will validate your endpoint automatically\n\n---\n\n**Note:** You need admin/owner permissions and a Productive plan to create rules.\n\n**Example Use Cases:**\n- Trigger when emails from specific customers arrive\n- Process all WhatsApp messages for customer support\n- Route urgent emails (subject contains \"URGENT\") to special workflows\n- Log all social media interactions to your CRM\n ",
|
||||
"\n## Setup Instructions\n\nTo use this trigger, you need to manually create a webhook rule in your Missive account:\n\n### 1. Access Missive Rules\n- Open Missive and go to **Settings > Rules**\n- Click **\"New incoming rule\"** or **\"New outgoing rule\"**\n\n### 2. Configure the Trigger\nIn the **When should rule trigger?** section:\n- Select **\"New comment\"** from the User actions\n\n### 3. Add Filters (Optional)\nConfigure filters like:\n- **Specific author** - Only comments from certain team members\n- **Task comments onl": "\n## Setup Instructions\n\nTo use this trigger, you need to manually create a webhook rule in your Missive account:\n\n### 1. Access Missive Rules\n- Open Missive and go to **Settings > Rules**\n- Click **\"New incoming rule\"** or **\"New outgoing rule\"**\n\n### 2. Configure the Trigger\nIn the **When should rule trigger?** section:\n- Select **\"New comment\"** from the User actions\n\n### 3. Add Filters (Optional)\nConfigure filters like:\n- **Specific author** - Only comments from certain team members\n- **Task comments only** - Only comments on tasks\n- **Content contains** - Comments with specific keywords\n- **Mentions** - When specific users are mentioned\n- **Organization scope** - Organization vs personal conversations\n\n### 4. Set Webhook Action\n1. In the **Actions** section, select **\"Webhook\"**\n2. Paste this URL in the **Webhook URL** field:\n```text\n{{webhookUrl}}\n```\n3. Set **HTTP Method** to **POST**\n4. Leave **Content Type** as **application/json**\n\n### 5. Save the Rule\n- Click **Save** to activate the webhook\n- Missive will validate your endpoint automatically\n\n---\n\n**Note:** You need admin/owner permissions and a Productive plan to create rules.\n\n**Example Use Cases:**\n- Alert managers when team members comment on critical conversations\n- Track task progress through comment notifications\n- Route comments with specific keywords to specialized workflows\n- Log team collaboration activity to project management tools\n ",
|
||||
"\n## Setup Instructions\n\nTo use this trigger, you need to manually create a webhook rule in your Missive account:\n\n### 1. Access Missive Rules\n- Open Missive and go to **Settings > Rules**\n- Click **\"New incoming rule\"** or **\"New outgoing rule\"**\n\n### 2. Configure the Trigger\nIn the **When should rule trigger?** section:\n- Look for **\"New contact\"** or **\"Contact created\"** in the available trigger types\n- Select this option to trigger on contact creation\n\n### 3. Add Filters (Optional)\nConfigure filters lik": "\n## Setup Instructions\n\nTo use this trigger, you need to manually create a webhook rule in your Missive account:\n\n### 1. Access Missive Rules\n- Open Missive and go to **Settings > Rules**\n- Click **\"New incoming rule\"** or **\"New outgoing rule\"**\n\n### 2. Configure the Trigger\nIn the **When should rule trigger?** section:\n- Look for **\"New contact\"** or **\"Contact created\"** in the available trigger types\n- Select this option to trigger on contact creation\n\n### 3. Add Filters (Optional)\nConfigure filters like:\n- **Contact book** - Only contacts added to specific contact books\n- **Contact owner** - Only contacts assigned to specific users\n- **Has email** - Only contacts with email addresses\n- **Has phone** - Only contacts with phone numbers\n- **Organization membership** - Contacts belonging to specific organizations\n- **Starred contacts** - Only starred contacts\n\n### 4. Set Webhook Action\n1. In the **Actions** section, select **\"Webhook\"**\n2. Paste this URL in the **Webhook URL** field:\n```text\n{{webhookUrl}}\n```\n3. Set **HTTP Method** to **POST**\n4. Leave **Content Type** as **application/json**\n\n### 5. Save the Rule\n- Click **Save** to activate the webhook\n- Missive will validate your endpoint automatically\n\n---\n\n**Note:** You need admin/owner permissions and a Productive plan to create rules.\n\n**Example Use Cases:**\n- Sync new contacts to your CRM automatically\n- Send welcome emails to new business contacts\n- Add new contacts to marketing automation workflows\n- Alert sales team when new prospects are added\n- Backup contact data to external systems\n ",
|
||||
"\n## Setup Instructions\n\nTo use this trigger, you need to manually create a webhook rule in your Missive account:\n\n### 1. Access Missive Rules\n- Open Missive and go to **Settings > Rules**\n- Click **\"New incoming rule\"** or **\"New outgoing rule\"**\n\n### 2. Configure the Trigger\nIn the **When should rule trigger?** section:\n- Look for **\"New contact book\"** or **\"Contact book created\"** in the available trigger types\n- Select this option to trigger on contact book creation\n\n### 3. Add Filters (Optional)\nConfig": "\n## Setup Instructions\n\nTo use this trigger, you need to manually create a webhook rule in your Missive account:\n\n### 1. Access Missive Rules\n- Open Missive and go to **Settings > Rules**\n- Click **\"New incoming rule\"** or **\"New outgoing rule\"**\n\n### 2. Configure the Trigger\nIn the **When should rule trigger?** section:\n- Look for **\"New contact book\"** or **\"Contact book created\"** in the available trigger types\n- Select this option to trigger on contact book creation\n\n### 3. Add Filters (Optional)\nConfigure filters like:\n- **Book owner** - Only contact books created by specific users\n- **Organization scope** - Organization vs personal contact books\n- **Book name contains** - Contact books with specific naming patterns\n\n### 4. Set Webhook Action\n1. In the **Actions** section, select **\"Webhook\"**\n2. Paste this URL in the **Webhook URL** field:\n```text\n{{webhookUrl}}\n```\n3. Set **HTTP Method** to **POST**\n4. Leave **Content Type** as **application/json**\n\n### 5. Save the Rule\n- Click **Save** to activate the webhook\n- Missive will validate your endpoint automatically\n\n---\n\n**Note:** You need admin/owner permissions and a Productive plan to create rules.\n\n**Example Use Cases:**\n- Set up automatic contact book backups when new books are created\n- Initialize contact book permissions and sharing settings\n- Notify administrators when teams create new contact databases\n- Create corresponding contact lists in external CRM systems\n- Track contact book creation for audit and compliance\n ",
|
||||
"\n## Setup Instructions\n\nTo use this trigger, you need to manually create a webhook rule in your Missive account:\n\n### 1. Access Missive Rules\n- Open Missive and go to **Settings > Rules**\n- Click **\"New incoming rule\"** or **\"New outgoing rule\"**\n\n### 2. Configure the Trigger\nIn the **When should rule trigger?** section:\n- Look for **\"New contact group\"** or **\"Contact group created\"** in the available trigger types\n- Select this option to trigger on contact group creation\n\n### 3. Add Filters (Optional)\nCon": "\n## Setup Instructions\n\nTo use this trigger, you need to manually create a webhook rule in your Missive account:\n\n### 1. Access Missive Rules\n- Open Missive and go to **Settings > Rules**\n- Click **\"New incoming rule\"** or **\"New outgoing rule\"**\n\n### 2. Configure the Trigger\nIn the **When should rule trigger?** section:\n- Look for **\"New contact group\"** or **\"Contact group created\"** in the available trigger types\n- Select this option to trigger on contact group creation\n\n### 3. Add Filters (Optional)\nConfigure filters like:\n- **Contact book** - Only groups created in specific contact books\n- **Group type** - Organizations vs regular groups\n- **Group creator** - Only groups created by specific users\n- **Group name contains** - Groups with specific naming patterns\n\n### 4. Set Webhook Action\n1. In the **Actions** section, select **\"Webhook\"**\n2. Paste this URL in the **Webhook URL** field:\n```text\n{{webhookUrl}}\n```\n3. Set **HTTP Method** to **POST**\n4. Leave **Content Type** as **application/json**\n\n### 5. Save the Rule\n- Click **Save** to activate the webhook\n- Missive will validate your endpoint automatically\n\n---\n\n**Note:** You need admin/owner permissions and a Productive plan to create rules.\n\n**Example Use Cases:**\n- Sync new contact groups to external CRM systems\n- Set up automatic group permissions and access controls\n- Create corresponding lists in marketing automation platforms\n- Track contact organization for sales pipeline management\n- Initialize group-specific workflows and templates\n "
|
||||
}
|
||||
@@ -0,0 +1,140 @@
|
||||
{
|
||||
"\n To get your API token:\n \n 1. Go to your Missive preferences\n 2. Click the API tab \n 3. Click \"Create a new token\"\n 4. Copy the generated token (starts with 'missive_pat-')\n \n Note: You need to be part of an organization subscribed to the Productive plan to generate API tokens.\n ": "\n To get your API token:\n \n 1. Go to your Missive preferences\n 2. Click the API tab \n 3. Click \"Create a new token\"\n 4. Copy the generated token (starts with 'missive_pat-')\n \n Note: You need to be part of an organization subscribed to the Productive plan to generate API tokens.\n ",
|
||||
"Create Contact": "連絡先を作成",
|
||||
"Update Contact": "連絡先を更新",
|
||||
"Create Draft/Post": "ドラフト/投稿を作成",
|
||||
"Create Task": "タスクを作成",
|
||||
"Find Contact": "連絡先を探す",
|
||||
"Custom API Call": "カスタムAPI通話",
|
||||
"Add a new contact within a specified contact book": "指定された連絡先ブック内に新しい連絡先を追加",
|
||||
"Modify fields for an existing contact": "既存の連絡先のフィールドを変更",
|
||||
"Create a draft message or post in Missive, with option to send": "下書きメッセージまたは投稿をMisiveで作成し、オプションで送信します",
|
||||
"Create a task that can be standalone or associated with a conversation": "スタンドアロンまたは会話に関連付けられるタスクを作成します",
|
||||
"Search for contacts by text, email, name, or any contact information": "テキスト、メール、名前、連絡先情報で連絡先を検索",
|
||||
"Make a custom API call to a specific endpoint": "特定のエンドポイントへのカスタム API コールを実行します。",
|
||||
"Contact Book": "連絡先",
|
||||
"First Name": "名",
|
||||
"Last Name": "姓",
|
||||
"Middle Name": "ミドルネーム",
|
||||
"Phonetic First Name": "名字を入力",
|
||||
"Phonetic Last Name": "名字を入力",
|
||||
"Phonetic Middle Name": "ミドルネーム",
|
||||
"Prefix": "プレフィックス",
|
||||
"Suffix": "Suffix",
|
||||
"Nickname": "ニックネーム:",
|
||||
"File As": "ファイル",
|
||||
"Notes": "メモ",
|
||||
"Starred": "スター付き",
|
||||
"Gender": "性別",
|
||||
"Contact Information": "連絡先情報",
|
||||
"Memberships": "メンバシップ",
|
||||
"Contact": "お問い合わせ",
|
||||
"Move to Contact Book": "連絡先に移動",
|
||||
"Message Type": "メッセージの種類",
|
||||
"Subject": "件名",
|
||||
"Message Body": "メッセージ本文",
|
||||
"Message Configuration": "メッセージの設定",
|
||||
"Conversation Options": "会話オプション",
|
||||
"Send Immediately": "すぐに送信",
|
||||
"Schedule Send": "スケジュール送信",
|
||||
"Send At (Unix Timestamp)": "(Unix タイムスタンプ) で送信",
|
||||
"Auto Follow-up": "自動フォロー アップ",
|
||||
"Attachments": "添付ファイル",
|
||||
"Task Type": "タスクの種類",
|
||||
"Task Title": "タスクタイトル",
|
||||
"Description": "Description",
|
||||
"Task State": "タスクの状態",
|
||||
"Due Date": "締切日",
|
||||
"Task Configuration": "タスクの設定",
|
||||
"Search Term": "検索用語",
|
||||
"Search & Filter Options": "検索とフィルタオプション",
|
||||
"Result Format": "結果の形式",
|
||||
"Method": "方法",
|
||||
"Headers": "ヘッダー",
|
||||
"Query Parameters": "クエリパラメータ",
|
||||
"Body": "本文",
|
||||
"Response is Binary ?": "応答はバイナリですか?",
|
||||
"No Error on Failure": "失敗時にエラーはありません",
|
||||
"Timeout (in seconds)": "タイムアウト(秒)",
|
||||
"Select the contact book where the contact will be created": "連絡先を作成する連絡先帳を選択します",
|
||||
"First name of the contact": "連絡先の名",
|
||||
"Last name of the contact": "連絡先の姓",
|
||||
"Middle name of the contact": "連絡先のミドルネーム",
|
||||
"Phonetic spelling of the first name": "最初の名前のスペルチェック",
|
||||
"Phonetic spelling of the last name": "苗字のスペルチェック",
|
||||
"Phonetic spelling of the middle name": "ミドルネームのスペル",
|
||||
"Name prefix (e.g., Mr., Mrs., Dr.)": "名前のプレフィックス(例、Mr.、Dr.)",
|
||||
"Name suffix (e.g., Jr., Sr., III)": "名前のサフィックス(例:Jr., Sr., III)",
|
||||
"Nickname for the contact": "連絡先のファイル名",
|
||||
"How the contact should be filed/sorted": "連絡先の提出/ソート方法",
|
||||
"Additional notes about the contact": "連絡先に関する追加メモ",
|
||||
"Whether the contact should be starred": "連絡先にスターを付けるかどうか",
|
||||
"Gender of the contact": "連絡先の性別",
|
||||
"Email addresses, phone numbers, and other contact information": "メールアドレス、電話番号、その他の連絡先情報",
|
||||
"Organizations and groups the contact belongs to": "連絡先が属する組織とグループ",
|
||||
"Select the contact to update": "更新する連絡先を選択してください",
|
||||
"Move contact to a different contact book (optional)": "別の連絡先に連絡先を移動 (オプション)",
|
||||
"Email addresses, phone numbers, and other contact information. Note: When updating infos, all existing infos will be replaced with the ones provided here.": "メールアドレス、電話番号、その他の連絡先情報。注:更新時には、すべての既存の情報がここに記載されている情報に置き換えられます。",
|
||||
"Organizations and groups the contact belongs to. Note: When updating memberships, all existing memberships will be replaced with the ones provided here.": "取引先責任者が所属している取引先およびグループ。注: メンバーシップを更新する場合、すべての既存のメンバーシップはここに提供されているものに置き換えられます。",
|
||||
"Type of message to create": "作成するメッセージの種類",
|
||||
"Subject line (primarily for email)": "件名 (主にメール)",
|
||||
"The content of your message (supports HTML for email)": "メッセージの内容 (メール用のHTMLをサポート)",
|
||||
"Configure sender, recipients, and message-specific options": "送信者、受信者、およびメッセージ固有のオプションを設定します",
|
||||
"Advanced conversation management options": "高度な会話管理オプション",
|
||||
"Send the draft immediately instead of saving as draft": "下書きとして保存する代わりに、すぐに下書きを送信します",
|
||||
"Schedule the message to be sent later": "後で送信するメッセージをスケジュールする",
|
||||
"Unix timestamp when to send the message (required if scheduling)": "Unixタイムスタンプ(スケジュール中は必須)",
|
||||
"Cancel scheduled send if there is a reply (requires scheduling)": "返信がある場合はスケジュールされた送信をキャンセルします(スケジュールが必要です)",
|
||||
"File attachments (up to 25 files, max 10MB total)": "添付ファイル(最大25ファイル、合計最大10MB)",
|
||||
"Type of task to create": "作成するタスクの種類",
|
||||
"Title of the task (max 1000 characters)": "タスクのタイトル (最大 1000 文字)",
|
||||
"Description of the task (max 10000 characters)": "タスクの説明 (最大 10000文字)",
|
||||
"Current state of the task": "タスクの現在の状態",
|
||||
"Due date for the task": "タスクの期限",
|
||||
"Configure task assignment and organization based on task type": "タスクの種類に基づいてタスクの割り当てと組織を設定します",
|
||||
"Search across all contact information including name, email, phone, organization, custom fields, notes, etc. Leave empty to get all contacts.": "名前、電子メール、電話、組織、カスタムフィールド、メモなどのすべての連絡先情報を検索します。すべての連絡先を取得するには空白のままにしてください。",
|
||||
"Configure how to search and filter contacts": "連絡先を検索してフィルタリングする方法を設定します",
|
||||
"How to format the returned contact data": "返信された連絡先データをフォーマットする方法",
|
||||
"Authorization headers are injected automatically from your connection.": "認証ヘッダは接続から自動的に注入されます。",
|
||||
"Enable for files like PDFs, images, etc..": "PDF、画像などのファイルを有効にします。",
|
||||
"Male": "男性",
|
||||
"Female": "女性",
|
||||
"Other": "その他",
|
||||
"Email": "Eメールアドレス",
|
||||
"SMS": "SMS",
|
||||
"WhatsApp": "WhatsApp",
|
||||
"Missive Live Chat": "僅用於中文",
|
||||
"Custom Channel": "カスタムチャンネル",
|
||||
"Messenger": "Messenger",
|
||||
"Instagram": "Instagram",
|
||||
"Standalone Task": "スタンドアロンタスク",
|
||||
"Conversation Subtask": "会話サブタスク",
|
||||
"Todo": "Todo",
|
||||
"In Progress": "進行中",
|
||||
"Closed": "クローズ済み",
|
||||
"Full Contact Data": "完全な連絡先データ",
|
||||
"Summary Only": "概要のみ",
|
||||
"Count Only": "カウントのみ",
|
||||
"GET": "取得",
|
||||
"POST": "POST",
|
||||
"PATCH": "PATCH",
|
||||
"PUT": "PUT",
|
||||
"DELETE": "削除",
|
||||
"HEAD": "頭",
|
||||
"New Message": "新しいメッセージ",
|
||||
"New Comment": "新しいコメント",
|
||||
"New Contact": "新しい連絡先",
|
||||
"New Contact Book": "新しい連絡先",
|
||||
"New Contact Group": "新しい連絡先グループ",
|
||||
"Triggers when new messages are received (email, SMS, WhatsApp, Facebook, etc.)": "新しいメッセージが受信されたときにトリガーされます(電子メール、SMS、WhatsApp、Facebookなど)。",
|
||||
"Triggers when new comments are added to conversations": "新しいコメントが会話に追加されたときのトリガー",
|
||||
"Triggers when new contacts are added to contact books": "新しい連絡先が連絡先に追加されたときにトリガーします",
|
||||
"Triggers when new contact books are created": "新しい連絡先ブックが作成されたときにトリガーします",
|
||||
"Triggers when new contact groups are created": "新しい連絡先グループが作成されたときにトリガー",
|
||||
"Markdown": "Markdown",
|
||||
"\n## Setup Instructions\n\nTo use this trigger, you need to manually create a webhook rule in your Missive account:\n\n### 1. Access Missive Rules\n- Open Missive and go to **Settings > Rules**\n- Click **\"New incoming rule\"** or **\"New outgoing rule\"**\n\n### 2. Configure the Trigger\nChoose from these message types:\n- **Email** - Incoming email messages\n- **SMS** - Text messages \n- **WhatsApp** - WhatsApp messages\n- **Facebook Messenger** - Facebook messages\n- **Instagram** - Instagram messages\n- **Twitter** - Twi": "\n## Setup Instructions\n\nTo use this trigger, you need to manually create a webhook rule in your Missive account:\n\n### 1. Access Missive Rules\n- Open Missive and go to **Settings > Rules**\n- Click **\"New incoming rule\"** or **\"New outgoing rule\"**\n\n### 2. Configure the Trigger\nChoose from these message types:\n- **Email** - Incoming email messages\n- **SMS** - Text messages \n- **WhatsApp** - WhatsApp messages\n- **Facebook Messenger** - Facebook messages\n- **Instagram** - Instagram messages\n- **Twitter** - Twitter messages\n- **Missive Live Chat** - Live chat messages\n\n### 3. Add Filters (Optional)\nConfigure filters like:\n- Specific sender email addresses\n- Subject line contains text\n- Message content contains keywords\n- Organization or team scope\n\n### 4. Set Webhook Action\n1. In the **Actions** section, select **\"Webhook\"**\n2. Paste this URL in the **Webhook URL** field:\n```text\n{{webhookUrl}}\n```\n3. Set **HTTP Method** to **POST**\n4. Leave **Content Type** as **application/json**\n\n### 5. Save the Rule\n- Click **Save** to activate the webhook\n- Missive will validate your endpoint automatically\n\n---\n\n**Note:** You need admin/owner permissions and a Productive plan to create rules.\n\n**Example Use Cases:**\n- Trigger when emails from specific customers arrive\n- Process all WhatsApp messages for customer support\n- Route urgent emails (subject contains \"URGENT\") to special workflows\n- Log all social media interactions to your CRM\n ",
|
||||
"\n## Setup Instructions\n\nTo use this trigger, you need to manually create a webhook rule in your Missive account:\n\n### 1. Access Missive Rules\n- Open Missive and go to **Settings > Rules**\n- Click **\"New incoming rule\"** or **\"New outgoing rule\"**\n\n### 2. Configure the Trigger\nIn the **When should rule trigger?** section:\n- Select **\"New comment\"** from the User actions\n\n### 3. Add Filters (Optional)\nConfigure filters like:\n- **Specific author** - Only comments from certain team members\n- **Task comments onl": "\n## Setup Instructions\n\nTo use this trigger, you need to manually create a webhook rule in your Missive account:\n\n### 1. Access Missive Rules\n- Open Missive and go to **Settings > Rules**\n- Click **\"New incoming rule\"** or **\"New outgoing rule\"**\n\n### 2. Configure the Trigger\nIn the **When should rule trigger?** section:\n- Select **\"New comment\"** from the User actions\n\n### 3. Add Filters (Optional)\nConfigure filters like:\n- **Specific author** - Only comments from certain team members\n- **Task comments only** - Only comments on tasks\n- **Content contains** - Comments with specific keywords\n- **Mentions** - When specific users are mentioned\n- **Organization scope** - Organization vs personal conversations\n\n### 4. Set Webhook Action\n1. In the **Actions** section, select **\"Webhook\"**\n2. Paste this URL in the **Webhook URL** field:\n```text\n{{webhookUrl}}\n```\n3. Set **HTTP Method** to **POST**\n4. Leave **Content Type** as **application/json**\n\n### 5. Save the Rule\n- Click **Save** to activate the webhook\n- Missive will validate your endpoint automatically\n\n---\n\n**Note:** You need admin/owner permissions and a Productive plan to create rules.\n\n**Example Use Cases:**\n- Alert managers when team members comment on critical conversations\n- Track task progress through comment notifications\n- Route comments with specific keywords to specialized workflows\n- Log team collaboration activity to project management tools\n ",
|
||||
"\n## Setup Instructions\n\nTo use this trigger, you need to manually create a webhook rule in your Missive account:\n\n### 1. Access Missive Rules\n- Open Missive and go to **Settings > Rules**\n- Click **\"New incoming rule\"** or **\"New outgoing rule\"**\n\n### 2. Configure the Trigger\nIn the **When should rule trigger?** section:\n- Look for **\"New contact\"** or **\"Contact created\"** in the available trigger types\n- Select this option to trigger on contact creation\n\n### 3. Add Filters (Optional)\nConfigure filters lik": "\n## Setup Instructions\n\nTo use this trigger, you need to manually create a webhook rule in your Missive account:\n\n### 1. Access Missive Rules\n- Open Missive and go to **Settings > Rules**\n- Click **\"New incoming rule\"** or **\"New outgoing rule\"**\n\n### 2. Configure the Trigger\nIn the **When should rule trigger?** section:\n- Look for **\"New contact\"** or **\"Contact created\"** in the available trigger types\n- Select this option to trigger on contact creation\n\n### 3. Add Filters (Optional)\nConfigure filters like:\n- **Contact book** - Only contacts added to specific contact books\n- **Contact owner** - Only contacts assigned to specific users\n- **Has email** - Only contacts with email addresses\n- **Has phone** - Only contacts with phone numbers\n- **Organization membership** - Contacts belonging to specific organizations\n- **Starred contacts** - Only starred contacts\n\n### 4. Set Webhook Action\n1. In the **Actions** section, select **\"Webhook\"**\n2. Paste this URL in the **Webhook URL** field:\n```text\n{{webhookUrl}}\n```\n3. Set **HTTP Method** to **POST**\n4. Leave **Content Type** as **application/json**\n\n### 5. Save the Rule\n- Click **Save** to activate the webhook\n- Missive will validate your endpoint automatically\n\n---\n\n**Note:** You need admin/owner permissions and a Productive plan to create rules.\n\n**Example Use Cases:**\n- Sync new contacts to your CRM automatically\n- Send welcome emails to new business contacts\n- Add new contacts to marketing automation workflows\n- Alert sales team when new prospects are added\n- Backup contact data to external systems\n ",
|
||||
"\n## Setup Instructions\n\nTo use this trigger, you need to manually create a webhook rule in your Missive account:\n\n### 1. Access Missive Rules\n- Open Missive and go to **Settings > Rules**\n- Click **\"New incoming rule\"** or **\"New outgoing rule\"**\n\n### 2. Configure the Trigger\nIn the **When should rule trigger?** section:\n- Look for **\"New contact book\"** or **\"Contact book created\"** in the available trigger types\n- Select this option to trigger on contact book creation\n\n### 3. Add Filters (Optional)\nConfig": "\n## Setup Instructions\n\nTo use this trigger, you need to manually create a webhook rule in your Missive account:\n\n### 1. Access Missive Rules\n- Open Missive and go to **Settings > Rules**\n- Click **\"New incoming rule\"** or **\"New outgoing rule\"**\n\n### 2. Configure the Trigger\nIn the **When should rule trigger?** section:\n- Look for **\"New contact book\"** or **\"Contact book created\"** in the available trigger types\n- Select this option to trigger on contact book creation\n\n### 3. Add Filters (Optional)\nConfigure filters like:\n- **Book owner** - Only contact books created by specific users\n- **Organization scope** - Organization vs personal contact books\n- **Book name contains** - Contact books with specific naming patterns\n\n### 4. Set Webhook Action\n1. In the **Actions** section, select **\"Webhook\"**\n2. Paste this URL in the **Webhook URL** field:\n```text\n{{webhookUrl}}\n```\n3. Set **HTTP Method** to **POST**\n4. Leave **Content Type** as **application/json**\n\n### 5. Save the Rule\n- Click **Save** to activate the webhook\n- Missive will validate your endpoint automatically\n\n---\n\n**Note:** You need admin/owner permissions and a Productive plan to create rules.\n\n**Example Use Cases:**\n- Set up automatic contact book backups when new books are created\n- Initialize contact book permissions and sharing settings\n- Notify administrators when teams create new contact databases\n- Create corresponding contact lists in external CRM systems\n- Track contact book creation for audit and compliance\n ",
|
||||
"\n## Setup Instructions\n\nTo use this trigger, you need to manually create a webhook rule in your Missive account:\n\n### 1. Access Missive Rules\n- Open Missive and go to **Settings > Rules**\n- Click **\"New incoming rule\"** or **\"New outgoing rule\"**\n\n### 2. Configure the Trigger\nIn the **When should rule trigger?** section:\n- Look for **\"New contact group\"** or **\"Contact group created\"** in the available trigger types\n- Select this option to trigger on contact group creation\n\n### 3. Add Filters (Optional)\nCon": "\n## Setup Instructions\n\nTo use this trigger, you need to manually create a webhook rule in your Missive account:\n\n### 1. Access Missive Rules\n- Open Missive and go to **Settings > Rules**\n- Click **\"New incoming rule\"** or **\"New outgoing rule\"**\n\n### 2. Configure the Trigger\nIn the **When should rule trigger?** section:\n- Look for **\"New contact group\"** or **\"Contact group created\"** in the available trigger types\n- Select this option to trigger on contact group creation\n\n### 3. Add Filters (Optional)\nConfigure filters like:\n- **Contact book** - Only groups created in specific contact books\n- **Group type** - Organizations vs regular groups\n- **Group creator** - Only groups created by specific users\n- **Group name contains** - Groups with specific naming patterns\n\n### 4. Set Webhook Action\n1. In the **Actions** section, select **\"Webhook\"**\n2. Paste this URL in the **Webhook URL** field:\n```text\n{{webhookUrl}}\n```\n3. Set **HTTP Method** to **POST**\n4. Leave **Content Type** as **application/json**\n\n### 5. Save the Rule\n- Click **Save** to activate the webhook\n- Missive will validate your endpoint automatically\n\n---\n\n**Note:** You need admin/owner permissions and a Productive plan to create rules.\n\n**Example Use Cases:**\n- Sync new contact groups to external CRM systems\n- Set up automatic group permissions and access controls\n- Create corresponding lists in marketing automation platforms\n- Track contact organization for sales pipeline management\n- Initialize group-specific workflows and templates\n "
|
||||
}
|
||||
@@ -0,0 +1,140 @@
|
||||
{
|
||||
"\n To get your API token:\n \n 1. Go to your Missive preferences\n 2. Click the API tab \n 3. Click \"Create a new token\"\n 4. Copy the generated token (starts with 'missive_pat-')\n \n Note: You need to be part of an organization subscribed to the Productive plan to generate API tokens.\n ": "\n Om je API token te krijgen:\n \n 1. Ga naar uw missie-voorkeuren\n 2. Klik op de API-tab \n 3. Klik op \"Nieuwe token aanmaken\"\n 4. Kopieer de gegenereerde token (begint met 'missive_pat-')\n \n Opmerking: Je moet deel uitmaken van een organisatie geabonneerd op het Productieve plan om API tokens te genereren.\n ",
|
||||
"Create Contact": "Contactpersoon aanmaken",
|
||||
"Update Contact": "Contactpersoon bijwerken",
|
||||
"Create Draft/Post": "Ontwerp/bericht maken",
|
||||
"Create Task": "Taak maken",
|
||||
"Find Contact": "Contactpersoon zoeken",
|
||||
"Custom API Call": "Custom API Call",
|
||||
"Add a new contact within a specified contact book": "Een nieuw contact toevoegen binnen een specifiek contactboek",
|
||||
"Modify fields for an existing contact": "Velden voor een bestaand contact wijzigen",
|
||||
"Create a draft message or post in Missive, with option to send": "Maak een conceptbericht of bericht in missie, met de optie om te verzenden",
|
||||
"Create a task that can be standalone or associated with a conversation": "Een taak maken die zelfstandig kan zijn of gekoppeld aan een gesprek",
|
||||
"Search for contacts by text, email, name, or any contact information": "Zoeken naar contacten op sms, e-mail, naam of contactinformatie",
|
||||
"Make a custom API call to a specific endpoint": "Maak een aangepaste API call naar een specifiek eindpunt",
|
||||
"Contact Book": "Contact Boek",
|
||||
"First Name": "Voornaam",
|
||||
"Last Name": "Achternaam",
|
||||
"Middle Name": "Tweede naam",
|
||||
"Phonetic First Name": "Fonetische voornaam",
|
||||
"Phonetic Last Name": "Fonetische achternaam",
|
||||
"Phonetic Middle Name": "Fonetische tweede naam",
|
||||
"Prefix": "Voorvoegsel",
|
||||
"Suffix": "Suffix",
|
||||
"Nickname": "Gebruikersnaam",
|
||||
"File As": "Bestand als",
|
||||
"Notes": "Opmerkingen",
|
||||
"Starred": "Sterren",
|
||||
"Gender": "Geslacht",
|
||||
"Contact Information": "Contact informatie",
|
||||
"Memberships": "Lidmaatschap",
|
||||
"Contact": "Contactpersoon",
|
||||
"Move to Contact Book": "Verplaatsen naar contactenboek",
|
||||
"Message Type": "Bericht type",
|
||||
"Subject": "Onderwerp",
|
||||
"Message Body": "Bericht Body",
|
||||
"Message Configuration": "Bericht configuratie",
|
||||
"Conversation Options": "Gesprek opties",
|
||||
"Send Immediately": "Stuur Onmiddellijk",
|
||||
"Schedule Send": "Verzenden plannen",
|
||||
"Send At (Unix Timestamp)": "Verzenden op (Unix Tijdstempel)",
|
||||
"Auto Follow-up": "Automatisch opvolgen",
|
||||
"Attachments": "Bijlagen",
|
||||
"Task Type": "Type taak",
|
||||
"Task Title": "Taak titel",
|
||||
"Description": "Beschrijving",
|
||||
"Task State": "Taak status",
|
||||
"Due Date": "Inleverdatum",
|
||||
"Task Configuration": "Taak configuratie",
|
||||
"Search Term": "Zoek term",
|
||||
"Search & Filter Options": "Zoek- & filteropties",
|
||||
"Result Format": "Resultaat formaat",
|
||||
"Method": "Methode",
|
||||
"Headers": "Kopteksten",
|
||||
"Query Parameters": "Query parameters",
|
||||
"Body": "Lichaam",
|
||||
"Response is Binary ?": "Antwoord is binair?",
|
||||
"No Error on Failure": "Geen fout bij fout",
|
||||
"Timeout (in seconds)": "Time-out (in seconden)",
|
||||
"Select the contact book where the contact will be created": "Selecteer het contactpersonenboek waar de contactpersoon wordt aangemaakt",
|
||||
"First name of the contact": "Voornaam van de contactpersoon",
|
||||
"Last name of the contact": "Achternaam van de contactpersoon",
|
||||
"Middle name of the contact": "Middelste naam van het contact",
|
||||
"Phonetic spelling of the first name": "Fonetische spelling van de voornaam",
|
||||
"Phonetic spelling of the last name": "Fonetische spelling van de achternaam",
|
||||
"Phonetic spelling of the middle name": "Fonetische spelling van de tweede naam",
|
||||
"Name prefix (e.g., Mr., Mrs., Dr.)": "Naam prefix (bijv. Mr., Mrs., Dr.)",
|
||||
"Name suffix (e.g., Jr., Sr., III)": "Naam achtervoegsel (bijv. Jr., Sr., III)",
|
||||
"Nickname for the contact": "Bijnaam voor de contactpersoon",
|
||||
"How the contact should be filed/sorted": "Hoe het contact moet worden aangelegd/gesorteerd",
|
||||
"Additional notes about the contact": "Aanvullende notities over de contactpersoon",
|
||||
"Whether the contact should be starred": "Of de contactpersoon sterkt moet zijn",
|
||||
"Gender of the contact": "Geslacht van het contact",
|
||||
"Email addresses, phone numbers, and other contact information": "E-mailadressen, telefoonnummers en andere contactinformatie",
|
||||
"Organizations and groups the contact belongs to": "Organisaties en groepen waartoe de contactpersoon behoort",
|
||||
"Select the contact to update": "Selecteer de contactpersoon om te updaten",
|
||||
"Move contact to a different contact book (optional)": "Verplaats contact naar een ander contact boek (optioneel)",
|
||||
"Email addresses, phone numbers, and other contact information. Note: When updating infos, all existing infos will be replaced with the ones provided here.": "E-mailadressen, telefoonnummers en andere contactinformatie. Opmerking: Bij het bijwerken van informatie worden alle bestaande informatie vervangen door de hier verstrekte informatie.",
|
||||
"Organizations and groups the contact belongs to. Note: When updating memberships, all existing memberships will be replaced with the ones provided here.": "Organisaties en groepen waartoe de contactpersoon behoort. Let op: Bij het bijwerken van lidmaatschappen worden alle bestaande lidmaatschappen vervangen door degene die hier zijn verstrekt.",
|
||||
"Type of message to create": "Type bericht om te maken",
|
||||
"Subject line (primarily for email)": "Onderwerp regel (voornamelijk voor e-mail)",
|
||||
"The content of your message (supports HTML for email)": "De inhoud van je bericht (ondersteunt HTML voor e-mail)",
|
||||
"Configure sender, recipients, and message-specific options": "Configureer afzender, ontvangers en bericht-specifieke opties",
|
||||
"Advanced conversation management options": "Geavanceerde gespreksbeheer opties",
|
||||
"Send the draft immediately instead of saving as draft": "Stuur het concept onmiddellijk in plaats van als concept op te slaan",
|
||||
"Schedule the message to be sent later": "Plan het bericht dat later wordt verzonden",
|
||||
"Unix timestamp when to send the message (required if scheduling)": "Unix tijdstempel wanneer het bericht moet worden verzonden (vereist indien gepland)",
|
||||
"Cancel scheduled send if there is a reply (requires scheduling)": "Annuleren geplande verzending als er een antwoord is (vereist plannen)",
|
||||
"File attachments (up to 25 files, max 10MB total)": "Bijlagen (maximaal 25 bestanden, max 10MB totaal)",
|
||||
"Type of task to create": "Type taak te maken",
|
||||
"Title of the task (max 1000 characters)": "Titel van de taak (max. 1000 tekens)",
|
||||
"Description of the task (max 10000 characters)": "Beschrijving van de taak (max. 10000 tekens)",
|
||||
"Current state of the task": "Huidige status van de taak",
|
||||
"Due date for the task": "Vervaldatum voor de taak",
|
||||
"Configure task assignment and organization based on task type": "Configureer taak toewijzing en organisatie gebaseerd op taak type",
|
||||
"Search across all contact information including name, email, phone, organization, custom fields, notes, etc. Leave empty to get all contacts.": "Zoek op alle contactinformatie inclusief naam, e-mail, telefoon, organisatie, aangepaste velden, notities, enz. Laat leeg om alle contactpersonen te krijgen.",
|
||||
"Configure how to search and filter contacts": "Instellen hoe zoeken en filteren van contactpersonen",
|
||||
"How to format the returned contact data": "Hoe de teruggegeven contactgegevens te formatteren",
|
||||
"Authorization headers are injected automatically from your connection.": "Autorisatie headers worden automatisch geïnjecteerd vanuit uw verbinding.",
|
||||
"Enable for files like PDFs, images, etc..": "Inschakelen voor bestanden zoals PDF's, afbeeldingen etc..",
|
||||
"Male": "Mannelijk",
|
||||
"Female": "Vrouwelijk",
|
||||
"Other": "anders",
|
||||
"Email": "E-mail",
|
||||
"SMS": "sms",
|
||||
"WhatsApp": "WhatsApp",
|
||||
"Missive Live Chat": "Missive Live Chat",
|
||||
"Custom Channel": "Aangepast Kanaal",
|
||||
"Messenger": "Messenger",
|
||||
"Instagram": "Instagram",
|
||||
"Standalone Task": "Alleenstaande taak",
|
||||
"Conversation Subtask": "Conversatie subtaak",
|
||||
"Todo": "Todo",
|
||||
"In Progress": "In uitvoering",
|
||||
"Closed": "gesloten",
|
||||
"Full Contact Data": "Volledige contactgegevens",
|
||||
"Summary Only": "Alleen samenvatting",
|
||||
"Count Only": "Alleen tellen",
|
||||
"GET": "KRIJG",
|
||||
"POST": "POSTE",
|
||||
"PATCH": "BEKIJK",
|
||||
"PUT": "PUT",
|
||||
"DELETE": "VERWIJDEREN",
|
||||
"HEAD": "HOOFD",
|
||||
"New Message": "Nieuw bericht",
|
||||
"New Comment": "Nieuwe reactie",
|
||||
"New Contact": "Nieuw contactpersoon",
|
||||
"New Contact Book": "Nieuw contactenboek",
|
||||
"New Contact Group": "Nieuwe contactgroep",
|
||||
"Triggers when new messages are received (email, SMS, WhatsApp, Facebook, etc.)": "Triggers wanneer nieuwe berichten worden ontvangen (e-mail, SMS, WhatsApp, Facebook, etc.)",
|
||||
"Triggers when new comments are added to conversations": "Triggert wanneer nieuwe reacties worden toegevoegd aan conversaties",
|
||||
"Triggers when new contacts are added to contact books": "Triggert wanneer nieuwe contacten worden toegevoegd aan contactboeken",
|
||||
"Triggers when new contact books are created": "Triggert wanneer nieuwe contactboeken worden aangemaakt",
|
||||
"Triggers when new contact groups are created": "Triggert wanneer nieuwe contactgroepen worden aangemaakt",
|
||||
"Markdown": "Markdown",
|
||||
"\n## Setup Instructions\n\nTo use this trigger, you need to manually create a webhook rule in your Missive account:\n\n### 1. Access Missive Rules\n- Open Missive and go to **Settings > Rules**\n- Click **\"New incoming rule\"** or **\"New outgoing rule\"**\n\n### 2. Configure the Trigger\nChoose from these message types:\n- **Email** - Incoming email messages\n- **SMS** - Text messages \n- **WhatsApp** - WhatsApp messages\n- **Facebook Messenger** - Facebook messages\n- **Instagram** - Instagram messages\n- **Twitter** - Twi": "\n## Instructies\n\nOm deze trigger te gebruiken, moet je handmatig een webhook regel maken in je missie-account:\n\n### 1. Toegang Missive Rules\n- Open Missive en ga naar **Instellingen > Regels**\n- Klik **\"Nieuwe inkomende regel\"** of **\"Nieuwe uitgaande regel\"**\n\n### 2. Configureer de Trigger\nKies uit deze berichttypes:\n- **E-mail** - Inkomende e-mailberichten\n- **SMS** - Tekstberichten \n- **WhatsApp** - WhatsApp berichten\n- **Facebook Messenger** - Facebook berichten\n- **Instagram** - Instagram berichten\n- **Twitter** - Twitter berichten\n- **Missive Live Chat** - Live chatberichten\n\n### 3. Filters toevoegen (optioneel)\nConfigureer filters zoals:\n- Specifieke e-mailadressen\n- Onderwerp lijn bevat tekst\n- Bericht inhoud bevat trefwoorden\n- Organisatie of team scope\n\n### 4. Webhook Actie\n1. In de **Acties** sectie selecteert u **\"Webhook\"**\n2. Plak deze URL in het **Webhook URL** veld:\n```text\n{{webhookUrl}}\n```\n3. Zet **HTTP Method** op **POST**\n4. Laat **Content Type** achter als **application/json**\n\n### 5. Sla de regel\n- Klik **Opslaan** om de webhook\n- Missive zal het eindpunt automatisch valideren\n\n---\n\n**Opmerking:** U heeft admin/eigenaar rechten nodig en een Productief plan om regels te maken.\n\n**Voorbeeld Gebruik gevallen:**\n- Trigger wanneer e-mails van specifieke klanten arriveren\n- Verwerk alle WhatsApp berichten voor klantondersteuning\n- Route urgentie e-mails (onderwerp bevat \"URGENT\") voor speciale werkstromen\n- Log alle social media interacties naar uw CRM\n ",
|
||||
"\n## Setup Instructions\n\nTo use this trigger, you need to manually create a webhook rule in your Missive account:\n\n### 1. Access Missive Rules\n- Open Missive and go to **Settings > Rules**\n- Click **\"New incoming rule\"** or **\"New outgoing rule\"**\n\n### 2. Configure the Trigger\nIn the **When should rule trigger?** section:\n- Select **\"New comment\"** from the User actions\n\n### 3. Add Filters (Optional)\nConfigure filters like:\n- **Specific author** - Only comments from certain team members\n- **Task comments onl": "\n## Instructies\n\nOm deze trigger te gebruiken, moet je handmatig een webhook regel maken in je missie-account:\n\n### 1. Toegang Missive Rules\n- Open Missive en ga naar **Instellingen > Regels**\n- Klik **\"Nieuwe inkomende regel\"** of **\"Nieuwe uitgaande regel\"**\n\n### 2. Configureer de Trigger\nIn de **Wanneer de regel geactiveerd moet worden?** section:\n- Selecteer **\"Nieuwe opmerking\"** uit de gebruikersacties\n\n### 3. Filters toevoegen (optioneel)\nFilters instellen zoals:\n- **Specifieke auteur** - Alleen opmerkingen van bepaalde teamleden\n- **Taak commentaar** - Alleen opmerkingen over taken\n- **Inhoud bevat** - Reacties met specifieke trefwoorden\n- **Vermeldingen** - Als specifieke gebruikers worden genoemd\n- **Organisatie kanaal** - Organisatie vs persoonlijke gesprekken\n\n### 4. Webhook Actie\n1. In de **Actions** sectie selecteert u **\"Webhook\"**\n2. Plak deze URL in het **Webhook URL** veld:\n```text\n{{webhookUrl}}\n```\n3. Stel **HTTP Method** in op **POST**\n4. **Content Type** verlaten als **application/json**\n\n### 5. Sla de regel\n- Klik **Opslaan** om de webhook\n- Missive zal je eindpunt automatisch valideren\n\n---\n\n**Opmerking:** Je hebt admin/eigenaar rechten en een Productief plan nodig om regels te maken.\n\n**Voorbeeld Gebruik gevallen:**\n- Alert managers wanneer teamleden reageren op kritische conversaties\n- Volg de voortgang van de taak door meldingen\n- Route opmerkingen met specifieke trefwoorden voor gespecialiseerde workflows\n- Log team samenwerking activiteit voor projectbeheer tools\n ",
|
||||
"\n## Setup Instructions\n\nTo use this trigger, you need to manually create a webhook rule in your Missive account:\n\n### 1. Access Missive Rules\n- Open Missive and go to **Settings > Rules**\n- Click **\"New incoming rule\"** or **\"New outgoing rule\"**\n\n### 2. Configure the Trigger\nIn the **When should rule trigger?** section:\n- Look for **\"New contact\"** or **\"Contact created\"** in the available trigger types\n- Select this option to trigger on contact creation\n\n### 3. Add Filters (Optional)\nConfigure filters lik": "\n## Instructies\n\nOm deze trigger te gebruiken, moet je handmatig een webhook regel maken in je missie-account:\n\n### 1. Toegang Missive Rules\n- Open Missive en ga naar **Instellingen > Regels**\n- Klik **\"Nieuwe inkomende regel\"** of **\"Nieuwe uitgaande regel\"**\n\n### 2. Configureer de Trigger\nIn de **Wanneer moet de trigger worden geregeld? * section:\n- Zoek naar **\"Nieuw contact\"** of **\"Contact gemaakt\"** in de beschikbare triggertypes\n- Selecteer deze optie om te activeren in het aanmaken van contact\n\n### 3. Filters toevoegen (optioneel)\nConfigureren filters zoals:\n- **Contactboek** - Alleen contacten toegevoegd aan specifieke contactboeken\n- **Contacten eigenaar** - Alleen contacten toegewezen aan specifieke gebruikers\n- **Heeft e-mail** - Alleen contacten met e-mailadressen\n- **Heeft telefoon** - Alleen contacten met telefoonnummers\n- **Organisatie lidmaatschap** - Contacten die behoren tot specifieke organisaties\n- **Starred contacts** - Alleen gestarredde contacten\n\n### 4. Webhook Actie\n1. In de **Actions** sectie selecteert u **\"Webhook\"**\n2. Plak deze URL in het **Webhook URL** veld:\n```text\n{{webhookUrl}}\n```\n3. Stel **HTTP Method** in op **POST**\n4. **Content Type** verlaten als **application/json**\n\n### 5. Sla de regel\n- Klik **Opslaan** om de webhook\n- Missive zal je eindpunt automatisch valideren\n\n---\n\n**Opmerking:** Je hebt admin/eigenaar rechten nodig en een Productief plan om regels te maken.\n\n**Voorbeeld Gebruik gevallen:**\n- Synchroniseer nieuwe contacten automatisch\n- Stuur welkome e-mails naar nieuwe zakelijke contacten\n- Voeg nieuwe contacten toe aan marketing automatisering werkstromen\n- Alert sales team wanneer nieuwe vooruitzichten worden toegevoegd\n- Backup contactgegevens naar externe systemen\n ",
|
||||
"\n## Setup Instructions\n\nTo use this trigger, you need to manually create a webhook rule in your Missive account:\n\n### 1. Access Missive Rules\n- Open Missive and go to **Settings > Rules**\n- Click **\"New incoming rule\"** or **\"New outgoing rule\"**\n\n### 2. Configure the Trigger\nIn the **When should rule trigger?** section:\n- Look for **\"New contact book\"** or **\"Contact book created\"** in the available trigger types\n- Select this option to trigger on contact book creation\n\n### 3. Add Filters (Optional)\nConfig": "\n## Instructies\n\nOm deze trigger te gebruiken, moet je handmatig een webhook regel maken in je missie-account:\n\n### 1. Toegang Missive Rules\n- Open Missive en ga naar **Instellingen > Regels**\n- Klik **\"Nieuwe inkomende regel\"** of **\"Nieuwe uitgaande regel\"**\n\n### 2. Configureer de Trigger\nIn de **Wanneer moet de trigger worden geregeld? * section:\n- Zoek naar **\"Nieuw contactboek\"** of **\"Contactboek aangemaakt\"** in de beschikbare triggertypes\n- Selecteer deze optie om te activeren bij het aanmaken van contactboek\n\n### 3. Voeg filters toe (Optioneel)\nConfigureer filters zoals:\n- **Boekeneigenaar** - Alleen contactboeken gemaakt door specifieke gebruikers\n- **Organisatie scope** - Organisatie vs persoonlijke contactboeken\n- **Boek naam bevat** - Contactboeken met specifieke benamingspatronen\n\n### 4. Webhook actie instellen\n1. Selecteer in de **Acties** sectie **\"Webhook\"**\n2. Plak deze URL in het **Webhook URL** veld:\n```text\n{{webhookUrl}}\n```\n3. Zet **HTTP Method** op **POST**\n4. Laat **Content Type** achter als **application/json**\n\n### 5. Sla de regel\n- Klik **Opslaan** om de webhook\n- Missive zal je eindpunt automatisch valideren\n\n---\n\n**Opmerking:** Je hebt admin/eigenaar rechten en een Productief plan nodig om regels te maken.\n\n**Voorbeeld Gebruik gevallen:**\n- Stel automatische contactboek back-ups in wanneer nieuwe boeken worden aangemaakt\n- Initialiseer contactboek machtigingen en deel instellingen\n- Waarschuw beheerders wanneer teams nieuwe databases\n- Creëer overeenkomstige contactlijsten in externe CRM-systemen\n- Aanmaken van contactboeken voor audit en naleving\n- ",
|
||||
"\n## Setup Instructions\n\nTo use this trigger, you need to manually create a webhook rule in your Missive account:\n\n### 1. Access Missive Rules\n- Open Missive and go to **Settings > Rules**\n- Click **\"New incoming rule\"** or **\"New outgoing rule\"**\n\n### 2. Configure the Trigger\nIn the **When should rule trigger?** section:\n- Look for **\"New contact group\"** or **\"Contact group created\"** in the available trigger types\n- Select this option to trigger on contact group creation\n\n### 3. Add Filters (Optional)\nCon": "\n## Instructies\n\nOm deze trigger te gebruiken, moet je handmatig een webhook regel maken in je missie-account:\n\n### 1. Toegang Missive Rules\n- Open Missive en ga naar **Instellingen > Regels**\n- Klik **\"Nieuwe inkomende regel\"** of **\"Nieuwe uitgaande regel\"**\n\n### 2. Configureer de Trigger\nIn de **Wanneer moet de trigger worden geregeld? * section:\n- Zoek naar **\"Nieuwe contactgroep\"** of **\"contactgroep aangemaakt\"** in de beschikbare triggertypes\n- Selecteer deze optie om aan te roepen op het aanmaken van contactgroep\n\n### 3. Voeg filters toe (Optioneel)\nconfigureer filters zoals:\n- **Contactboek** - Alleen groepen gemaakt in specifieke contactboeken\n- **Groepstype** - Organisaties vs reguliere groepen\n- **Groep creator** - Alleen groepen gemaakt door specifieke gebruikers\n- **Groepsnaam bevat** - Groepspatronen\n\n### 4. Webhook Actie\n1. In de **Actions** sectie selecteert u **\"Webhook\"**\n2. Plak deze URL in het **Webhook URL** veld:\n```text\n{{webhookUrl}}\n```\n3. Stel **HTTP Method** in op **POST**\n4. **Content Type** verlaten als **application/json**\n\n### 5. Sla de regel\n- Klik **Opslaan** om de webhook\n- Missive zal je eindpunt automatisch valideren\n\n---\n\n**Opmerking:** Je hebt admin/eigenaar rechten en een Productief plan nodig om regels te maken.\n\n**Voorbeeld Gebruik gevallen:**\n- Synchroniseer nieuwe contactgroepen naar externe CRM-systemen\n- Automatische groepsmachtigingen en toegangsrechten instellen\n- Maak corresponderende lijsten aan in marketing automatisering platforms\n- Track contact organisatie voor sales pipeline management\n- Initialiseer groep specifieke workflows en sjablonen\n "
|
||||
}
|
||||
@@ -0,0 +1,140 @@
|
||||
{
|
||||
"\n To get your API token:\n \n 1. Go to your Missive preferences\n 2. Click the API tab \n 3. Click \"Create a new token\"\n 4. Copy the generated token (starts with 'missive_pat-')\n \n Note: You need to be part of an organization subscribed to the Productive plan to generate API tokens.\n ": "\n Para obter o seu token de API:\n \n 1. Ir para suas preferências Missivas\n 2. Clique na guia API \n 3. Clique em \"Criar um novo token\"\n 4. Copie o token gerado (começa com 'missive_pat-')\n \n Nota: Você precisa fazer parte de uma organização que se inscreveu no plano Produtivo para gerar tokens API.\n ",
|
||||
"Create Contact": "Criar contato",
|
||||
"Update Contact": "Atualizar contato",
|
||||
"Create Draft/Post": "Criar rascunho/Publicar",
|
||||
"Create Task": "Criar tarefa",
|
||||
"Find Contact": "Localizar contato",
|
||||
"Custom API Call": "Chamada de API personalizada",
|
||||
"Add a new contact within a specified contact book": "Adicionar um novo contato dentro de um determinado livro de contatos",
|
||||
"Modify fields for an existing contact": "Modificar campos para um contato existente",
|
||||
"Create a draft message or post in Missive, with option to send": "Criar um rascunho de mensagem ou postar em erro, com a opção de enviar",
|
||||
"Create a task that can be standalone or associated with a conversation": "Criar uma tarefa que pode ser autônoma ou associada com uma conversa",
|
||||
"Search for contacts by text, email, name, or any contact information": "Procurar contatos por texto, e-mail, nome ou qualquer informação de contato",
|
||||
"Make a custom API call to a specific endpoint": "Faça uma chamada de API personalizada para um ponto de extremidade específico",
|
||||
"Contact Book": "Livro de Contato",
|
||||
"First Name": "Nome",
|
||||
"Last Name": "Sobrenome",
|
||||
"Middle Name": "Nome do Meio",
|
||||
"Phonetic First Name": "Primeiro Nome fonético",
|
||||
"Phonetic Last Name": "Sobrenome fonético",
|
||||
"Phonetic Middle Name": "Nome fonético do meio",
|
||||
"Prefix": "Prefixo",
|
||||
"Suffix": "Suffix",
|
||||
"Nickname": "Apelido",
|
||||
"File As": "Arquivo Como",
|
||||
"Notes": "Observações",
|
||||
"Starred": "Marcado",
|
||||
"Gender": "Gênero",
|
||||
"Contact Information": "Informação do Contato",
|
||||
"Memberships": "Associações",
|
||||
"Contact": "contato",
|
||||
"Move to Contact Book": "Mover para a Agenda de Contatos",
|
||||
"Message Type": "Tipo de mensagem",
|
||||
"Subject": "Cargo",
|
||||
"Message Body": "Corpo da Mensagem",
|
||||
"Message Configuration": "Configuração da Mensagem",
|
||||
"Conversation Options": "Opções de conversa",
|
||||
"Send Immediately": "Enviar imediatamente",
|
||||
"Schedule Send": "Agendar envio",
|
||||
"Send At (Unix Timestamp)": "Enviar em (Unix Timestamp)",
|
||||
"Auto Follow-up": "Acompanhamento automático",
|
||||
"Attachments": "Anexos",
|
||||
"Task Type": "Tipo de tarefa",
|
||||
"Task Title": "Título da tarefa",
|
||||
"Description": "Descrição",
|
||||
"Task State": "Estado da tarefa",
|
||||
"Due Date": "Data de vencimento",
|
||||
"Task Configuration": "Configuração da tarefa",
|
||||
"Search Term": "Termo para pesquisa",
|
||||
"Search & Filter Options": "Opções de Busca & Filtro",
|
||||
"Result Format": "Formato dos resultados",
|
||||
"Method": "Método",
|
||||
"Headers": "Cabeçalhos",
|
||||
"Query Parameters": "Parâmetros da consulta",
|
||||
"Body": "Conteúdo",
|
||||
"Response is Binary ?": "A resposta é binária ?",
|
||||
"No Error on Failure": "Nenhum erro no Failure",
|
||||
"Timeout (in seconds)": "Tempo limite (em segundos)",
|
||||
"Select the contact book where the contact will be created": "Selecione a lista de contatos onde o contato será criado",
|
||||
"First name of the contact": "Primeiro nome do contato",
|
||||
"Last name of the contact": "Último nome do contato",
|
||||
"Middle name of the contact": "Nome do meio do contato",
|
||||
"Phonetic spelling of the first name": "Ortografia fonética do primeiro nome",
|
||||
"Phonetic spelling of the last name": "Ortografia fonética do último nome",
|
||||
"Phonetic spelling of the middle name": "Ortografia fonética do nome do meio",
|
||||
"Name prefix (e.g., Mr., Mrs., Dr.)": "Prefixo de nome (ex.: Mr., Mrs., Dr.)",
|
||||
"Name suffix (e.g., Jr., Sr., III)": "Sufixo de nome (por exemplo, Jr., Sr., III)",
|
||||
"Nickname for the contact": "Apelido para o contato",
|
||||
"How the contact should be filed/sorted": "Como o contato deve ser arquivado/classificado",
|
||||
"Additional notes about the contact": "Notas adicionais sobre o contato",
|
||||
"Whether the contact should be starred": "Se o contato deve ser favorito",
|
||||
"Gender of the contact": "Sexo do contato",
|
||||
"Email addresses, phone numbers, and other contact information": "Endereços de e-mail, números de telefone e outras informações de contato",
|
||||
"Organizations and groups the contact belongs to": "Organizações e grupos aos quais o contato pertence",
|
||||
"Select the contact to update": "Selecione o contato para atualização",
|
||||
"Move contact to a different contact book (optional)": "Mova o contato para outro livro de contatos (opcional)",
|
||||
"Email addresses, phone numbers, and other contact information. Note: When updating infos, all existing infos will be replaced with the ones provided here.": "Endereços de e-mail, números de telefone e outras informações de contato. Nota: Ao atualizar informações, todas as informações existentes serão substituídas pelas fornecidas aqui.",
|
||||
"Organizations and groups the contact belongs to. Note: When updating memberships, all existing memberships will be replaced with the ones provided here.": "Organizações e grupos aos quais o contato pertence. Nota: Ao atualizar as associações, todas as associações existentes serão substituídas pelas fornecidas aqui.",
|
||||
"Type of message to create": "Tipo de mensagem a criar",
|
||||
"Subject line (primarily for email)": "Linha de assunto (principalmente para e-mail)",
|
||||
"The content of your message (supports HTML for email)": "O conteúdo da sua mensagem (suporta HTML para e-mail)",
|
||||
"Configure sender, recipients, and message-specific options": "Configurar remetente, destinatários e opções específicas de mensagens",
|
||||
"Advanced conversation management options": "Opções avançadas de gerenciamento de conversas",
|
||||
"Send the draft immediately instead of saving as draft": "Enviar o rascunho imediatamente em vez de salvar como rascunho",
|
||||
"Schedule the message to be sent later": "Agendar a mensagem para ser enviada mais tarde",
|
||||
"Unix timestamp when to send the message (required if scheduling)": "Carimbo de hora Unix quando enviar a mensagem (necessário se agendado)",
|
||||
"Cancel scheduled send if there is a reply (requires scheduling)": "Cancelar o envio agendado se houver uma resposta (requer agendamento)",
|
||||
"File attachments (up to 25 files, max 10MB total)": "Anexos de arquivos (até 25 arquivos, máximo de 10MB no total)",
|
||||
"Type of task to create": "Tipo de tarefa a criar",
|
||||
"Title of the task (max 1000 characters)": "Título da tarefa (máximo de 1000 caracteres)",
|
||||
"Description of the task (max 10000 characters)": "Descrição da tarefa (máx. 10000 caracteres)",
|
||||
"Current state of the task": "Estado atual da tarefa",
|
||||
"Due date for the task": "Data de vencimento para a tarefa",
|
||||
"Configure task assignment and organization based on task type": "Configurar tarefa e organização baseada no tipo de tarefa",
|
||||
"Search across all contact information including name, email, phone, organization, custom fields, notes, etc. Leave empty to get all contacts.": "Pesquisar em todas as informações de contato, incluindo nome, e-mail, telefone, organização, campos personalizados, notas, etc. Deixe em branco para obter todos os contatos.",
|
||||
"Configure how to search and filter contacts": "Configurar como pesquisar e filtrar contatos",
|
||||
"How to format the returned contact data": "Como formatar os dados de contato retornados",
|
||||
"Authorization headers are injected automatically from your connection.": "Os cabeçalhos de autorização são inseridos automaticamente a partir da sua conexão.",
|
||||
"Enable for files like PDFs, images, etc..": "Habilitar para arquivos como PDFs, imagens, etc..",
|
||||
"Male": "Masculino",
|
||||
"Female": "Feminino",
|
||||
"Other": "Outros",
|
||||
"Email": "e-mail",
|
||||
"SMS": "SMS",
|
||||
"WhatsApp": "WhatsApp",
|
||||
"Missive Live Chat": "Bate-Papo Ao Vivo Missivo",
|
||||
"Custom Channel": "Canal Personalizado",
|
||||
"Messenger": "Mensageiro",
|
||||
"Instagram": "Instagram",
|
||||
"Standalone Task": "Tarefa Autônoma",
|
||||
"Conversation Subtask": "Conversa de Subtarefa",
|
||||
"Todo": "Todo",
|
||||
"In Progress": "Em Execução",
|
||||
"Closed": "Fechado",
|
||||
"Full Contact Data": "Dados Completos de Contato",
|
||||
"Summary Only": "Apenas resumo",
|
||||
"Count Only": "Apenas contar",
|
||||
"GET": "OBTER",
|
||||
"POST": "POSTAR",
|
||||
"PATCH": "COMPRAR",
|
||||
"PUT": "COLOCAR",
|
||||
"DELETE": "EXCLUIR",
|
||||
"HEAD": "CABEÇA",
|
||||
"New Message": "Nova mensagem",
|
||||
"New Comment": "Novo Comentário",
|
||||
"New Contact": "Novo Contato",
|
||||
"New Contact Book": "Novo Livro de Contato",
|
||||
"New Contact Group": "Novo grupo de contato",
|
||||
"Triggers when new messages are received (email, SMS, WhatsApp, Facebook, etc.)": "Aciona quando novas mensagens são recebidas (e-mail, SMS, WhatsApp, Facebook, etc.)",
|
||||
"Triggers when new comments are added to conversations": "Dispara quando novos comentários são adicionados em conversas",
|
||||
"Triggers when new contacts are added to contact books": "Disparos quando novos contatos forem adicionados às listas de contato",
|
||||
"Triggers when new contact books are created": "Disparos quando novos contatos forem criados",
|
||||
"Triggers when new contact groups are created": "Gatilho quando novos grupos de contatos forem criados",
|
||||
"Markdown": "Markdown",
|
||||
"\n## Setup Instructions\n\nTo use this trigger, you need to manually create a webhook rule in your Missive account:\n\n### 1. Access Missive Rules\n- Open Missive and go to **Settings > Rules**\n- Click **\"New incoming rule\"** or **\"New outgoing rule\"**\n\n### 2. Configure the Trigger\nChoose from these message types:\n- **Email** - Incoming email messages\n- **SMS** - Text messages \n- **WhatsApp** - WhatsApp messages\n- **Facebook Messenger** - Facebook messages\n- **Instagram** - Instagram messages\n- **Twitter** - Twi": "\n## Instruções de configuração\n\nPara usar esse gatilho, você precisa criar manualmente uma regra de webhook em sua conta Missiva:\n\n### 1. Regras Missive Access Missive\n- Abrir Missive e ir para **Configurações > Regras**\n- Clique em **\"Nova regra de entrada\"** ou **\"Nova regra de saída\"**\n\n### 2. Configure o Gatilho\nEscolha entre estes tipos de mensagem:\n- **E-mail** - Mensagens de e-mail\n- **SMS** - Mensagens de texto \n- **WhatsApp** - WhatsApp Mensagens\n- **Facebook Messenger** - Mensagens do Facebook\n- **Instagram** - Instagram mensagens\n- **Twitter** - Twitter\n- **Chat ao Vivo** - Mensagem ao Vivo\n\n### 3. Adicionar Filtros (Opcional)\nconfigurar filtros como:\n- endereços de e-mail específicos do remetente\n- Linha de Assunto contém o texto\n- Conteúdo da mensagem contém palavras-chave\n- Organização ou escopo da equipe\n\n### 4. Defina a Ação Webhook\n1. Na seção **Ações**, selecione **\"Webhook\"**\n2. Cole esta URL no campo **URL do Webhook**:\n```text\n{{webhookUrl}}\n```\n3. Defina **Método HTTP** para **POST**\n4. Deixe **Tipo de Conteúdo** como **application/json**\n\n### 5. Salve a regra\n- Clique em **Salvar** para ativar o webhook\n- Missive irá validar automaticamente seu endpoint\n\n---\n\n**Nota:** Você precisa de permissões de administrador/proprietário e um plano produtivo para criar regras.\n\n**Exemplo de uso de casos:**\n- Acionar quando e-mails de clientes específicos chegarem\n- Processar todas as mensagens do WhatsApp para o suporte ao cliente\n- Route e-mails urgentes (assunto contém \"URGENT\") para fluxos de trabalho especiais\n- Registrar todas as interações de mídia social para o seu CRM\n ",
|
||||
"\n## Setup Instructions\n\nTo use this trigger, you need to manually create a webhook rule in your Missive account:\n\n### 1. Access Missive Rules\n- Open Missive and go to **Settings > Rules**\n- Click **\"New incoming rule\"** or **\"New outgoing rule\"**\n\n### 2. Configure the Trigger\nIn the **When should rule trigger?** section:\n- Select **\"New comment\"** from the User actions\n\n### 3. Add Filters (Optional)\nConfigure filters like:\n- **Specific author** - Only comments from certain team members\n- **Task comments onl": "\n## Instruções de configuração\n\nPara usar esse gatilho, você precisa criar manualmente uma regra de webhook em sua conta Missiva:\n\n### 1. Regras Missive Access Missive\n- Abrir Missive e ir para **Configurações > Regras**\n- Clique em **\"Nova regra de entrada\"** ou **\"Nova regra de saída\"**\n\n### 2. Configurar o Gatilho\nNa **Quando deve regra de disparar?** seção:\n- Selecione **\"Novo comentário\"** nas ações do usuário\n\n### 3. Adicionar Filtros (Opcional)\nConfigurar filtros como:\n- **Autor específico** - Apenas comentários de certos membros da equipe\n- **Apenas comentários da tarefa** - Apenas comentários sobre tarefas\n- **Conteúdo contém** - Comentários com palavras-chave específicas\n- **Menções** - Quando usuários específicos são mencionados\n- **Âmbito da organização** - Organização vs conversas pessoais\n\n### 4. Definir Ação Webhook\n1. Na seção **Ações**, selecione **\"Webhook\"**\n2. Cole este URL no campo **URL do Webhook**:\n```text\n{{webhookUrl}}\n```\n3. Defina **Método HTTP** como **POST**\n4. Deixe o **Tipo de Conteúdo** como **application/json**\n\n### 5. Salve a regra\n- Clique em **Salvar** para ativar o webhook\n- Mergulhador irá validar automaticamente seu endpoint\n\n---\n\n**Nota:** Você precisa de permissões de administrador/proprietário e um plano produtivo para criar regras.\n\n**Exemplo de utilização de Casos:**\n- Gerentes de alertas quando os membros da equipe comentam em conversas críticas\n- Acompanhe o progresso de tarefa através de notificações de comentários\n- Route comentários com palavras-chave específicas para fluxos de trabalho especializados\n- Registrar a atividade de colaboração de equipe de log para ferramentas de gerenciamento de projetos\n ",
|
||||
"\n## Setup Instructions\n\nTo use this trigger, you need to manually create a webhook rule in your Missive account:\n\n### 1. Access Missive Rules\n- Open Missive and go to **Settings > Rules**\n- Click **\"New incoming rule\"** or **\"New outgoing rule\"**\n\n### 2. Configure the Trigger\nIn the **When should rule trigger?** section:\n- Look for **\"New contact\"** or **\"Contact created\"** in the available trigger types\n- Select this option to trigger on contact creation\n\n### 3. Add Filters (Optional)\nConfigure filters lik": "\n## Instruções de configuração\n\nPara usar esse gatilho, você precisa criar manualmente uma regra de webhook em sua conta Missiva:\n\n### 1. Regras Missive Access Missive\n- Abrir Missive e ir para **Configurações > Regras**\n- Clique em **\"Nova regra de entrada\"** ou **\"Nova regra de saída\"**\n\n### 2. Configurar o Gatilho\nNo **Quando deve ser o gatilho comum? * seção:\n- Procure por **\"Novo contato\"** ou **\"Contato criado\"** nos tipos de gatilho disponíveis\n- Selecione esta opção para acionar a criação de contato\n\n### 3. Adicionar Filtros (Opcional)\nConfigura filtros como:\n- **Livro de contatos** - Apenas contatos adicionados a livros de contato específicos\n- **Proprietário de Contatos** - Apenas contatos atribuídos a usuários específicos\n- **Possui e-mail** - Apenas contatos com endereços de e-mail\n- Apenas contatos com números de telefone\n- **Associação da Organização** - Contatos pertencentes a organizações específicas\n- **Contatos favoritos** - Apenas contatos favoritos\n\n### 4. Definir Ação Webhook\n1. Na seção **Ações**, selecione **\"Webhook\"**\n2. Cole este URL no campo **URL do Webhook**:\n```text\n{{webhookUrl}}\n```\n3. Defina **Método HTTP** para **POST**\n4. Deixe o **Tipo de Conteúdo** como **application/json**\n\n### 5. Salve a regra\n- Clique em **Salvar** para ativar o webhook\n- Mergulhador irá validar automaticamente seu endpoint\n\n---\n\n**Nota:** Você precisa de permissões de administrador/proprietário e um plano produtivo para criar regras.\n\n**Exemplo de uso de casos:**\n- Sincronizar novos contatos com o CRM automaticamente\n- Enviar e-mails de boas-vindas aos novos contatos comerciais\n- Adicionar novos contatos para marketing de fluxos de trabalho de automação\n- Equipe de alertas quando novas perspectivas são adicionadas\n- Fazer backup dos dados de contato para sistemas externos\n ",
|
||||
"\n## Setup Instructions\n\nTo use this trigger, you need to manually create a webhook rule in your Missive account:\n\n### 1. Access Missive Rules\n- Open Missive and go to **Settings > Rules**\n- Click **\"New incoming rule\"** or **\"New outgoing rule\"**\n\n### 2. Configure the Trigger\nIn the **When should rule trigger?** section:\n- Look for **\"New contact book\"** or **\"Contact book created\"** in the available trigger types\n- Select this option to trigger on contact book creation\n\n### 3. Add Filters (Optional)\nConfig": "\n## Instruções de configuração\n\nPara usar esse gatilho, você precisa criar manualmente uma regra de webhook em sua conta Missiva:\n\n### 1. Regras Missive Access Missive\n- Abrir Missive e ir para **Configurações > Regras**\n- Clique em **\"Nova regra de entrada\"** ou **\"Nova regra de saída\"**\n\n### 2. Configurar o Gatilho\nNo **Quando deve ser o gatilho comum? * seção:\n- Procure por **\"Novo livro de contatos\"** ou **\"Livro de contatos criado\"** nos tipos de gatilho disponíveis\n- Selecione esta opção para acionar a criação de contatos\n\n### 3. Adicionar Filtros (Opcional)\nconfigurar filtros como:\n- **dono do livro** - Apenas livros de contato criados por usuários específicos\n- **Escopo da Organização** - Organização vs livros de contato pessoais\n- **O nome do livro contém** - Livros de contatos com padrões de nome específicos\n\n### 4. Definir Ação Webhook\n1. Na seção **Ações**, selecione **\"Webhook\"**\n2. Cole esta URL no campo **URL do Webhook**:\n```text\n{{webhookUrl}}\n```\n3. Defina **Método HTTP** para **POST**\n4. Deixe **Tipo de Conteúdo** como **application/json**\n\n### 5. Salve a regra\n- Clique em **Salvar** para ativar o webhook\n- Mergulhador irá validar automaticamente seu endpoint\n\n---\n\n**Nota:** Você precisa de permissões de administrador/proprietário e um plano produtivo para criar regras.\n\n**Exemplo usar casos:**\n- Configurar backups do livro de contatos automáticos quando novos livros são criados\n- Inicializar permissões de livros de contatos e configurações de compartilhamento\n- Notificar os administradores quando as equipes criam novos bancos de dados de contatos\n- Criar listas de contatos correspondentes em sistemas externos CRM\n- Controlar a criação de um livro de contatos para auditoria e conformidade\n ",
|
||||
"\n## Setup Instructions\n\nTo use this trigger, you need to manually create a webhook rule in your Missive account:\n\n### 1. Access Missive Rules\n- Open Missive and go to **Settings > Rules**\n- Click **\"New incoming rule\"** or **\"New outgoing rule\"**\n\n### 2. Configure the Trigger\nIn the **When should rule trigger?** section:\n- Look for **\"New contact group\"** or **\"Contact group created\"** in the available trigger types\n- Select this option to trigger on contact group creation\n\n### 3. Add Filters (Optional)\nCon": "\n## Instruções de configuração\n\nPara usar esse gatilho, você precisa criar manualmente uma regra de webhook em sua conta Missiva:\n\n### 1. Regras Missive Access Missive\n- Abrir Missive e ir para **Configurações > Regras**\n- Clique em **\"Nova regra de entrada\"** ou **\"Nova regra de saída\"**\n\n### 2. Configurar o Gatilho\nNo **Quando deve ser o gatilho comum? * seção:\n- Procure por **\"Novo grupo de contato\"** ou **\"Grupo de contatos criado\"** nos tipos de gatilho disponíveis\n- Selecione esta opção para acionar na criação de grupos de contato\n\n### 3. Adicionar Filtros (Opcional)\nConfigurar filtros como:\n- **Livro de contatos** - Apenas grupos criados em livros de contato específicos\n- **Tipo de grupo** - Organizações vs grupos regulares\n- **Criador de grupos** - Somente grupos criados por usuários específicos\n- **Nome de grupo** - Grupos com padrões de nomeação específicos\n\n### 4. Definir Ação Webhook\n1. Na seção **Ações**, selecione **\"Webhook\"**\n2. Cole este URL no campo **URL do Webhook**:\n```text\n{{webhookUrl}}\n```\n3. Defina **Método HTTP** como **POST**\n4. Deixe o **Tipo de Conteúdo** como **application/json**\n\n### 5. Salve a regra\n- Clique em **Salvar** para ativar o webhook\n- Mergulhador irá validar automaticamente seu endpoint\n\n---\n\n**Nota:** Você precisa de permissões de administrador/proprietário e um plano produtivo para criar regras.\n\n**Exemplo de Uso Casos:**\n- Sincronizar novos grupos de contato para sistemas externos de CRM\n- Configurar permissões automáticas de grupo e controles de acesso\n- Criar listas correspondentes em plataformas de automação de marketing\n- Organização de contato de rastreamento para gerenciamento de pipeline de vendas\n- Inicializar fluxos de trabalho específicos de grupo e modelos\n "
|
||||
}
|
||||
@@ -0,0 +1,139 @@
|
||||
{
|
||||
"Missive": "Разбойный",
|
||||
"\n To get your API token:\n \n 1. Go to your Missive preferences\n 2. Click the API tab \n 3. Click \"Create a new token\"\n 4. Copy the generated token (starts with 'missive_pat-')\n \n Note: You need to be part of an organization subscribed to the Productive plan to generate API tokens.\n ": "\n Чтобы получить ваш API токен:\n \n 1. Перейдите к своим странным предпочтениям\n 2. Нажмите на вкладку API \n 3. Нажмите \"Создать новый токен\"\n 4. Скопируйте созданный токен (начинается с 'missive_pat-')\n \n Примечание: Вы должны быть частью организации, подписавшейся на Продуктивный план для генерации токенов API.\n ",
|
||||
"Create Contact": "Создать контакт",
|
||||
"Update Contact": "Обновить контакт",
|
||||
"Create Draft/Post": "Создать проект/пост",
|
||||
"Create Task": "Создать задачу",
|
||||
"Find Contact": "Найти контакт",
|
||||
"Custom API Call": "Пользовательский вызов API",
|
||||
"Add a new contact within a specified contact book": "Добавить новый контакт в указанную книгу контактов",
|
||||
"Modify fields for an existing contact": "Изменить поля для существующего контакта",
|
||||
"Create a draft message or post in Missive, with option to send": "Создайте черновик сообщения или отправьте сообщение в Missive, используя опцию",
|
||||
"Create a task that can be standalone or associated with a conversation": "Создать задачу, которая может быть отдельной или ассоциирована с разговором",
|
||||
"Search for contacts by text, email, name, or any contact information": "Поиск контактов по тексту, электронной почте, имени или контактной информации",
|
||||
"Make a custom API call to a specific endpoint": "Сделать пользовательский API вызов к определенной конечной точке",
|
||||
"Contact Book": "Контактные книги",
|
||||
"First Name": "First Name",
|
||||
"Last Name": "Фамилия",
|
||||
"Middle Name": "Отчество",
|
||||
"Phonetic First Name": "Фонетическое имя",
|
||||
"Phonetic Last Name": "Фонетическая Фамилия",
|
||||
"Phonetic Middle Name": "Фонетическое Среднее Имя",
|
||||
"Prefix": "Префикс",
|
||||
"Suffix": "Suffix",
|
||||
"Nickname": "Ник",
|
||||
"File As": "Файл как",
|
||||
"Notes": "Примечания",
|
||||
"Starred": "Помеченные",
|
||||
"Gender": "Гендерная проблематика",
|
||||
"Contact Information": "Контактная информация",
|
||||
"Memberships": "Членство",
|
||||
"Contact": "Контакт",
|
||||
"Move to Contact Book": "Переместить в книгу контактов",
|
||||
"Message Type": "Тип сообщения",
|
||||
"Subject": "Тема",
|
||||
"Message Body": "Тело сообщения",
|
||||
"Message Configuration": "Конфигурация сообщения",
|
||||
"Conversation Options": "Настройки разговора",
|
||||
"Send Immediately": "Отправить немедленно",
|
||||
"Schedule Send": "Отправка расписания",
|
||||
"Send At (Unix Timestamp)": "Отправить в (Unix Timestamp)",
|
||||
"Auto Follow-up": "Автоматическое отслеживание",
|
||||
"Attachments": "Вложения",
|
||||
"Task Type": "Тип задачи",
|
||||
"Task Title": "Название задачи",
|
||||
"Description": "Описание",
|
||||
"Task State": "Состояние задачи",
|
||||
"Due Date": "Срок сдачи",
|
||||
"Task Configuration": "Конфигурация задач",
|
||||
"Search Term": "Поиск термина",
|
||||
"Search & Filter Options": "Параметры поиска и фильтра",
|
||||
"Result Format": "Формат результатов",
|
||||
"Method": "Метод",
|
||||
"Headers": "Заголовки",
|
||||
"Query Parameters": "Параметры запроса",
|
||||
"Body": "Тело",
|
||||
"No Error on Failure": "Нет ошибок при ошибке",
|
||||
"Timeout (in seconds)": "Таймаут (в секундах)",
|
||||
"Select the contact book where the contact will be created": "Выберите книгу контактов, в которой будет создан контакт",
|
||||
"First name of the contact": "Имя контакта",
|
||||
"Last name of the contact": "Фамилия контакта",
|
||||
"Middle name of the contact": "Среднее название контакта",
|
||||
"Phonetic spelling of the first name": "Фонетическая орфография имени",
|
||||
"Phonetic spelling of the last name": "Фонетическое написание фамилии",
|
||||
"Phonetic spelling of the middle name": "Фонетическая орфография среднего имени",
|
||||
"Name prefix (e.g., Mr., Mrs., Dr.)": "Префикс имени (например, Mr., Mrs., Dr.)",
|
||||
"Name suffix (e.g., Jr., Sr., III)": "Суффикс имени (например, Jr., Sr., III)",
|
||||
"Nickname for the contact": "Ник контакта",
|
||||
"How the contact should be filed/sorted": "Как должен быть отправлен / отсортирован контакт",
|
||||
"Additional notes about the contact": "Дополнительные заметки о контакте",
|
||||
"Whether the contact should be starred": "Должен ли контакт быть отмечен",
|
||||
"Gender of the contact": "Гендерные аспекты контакта",
|
||||
"Email addresses, phone numbers, and other contact information": "Адреса электронной почты, номера телефонов и другая контактная информация",
|
||||
"Organizations and groups the contact belongs to": "Организации и группы, к которым принадлежит контакт",
|
||||
"Select the contact to update": "Выберите контакт для обновления",
|
||||
"Move contact to a different contact book (optional)": "Переместить контакт в другую книгу контактов (опционально)",
|
||||
"Email addresses, phone numbers, and other contact information. Note: When updating infos, all existing infos will be replaced with the ones provided here.": "Электронные адреса, номера телефонов и другая контактная информация. Примечание: При обновлении информации все существующие сведения будут заменены на те, которые указаны здесь.",
|
||||
"Organizations and groups the contact belongs to. Note: When updating memberships, all existing memberships will be replaced with the ones provided here.": "Организаций и групп принадлежат контакту. Примечание: При обновлении членства, все существующие членства будут заменены предоставленными здесь.",
|
||||
"Type of message to create": "Тип сообщения для создания",
|
||||
"Subject line (primarily for email)": "Строка темы (главным образом для электронной почты)",
|
||||
"The content of your message (supports HTML for email)": "Содержимое вашего сообщения (поддерживает HTML для электронной почты)",
|
||||
"Configure sender, recipients, and message-specific options": "Настройте отправителя, получателей и параметры для конкретных сообщений",
|
||||
"Advanced conversation management options": "Расширенные настройки управления диалогом",
|
||||
"Send the draft immediately instead of saving as draft": "Отправить черновик немедленно, а не сохранить как черновик",
|
||||
"Schedule the message to be sent later": "Запланировать отправку сообщения позже",
|
||||
"Unix timestamp when to send the message (required if scheduling)": "Отметка времени Unix для отправки сообщения (требуется при планировании)",
|
||||
"Cancel scheduled send if there is a reply (requires scheduling)": "Отмена запланированной отправки, если есть ответ (требуется планирование)",
|
||||
"File attachments (up to 25 files, max 10MB total)": "Файловые вложения (до 25 файлов, максимум 10 МБ всего)",
|
||||
"Type of task to create": "Тип задачи для создания",
|
||||
"Title of the task (max 1000 characters)": "Заголовок задачи (не более 1000 символов)",
|
||||
"Description of the task (max 10000 characters)": "Описание задачи (не более 10000 символов)",
|
||||
"Current state of the task": "Текущее состояние задачи",
|
||||
"Due date for the task": "Срок выполнения задачи",
|
||||
"Configure task assignment and organization based on task type": "Настроить задание и организацию на основе типа задачи",
|
||||
"Search across all contact information including name, email, phone, organization, custom fields, notes, etc. Leave empty to get all contacts.": "Поиск по всей контактной информации, включая имя, email, телефон, организацию, пользовательские поля, заметки и т. д. Оставьте пустым, чтобы получить все контакты.",
|
||||
"Configure how to search and filter contacts": "Настройка поиска и фильтрации контактов",
|
||||
"How to format the returned contact data": "Как форматировать возвращаемые контактные данные",
|
||||
"Authorization headers are injected automatically from your connection.": "Заголовки авторизации включаются автоматически из вашего соединения.",
|
||||
"Male": "Муж",
|
||||
"Female": "Женская",
|
||||
"Other": "Прочие вопросы",
|
||||
"Email": "Почта",
|
||||
"SMS": "СМС",
|
||||
"WhatsApp": "WhatsApp",
|
||||
"Missive Live Chat": "Простой Онлайн-Чат",
|
||||
"Custom Channel": "Пользовательский канал",
|
||||
"Messenger": "Посланник",
|
||||
"Instagram": "Инстаграмма",
|
||||
"Standalone Task": "Автономная задача",
|
||||
"Conversation Subtask": "Подзадача разговора",
|
||||
"Todo": "Todo",
|
||||
"In Progress": "В процессе",
|
||||
"Closed": "Закрыто",
|
||||
"Full Contact Data": "Полные контактные данные",
|
||||
"Summary Only": "Только резюме",
|
||||
"Count Only": "Только подсчет",
|
||||
"GET": "ПОЛУЧИТЬ",
|
||||
"POST": "ПОСТ",
|
||||
"PATCH": "ПАТЧ",
|
||||
"PUT": "ПОКУПИТЬ",
|
||||
"DELETE": "УДАЛИТЬ",
|
||||
"HEAD": "HEAD",
|
||||
"New Message": "Новое сообщение",
|
||||
"New Comment": "Новый комментарий",
|
||||
"New Contact": "Новый контакт",
|
||||
"New Contact Book": "Новая книга контактов",
|
||||
"New Contact Group": "Новая группа контактов",
|
||||
"Triggers when new messages are received (email, SMS, WhatsApp, Facebook, etc.)": "Триггеры при получении новых сообщений (email, SMS, WhatsApp, Facebook, и т.д.)",
|
||||
"Triggers when new comments are added to conversations": "Включает при добавлении новых комментариев в разговоры",
|
||||
"Triggers when new contacts are added to contact books": "Включает при добавлении новых контактов в книги контактов",
|
||||
"Triggers when new contact books are created": "Триггеры при создании новых книг контактов",
|
||||
"Triggers when new contact groups are created": "Триггеры при создании новых групп контактов",
|
||||
"Markdown": "Markdown",
|
||||
"\n## Setup Instructions\n\nTo use this trigger, you need to manually create a webhook rule in your Missive account:\n\n### 1. Access Missive Rules\n- Open Missive and go to **Settings > Rules**\n- Click **\"New incoming rule\"** or **\"New outgoing rule\"**\n\n### 2. Configure the Trigger\nChoose from these message types:\n- **Email** - Incoming email messages\n- **SMS** - Text messages \n- **WhatsApp** - WhatsApp messages\n- **Facebook Messenger** - Facebook messages\n- **Instagram** - Instagram messages\n- **Twitter** - Twi": "\n## Setup Instructions\n\nTo use this trigger, you need to manually create a webhook rule in your Missive account:\n\n### 1. Access Missive Rules\n- Open Missive and go to **Settings > Rules**\n- Click **\"New incoming rule\"** or **\"New outgoing rule\"**\n\n### 2. Configure the Trigger\nChoose from these message types:\n- **Email** - Incoming email messages\n- **SMS** - Text messages \n- **WhatsApp** - WhatsApp messages\n- **Facebook Messenger** - Facebook messages\n- **Instagram** - Instagram messages\n- **Twitter** - Twitter messages\n- **Missive Live Chat** - Live chat messages\n\n### 3. Add Filters (Optional)\nConfigure filters like:\n- Specific sender email addresses\n- Subject line contains text\n- Message content contains keywords\n- Organization or team scope\n\n### 4. Set Webhook Action\n1. In the **Actions** section, select **\"Webhook\"**\n2. Paste this URL in the **Webhook URL** field:\n```text\n{{webhookUrl}}\n```\n3. Set **HTTP Method** to **POST**\n4. Leave **Content Type** as **application/json**\n\n### 5. Save the Rule\n- Click **Save** to activate the webhook\n- Missive will validate your endpoint automatically\n\n---\n\n**Note:** You need admin/owner permissions and a Productive plan to create rules.\n\n**Example Use Cases:**\n- Trigger when emails from specific customers arrive\n- Process all WhatsApp messages for customer support\n- Route urgent emails (subject contains \"URGENT\") to special workflows\n- Log all social media interactions to your CRM\n ",
|
||||
"\n## Setup Instructions\n\nTo use this trigger, you need to manually create a webhook rule in your Missive account:\n\n### 1. Access Missive Rules\n- Open Missive and go to **Settings > Rules**\n- Click **\"New incoming rule\"** or **\"New outgoing rule\"**\n\n### 2. Configure the Trigger\nIn the **When should rule trigger?** section:\n- Select **\"New comment\"** from the User actions\n\n### 3. Add Filters (Optional)\nConfigure filters like:\n- **Specific author** - Only comments from certain team members\n- **Task comments onl": "\n## Инструкция по установке\n\nдля использования этого триггера вам нужно вручную создать правило webhook в вашем Missive аккаунте:\n\n### 1. Доступ к Missive Rules\n- Откройте Missive и перейдите в **Settings > Rules**\n- Нажмите **\"Новый входящее правило\"** или **\"Новое исходящее правило\"**\n\n### 2. Настройте триггер\nВ **Когда должно быть правило триггер?** секция:\n- Выберите **\"Новый комментарий\"** в действиях пользователя\n\n### 3. Добавить фильтры (опционально)\nКонфигурация фильтров вроде\n- **Конкретный автор** - Только комментарии определенных членов команды\n- **Только комментарии к задачам\n- **Контент содержит** - Комментарии с конкретными ключевыми словами\n- **Упоминания** - Когда конкретные пользователи упоминаются\n- **Конкретные рамки организации** - Организация против личных разговоров\n\n### 4. Задать действие Webhook\n1. В разделе **Действия** выберите **\"Webhook\"**\n2. Вставьте этот URL в поле **Webhook URL**:\n```text\n{{webhookUrl}}\n```\n3. Установите **HTTP Method** на **POST**\n4. Оставьте **Тип содержимого** как **приложение/json**\n\n### 5. Сохраните правило\n- Нажмите **Сохранить** для активации вебхука\n- Миссуризм автоматически проверит вашу конечную точку\n\n---\n\n**Примечание:** Вам нужны права администратора/владельца и план продуктивности для создания правил.\n\n**Пример Варианты использования:**\n- Уведомления, когда члены команды комментируют критические разговоры\n- Отслеживание прогресса задач через уведомления о комментариях\n- Комментарии маршрута с конкретными ключевыми словами для специализированных рабочих процессов\n- Действия по взаимодействию команд для инструментов управления проектами\n ",
|
||||
"\n## Setup Instructions\n\nTo use this trigger, you need to manually create a webhook rule in your Missive account:\n\n### 1. Access Missive Rules\n- Open Missive and go to **Settings > Rules**\n- Click **\"New incoming rule\"** or **\"New outgoing rule\"**\n\n### 2. Configure the Trigger\nIn the **When should rule trigger?** section:\n- Look for **\"New contact\"** or **\"Contact created\"** in the available trigger types\n- Select this option to trigger on contact creation\n\n### 3. Add Filters (Optional)\nConfigure filters lik": "\n## Setup Instructions\n\nTo use this trigger, you need to manually create a webhook rule in your Missive account:\n\n### 1. Access Missive Rules\n- Open Missive and go to **Settings > Rules**\n- Click **\"New incoming rule\"** or **\"New outgoing rule\"**\n\n### 2. Configure the Trigger\nIn the **When should rule trigger?** section:\n- Look for **\"New contact\"** or **\"Contact created\"** in the available trigger types\n- Select this option to trigger on contact creation\n\n### 3. Add Filters (Optional)\nConfigure filters like:\n- **Contact book** - Only contacts added to specific contact books\n- **Contact owner** - Only contacts assigned to specific users\n- **Has email** - Only contacts with email addresses\n- **Has phone** - Only contacts with phone numbers\n- **Organization membership** - Contacts belonging to specific organizations\n- **Starred contacts** - Only starred contacts\n\n### 4. Set Webhook Action\n1. In the **Actions** section, select **\"Webhook\"**\n2. Paste this URL in the **Webhook URL** field:\n```text\n{{webhookUrl}}\n```\n3. Set **HTTP Method** to **POST**\n4. Leave **Content Type** as **application/json**\n\n### 5. Save the Rule\n- Click **Save** to activate the webhook\n- Missive will validate your endpoint automatically\n\n---\n\n**Note:** You need admin/owner permissions and a Productive plan to create rules.\n\n**Example Use Cases:**\n- Sync new contacts to your CRM automatically\n- Send welcome emails to new business contacts\n- Add new contacts to marketing automation workflows\n- Alert sales team when new prospects are added\n- Backup contact data to external systems\n ",
|
||||
"\n## Setup Instructions\n\nTo use this trigger, you need to manually create a webhook rule in your Missive account:\n\n### 1. Access Missive Rules\n- Open Missive and go to **Settings > Rules**\n- Click **\"New incoming rule\"** or **\"New outgoing rule\"**\n\n### 2. Configure the Trigger\nIn the **When should rule trigger?** section:\n- Look for **\"New contact book\"** or **\"Contact book created\"** in the available trigger types\n- Select this option to trigger on contact book creation\n\n### 3. Add Filters (Optional)\nConfig": "\n## Setup Instructions\n\nTo use this trigger, you need to manually create a webhook rule in your Missive account:\n\n### 1. Access Missive Rules\n- Open Missive and go to **Settings > Rules**\n- Click **\"New incoming rule\"** or **\"New outgoing rule\"**\n\n### 2. Configure the Trigger\nIn the **When should rule trigger?** section:\n- Look for **\"New contact book\"** or **\"Contact book created\"** in the available trigger types\n- Select this option to trigger on contact book creation\n\n### 3. Add Filters (Optional)\nConfigure filters like:\n- **Book owner** - Only contact books created by specific users\n- **Organization scope** - Organization vs personal contact books\n- **Book name contains** - Contact books with specific naming patterns\n\n### 4. Set Webhook Action\n1. In the **Actions** section, select **\"Webhook\"**\n2. Paste this URL in the **Webhook URL** field:\n```text\n{{webhookUrl}}\n```\n3. Set **HTTP Method** to **POST**\n4. Leave **Content Type** as **application/json**\n\n### 5. Save the Rule\n- Click **Save** to activate the webhook\n- Missive will validate your endpoint automatically\n\n---\n\n**Note:** You need admin/owner permissions and a Productive plan to create rules.\n\n**Example Use Cases:**\n- Set up automatic contact book backups when new books are created\n- Initialize contact book permissions and sharing settings\n- Notify administrators when teams create new contact databases\n- Create corresponding contact lists in external CRM systems\n- Track contact book creation for audit and compliance\n ",
|
||||
"\n## Setup Instructions\n\nTo use this trigger, you need to manually create a webhook rule in your Missive account:\n\n### 1. Access Missive Rules\n- Open Missive and go to **Settings > Rules**\n- Click **\"New incoming rule\"** or **\"New outgoing rule\"**\n\n### 2. Configure the Trigger\nIn the **When should rule trigger?** section:\n- Look for **\"New contact group\"** or **\"Contact group created\"** in the available trigger types\n- Select this option to trigger on contact group creation\n\n### 3. Add Filters (Optional)\nCon": "\n## Setup Instructions\n\nTo use this trigger, you need to manually create a webhook rule in your Missive account:\n\n### 1. Access Missive Rules\n- Open Missive and go to **Settings > Rules**\n- Click **\"New incoming rule\"** or **\"New outgoing rule\"**\n\n### 2. Configure the Trigger\nIn the **When should rule trigger?** section:\n- Look for **\"New contact group\"** or **\"Contact group created\"** in the available trigger types\n- Select this option to trigger on contact group creation\n\n### 3. Add Filters (Optional)\nConfigure filters like:\n- **Contact book** - Only groups created in specific contact books\n- **Group type** - Organizations vs regular groups\n- **Group creator** - Only groups created by specific users\n- **Group name contains** - Groups with specific naming patterns\n\n### 4. Set Webhook Action\n1. In the **Actions** section, select **\"Webhook\"**\n2. Paste this URL in the **Webhook URL** field:\n```text\n{{webhookUrl}}\n```\n3. Set **HTTP Method** to **POST**\n4. Leave **Content Type** as **application/json**\n\n### 5. Save the Rule\n- Click **Save** to activate the webhook\n- Missive will validate your endpoint automatically\n\n---\n\n**Note:** You need admin/owner permissions and a Productive plan to create rules.\n\n**Example Use Cases:**\n- Sync new contact groups to external CRM systems\n- Set up automatic group permissions and access controls\n- Create corresponding lists in marketing automation platforms\n- Track contact organization for sales pipeline management\n- Initialize group-specific workflows and templates\n "
|
||||
}
|
||||
@@ -0,0 +1,140 @@
|
||||
{
|
||||
"\n To get your API token:\n \n 1. Go to your Missive preferences\n 2. Click the API tab \n 3. Click \"Create a new token\"\n 4. Copy the generated token (starts with 'missive_pat-')\n \n Note: You need to be part of an organization subscribed to the Productive plan to generate API tokens.\n ": "\n To get your API token:\n \n 1. Go to your Missive preferences\n 2. Click the API tab \n 3. Click \"Create a new token\"\n 4. Copy the generated token (starts with 'missive_pat-')\n \n Note: You need to be part of an organization subscribed to the Productive plan to generate API tokens.\n ",
|
||||
"Create Contact": "Create Contact",
|
||||
"Update Contact": "Update Contact",
|
||||
"Create Draft/Post": "Create Draft/Post",
|
||||
"Create Task": "Create Task",
|
||||
"Find Contact": "Find Contact",
|
||||
"Custom API Call": "Custom API Call",
|
||||
"Add a new contact within a specified contact book": "Add a new contact within a specified contact book",
|
||||
"Modify fields for an existing contact": "Modify fields for an existing contact",
|
||||
"Create a draft message or post in Missive, with option to send": "Create a draft message or post in Missive, with option to send",
|
||||
"Create a task that can be standalone or associated with a conversation": "Create a task that can be standalone or associated with a conversation",
|
||||
"Search for contacts by text, email, name, or any contact information": "Search for contacts by text, email, name, or any contact information",
|
||||
"Make a custom API call to a specific endpoint": "Make a custom API call to a specific endpoint",
|
||||
"Contact Book": "Contact Book",
|
||||
"First Name": "First Name",
|
||||
"Last Name": "Last Name",
|
||||
"Middle Name": "Middle Name",
|
||||
"Phonetic First Name": "Phonetic First Name",
|
||||
"Phonetic Last Name": "Phonetic Last Name",
|
||||
"Phonetic Middle Name": "Phonetic Middle Name",
|
||||
"Prefix": "Prefix",
|
||||
"Suffix": "Suffix",
|
||||
"Nickname": "Nickname",
|
||||
"File As": "File As",
|
||||
"Notes": "Notes",
|
||||
"Starred": "Starred",
|
||||
"Gender": "Gender",
|
||||
"Contact Information": "Contact Information",
|
||||
"Memberships": "Memberships",
|
||||
"Contact": "Contact",
|
||||
"Move to Contact Book": "Move to Contact Book",
|
||||
"Message Type": "Message Type",
|
||||
"Subject": "Subject",
|
||||
"Message Body": "Message Body",
|
||||
"Message Configuration": "Message Configuration",
|
||||
"Conversation Options": "Conversation Options",
|
||||
"Send Immediately": "Send Immediately",
|
||||
"Schedule Send": "Schedule Send",
|
||||
"Send At (Unix Timestamp)": "Send At (Unix Timestamp)",
|
||||
"Auto Follow-up": "Auto Follow-up",
|
||||
"Attachments": "Attachments",
|
||||
"Task Type": "Task Type",
|
||||
"Task Title": "Task Title",
|
||||
"Description": "Description",
|
||||
"Task State": "Task State",
|
||||
"Due Date": "Due Date",
|
||||
"Task Configuration": "Task Configuration",
|
||||
"Search Term": "Search Term",
|
||||
"Search & Filter Options": "Search & Filter Options",
|
||||
"Result Format": "Result Format",
|
||||
"Method": "Method",
|
||||
"Headers": "Headers",
|
||||
"Query Parameters": "Query Parameters",
|
||||
"Body": "Body",
|
||||
"Response is Binary ?": "Response is Binary ?",
|
||||
"No Error on Failure": "No Error on Failure",
|
||||
"Timeout (in seconds)": "Timeout (in seconds)",
|
||||
"Select the contact book where the contact will be created": "Select the contact book where the contact will be created",
|
||||
"First name of the contact": "First name of the contact",
|
||||
"Last name of the contact": "Last name of the contact",
|
||||
"Middle name of the contact": "Middle name of the contact",
|
||||
"Phonetic spelling of the first name": "Phonetic spelling of the first name",
|
||||
"Phonetic spelling of the last name": "Phonetic spelling of the last name",
|
||||
"Phonetic spelling of the middle name": "Phonetic spelling of the middle name",
|
||||
"Name prefix (e.g., Mr., Mrs., Dr.)": "Name prefix (e.g., Mr., Mrs., Dr.)",
|
||||
"Name suffix (e.g., Jr., Sr., III)": "Name suffix (e.g., Jr., Sr., III)",
|
||||
"Nickname for the contact": "Nickname for the contact",
|
||||
"How the contact should be filed/sorted": "How the contact should be filed/sorted",
|
||||
"Additional notes about the contact": "Additional notes about the contact",
|
||||
"Whether the contact should be starred": "Whether the contact should be starred",
|
||||
"Gender of the contact": "Gender of the contact",
|
||||
"Email addresses, phone numbers, and other contact information": "Email addresses, phone numbers, and other contact information",
|
||||
"Organizations and groups the contact belongs to": "Organizations and groups the contact belongs to",
|
||||
"Select the contact to update": "Select the contact to update",
|
||||
"Move contact to a different contact book (optional)": "Move contact to a different contact book (optional)",
|
||||
"Email addresses, phone numbers, and other contact information. Note: When updating infos, all existing infos will be replaced with the ones provided here.": "Email addresses, phone numbers, and other contact information. Note: When updating infos, all existing infos will be replaced with the ones provided here.",
|
||||
"Organizations and groups the contact belongs to. Note: When updating memberships, all existing memberships will be replaced with the ones provided here.": "Organizations and groups the contact belongs to. Note: When updating memberships, all existing memberships will be replaced with the ones provided here.",
|
||||
"Type of message to create": "Type of message to create",
|
||||
"Subject line (primarily for email)": "Subject line (primarily for email)",
|
||||
"The content of your message (supports HTML for email)": "The content of your message (supports HTML for email)",
|
||||
"Configure sender, recipients, and message-specific options": "Configure sender, recipients, and message-specific options",
|
||||
"Advanced conversation management options": "Advanced conversation management options",
|
||||
"Send the draft immediately instead of saving as draft": "Send the draft immediately instead of saving as draft",
|
||||
"Schedule the message to be sent later": "Schedule the message to be sent later",
|
||||
"Unix timestamp when to send the message (required if scheduling)": "Unix timestamp when to send the message (required if scheduling)",
|
||||
"Cancel scheduled send if there is a reply (requires scheduling)": "Cancel scheduled send if there is a reply (requires scheduling)",
|
||||
"File attachments (up to 25 files, max 10MB total)": "File attachments (up to 25 files, max 10MB total)",
|
||||
"Type of task to create": "Type of task to create",
|
||||
"Title of the task (max 1000 characters)": "Title of the task (max 1000 characters)",
|
||||
"Description of the task (max 10000 characters)": "Description of the task (max 10000 characters)",
|
||||
"Current state of the task": "Current state of the task",
|
||||
"Due date for the task": "Due date for the task",
|
||||
"Configure task assignment and organization based on task type": "Configure task assignment and organization based on task type",
|
||||
"Search across all contact information including name, email, phone, organization, custom fields, notes, etc. Leave empty to get all contacts.": "Search across all contact information including name, email, phone, organization, custom fields, notes, etc. Leave empty to get all contacts.",
|
||||
"Configure how to search and filter contacts": "Configure how to search and filter contacts",
|
||||
"How to format the returned contact data": "How to format the returned contact data",
|
||||
"Authorization headers are injected automatically from your connection.": "Authorization headers are injected automatically from your connection.",
|
||||
"Enable for files like PDFs, images, etc..": "Enable for files like PDFs, images, etc..",
|
||||
"Male": "Male",
|
||||
"Female": "Female",
|
||||
"Other": "Other",
|
||||
"Email": "Email",
|
||||
"SMS": "SMS",
|
||||
"WhatsApp": "WhatsApp",
|
||||
"Missive Live Chat": "Missive Live Chat",
|
||||
"Custom Channel": "Custom Channel",
|
||||
"Messenger": "Messenger",
|
||||
"Instagram": "Instagram",
|
||||
"Standalone Task": "Standalone Task",
|
||||
"Conversation Subtask": "Conversation Subtask",
|
||||
"Todo": "Todo",
|
||||
"In Progress": "In Progress",
|
||||
"Closed": "Closed",
|
||||
"Full Contact Data": "Full Contact Data",
|
||||
"Summary Only": "Summary Only",
|
||||
"Count Only": "Count Only",
|
||||
"GET": "GET",
|
||||
"POST": "POST",
|
||||
"PATCH": "PATCH",
|
||||
"PUT": "PUT",
|
||||
"DELETE": "DELETE",
|
||||
"HEAD": "HEAD",
|
||||
"New Message": "New Message",
|
||||
"New Comment": "New Comment",
|
||||
"New Contact": "New Contact",
|
||||
"New Contact Book": "New Contact Book",
|
||||
"New Contact Group": "New Contact Group",
|
||||
"Triggers when new messages are received (email, SMS, WhatsApp, Facebook, etc.)": "Triggers when new messages are received (email, SMS, WhatsApp, Facebook, etc.)",
|
||||
"Triggers when new comments are added to conversations": "Triggers when new comments are added to conversations",
|
||||
"Triggers when new contacts are added to contact books": "Triggers when new contacts are added to contact books",
|
||||
"Triggers when new contact books are created": "Triggers when new contact books are created",
|
||||
"Triggers when new contact groups are created": "Triggers when new contact groups are created",
|
||||
"Markdown": "Markdown",
|
||||
"\n## Setup Instructions\n\nTo use this trigger, you need to manually create a webhook rule in your Missive account:\n\n### 1. Access Missive Rules\n- Open Missive and go to **Settings > Rules**\n- Click **\"New incoming rule\"** or **\"New outgoing rule\"**\n\n### 2. Configure the Trigger\nChoose from these message types:\n- **Email** - Incoming email messages\n- **SMS** - Text messages \n- **WhatsApp** - WhatsApp messages\n- **Facebook Messenger** - Facebook messages\n- **Instagram** - Instagram messages\n- **Twitter** - Twi": "\n## Setup Instructions\n\nTo use this trigger, you need to manually create a webhook rule in your Missive account:\n\n### 1. Access Missive Rules\n- Open Missive and go to **Settings > Rules**\n- Click **\"New incoming rule\"** or **\"New outgoing rule\"**\n\n### 2. Configure the Trigger\nChoose from these message types:\n- **Email** - Incoming email messages\n- **SMS** - Text messages \n- **WhatsApp** - WhatsApp messages\n- **Facebook Messenger** - Facebook messages\n- **Instagram** - Instagram messages\n- **Twitter** - Twitter messages\n- **Missive Live Chat** - Live chat messages\n\n### 3. Add Filters (Optional)\nConfigure filters like:\n- Specific sender email addresses\n- Subject line contains text\n- Message content contains keywords\n- Organization or team scope\n\n### 4. Set Webhook Action\n1. In the **Actions** section, select **\"Webhook\"**\n2. Paste this URL in the **Webhook URL** field:\n```text\n{{webhookUrl}}\n```\n3. Set **HTTP Method** to **POST**\n4. Leave **Content Type** as **application/json**\n\n### 5. Save the Rule\n- Click **Save** to activate the webhook\n- Missive will validate your endpoint automatically\n\n---\n\n**Note:** You need admin/owner permissions and a Productive plan to create rules.\n\n**Example Use Cases:**\n- Trigger when emails from specific customers arrive\n- Process all WhatsApp messages for customer support\n- Route urgent emails (subject contains \"URGENT\") to special workflows\n- Log all social media interactions to your CRM\n ",
|
||||
"\n## Setup Instructions\n\nTo use this trigger, you need to manually create a webhook rule in your Missive account:\n\n### 1. Access Missive Rules\n- Open Missive and go to **Settings > Rules**\n- Click **\"New incoming rule\"** or **\"New outgoing rule\"**\n\n### 2. Configure the Trigger\nIn the **When should rule trigger?** section:\n- Select **\"New comment\"** from the User actions\n\n### 3. Add Filters (Optional)\nConfigure filters like:\n- **Specific author** - Only comments from certain team members\n- **Task comments onl": "\n## Setup Instructions\n\nTo use this trigger, you need to manually create a webhook rule in your Missive account:\n\n### 1. Access Missive Rules\n- Open Missive and go to **Settings > Rules**\n- Click **\"New incoming rule\"** or **\"New outgoing rule\"**\n\n### 2. Configure the Trigger\nIn the **When should rule trigger?** section:\n- Select **\"New comment\"** from the User actions\n\n### 3. Add Filters (Optional)\nConfigure filters like:\n- **Specific author** - Only comments from certain team members\n- **Task comments only** - Only comments on tasks\n- **Content contains** - Comments with specific keywords\n- **Mentions** - When specific users are mentioned\n- **Organization scope** - Organization vs personal conversations\n\n### 4. Set Webhook Action\n1. In the **Actions** section, select **\"Webhook\"**\n2. Paste this URL in the **Webhook URL** field:\n```text\n{{webhookUrl}}\n```\n3. Set **HTTP Method** to **POST**\n4. Leave **Content Type** as **application/json**\n\n### 5. Save the Rule\n- Click **Save** to activate the webhook\n- Missive will validate your endpoint automatically\n\n---\n\n**Note:** You need admin/owner permissions and a Productive plan to create rules.\n\n**Example Use Cases:**\n- Alert managers when team members comment on critical conversations\n- Track task progress through comment notifications\n- Route comments with specific keywords to specialized workflows\n- Log team collaboration activity to project management tools\n ",
|
||||
"\n## Setup Instructions\n\nTo use this trigger, you need to manually create a webhook rule in your Missive account:\n\n### 1. Access Missive Rules\n- Open Missive and go to **Settings > Rules**\n- Click **\"New incoming rule\"** or **\"New outgoing rule\"**\n\n### 2. Configure the Trigger\nIn the **When should rule trigger?** section:\n- Look for **\"New contact\"** or **\"Contact created\"** in the available trigger types\n- Select this option to trigger on contact creation\n\n### 3. Add Filters (Optional)\nConfigure filters lik": "\n## Setup Instructions\n\nTo use this trigger, you need to manually create a webhook rule in your Missive account:\n\n### 1. Access Missive Rules\n- Open Missive and go to **Settings > Rules**\n- Click **\"New incoming rule\"** or **\"New outgoing rule\"**\n\n### 2. Configure the Trigger\nIn the **When should rule trigger?** section:\n- Look for **\"New contact\"** or **\"Contact created\"** in the available trigger types\n- Select this option to trigger on contact creation\n\n### 3. Add Filters (Optional)\nConfigure filters like:\n- **Contact book** - Only contacts added to specific contact books\n- **Contact owner** - Only contacts assigned to specific users\n- **Has email** - Only contacts with email addresses\n- **Has phone** - Only contacts with phone numbers\n- **Organization membership** - Contacts belonging to specific organizations\n- **Starred contacts** - Only starred contacts\n\n### 4. Set Webhook Action\n1. In the **Actions** section, select **\"Webhook\"**\n2. Paste this URL in the **Webhook URL** field:\n```text\n{{webhookUrl}}\n```\n3. Set **HTTP Method** to **POST**\n4. Leave **Content Type** as **application/json**\n\n### 5. Save the Rule\n- Click **Save** to activate the webhook\n- Missive will validate your endpoint automatically\n\n---\n\n**Note:** You need admin/owner permissions and a Productive plan to create rules.\n\n**Example Use Cases:**\n- Sync new contacts to your CRM automatically\n- Send welcome emails to new business contacts\n- Add new contacts to marketing automation workflows\n- Alert sales team when new prospects are added\n- Backup contact data to external systems\n ",
|
||||
"\n## Setup Instructions\n\nTo use this trigger, you need to manually create a webhook rule in your Missive account:\n\n### 1. Access Missive Rules\n- Open Missive and go to **Settings > Rules**\n- Click **\"New incoming rule\"** or **\"New outgoing rule\"**\n\n### 2. Configure the Trigger\nIn the **When should rule trigger?** section:\n- Look for **\"New contact book\"** or **\"Contact book created\"** in the available trigger types\n- Select this option to trigger on contact book creation\n\n### 3. Add Filters (Optional)\nConfig": "\n## Setup Instructions\n\nTo use this trigger, you need to manually create a webhook rule in your Missive account:\n\n### 1. Access Missive Rules\n- Open Missive and go to **Settings > Rules**\n- Click **\"New incoming rule\"** or **\"New outgoing rule\"**\n\n### 2. Configure the Trigger\nIn the **When should rule trigger?** section:\n- Look for **\"New contact book\"** or **\"Contact book created\"** in the available trigger types\n- Select this option to trigger on contact book creation\n\n### 3. Add Filters (Optional)\nConfigure filters like:\n- **Book owner** - Only contact books created by specific users\n- **Organization scope** - Organization vs personal contact books\n- **Book name contains** - Contact books with specific naming patterns\n\n### 4. Set Webhook Action\n1. In the **Actions** section, select **\"Webhook\"**\n2. Paste this URL in the **Webhook URL** field:\n```text\n{{webhookUrl}}\n```\n3. Set **HTTP Method** to **POST**\n4. Leave **Content Type** as **application/json**\n\n### 5. Save the Rule\n- Click **Save** to activate the webhook\n- Missive will validate your endpoint automatically\n\n---\n\n**Note:** You need admin/owner permissions and a Productive plan to create rules.\n\n**Example Use Cases:**\n- Set up automatic contact book backups when new books are created\n- Initialize contact book permissions and sharing settings\n- Notify administrators when teams create new contact databases\n- Create corresponding contact lists in external CRM systems\n- Track contact book creation for audit and compliance\n ",
|
||||
"\n## Setup Instructions\n\nTo use this trigger, you need to manually create a webhook rule in your Missive account:\n\n### 1. Access Missive Rules\n- Open Missive and go to **Settings > Rules**\n- Click **\"New incoming rule\"** or **\"New outgoing rule\"**\n\n### 2. Configure the Trigger\nIn the **When should rule trigger?** section:\n- Look for **\"New contact group\"** or **\"Contact group created\"** in the available trigger types\n- Select this option to trigger on contact group creation\n\n### 3. Add Filters (Optional)\nCon": "\n## Setup Instructions\n\nTo use this trigger, you need to manually create a webhook rule in your Missive account:\n\n### 1. Access Missive Rules\n- Open Missive and go to **Settings > Rules**\n- Click **\"New incoming rule\"** or **\"New outgoing rule\"**\n\n### 2. Configure the Trigger\nIn the **When should rule trigger?** section:\n- Look for **\"New contact group\"** or **\"Contact group created\"** in the available trigger types\n- Select this option to trigger on contact group creation\n\n### 3. Add Filters (Optional)\nConfigure filters like:\n- **Contact book** - Only groups created in specific contact books\n- **Group type** - Organizations vs regular groups\n- **Group creator** - Only groups created by specific users\n- **Group name contains** - Groups with specific naming patterns\n\n### 4. Set Webhook Action\n1. In the **Actions** section, select **\"Webhook\"**\n2. Paste this URL in the **Webhook URL** field:\n```text\n{{webhookUrl}}\n```\n3. Set **HTTP Method** to **POST**\n4. Leave **Content Type** as **application/json**\n\n### 5. Save the Rule\n- Click **Save** to activate the webhook\n- Missive will validate your endpoint automatically\n\n---\n\n**Note:** You need admin/owner permissions and a Productive plan to create rules.\n\n**Example Use Cases:**\n- Sync new contact groups to external CRM systems\n- Set up automatic group permissions and access controls\n- Create corresponding lists in marketing automation platforms\n- Track contact organization for sales pipeline management\n- Initialize group-specific workflows and templates\n "
|
||||
}
|
||||
@@ -0,0 +1,139 @@
|
||||
{
|
||||
"Missive": "Missive",
|
||||
"\n To get your API token:\n \n 1. Go to your Missive preferences\n 2. Click the API tab \n 3. Click \"Create a new token\"\n 4. Copy the generated token (starts with 'missive_pat-')\n \n Note: You need to be part of an organization subscribed to the Productive plan to generate API tokens.\n ": "\n To get your API token:\n \n 1. Go to your Missive preferences\n 2. Click the API tab \n 3. Click \"Create a new token\"\n 4. Copy the generated token (starts with 'missive_pat-')\n \n Note: You need to be part of an organization subscribed to the Productive plan to generate API tokens.\n ",
|
||||
"Create Contact": "Create Contact",
|
||||
"Update Contact": "Update Contact",
|
||||
"Create Draft/Post": "Create Draft/Post",
|
||||
"Create Task": "Create Task",
|
||||
"Find Contact": "Find Contact",
|
||||
"Custom API Call": "Custom API Call",
|
||||
"Add a new contact within a specified contact book": "Add a new contact within a specified contact book",
|
||||
"Modify fields for an existing contact": "Modify fields for an existing contact",
|
||||
"Create a draft message or post in Missive, with option to send": "Create a draft message or post in Missive, with option to send",
|
||||
"Create a task that can be standalone or associated with a conversation": "Create a task that can be standalone or associated with a conversation",
|
||||
"Search for contacts by text, email, name, or any contact information": "Search for contacts by text, email, name, or any contact information",
|
||||
"Make a custom API call to a specific endpoint": "Make a custom API call to a specific endpoint",
|
||||
"Contact Book": "Contact Book",
|
||||
"First Name": "First Name",
|
||||
"Last Name": "Last Name",
|
||||
"Middle Name": "Middle Name",
|
||||
"Phonetic First Name": "Phonetic First Name",
|
||||
"Phonetic Last Name": "Phonetic Last Name",
|
||||
"Phonetic Middle Name": "Phonetic Middle Name",
|
||||
"Prefix": "Prefix",
|
||||
"Suffix": "Suffix",
|
||||
"Nickname": "Nickname",
|
||||
"File As": "File As",
|
||||
"Notes": "Notes",
|
||||
"Starred": "Starred",
|
||||
"Gender": "Gender",
|
||||
"Contact Information": "Contact Information",
|
||||
"Memberships": "Memberships",
|
||||
"Contact": "Contact",
|
||||
"Move to Contact Book": "Move to Contact Book",
|
||||
"Message Type": "Message Type",
|
||||
"Subject": "Subject",
|
||||
"Message Body": "Message Body",
|
||||
"Message Configuration": "Message Configuration",
|
||||
"Conversation Options": "Conversation Options",
|
||||
"Send Immediately": "Send Immediately",
|
||||
"Schedule Send": "Schedule Send",
|
||||
"Send At (Unix Timestamp)": "Send At (Unix Timestamp)",
|
||||
"Auto Follow-up": "Auto Follow-up",
|
||||
"Attachments": "Attachments",
|
||||
"Task Type": "Task Type",
|
||||
"Task Title": "Task Title",
|
||||
"Description": "Description",
|
||||
"Task State": "Task State",
|
||||
"Due Date": "Due Date",
|
||||
"Task Configuration": "Task Configuration",
|
||||
"Search Term": "Search Term",
|
||||
"Search & Filter Options": "Search & Filter Options",
|
||||
"Result Format": "Result Format",
|
||||
"Method": "Method",
|
||||
"Headers": "Headers",
|
||||
"Query Parameters": "Query Parameters",
|
||||
"Body": "Body",
|
||||
"No Error on Failure": "No Error on Failure",
|
||||
"Timeout (in seconds)": "Timeout (in seconds)",
|
||||
"Select the contact book where the contact will be created": "Select the contact book where the contact will be created",
|
||||
"First name of the contact": "First name of the contact",
|
||||
"Last name of the contact": "Last name of the contact",
|
||||
"Middle name of the contact": "Middle name of the contact",
|
||||
"Phonetic spelling of the first name": "Phonetic spelling of the first name",
|
||||
"Phonetic spelling of the last name": "Phonetic spelling of the last name",
|
||||
"Phonetic spelling of the middle name": "Phonetic spelling of the middle name",
|
||||
"Name prefix (e.g., Mr., Mrs., Dr.)": "Name prefix (e.g., Mr., Mrs., Dr.)",
|
||||
"Name suffix (e.g., Jr., Sr., III)": "Name suffix (e.g., Jr., Sr., III)",
|
||||
"Nickname for the contact": "Nickname for the contact",
|
||||
"How the contact should be filed/sorted": "How the contact should be filed/sorted",
|
||||
"Additional notes about the contact": "Additional notes about the contact",
|
||||
"Whether the contact should be starred": "Whether the contact should be starred",
|
||||
"Gender of the contact": "Gender of the contact",
|
||||
"Email addresses, phone numbers, and other contact information": "Email addresses, phone numbers, and other contact information",
|
||||
"Organizations and groups the contact belongs to": "Organizations and groups the contact belongs to",
|
||||
"Select the contact to update": "Select the contact to update",
|
||||
"Move contact to a different contact book (optional)": "Move contact to a different contact book (optional)",
|
||||
"Email addresses, phone numbers, and other contact information. Note: When updating infos, all existing infos will be replaced with the ones provided here.": "Email addresses, phone numbers, and other contact information. Note: When updating infos, all existing infos will be replaced with the ones provided here.",
|
||||
"Organizations and groups the contact belongs to. Note: When updating memberships, all existing memberships will be replaced with the ones provided here.": "Organizations and groups the contact belongs to. Note: When updating memberships, all existing memberships will be replaced with the ones provided here.",
|
||||
"Type of message to create": "Type of message to create",
|
||||
"Subject line (primarily for email)": "Subject line (primarily for email)",
|
||||
"The content of your message (supports HTML for email)": "The content of your message (supports HTML for email)",
|
||||
"Configure sender, recipients, and message-specific options": "Configure sender, recipients, and message-specific options",
|
||||
"Advanced conversation management options": "Advanced conversation management options",
|
||||
"Send the draft immediately instead of saving as draft": "Send the draft immediately instead of saving as draft",
|
||||
"Schedule the message to be sent later": "Schedule the message to be sent later",
|
||||
"Unix timestamp when to send the message (required if scheduling)": "Unix timestamp when to send the message (required if scheduling)",
|
||||
"Cancel scheduled send if there is a reply (requires scheduling)": "Cancel scheduled send if there is a reply (requires scheduling)",
|
||||
"File attachments (up to 25 files, max 10MB total)": "File attachments (up to 25 files, max 10MB total)",
|
||||
"Type of task to create": "Type of task to create",
|
||||
"Title of the task (max 1000 characters)": "Title of the task (max 1000 characters)",
|
||||
"Description of the task (max 10000 characters)": "Description of the task (max 10000 characters)",
|
||||
"Current state of the task": "Current state of the task",
|
||||
"Due date for the task": "Due date for the task",
|
||||
"Configure task assignment and organization based on task type": "Configure task assignment and organization based on task type",
|
||||
"Search across all contact information including name, email, phone, organization, custom fields, notes, etc. Leave empty to get all contacts.": "Search across all contact information including name, email, phone, organization, custom fields, notes, etc. Leave empty to get all contacts.",
|
||||
"Configure how to search and filter contacts": "Configure how to search and filter contacts",
|
||||
"How to format the returned contact data": "How to format the returned contact data",
|
||||
"Authorization headers are injected automatically from your connection.": "Authorization headers are injected automatically from your connection.",
|
||||
"Male": "Male",
|
||||
"Female": "Female",
|
||||
"Other": "Other",
|
||||
"Email": "Email",
|
||||
"SMS": "SMS",
|
||||
"WhatsApp": "WhatsApp",
|
||||
"Missive Live Chat": "Missive Live Chat",
|
||||
"Custom Channel": "Custom Channel",
|
||||
"Messenger": "Messenger",
|
||||
"Instagram": "Instagram",
|
||||
"Standalone Task": "Standalone Task",
|
||||
"Conversation Subtask": "Conversation Subtask",
|
||||
"Todo": "Todo",
|
||||
"In Progress": "In Progress",
|
||||
"Closed": "Closed",
|
||||
"Full Contact Data": "Full Contact Data",
|
||||
"Summary Only": "Summary Only",
|
||||
"Count Only": "Count Only",
|
||||
"GET": "GET",
|
||||
"POST": "POST",
|
||||
"PATCH": "PATCH",
|
||||
"PUT": "PUT",
|
||||
"DELETE": "DELETE",
|
||||
"HEAD": "HEAD",
|
||||
"New Message": "New Message",
|
||||
"New Comment": "New Comment",
|
||||
"New Contact": "New Contact",
|
||||
"New Contact Book": "New Contact Book",
|
||||
"New Contact Group": "New Contact Group",
|
||||
"Triggers when new messages are received (email, SMS, WhatsApp, Facebook, etc.)": "Triggers when new messages are received (email, SMS, WhatsApp, Facebook, etc.)",
|
||||
"Triggers when new comments are added to conversations": "Triggers when new comments are added to conversations",
|
||||
"Triggers when new contacts are added to contact books": "Triggers when new contacts are added to contact books",
|
||||
"Triggers when new contact books are created": "Triggers when new contact books are created",
|
||||
"Triggers when new contact groups are created": "Triggers when new contact groups are created",
|
||||
"Markdown": "Markdown",
|
||||
"\n## Setup Instructions\n\nTo use this trigger, you need to manually create a webhook rule in your Missive account:\n\n### 1. Access Missive Rules\n- Open Missive and go to **Settings > Rules**\n- Click **\"New incoming rule\"** or **\"New outgoing rule\"**\n\n### 2. Configure the Trigger\nChoose from these message types:\n- **Email** - Incoming email messages\n- **SMS** - Text messages \n- **WhatsApp** - WhatsApp messages\n- **Facebook Messenger** - Facebook messages\n- **Instagram** - Instagram messages\n- **Twitter** - Twi": "\n## Setup Instructions\n\nTo use this trigger, you need to manually create a webhook rule in your Missive account:\n\n### 1. Access Missive Rules\n- Open Missive and go to **Settings > Rules**\n- Click **\"New incoming rule\"** or **\"New outgoing rule\"**\n\n### 2. Configure the Trigger\nChoose from these message types:\n- **Email** - Incoming email messages\n- **SMS** - Text messages \n- **WhatsApp** - WhatsApp messages\n- **Facebook Messenger** - Facebook messages\n- **Instagram** - Instagram messages\n- **Twitter** - Twitter messages\n- **Missive Live Chat** - Live chat messages\n\n### 3. Add Filters (Optional)\nConfigure filters like:\n- Specific sender email addresses\n- Subject line contains text\n- Message content contains keywords\n- Organization or team scope\n\n### 4. Set Webhook Action\n1. In the **Actions** section, select **\"Webhook\"**\n2. Paste this URL in the **Webhook URL** field:\n```text\n{{webhookUrl}}\n```\n3. Set **HTTP Method** to **POST**\n4. Leave **Content Type** as **application/json**\n\n### 5. Save the Rule\n- Click **Save** to activate the webhook\n- Missive will validate your endpoint automatically\n\n---\n\n**Note:** You need admin/owner permissions and a Productive plan to create rules.\n\n**Example Use Cases:**\n- Trigger when emails from specific customers arrive\n- Process all WhatsApp messages for customer support\n- Route urgent emails (subject contains \"URGENT\") to special workflows\n- Log all social media interactions to your CRM\n ",
|
||||
"\n## Setup Instructions\n\nTo use this trigger, you need to manually create a webhook rule in your Missive account:\n\n### 1. Access Missive Rules\n- Open Missive and go to **Settings > Rules**\n- Click **\"New incoming rule\"** or **\"New outgoing rule\"**\n\n### 2. Configure the Trigger\nIn the **When should rule trigger?** section:\n- Select **\"New comment\"** from the User actions\n\n### 3. Add Filters (Optional)\nConfigure filters like:\n- **Specific author** - Only comments from certain team members\n- **Task comments onl": "\n## Setup Instructions\n\nTo use this trigger, you need to manually create a webhook rule in your Missive account:\n\n### 1. Access Missive Rules\n- Open Missive and go to **Settings > Rules**\n- Click **\"New incoming rule\"** or **\"New outgoing rule\"**\n\n### 2. Configure the Trigger\nIn the **When should rule trigger?** section:\n- Select **\"New comment\"** from the User actions\n\n### 3. Add Filters (Optional)\nConfigure filters like:\n- **Specific author** - Only comments from certain team members\n- **Task comments only** - Only comments on tasks\n- **Content contains** - Comments with specific keywords\n- **Mentions** - When specific users are mentioned\n- **Organization scope** - Organization vs personal conversations\n\n### 4. Set Webhook Action\n1. In the **Actions** section, select **\"Webhook\"**\n2. Paste this URL in the **Webhook URL** field:\n```text\n{{webhookUrl}}\n```\n3. Set **HTTP Method** to **POST**\n4. Leave **Content Type** as **application/json**\n\n### 5. Save the Rule\n- Click **Save** to activate the webhook\n- Missive will validate your endpoint automatically\n\n---\n\n**Note:** You need admin/owner permissions and a Productive plan to create rules.\n\n**Example Use Cases:**\n- Alert managers when team members comment on critical conversations\n- Track task progress through comment notifications\n- Route comments with specific keywords to specialized workflows\n- Log team collaboration activity to project management tools\n ",
|
||||
"\n## Setup Instructions\n\nTo use this trigger, you need to manually create a webhook rule in your Missive account:\n\n### 1. Access Missive Rules\n- Open Missive and go to **Settings > Rules**\n- Click **\"New incoming rule\"** or **\"New outgoing rule\"**\n\n### 2. Configure the Trigger\nIn the **When should rule trigger?** section:\n- Look for **\"New contact\"** or **\"Contact created\"** in the available trigger types\n- Select this option to trigger on contact creation\n\n### 3. Add Filters (Optional)\nConfigure filters lik": "\n## Setup Instructions\n\nTo use this trigger, you need to manually create a webhook rule in your Missive account:\n\n### 1. Access Missive Rules\n- Open Missive and go to **Settings > Rules**\n- Click **\"New incoming rule\"** or **\"New outgoing rule\"**\n\n### 2. Configure the Trigger\nIn the **When should rule trigger?** section:\n- Look for **\"New contact\"** or **\"Contact created\"** in the available trigger types\n- Select this option to trigger on contact creation\n\n### 3. Add Filters (Optional)\nConfigure filters like:\n- **Contact book** - Only contacts added to specific contact books\n- **Contact owner** - Only contacts assigned to specific users\n- **Has email** - Only contacts with email addresses\n- **Has phone** - Only contacts with phone numbers\n- **Organization membership** - Contacts belonging to specific organizations\n- **Starred contacts** - Only starred contacts\n\n### 4. Set Webhook Action\n1. In the **Actions** section, select **\"Webhook\"**\n2. Paste this URL in the **Webhook URL** field:\n```text\n{{webhookUrl}}\n```\n3. Set **HTTP Method** to **POST**\n4. Leave **Content Type** as **application/json**\n\n### 5. Save the Rule\n- Click **Save** to activate the webhook\n- Missive will validate your endpoint automatically\n\n---\n\n**Note:** You need admin/owner permissions and a Productive plan to create rules.\n\n**Example Use Cases:**\n- Sync new contacts to your CRM automatically\n- Send welcome emails to new business contacts\n- Add new contacts to marketing automation workflows\n- Alert sales team when new prospects are added\n- Backup contact data to external systems\n ",
|
||||
"\n## Setup Instructions\n\nTo use this trigger, you need to manually create a webhook rule in your Missive account:\n\n### 1. Access Missive Rules\n- Open Missive and go to **Settings > Rules**\n- Click **\"New incoming rule\"** or **\"New outgoing rule\"**\n\n### 2. Configure the Trigger\nIn the **When should rule trigger?** section:\n- Look for **\"New contact book\"** or **\"Contact book created\"** in the available trigger types\n- Select this option to trigger on contact book creation\n\n### 3. Add Filters (Optional)\nConfig": "\n## Setup Instructions\n\nTo use this trigger, you need to manually create a webhook rule in your Missive account:\n\n### 1. Access Missive Rules\n- Open Missive and go to **Settings > Rules**\n- Click **\"New incoming rule\"** or **\"New outgoing rule\"**\n\n### 2. Configure the Trigger\nIn the **When should rule trigger?** section:\n- Look for **\"New contact book\"** or **\"Contact book created\"** in the available trigger types\n- Select this option to trigger on contact book creation\n\n### 3. Add Filters (Optional)\nConfigure filters like:\n- **Book owner** - Only contact books created by specific users\n- **Organization scope** - Organization vs personal contact books\n- **Book name contains** - Contact books with specific naming patterns\n\n### 4. Set Webhook Action\n1. In the **Actions** section, select **\"Webhook\"**\n2. Paste this URL in the **Webhook URL** field:\n```text\n{{webhookUrl}}\n```\n3. Set **HTTP Method** to **POST**\n4. Leave **Content Type** as **application/json**\n\n### 5. Save the Rule\n- Click **Save** to activate the webhook\n- Missive will validate your endpoint automatically\n\n---\n\n**Note:** You need admin/owner permissions and a Productive plan to create rules.\n\n**Example Use Cases:**\n- Set up automatic contact book backups when new books are created\n- Initialize contact book permissions and sharing settings\n- Notify administrators when teams create new contact databases\n- Create corresponding contact lists in external CRM systems\n- Track contact book creation for audit and compliance\n ",
|
||||
"\n## Setup Instructions\n\nTo use this trigger, you need to manually create a webhook rule in your Missive account:\n\n### 1. Access Missive Rules\n- Open Missive and go to **Settings > Rules**\n- Click **\"New incoming rule\"** or **\"New outgoing rule\"**\n\n### 2. Configure the Trigger\nIn the **When should rule trigger?** section:\n- Look for **\"New contact group\"** or **\"Contact group created\"** in the available trigger types\n- Select this option to trigger on contact group creation\n\n### 3. Add Filters (Optional)\nCon": "\n## Setup Instructions\n\nTo use this trigger, you need to manually create a webhook rule in your Missive account:\n\n### 1. Access Missive Rules\n- Open Missive and go to **Settings > Rules**\n- Click **\"New incoming rule\"** or **\"New outgoing rule\"**\n\n### 2. Configure the Trigger\nIn the **When should rule trigger?** section:\n- Look for **\"New contact group\"** or **\"Contact group created\"** in the available trigger types\n- Select this option to trigger on contact group creation\n\n### 3. Add Filters (Optional)\nConfigure filters like:\n- **Contact book** - Only groups created in specific contact books\n- **Group type** - Organizations vs regular groups\n- **Group creator** - Only groups created by specific users\n- **Group name contains** - Groups with specific naming patterns\n\n### 4. Set Webhook Action\n1. In the **Actions** section, select **\"Webhook\"**\n2. Paste this URL in the **Webhook URL** field:\n```text\n{{webhookUrl}}\n```\n3. Set **HTTP Method** to **POST**\n4. Leave **Content Type** as **application/json**\n\n### 5. Save the Rule\n- Click **Save** to activate the webhook\n- Missive will validate your endpoint automatically\n\n---\n\n**Note:** You need admin/owner permissions and a Productive plan to create rules.\n\n**Example Use Cases:**\n- Sync new contact groups to external CRM systems\n- Set up automatic group permissions and access controls\n- Create corresponding lists in marketing automation platforms\n- Track contact organization for sales pipeline management\n- Initialize group-specific workflows and templates\n "
|
||||
}
|
||||
@@ -0,0 +1,140 @@
|
||||
{
|
||||
"\n To get your API token:\n \n 1. Go to your Missive preferences\n 2. Click the API tab \n 3. Click \"Create a new token\"\n 4. Copy the generated token (starts with 'missive_pat-')\n \n Note: You need to be part of an organization subscribed to the Productive plan to generate API tokens.\n ": "\n To get your API token:\n \n 1. Go to your Missive preferences\n 2. Click the API tab \n 3. Click \"Create a new token\"\n 4. Copy the generated token (starts with 'missive_pat-')\n \n Note: You need to be part of an organization subscribed to the Productive plan to generate API tokens.\n ",
|
||||
"Create Contact": "Create Contact",
|
||||
"Update Contact": "Update Contact",
|
||||
"Create Draft/Post": "Create Draft/Post",
|
||||
"Create Task": "Create Task",
|
||||
"Find Contact": "Find Contact",
|
||||
"Custom API Call": "自定义 API 呼叫",
|
||||
"Add a new contact within a specified contact book": "Add a new contact within a specified contact book",
|
||||
"Modify fields for an existing contact": "Modify fields for an existing contact",
|
||||
"Create a draft message or post in Missive, with option to send": "Create a draft message or post in Missive, with option to send",
|
||||
"Create a task that can be standalone or associated with a conversation": "Create a task that can be standalone or associated with a conversation",
|
||||
"Search for contacts by text, email, name, or any contact information": "Search for contacts by text, email, name, or any contact information",
|
||||
"Make a custom API call to a specific endpoint": "将一个自定义 API 调用到一个特定的终点",
|
||||
"Contact Book": "Contact Book",
|
||||
"First Name": "名字",
|
||||
"Last Name": "名字",
|
||||
"Middle Name": "Middle Name",
|
||||
"Phonetic First Name": "Phonetic First Name",
|
||||
"Phonetic Last Name": "Phonetic Last Name",
|
||||
"Phonetic Middle Name": "Phonetic Middle Name",
|
||||
"Prefix": "Prefix",
|
||||
"Suffix": "Suffix",
|
||||
"Nickname": "Nickname",
|
||||
"File As": "File As",
|
||||
"Notes": "Notes",
|
||||
"Starred": "Starred",
|
||||
"Gender": "Gender",
|
||||
"Contact Information": "Contact Information",
|
||||
"Memberships": "Memberships",
|
||||
"Contact": "Contact",
|
||||
"Move to Contact Book": "Move to Contact Book",
|
||||
"Message Type": "Message Type",
|
||||
"Subject": "Subject",
|
||||
"Message Body": "Message Body",
|
||||
"Message Configuration": "Message Configuration",
|
||||
"Conversation Options": "Conversation Options",
|
||||
"Send Immediately": "Send Immediately",
|
||||
"Schedule Send": "Schedule Send",
|
||||
"Send At (Unix Timestamp)": "Send At (Unix Timestamp)",
|
||||
"Auto Follow-up": "Auto Follow-up",
|
||||
"Attachments": "Attachments",
|
||||
"Task Type": "Task Type",
|
||||
"Task Title": "Task Title",
|
||||
"Description": "描述",
|
||||
"Task State": "Task State",
|
||||
"Due Date": "Due Date",
|
||||
"Task Configuration": "Task Configuration",
|
||||
"Search Term": "Search Term",
|
||||
"Search & Filter Options": "Search & Filter Options",
|
||||
"Result Format": "Result Format",
|
||||
"Method": "方法",
|
||||
"Headers": "信头",
|
||||
"Query Parameters": "查询参数",
|
||||
"Body": "正文内容",
|
||||
"Response is Binary ?": "Response is Binary ?",
|
||||
"No Error on Failure": "失败时没有错误",
|
||||
"Timeout (in seconds)": "超时(秒)",
|
||||
"Select the contact book where the contact will be created": "Select the contact book where the contact will be created",
|
||||
"First name of the contact": "First name of the contact",
|
||||
"Last name of the contact": "Last name of the contact",
|
||||
"Middle name of the contact": "Middle name of the contact",
|
||||
"Phonetic spelling of the first name": "Phonetic spelling of the first name",
|
||||
"Phonetic spelling of the last name": "Phonetic spelling of the last name",
|
||||
"Phonetic spelling of the middle name": "Phonetic spelling of the middle name",
|
||||
"Name prefix (e.g., Mr., Mrs., Dr.)": "Name prefix (e.g., Mr., Mrs., Dr.)",
|
||||
"Name suffix (e.g., Jr., Sr., III)": "Name suffix (e.g., Jr., Sr., III)",
|
||||
"Nickname for the contact": "Nickname for the contact",
|
||||
"How the contact should be filed/sorted": "How the contact should be filed/sorted",
|
||||
"Additional notes about the contact": "Additional notes about the contact",
|
||||
"Whether the contact should be starred": "Whether the contact should be starred",
|
||||
"Gender of the contact": "Gender of the contact",
|
||||
"Email addresses, phone numbers, and other contact information": "Email addresses, phone numbers, and other contact information",
|
||||
"Organizations and groups the contact belongs to": "Organizations and groups the contact belongs to",
|
||||
"Select the contact to update": "Select the contact to update",
|
||||
"Move contact to a different contact book (optional)": "Move contact to a different contact book (optional)",
|
||||
"Email addresses, phone numbers, and other contact information. Note: When updating infos, all existing infos will be replaced with the ones provided here.": "Email addresses, phone numbers, and other contact information. Note: When updating infos, all existing infos will be replaced with the ones provided here.",
|
||||
"Organizations and groups the contact belongs to. Note: When updating memberships, all existing memberships will be replaced with the ones provided here.": "Organizations and groups the contact belongs to. Note: When updating memberships, all existing memberships will be replaced with the ones provided here.",
|
||||
"Type of message to create": "Type of message to create",
|
||||
"Subject line (primarily for email)": "Subject line (primarily for email)",
|
||||
"The content of your message (supports HTML for email)": "The content of your message (supports HTML for email)",
|
||||
"Configure sender, recipients, and message-specific options": "Configure sender, recipients, and message-specific options",
|
||||
"Advanced conversation management options": "Advanced conversation management options",
|
||||
"Send the draft immediately instead of saving as draft": "Send the draft immediately instead of saving as draft",
|
||||
"Schedule the message to be sent later": "Schedule the message to be sent later",
|
||||
"Unix timestamp when to send the message (required if scheduling)": "Unix timestamp when to send the message (required if scheduling)",
|
||||
"Cancel scheduled send if there is a reply (requires scheduling)": "Cancel scheduled send if there is a reply (requires scheduling)",
|
||||
"File attachments (up to 25 files, max 10MB total)": "File attachments (up to 25 files, max 10MB total)",
|
||||
"Type of task to create": "Type of task to create",
|
||||
"Title of the task (max 1000 characters)": "Title of the task (max 1000 characters)",
|
||||
"Description of the task (max 10000 characters)": "Description of the task (max 10000 characters)",
|
||||
"Current state of the task": "Current state of the task",
|
||||
"Due date for the task": "Due date for the task",
|
||||
"Configure task assignment and organization based on task type": "Configure task assignment and organization based on task type",
|
||||
"Search across all contact information including name, email, phone, organization, custom fields, notes, etc. Leave empty to get all contacts.": "Search across all contact information including name, email, phone, organization, custom fields, notes, etc. Leave empty to get all contacts.",
|
||||
"Configure how to search and filter contacts": "Configure how to search and filter contacts",
|
||||
"How to format the returned contact data": "How to format the returned contact data",
|
||||
"Authorization headers are injected automatically from your connection.": "授权头自动从您的连接中注入。",
|
||||
"Enable for files like PDFs, images, etc..": "Enable for files like PDFs, images, etc..",
|
||||
"Male": "Male",
|
||||
"Female": "Female",
|
||||
"Other": "Other",
|
||||
"Email": "电子邮件地址",
|
||||
"SMS": "SMS",
|
||||
"WhatsApp": "WhatsApp",
|
||||
"Missive Live Chat": "Missive Live Chat",
|
||||
"Custom Channel": "Custom Channel",
|
||||
"Messenger": "Messenger",
|
||||
"Instagram": "Instagram",
|
||||
"Standalone Task": "Standalone Task",
|
||||
"Conversation Subtask": "Conversation Subtask",
|
||||
"Todo": "Todo",
|
||||
"In Progress": "In Progress",
|
||||
"Closed": "Closed",
|
||||
"Full Contact Data": "Full Contact Data",
|
||||
"Summary Only": "Summary Only",
|
||||
"Count Only": "Count Only",
|
||||
"GET": "获取",
|
||||
"POST": "帖子",
|
||||
"PATCH": "PATCH",
|
||||
"PUT": "弹出",
|
||||
"DELETE": "删除",
|
||||
"HEAD": "黑色",
|
||||
"New Message": "New Message",
|
||||
"New Comment": "New Comment",
|
||||
"New Contact": "New Contact",
|
||||
"New Contact Book": "New Contact Book",
|
||||
"New Contact Group": "New Contact Group",
|
||||
"Triggers when new messages are received (email, SMS, WhatsApp, Facebook, etc.)": "Triggers when new messages are received (email, SMS, WhatsApp, Facebook, etc.)",
|
||||
"Triggers when new comments are added to conversations": "Triggers when new comments are added to conversations",
|
||||
"Triggers when new contacts are added to contact books": "Triggers when new contacts are added to contact books",
|
||||
"Triggers when new contact books are created": "Triggers when new contact books are created",
|
||||
"Triggers when new contact groups are created": "Triggers when new contact groups are created",
|
||||
"Markdown": "Markdown",
|
||||
"\n## Setup Instructions\n\nTo use this trigger, you need to manually create a webhook rule in your Missive account:\n\n### 1. Access Missive Rules\n- Open Missive and go to **Settings > Rules**\n- Click **\"New incoming rule\"** or **\"New outgoing rule\"**\n\n### 2. Configure the Trigger\nChoose from these message types:\n- **Email** - Incoming email messages\n- **SMS** - Text messages \n- **WhatsApp** - WhatsApp messages\n- **Facebook Messenger** - Facebook messages\n- **Instagram** - Instagram messages\n- **Twitter** - Twi": "\n## Setup Instructions\n\nTo use this trigger, you need to manually create a webhook rule in your Missive account:\n\n### 1. Access Missive Rules\n- Open Missive and go to **Settings > Rules**\n- Click **\"New incoming rule\"** or **\"New outgoing rule\"**\n\n### 2. Configure the Trigger\nChoose from these message types:\n- **Email** - Incoming email messages\n- **SMS** - Text messages \n- **WhatsApp** - WhatsApp messages\n- **Facebook Messenger** - Facebook messages\n- **Instagram** - Instagram messages\n- **Twitter** - Twitter messages\n- **Missive Live Chat** - Live chat messages\n\n### 3. Add Filters (Optional)\nConfigure filters like:\n- Specific sender email addresses\n- Subject line contains text\n- Message content contains keywords\n- Organization or team scope\n\n### 4. Set Webhook Action\n1. In the **Actions** section, select **\"Webhook\"**\n2. Paste this URL in the **Webhook URL** field:\n```text\n{{webhookUrl}}\n```\n3. Set **HTTP Method** to **POST**\n4. Leave **Content Type** as **application/json**\n\n### 5. Save the Rule\n- Click **Save** to activate the webhook\n- Missive will validate your endpoint automatically\n\n---\n\n**Note:** You need admin/owner permissions and a Productive plan to create rules.\n\n**Example Use Cases:**\n- Trigger when emails from specific customers arrive\n- Process all WhatsApp messages for customer support\n- Route urgent emails (subject contains \"URGENT\") to special workflows\n- Log all social media interactions to your CRM\n ",
|
||||
"\n## Setup Instructions\n\nTo use this trigger, you need to manually create a webhook rule in your Missive account:\n\n### 1. Access Missive Rules\n- Open Missive and go to **Settings > Rules**\n- Click **\"New incoming rule\"** or **\"New outgoing rule\"**\n\n### 2. Configure the Trigger\nIn the **When should rule trigger?** section:\n- Select **\"New comment\"** from the User actions\n\n### 3. Add Filters (Optional)\nConfigure filters like:\n- **Specific author** - Only comments from certain team members\n- **Task comments onl": "\n## Setup Instructions\n\nTo use this trigger, you need to manually create a webhook rule in your Missive account:\n\n### 1. Access Missive Rules\n- Open Missive and go to **Settings > Rules**\n- Click **\"New incoming rule\"** or **\"New outgoing rule\"**\n\n### 2. Configure the Trigger\nIn the **When should rule trigger?** section:\n- Select **\"New comment\"** from the User actions\n\n### 3. Add Filters (Optional)\nConfigure filters like:\n- **Specific author** - Only comments from certain team members\n- **Task comments only** - Only comments on tasks\n- **Content contains** - Comments with specific keywords\n- **Mentions** - When specific users are mentioned\n- **Organization scope** - Organization vs personal conversations\n\n### 4. Set Webhook Action\n1. In the **Actions** section, select **\"Webhook\"**\n2. Paste this URL in the **Webhook URL** field:\n```text\n{{webhookUrl}}\n```\n3. Set **HTTP Method** to **POST**\n4. Leave **Content Type** as **application/json**\n\n### 5. Save the Rule\n- Click **Save** to activate the webhook\n- Missive will validate your endpoint automatically\n\n---\n\n**Note:** You need admin/owner permissions and a Productive plan to create rules.\n\n**Example Use Cases:**\n- Alert managers when team members comment on critical conversations\n- Track task progress through comment notifications\n- Route comments with specific keywords to specialized workflows\n- Log team collaboration activity to project management tools\n ",
|
||||
"\n## Setup Instructions\n\nTo use this trigger, you need to manually create a webhook rule in your Missive account:\n\n### 1. Access Missive Rules\n- Open Missive and go to **Settings > Rules**\n- Click **\"New incoming rule\"** or **\"New outgoing rule\"**\n\n### 2. Configure the Trigger\nIn the **When should rule trigger?** section:\n- Look for **\"New contact\"** or **\"Contact created\"** in the available trigger types\n- Select this option to trigger on contact creation\n\n### 3. Add Filters (Optional)\nConfigure filters lik": "\n## Setup Instructions\n\nTo use this trigger, you need to manually create a webhook rule in your Missive account:\n\n### 1. Access Missive Rules\n- Open Missive and go to **Settings > Rules**\n- Click **\"New incoming rule\"** or **\"New outgoing rule\"**\n\n### 2. Configure the Trigger\nIn the **When should rule trigger?** section:\n- Look for **\"New contact\"** or **\"Contact created\"** in the available trigger types\n- Select this option to trigger on contact creation\n\n### 3. Add Filters (Optional)\nConfigure filters like:\n- **Contact book** - Only contacts added to specific contact books\n- **Contact owner** - Only contacts assigned to specific users\n- **Has email** - Only contacts with email addresses\n- **Has phone** - Only contacts with phone numbers\n- **Organization membership** - Contacts belonging to specific organizations\n- **Starred contacts** - Only starred contacts\n\n### 4. Set Webhook Action\n1. In the **Actions** section, select **\"Webhook\"**\n2. Paste this URL in the **Webhook URL** field:\n```text\n{{webhookUrl}}\n```\n3. Set **HTTP Method** to **POST**\n4. Leave **Content Type** as **application/json**\n\n### 5. Save the Rule\n- Click **Save** to activate the webhook\n- Missive will validate your endpoint automatically\n\n---\n\n**Note:** You need admin/owner permissions and a Productive plan to create rules.\n\n**Example Use Cases:**\n- Sync new contacts to your CRM automatically\n- Send welcome emails to new business contacts\n- Add new contacts to marketing automation workflows\n- Alert sales team when new prospects are added\n- Backup contact data to external systems\n ",
|
||||
"\n## Setup Instructions\n\nTo use this trigger, you need to manually create a webhook rule in your Missive account:\n\n### 1. Access Missive Rules\n- Open Missive and go to **Settings > Rules**\n- Click **\"New incoming rule\"** or **\"New outgoing rule\"**\n\n### 2. Configure the Trigger\nIn the **When should rule trigger?** section:\n- Look for **\"New contact book\"** or **\"Contact book created\"** in the available trigger types\n- Select this option to trigger on contact book creation\n\n### 3. Add Filters (Optional)\nConfig": "\n## Setup Instructions\n\nTo use this trigger, you need to manually create a webhook rule in your Missive account:\n\n### 1. Access Missive Rules\n- Open Missive and go to **Settings > Rules**\n- Click **\"New incoming rule\"** or **\"New outgoing rule\"**\n\n### 2. Configure the Trigger\nIn the **When should rule trigger?** section:\n- Look for **\"New contact book\"** or **\"Contact book created\"** in the available trigger types\n- Select this option to trigger on contact book creation\n\n### 3. Add Filters (Optional)\nConfigure filters like:\n- **Book owner** - Only contact books created by specific users\n- **Organization scope** - Organization vs personal contact books\n- **Book name contains** - Contact books with specific naming patterns\n\n### 4. Set Webhook Action\n1. In the **Actions** section, select **\"Webhook\"**\n2. Paste this URL in the **Webhook URL** field:\n```text\n{{webhookUrl}}\n```\n3. Set **HTTP Method** to **POST**\n4. Leave **Content Type** as **application/json**\n\n### 5. Save the Rule\n- Click **Save** to activate the webhook\n- Missive will validate your endpoint automatically\n\n---\n\n**Note:** You need admin/owner permissions and a Productive plan to create rules.\n\n**Example Use Cases:**\n- Set up automatic contact book backups when new books are created\n- Initialize contact book permissions and sharing settings\n- Notify administrators when teams create new contact databases\n- Create corresponding contact lists in external CRM systems\n- Track contact book creation for audit and compliance\n ",
|
||||
"\n## Setup Instructions\n\nTo use this trigger, you need to manually create a webhook rule in your Missive account:\n\n### 1. Access Missive Rules\n- Open Missive and go to **Settings > Rules**\n- Click **\"New incoming rule\"** or **\"New outgoing rule\"**\n\n### 2. Configure the Trigger\nIn the **When should rule trigger?** section:\n- Look for **\"New contact group\"** or **\"Contact group created\"** in the available trigger types\n- Select this option to trigger on contact group creation\n\n### 3. Add Filters (Optional)\nCon": "\n## Setup Instructions\n\nTo use this trigger, you need to manually create a webhook rule in your Missive account:\n\n### 1. Access Missive Rules\n- Open Missive and go to **Settings > Rules**\n- Click **\"New incoming rule\"** or **\"New outgoing rule\"**\n\n### 2. Configure the Trigger\nIn the **When should rule trigger?** section:\n- Look for **\"New contact group\"** or **\"Contact group created\"** in the available trigger types\n- Select this option to trigger on contact group creation\n\n### 3. Add Filters (Optional)\nConfigure filters like:\n- **Contact book** - Only groups created in specific contact books\n- **Group type** - Organizations vs regular groups\n- **Group creator** - Only groups created by specific users\n- **Group name contains** - Groups with specific naming patterns\n\n### 4. Set Webhook Action\n1. In the **Actions** section, select **\"Webhook\"**\n2. Paste this URL in the **Webhook URL** field:\n```text\n{{webhookUrl}}\n```\n3. Set **HTTP Method** to **POST**\n4. Leave **Content Type** as **application/json**\n\n### 5. Save the Rule\n- Click **Save** to activate the webhook\n- Missive will validate your endpoint automatically\n\n---\n\n**Note:** You need admin/owner permissions and a Productive plan to create rules.\n\n**Example Use Cases:**\n- Sync new contact groups to external CRM systems\n- Set up automatic group permissions and access controls\n- Create corresponding lists in marketing automation platforms\n- Track contact organization for sales pipeline management\n- Initialize group-specific workflows and templates\n "
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
import { createPiece } from '@activepieces/pieces-framework';
|
||||
import { PieceCategory } from '@activepieces/shared';
|
||||
import { createCustomApiCallAction } from '@activepieces/pieces-common';
|
||||
import { missiveAuth } from './lib/common/auth';
|
||||
import { createContact } from './lib/actions/create-contact';
|
||||
import { updateContact } from './lib/actions/update-contact';
|
||||
import { createDraftPost } from './lib/actions/create-draft-post';
|
||||
import { createTask } from './lib/actions/create-task';
|
||||
import { findContact } from './lib/actions/find-contact';
|
||||
import { newMessage } from './lib/triggers/new-message';
|
||||
import { newComment } from './lib/triggers/new-comment';
|
||||
import { newContact } from './lib/triggers/new-contact';
|
||||
import { newContactBook } from './lib/triggers/new-contact-book';
|
||||
import { newContactGroup } from './lib/triggers/new-contact-group';
|
||||
|
||||
export const missive = createPiece({
|
||||
displayName: 'Missive',
|
||||
minimumSupportedRelease: '0.36.1',
|
||||
logoUrl: 'https://cdn.activepieces.com/pieces/missive.png',
|
||||
categories: [PieceCategory.COMMUNICATION, PieceCategory.SALES_AND_CRM],
|
||||
authors: ['owuzo', 'onyedikachi-david'],
|
||||
auth: missiveAuth,
|
||||
actions: [
|
||||
createContact,
|
||||
updateContact,
|
||||
createDraftPost,
|
||||
createTask,
|
||||
findContact,
|
||||
createCustomApiCallAction({
|
||||
baseUrl: () => 'https://public.missiveapp.com/v1',
|
||||
auth: missiveAuth,
|
||||
authMapping: async (auth) => ({
|
||||
Authorization: `Bearer ${auth.secret_text}`,
|
||||
}),
|
||||
}),
|
||||
],
|
||||
triggers: [
|
||||
newMessage,
|
||||
newComment,
|
||||
newContact,
|
||||
newContactBook,
|
||||
newContactGroup,
|
||||
],
|
||||
});
|
||||
|
||||
@@ -0,0 +1,421 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { HttpMethod } from '@activepieces/pieces-common';
|
||||
import { missiveAuth } from '../common/auth';
|
||||
import { missiveCommon } from '../common/client';
|
||||
import { contactBookDropdown } from '../common/dynamic-dropdowns';
|
||||
|
||||
export const createContact = createAction({
|
||||
name: 'create_contact',
|
||||
displayName: 'Create Contact',
|
||||
description: 'Add a new contact within a specified contact book',
|
||||
auth: missiveAuth,
|
||||
props: {
|
||||
contact_book: contactBookDropdown,
|
||||
first_name: Property.ShortText({
|
||||
displayName: 'First Name',
|
||||
description: 'First name of the contact',
|
||||
required: false,
|
||||
}),
|
||||
last_name: Property.ShortText({
|
||||
displayName: 'Last Name',
|
||||
description: 'Last name of the contact',
|
||||
required: false,
|
||||
}),
|
||||
middle_name: Property.ShortText({
|
||||
displayName: 'Middle Name',
|
||||
description: 'Middle name of the contact',
|
||||
required: false,
|
||||
}),
|
||||
phonetic_first_name: Property.ShortText({
|
||||
displayName: 'Phonetic First Name',
|
||||
description: 'Phonetic spelling of the first name',
|
||||
required: false,
|
||||
}),
|
||||
phonetic_last_name: Property.ShortText({
|
||||
displayName: 'Phonetic Last Name',
|
||||
description: 'Phonetic spelling of the last name',
|
||||
required: false,
|
||||
}),
|
||||
phonetic_middle_name: Property.ShortText({
|
||||
displayName: 'Phonetic Middle Name',
|
||||
description: 'Phonetic spelling of the middle name',
|
||||
required: false,
|
||||
}),
|
||||
prefix: Property.ShortText({
|
||||
displayName: 'Prefix',
|
||||
description: 'Name prefix (e.g., Mr., Mrs., Dr.)',
|
||||
required: false,
|
||||
}),
|
||||
suffix: Property.ShortText({
|
||||
displayName: 'Suffix',
|
||||
description: 'Name suffix (e.g., Jr., Sr., III)',
|
||||
required: false,
|
||||
}),
|
||||
nickname: Property.ShortText({
|
||||
displayName: 'Nickname',
|
||||
description: 'Nickname for the contact',
|
||||
required: false,
|
||||
}),
|
||||
file_as: Property.ShortText({
|
||||
displayName: 'File As',
|
||||
description: 'How the contact should be filed/sorted',
|
||||
required: false,
|
||||
}),
|
||||
notes: Property.LongText({
|
||||
displayName: 'Notes',
|
||||
description: 'Additional notes about the contact',
|
||||
required: false,
|
||||
}),
|
||||
starred: Property.Checkbox({
|
||||
displayName: 'Starred',
|
||||
description: 'Whether the contact should be starred',
|
||||
required: false,
|
||||
defaultValue: false,
|
||||
}),
|
||||
gender: Property.StaticDropdown({
|
||||
displayName: 'Gender',
|
||||
description: 'Gender of the contact',
|
||||
required: false,
|
||||
options: {
|
||||
options: [
|
||||
{ label: 'Male', value: 'Male' },
|
||||
{ label: 'Female', value: 'Female' },
|
||||
{ label: 'Other', value: 'Other' }
|
||||
]
|
||||
}
|
||||
}),
|
||||
infos: Property.Array({
|
||||
displayName: 'Contact Information',
|
||||
description: 'Email addresses, phone numbers, and other contact information',
|
||||
required: false,
|
||||
properties: {
|
||||
kind: Property.StaticDropdown({
|
||||
displayName: 'Type',
|
||||
description: 'Type of contact information',
|
||||
required: true,
|
||||
options: {
|
||||
options: [
|
||||
{ label: 'Email', value: 'email' },
|
||||
{ label: 'Phone Number', value: 'phone_number' },
|
||||
{ label: 'Twitter', value: 'twitter' },
|
||||
{ label: 'Facebook', value: 'facebook' },
|
||||
{ label: 'Physical Address', value: 'physical_address' },
|
||||
{ label: 'URL', value: 'url' },
|
||||
{ label: 'Custom', value: 'custom' }
|
||||
]
|
||||
}
|
||||
}),
|
||||
label: Property.StaticDropdown({
|
||||
displayName: 'Label',
|
||||
description: 'Label for contact info. Choose based on Type: Email(home,work,personal,other) | Phone(main,mobile,home,work,fax,pager,other) | Address(work,home,other) | Social(work,personal,other) | URL(homepage,profile,blog,work,personal,other)',
|
||||
required: true,
|
||||
options: {
|
||||
options: [
|
||||
{ label: 'Home', value: 'home' },
|
||||
{ label: 'Work', value: 'work' },
|
||||
{ label: 'Personal', value: 'personal' },
|
||||
{ label: 'Main', value: 'main' },
|
||||
{ label: 'Mobile', value: 'mobile' },
|
||||
{ label: 'Home Fax', value: 'home_fax' },
|
||||
{ label: 'Work Fax', value: 'work_fax' },
|
||||
{ label: 'Other Fax', value: 'other_fax' },
|
||||
{ label: 'Pager', value: 'pager' },
|
||||
{ label: 'Homepage', value: 'homepage' },
|
||||
{ label: 'Profile', value: 'profile' },
|
||||
{ label: 'Blog', value: 'blog' },
|
||||
{ label: 'Other', value: 'other' }
|
||||
]
|
||||
}
|
||||
}),
|
||||
value: Property.ShortText({
|
||||
displayName: 'Value',
|
||||
description: 'The actual contact information value (email, phone, URL, etc.)',
|
||||
required: false,
|
||||
}),
|
||||
custom_label: Property.ShortText({
|
||||
displayName: 'Custom Label',
|
||||
description: 'Custom label value (only used when label is "other")',
|
||||
required: false,
|
||||
}),
|
||||
name: Property.ShortText({
|
||||
displayName: 'Facebook Name',
|
||||
description: 'Facebook user name (only for facebook type)',
|
||||
required: false,
|
||||
}),
|
||||
street: Property.ShortText({
|
||||
displayName: 'Street',
|
||||
description: 'Street address (only for physical address type)',
|
||||
required: false,
|
||||
}),
|
||||
extended_address: Property.ShortText({
|
||||
displayName: 'Extended Address',
|
||||
description: 'Extended address like apartment, suite (only for physical address type)',
|
||||
required: false,
|
||||
}),
|
||||
city: Property.ShortText({
|
||||
displayName: 'City',
|
||||
description: 'City (only for physical address type)',
|
||||
required: false,
|
||||
}),
|
||||
region: Property.ShortText({
|
||||
displayName: 'Region/State',
|
||||
description: 'Region or state (only for physical address type)',
|
||||
required: false,
|
||||
}),
|
||||
postal_code: Property.ShortText({
|
||||
displayName: 'Postal Code',
|
||||
description: 'Postal code (only for physical address type)',
|
||||
required: false,
|
||||
}),
|
||||
po_box: Property.ShortText({
|
||||
displayName: 'PO Box',
|
||||
description: 'PO Box (only for physical address type)',
|
||||
required: false,
|
||||
}),
|
||||
country: Property.ShortText({
|
||||
displayName: 'Country',
|
||||
description: 'Country (only for physical address type)',
|
||||
required: false,
|
||||
})
|
||||
}
|
||||
}),
|
||||
memberships: Property.DynamicProperties({
|
||||
auth: missiveAuth, displayName: 'Memberships',
|
||||
description: 'Organizations and groups the contact belongs to',
|
||||
required: false,
|
||||
refreshers: ['contact_book'],
|
||||
props: async ({ auth, contact_book }) => {
|
||||
if (!auth) {
|
||||
return {
|
||||
memberships_array: Property.Array({
|
||||
displayName: 'Memberships',
|
||||
description: 'Please authenticate first',
|
||||
required: false,
|
||||
properties: {
|
||||
placeholder: Property.ShortText({
|
||||
displayName: 'Authenticate First',
|
||||
description: 'Please authenticate to access memberships',
|
||||
required: false,
|
||||
})
|
||||
}
|
||||
})
|
||||
};
|
||||
}
|
||||
|
||||
let organizationOptions: Array<{ label: string; value: string }> = [];
|
||||
let contactGroupOptions: Array<{ label: string; value: string }> = [];
|
||||
|
||||
try {
|
||||
const orgsResponse = await missiveCommon.apiCall({
|
||||
auth: auth,
|
||||
method: HttpMethod.GET,
|
||||
resourceUri: '/organizations',
|
||||
});
|
||||
|
||||
const organizations = orgsResponse.body?.organizations || [];
|
||||
organizationOptions = organizations.map((org: any) => ({
|
||||
label: org.name,
|
||||
value: org.id,
|
||||
}));
|
||||
} catch (error) {
|
||||
console.error('Failed to fetch organizations:', error);
|
||||
}
|
||||
|
||||
if (contact_book) {
|
||||
try {
|
||||
const groupsResponse = await missiveCommon.apiCall({
|
||||
auth: auth,
|
||||
method: HttpMethod.GET,
|
||||
resourceUri: `/contact_groups?contact_book=${contact_book}&kind=group`,
|
||||
});
|
||||
|
||||
const contactGroups = groupsResponse.body?.contact_groups || [];
|
||||
contactGroupOptions = contactGroups.map((group: any) => ({
|
||||
label: group.name,
|
||||
value: group.id,
|
||||
}));
|
||||
} catch (error) {
|
||||
console.error('Failed to fetch contact groups:', error);
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
memberships_array: Property.Array({
|
||||
displayName: 'Memberships',
|
||||
description: 'Add, remove, and manage contact memberships',
|
||||
required: false,
|
||||
properties: {
|
||||
type: Property.StaticDropdown({
|
||||
displayName: 'Type',
|
||||
description: 'Type of membership',
|
||||
required: true,
|
||||
options: {
|
||||
options: [
|
||||
{ label: 'Organization', value: 'organization' },
|
||||
{ label: 'Group', value: 'group' }
|
||||
]
|
||||
}
|
||||
}),
|
||||
organization: Property.StaticDropdown({
|
||||
displayName: 'Organization',
|
||||
description: 'Select organization (only for Organization type)',
|
||||
required: false,
|
||||
options: {
|
||||
options: organizationOptions.length > 0 ? organizationOptions : [
|
||||
{ label: 'No organizations found', value: '' }
|
||||
]
|
||||
}
|
||||
}),
|
||||
contact_group: Property.StaticDropdown({
|
||||
displayName: 'Contact Group',
|
||||
description: contact_book
|
||||
? 'Select contact group (only for Group type)'
|
||||
: 'Select contact book first to see groups',
|
||||
required: false,
|
||||
options: {
|
||||
options: contactGroupOptions.length > 0 ? contactGroupOptions : [
|
||||
{ label: contact_book ? 'No groups found' : 'Select contact book first', value: '' }
|
||||
]
|
||||
}
|
||||
}),
|
||||
title: Property.ShortText({
|
||||
displayName: 'Title',
|
||||
description: 'Job title or role',
|
||||
required: false,
|
||||
}),
|
||||
location: Property.ShortText({
|
||||
displayName: 'Location',
|
||||
description: 'Location or office',
|
||||
required: false,
|
||||
}),
|
||||
department: Property.ShortText({
|
||||
displayName: 'Department',
|
||||
description: 'Department',
|
||||
required: false,
|
||||
}),
|
||||
description: Property.ShortText({
|
||||
displayName: 'Description',
|
||||
description: 'Description of role or membership',
|
||||
required: false,
|
||||
})
|
||||
}
|
||||
})
|
||||
};
|
||||
},
|
||||
})
|
||||
},
|
||||
async run(context) {
|
||||
const propsValue = context.propsValue as any;
|
||||
const {
|
||||
contact_book,
|
||||
first_name,
|
||||
last_name,
|
||||
middle_name,
|
||||
phonetic_first_name,
|
||||
phonetic_last_name,
|
||||
phonetic_middle_name,
|
||||
prefix,
|
||||
suffix,
|
||||
nickname,
|
||||
file_as,
|
||||
notes,
|
||||
starred,
|
||||
gender,
|
||||
infos
|
||||
} = propsValue;
|
||||
|
||||
const contactData: Record<string, any> = {
|
||||
contact_book,
|
||||
};
|
||||
|
||||
if (first_name) contactData['first_name'] = first_name;
|
||||
if (last_name) contactData['last_name'] = last_name;
|
||||
if (middle_name) contactData['middle_name'] = middle_name;
|
||||
if (phonetic_first_name) contactData['phonetic_first_name'] = phonetic_first_name;
|
||||
if (phonetic_last_name) contactData['phonetic_last_name'] = phonetic_last_name;
|
||||
if (phonetic_middle_name) contactData['phonetic_middle_name'] = phonetic_middle_name;
|
||||
if (prefix) contactData['prefix'] = prefix;
|
||||
if (suffix) contactData['suffix'] = suffix;
|
||||
if (nickname) contactData['nickname'] = nickname;
|
||||
if (file_as) contactData['file_as'] = file_as;
|
||||
if (notes) contactData['notes'] = notes;
|
||||
if (starred !== undefined) contactData['starred'] = starred;
|
||||
if (gender) contactData['gender'] = gender;
|
||||
|
||||
if (infos && Array.isArray(infos) && infos.length > 0) {
|
||||
contactData['infos'] = infos.map((info: any) => {
|
||||
const infoObj: any = {
|
||||
kind: info.kind,
|
||||
label: info.label,
|
||||
};
|
||||
|
||||
if (info.custom_label && info.label === 'other') {
|
||||
infoObj.custom_label = info.custom_label;
|
||||
}
|
||||
|
||||
if (info.kind === 'email' || info.kind === 'phone_number' || info.kind === 'twitter' || info.kind === 'url' || info.kind === 'custom') {
|
||||
infoObj.value = info.value;
|
||||
} else if (info.kind === 'facebook') {
|
||||
infoObj.name = info.name;
|
||||
} else if (info.kind === 'physical_address') {
|
||||
if (info.street) infoObj.street = info.street;
|
||||
if (info.extended_address) infoObj.extended_address = info.extended_address;
|
||||
if (info.city) infoObj.city = info.city;
|
||||
if (info.region) infoObj.region = info.region;
|
||||
if (info.postal_code) infoObj.postal_code = info.postal_code;
|
||||
if (info.po_box) infoObj.po_box = info.po_box;
|
||||
if (info.country) infoObj.country = info.country;
|
||||
}
|
||||
|
||||
return infoObj;
|
||||
});
|
||||
}
|
||||
|
||||
const membershipsArray = propsValue.memberships_array;
|
||||
if (membershipsArray && Array.isArray(membershipsArray) && membershipsArray.length > 0) {
|
||||
const memberships: any[] = [];
|
||||
|
||||
for (const membership of membershipsArray) {
|
||||
if (!membership.type) continue;
|
||||
|
||||
const membershipObj: any = {};
|
||||
|
||||
if (membership.title) membershipObj.title = membership.title;
|
||||
if (membership.location) membershipObj.location = membership.location;
|
||||
if (membership.department) membershipObj.department = membership.department;
|
||||
if (membership.description) membershipObj.description = membership.description;
|
||||
|
||||
if (membership.type === 'organization' && membership.organization) {
|
||||
membershipObj.group = {
|
||||
kind: 'organization',
|
||||
id: membership.organization
|
||||
};
|
||||
} else if (membership.type === 'group' && membership.contact_group) {
|
||||
membershipObj.group = {
|
||||
kind: 'group',
|
||||
id: membership.contact_group
|
||||
};
|
||||
}
|
||||
|
||||
if (membershipObj.group) {
|
||||
memberships.push(membershipObj);
|
||||
}
|
||||
}
|
||||
|
||||
if (memberships.length > 0) {
|
||||
contactData['memberships'] = memberships;
|
||||
}
|
||||
}
|
||||
|
||||
const response = await missiveCommon.apiCall({
|
||||
auth: context.auth,
|
||||
method: HttpMethod.POST,
|
||||
resourceUri: '/contacts',
|
||||
body: {
|
||||
contacts: [contactData]
|
||||
},
|
||||
});
|
||||
|
||||
return response.body;
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,776 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { HttpMethod } from '@activepieces/pieces-common';
|
||||
import { missiveAuth } from '../common/auth';
|
||||
import { missiveCommon } from '../common/client';
|
||||
|
||||
export const createDraftPost = createAction({
|
||||
name: 'create_draft_post',
|
||||
displayName: 'Create Draft/Post',
|
||||
description: 'Create a draft message or post in Missive, with option to send',
|
||||
auth: missiveAuth,
|
||||
props: {
|
||||
message_type: Property.StaticDropdown({
|
||||
displayName: 'Message Type',
|
||||
description: 'Type of message to create',
|
||||
required: true,
|
||||
options: {
|
||||
options: [
|
||||
{ label: 'Email', value: 'email' },
|
||||
{ label: 'SMS', value: 'sms' },
|
||||
{ label: 'WhatsApp', value: 'whatsapp' },
|
||||
{ label: 'Missive Live Chat', value: 'live_chat' },
|
||||
{ label: 'Custom Channel', value: 'custom_channel' },
|
||||
{ label: 'Messenger', value: 'messenger' },
|
||||
{ label: 'Instagram', value: 'instagram' },
|
||||
],
|
||||
},
|
||||
}),
|
||||
subject: Property.ShortText({
|
||||
displayName: 'Subject',
|
||||
description: 'Subject line (primarily for email)',
|
||||
required: false,
|
||||
}),
|
||||
body: Property.LongText({
|
||||
displayName: 'Message Body',
|
||||
description: 'The content of your message (supports HTML for email)',
|
||||
required: true,
|
||||
}),
|
||||
message_fields: Property.DynamicProperties({
|
||||
auth: missiveAuth, displayName: 'Message Configuration',
|
||||
description: 'Configure sender, recipients, and message-specific options',
|
||||
required: false,
|
||||
refreshers: ['message_type'],
|
||||
props: async ({ auth, message_type }) => {
|
||||
if (!auth || !message_type) {
|
||||
return {
|
||||
placeholder: Property.ShortText({
|
||||
displayName: 'Select Message Type',
|
||||
description: 'Please select a message type first',
|
||||
required: false,
|
||||
}),
|
||||
};
|
||||
}
|
||||
|
||||
const props: any = {};
|
||||
|
||||
props.quote_previous_message = Property.Checkbox({
|
||||
displayName: 'Quote Previous Message',
|
||||
description:
|
||||
'⚠️ WARNING: Only use if you know the conversation content. May leak sensitive information.',
|
||||
required: false,
|
||||
defaultValue: false,
|
||||
});
|
||||
|
||||
switch (message_type as unknown as string) {
|
||||
case 'email':
|
||||
props.from_email = Property.ShortText({
|
||||
displayName: 'From Email',
|
||||
description:
|
||||
'Sender email address (must match your Missive email aliases)',
|
||||
required: true,
|
||||
});
|
||||
props.from_name = Property.ShortText({
|
||||
displayName: 'From Name',
|
||||
description: 'Sender display name',
|
||||
required: false,
|
||||
});
|
||||
props.to_emails = Property.Array({
|
||||
displayName: 'To Recipients',
|
||||
description: 'Email recipients',
|
||||
required: true,
|
||||
properties: {
|
||||
address: Property.ShortText({
|
||||
displayName: 'Email Address',
|
||||
required: true,
|
||||
}),
|
||||
name: Property.ShortText({
|
||||
displayName: 'Display Name',
|
||||
required: false,
|
||||
}),
|
||||
},
|
||||
});
|
||||
props.cc_emails = Property.Array({
|
||||
displayName: 'CC Recipients',
|
||||
description: 'Carbon copy recipients',
|
||||
required: false,
|
||||
properties: {
|
||||
address: Property.ShortText({
|
||||
displayName: 'Email Address',
|
||||
required: true,
|
||||
}),
|
||||
name: Property.ShortText({
|
||||
displayName: 'Display Name',
|
||||
required: false,
|
||||
}),
|
||||
},
|
||||
});
|
||||
props.bcc_emails = Property.Array({
|
||||
displayName: 'BCC Recipients',
|
||||
description: 'Blind carbon copy recipients',
|
||||
required: false,
|
||||
properties: {
|
||||
address: Property.ShortText({
|
||||
displayName: 'Email Address',
|
||||
required: true,
|
||||
}),
|
||||
name: Property.ShortText({
|
||||
displayName: 'Display Name',
|
||||
required: false,
|
||||
}),
|
||||
},
|
||||
});
|
||||
break;
|
||||
|
||||
case 'sms':
|
||||
case 'whatsapp':
|
||||
props.from_phone = Property.ShortText({
|
||||
displayName: 'From Phone Number',
|
||||
description:
|
||||
'Your phone number (must match your Twilio/SignalWire accounts). Format: +1234567890',
|
||||
required: true,
|
||||
});
|
||||
if ((message_type as unknown as string) === 'whatsapp') {
|
||||
props.from_type = Property.StaticDropdown({
|
||||
displayName: 'From Account Type',
|
||||
description: 'Type of WhatsApp account',
|
||||
required: false,
|
||||
options: {
|
||||
options: [
|
||||
{ label: 'WhatsApp', value: 'whatsapp' },
|
||||
{ label: 'Twilio WhatsApp', value: 'twilio_whatsapp' },
|
||||
{ label: 'Twilio', value: 'twilio' },
|
||||
{ label: 'SignalWire', value: 'signalwire' },
|
||||
],
|
||||
},
|
||||
});
|
||||
}
|
||||
props.to_phone = Property.ShortText({
|
||||
displayName: 'To Phone Number',
|
||||
description: 'Recipient phone number. Format: +1234567890',
|
||||
required: true,
|
||||
});
|
||||
|
||||
if ((message_type as unknown as string) === 'whatsapp') {
|
||||
props.whatsapp_template_id = Property.ShortText({
|
||||
displayName: 'WhatsApp Template ID',
|
||||
description:
|
||||
'Template ID for new conversations (required for users not contacted in 24h)',
|
||||
required: false,
|
||||
});
|
||||
props.whatsapp_template_variables = Property.Object({
|
||||
displayName: 'Template Variables',
|
||||
description:
|
||||
'Variables for WhatsApp template (e.g., {"1": "John", "2": "Project"})',
|
||||
required: false,
|
||||
});
|
||||
}
|
||||
break;
|
||||
|
||||
case 'live_chat':
|
||||
case 'custom_channel':
|
||||
case 'messenger':
|
||||
case 'instagram':
|
||||
if (
|
||||
(message_type as unknown as string) === 'live_chat' ||
|
||||
(message_type as unknown as string) === 'custom_channel'
|
||||
) {
|
||||
props.account_id = Property.ShortText({
|
||||
displayName: 'Account ID',
|
||||
description:
|
||||
'Account ID from Missive settings > API > Resource IDs',
|
||||
required: true,
|
||||
});
|
||||
}
|
||||
|
||||
props.from_id = Property.ShortText({
|
||||
displayName: 'From ID',
|
||||
description: 'Sender ID',
|
||||
required: false,
|
||||
});
|
||||
props.from_username = Property.ShortText({
|
||||
displayName: 'From Username',
|
||||
description: 'Sender username (e.g., @missiveapp)',
|
||||
required: false,
|
||||
});
|
||||
props.from_name = Property.ShortText({
|
||||
displayName: 'From Name',
|
||||
description: 'Sender display name',
|
||||
required: false,
|
||||
});
|
||||
|
||||
if (
|
||||
(message_type as unknown as string) === 'messenger' ||
|
||||
(message_type as unknown as string) === 'instagram'
|
||||
) {
|
||||
props.to_id = Property.ShortText({
|
||||
displayName: 'To ID',
|
||||
description: 'Recipient ID',
|
||||
required: true,
|
||||
});
|
||||
} else {
|
||||
props.to_recipients = Property.Array({
|
||||
displayName: 'Recipients',
|
||||
description: 'Message recipients',
|
||||
required: true,
|
||||
properties: {
|
||||
id: Property.ShortText({
|
||||
displayName: 'Recipient ID',
|
||||
required: true,
|
||||
}),
|
||||
username: Property.ShortText({
|
||||
displayName: 'Username',
|
||||
required: false,
|
||||
}),
|
||||
name: Property.ShortText({
|
||||
displayName: 'Display Name',
|
||||
required: false,
|
||||
}),
|
||||
},
|
||||
});
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return props;
|
||||
},
|
||||
}),
|
||||
conversation_options: Property.DynamicProperties({
|
||||
auth: missiveAuth, displayName: 'Conversation Options',
|
||||
description: 'Advanced conversation management options',
|
||||
required: false,
|
||||
refreshers: [],
|
||||
props: async ({ auth }) => {
|
||||
if (!auth) {
|
||||
return {
|
||||
existing_conversation_id: Property.ShortText({
|
||||
displayName: 'Authenticate First',
|
||||
description: 'Please authenticate to access conversation options',
|
||||
required: false,
|
||||
}),
|
||||
references: Property.Array({
|
||||
displayName: 'Message References',
|
||||
description: 'Please authenticate to access conversation options',
|
||||
required: false,
|
||||
properties: {
|
||||
reference: Property.ShortText({
|
||||
displayName: 'Reference ID',
|
||||
required: false,
|
||||
}),
|
||||
},
|
||||
}),
|
||||
organization: Property.StaticDropdown({
|
||||
displayName: 'Organization',
|
||||
description: 'Please authenticate first',
|
||||
required: false,
|
||||
options: {
|
||||
disabled: true,
|
||||
options: [{ label: 'Please authenticate first', value: '' }],
|
||||
},
|
||||
}),
|
||||
team: Property.StaticDropdown({
|
||||
displayName: 'Team',
|
||||
description: 'Please authenticate first',
|
||||
required: false,
|
||||
options: {
|
||||
disabled: true,
|
||||
options: [{ label: 'Please authenticate first', value: '' }],
|
||||
},
|
||||
}),
|
||||
force_team: Property.Checkbox({
|
||||
displayName: 'Force Team Assignment',
|
||||
description: 'Please authenticate first',
|
||||
required: false,
|
||||
defaultValue: false,
|
||||
}),
|
||||
add_shared_labels: Property.StaticMultiSelectDropdown({
|
||||
displayName: 'Add Shared Labels',
|
||||
description: 'Please authenticate first',
|
||||
required: false,
|
||||
options: {
|
||||
disabled: true,
|
||||
options: [{ label: 'Please authenticate first', value: '' }],
|
||||
},
|
||||
}),
|
||||
remove_shared_labels: Property.StaticMultiSelectDropdown({
|
||||
displayName: 'Remove Shared Labels',
|
||||
description: 'Please authenticate first',
|
||||
required: false,
|
||||
options: {
|
||||
disabled: true,
|
||||
options: [{ label: 'Please authenticate first', value: '' }],
|
||||
},
|
||||
}),
|
||||
conversation_subject: Property.ShortText({
|
||||
displayName: 'Conversation Subject',
|
||||
description: 'Please authenticate first',
|
||||
required: false,
|
||||
}),
|
||||
conversation_color: Property.StaticDropdown({
|
||||
displayName: 'Conversation Color',
|
||||
description: 'Please authenticate first',
|
||||
required: false,
|
||||
options: {
|
||||
disabled: true,
|
||||
options: [{ label: 'Please authenticate first', value: '' }],
|
||||
},
|
||||
}),
|
||||
add_to_inbox: Property.Checkbox({
|
||||
displayName: 'Add to Inbox',
|
||||
description: 'Please authenticate first',
|
||||
required: false,
|
||||
defaultValue: false,
|
||||
}),
|
||||
add_to_team_inbox: Property.Checkbox({
|
||||
displayName: 'Add to Team Inbox',
|
||||
description: 'Please authenticate first',
|
||||
required: false,
|
||||
defaultValue: false,
|
||||
}),
|
||||
close_conversation: Property.Checkbox({
|
||||
displayName: 'Close Conversation',
|
||||
description: 'Please authenticate first',
|
||||
required: false,
|
||||
defaultValue: false,
|
||||
}),
|
||||
};
|
||||
}
|
||||
|
||||
let organizationOptions: Array<{ label: string; value: string }> = [];
|
||||
let teamOptions: Array<{ label: string; value: string }> = [];
|
||||
let sharedLabelOptions: Array<{ label: string; value: string }> = [];
|
||||
|
||||
try {
|
||||
const orgsResponse = await missiveCommon.apiCall({
|
||||
auth: auth,
|
||||
method: HttpMethod.GET,
|
||||
resourceUri: '/organizations',
|
||||
});
|
||||
organizationOptions =
|
||||
orgsResponse.body?.organizations?.map((org: any) => ({
|
||||
label: org.name,
|
||||
value: org.id,
|
||||
})) || [];
|
||||
|
||||
const teamsResponse = await missiveCommon.apiCall({
|
||||
auth: auth,
|
||||
method: HttpMethod.GET,
|
||||
resourceUri: '/teams',
|
||||
});
|
||||
teamOptions =
|
||||
teamsResponse.body?.teams?.map((team: any) => ({
|
||||
label: team.name,
|
||||
value: team.id,
|
||||
})) || [];
|
||||
|
||||
const labelsResponse = await missiveCommon.apiCall({
|
||||
auth: auth,
|
||||
method: HttpMethod.GET,
|
||||
resourceUri: '/shared_labels',
|
||||
});
|
||||
sharedLabelOptions =
|
||||
labelsResponse.body?.shared_labels?.map((label: any) => ({
|
||||
label: label.name,
|
||||
value: label.id,
|
||||
})) || [];
|
||||
} catch (error) {
|
||||
console.error('Failed to fetch conversation options:', error);
|
||||
}
|
||||
|
||||
return {
|
||||
existing_conversation_id: Property.ShortText({
|
||||
displayName: 'Existing Conversation ID',
|
||||
description: 'Add to existing conversation (optional)',
|
||||
required: false,
|
||||
}),
|
||||
references: Property.Array({
|
||||
displayName: 'Message References',
|
||||
description: 'Reference IDs to append to existing conversation',
|
||||
required: false,
|
||||
properties: {
|
||||
reference: Property.ShortText({
|
||||
displayName: 'Reference ID',
|
||||
description:
|
||||
'Message reference (e.g., <message-id@domain.com>)',
|
||||
required: true,
|
||||
}),
|
||||
},
|
||||
}),
|
||||
organization: Property.StaticDropdown({
|
||||
displayName: 'Organization',
|
||||
description: 'Link conversation to organization',
|
||||
required: false,
|
||||
options: {
|
||||
options:
|
||||
organizationOptions.length > 0
|
||||
? organizationOptions
|
||||
: [{ label: 'No organizations found', value: '' }],
|
||||
},
|
||||
}),
|
||||
team: Property.StaticDropdown({
|
||||
displayName: 'Team',
|
||||
description: 'Link conversation to team',
|
||||
required: false,
|
||||
options: {
|
||||
options:
|
||||
teamOptions.length > 0
|
||||
? teamOptions
|
||||
: [{ label: 'No teams found', value: '' }],
|
||||
},
|
||||
}),
|
||||
force_team: Property.Checkbox({
|
||||
displayName: 'Force Team Assignment',
|
||||
description:
|
||||
'Force new team even if conversation is in another team',
|
||||
required: false,
|
||||
defaultValue: false,
|
||||
}),
|
||||
add_shared_labels: Property.StaticMultiSelectDropdown({
|
||||
displayName: 'Add Shared Labels',
|
||||
description: 'Shared labels to add to conversation',
|
||||
required: false,
|
||||
options: {
|
||||
disabled: false,
|
||||
options:
|
||||
sharedLabelOptions.length > 0
|
||||
? sharedLabelOptions
|
||||
: [{ label: 'No shared labels found', value: '' }],
|
||||
},
|
||||
}),
|
||||
remove_shared_labels: Property.StaticMultiSelectDropdown({
|
||||
displayName: 'Remove Shared Labels',
|
||||
description: 'Shared labels to remove from conversation',
|
||||
required: false,
|
||||
options: {
|
||||
disabled: false,
|
||||
options:
|
||||
sharedLabelOptions.length > 0
|
||||
? sharedLabelOptions
|
||||
: [{ label: 'No shared labels found', value: '' }],
|
||||
},
|
||||
}),
|
||||
conversation_subject: Property.ShortText({
|
||||
displayName: 'Conversation Subject',
|
||||
description: 'Subject for the conversation (if creating new)',
|
||||
required: false,
|
||||
}),
|
||||
conversation_color: Property.StaticDropdown({
|
||||
displayName: 'Conversation Color',
|
||||
description: 'Color for the conversation',
|
||||
required: false,
|
||||
options: {
|
||||
options: [
|
||||
{ label: 'Good (Green)', value: 'good' },
|
||||
{ label: 'Warning (Yellow)', value: 'warning' },
|
||||
{ label: 'Danger (Red)', value: 'danger' },
|
||||
{ label: 'Black', value: '#000000' },
|
||||
{ label: 'Blue', value: '#0066cc' },
|
||||
{ label: 'Purple', value: '#6600cc' },
|
||||
],
|
||||
},
|
||||
}),
|
||||
add_to_inbox: Property.Checkbox({
|
||||
displayName: 'Add to Inbox',
|
||||
description: 'Move conversation to Inbox for everyone',
|
||||
required: false,
|
||||
defaultValue: false,
|
||||
}),
|
||||
add_to_team_inbox: Property.Checkbox({
|
||||
displayName: 'Add to Team Inbox',
|
||||
description:
|
||||
'Move conversation to team inbox (requires team selection)',
|
||||
required: false,
|
||||
defaultValue: false,
|
||||
}),
|
||||
close_conversation: Property.Checkbox({
|
||||
displayName: 'Close Conversation',
|
||||
description: 'Close the conversation for everyone',
|
||||
required: false,
|
||||
defaultValue: false,
|
||||
}),
|
||||
};
|
||||
},
|
||||
}),
|
||||
send_immediately: Property.Checkbox({
|
||||
displayName: 'Send Immediately',
|
||||
description: 'Send the draft immediately instead of saving as draft',
|
||||
required: false,
|
||||
defaultValue: false,
|
||||
}),
|
||||
schedule_send: Property.Checkbox({
|
||||
displayName: 'Schedule Send',
|
||||
description: 'Schedule the message to be sent later',
|
||||
required: false,
|
||||
defaultValue: false,
|
||||
}),
|
||||
send_at_timestamp: Property.Number({
|
||||
displayName: 'Send At (Unix Timestamp)',
|
||||
description:
|
||||
'Unix timestamp when to send the message (required if scheduling)',
|
||||
required: false,
|
||||
}),
|
||||
auto_followup: Property.Checkbox({
|
||||
displayName: 'Auto Follow-up',
|
||||
description:
|
||||
'Cancel scheduled send if there is a reply (requires scheduling)',
|
||||
required: false,
|
||||
defaultValue: false,
|
||||
}),
|
||||
attachments: Property.Array({
|
||||
displayName: 'Attachments',
|
||||
description: 'File attachments (up to 25 files, max 10MB total)',
|
||||
required: false,
|
||||
properties: {
|
||||
filename: Property.ShortText({
|
||||
displayName: 'Filename',
|
||||
description: 'Name of the file (e.g., document.pdf)',
|
||||
required: true,
|
||||
}),
|
||||
base64_data: Property.LongText({
|
||||
displayName: 'Base64 Data',
|
||||
description: 'Base64-encoded file content',
|
||||
required: true,
|
||||
}),
|
||||
},
|
||||
}),
|
||||
},
|
||||
async run(context) {
|
||||
const propsValue = context.propsValue as any;
|
||||
const {
|
||||
message_type,
|
||||
subject,
|
||||
body,
|
||||
send_immediately,
|
||||
schedule_send,
|
||||
send_at_timestamp,
|
||||
auto_followup,
|
||||
attachments,
|
||||
} = propsValue;
|
||||
|
||||
const draftData: any = {
|
||||
body,
|
||||
};
|
||||
|
||||
if (subject) {
|
||||
draftData.subject = subject;
|
||||
}
|
||||
|
||||
const messageFields = propsValue.message_fields || {};
|
||||
|
||||
if (messageFields.quote_previous_message) {
|
||||
draftData.quote_previous_message = true;
|
||||
}
|
||||
|
||||
switch (message_type) {
|
||||
case 'email':
|
||||
if (messageFields.from_email) {
|
||||
draftData.from_field = {
|
||||
address: messageFields.from_email,
|
||||
...(messageFields.from_name && { name: messageFields.from_name }),
|
||||
};
|
||||
}
|
||||
|
||||
if (messageFields.to_emails && Array.isArray(messageFields.to_emails)) {
|
||||
draftData.to_fields = messageFields.to_emails.map(
|
||||
(recipient: any) => ({
|
||||
address: recipient.address,
|
||||
...(recipient.name && { name: recipient.name }),
|
||||
})
|
||||
);
|
||||
}
|
||||
|
||||
if (
|
||||
messageFields.cc_emails &&
|
||||
Array.isArray(messageFields.cc_emails) &&
|
||||
messageFields.cc_emails.length > 0
|
||||
) {
|
||||
draftData.cc_fields = messageFields.cc_emails.map(
|
||||
(recipient: any) => ({
|
||||
address: recipient.address,
|
||||
...(recipient.name && { name: recipient.name }),
|
||||
})
|
||||
);
|
||||
}
|
||||
|
||||
if (
|
||||
messageFields.bcc_emails &&
|
||||
Array.isArray(messageFields.bcc_emails) &&
|
||||
messageFields.bcc_emails.length > 0
|
||||
) {
|
||||
draftData.bcc_fields = messageFields.bcc_emails.map(
|
||||
(recipient: any) => ({
|
||||
address: recipient.address,
|
||||
...(recipient.name && { name: recipient.name }),
|
||||
})
|
||||
);
|
||||
}
|
||||
break;
|
||||
|
||||
case 'sms':
|
||||
case 'whatsapp':
|
||||
if (messageFields.from_phone) {
|
||||
draftData.from_field = {
|
||||
phone_number: messageFields.from_phone,
|
||||
...(messageFields.from_type && { type: messageFields.from_type }),
|
||||
};
|
||||
}
|
||||
|
||||
if (messageFields.to_phone) {
|
||||
draftData.to_fields = [
|
||||
{
|
||||
phone_number: messageFields.to_phone,
|
||||
},
|
||||
];
|
||||
}
|
||||
|
||||
if (message_type === 'whatsapp') {
|
||||
if (messageFields.whatsapp_template_id) {
|
||||
draftData.external_response_id = messageFields.whatsapp_template_id;
|
||||
}
|
||||
if (messageFields.whatsapp_template_variables) {
|
||||
draftData.external_response_variables =
|
||||
messageFields.whatsapp_template_variables;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case 'live_chat':
|
||||
case 'custom_channel':
|
||||
if (messageFields.account_id) {
|
||||
draftData.account = messageFields.account_id;
|
||||
}
|
||||
|
||||
if (
|
||||
messageFields.from_id ||
|
||||
messageFields.from_username ||
|
||||
messageFields.from_name
|
||||
) {
|
||||
draftData.from_field = {
|
||||
...(messageFields.from_id && { id: messageFields.from_id }),
|
||||
...(messageFields.from_username && {
|
||||
username: messageFields.from_username,
|
||||
}),
|
||||
...(messageFields.from_name && { name: messageFields.from_name }),
|
||||
};
|
||||
}
|
||||
|
||||
if (
|
||||
messageFields.to_recipients &&
|
||||
Array.isArray(messageFields.to_recipients)
|
||||
) {
|
||||
draftData.to_fields = messageFields.to_recipients.map(
|
||||
(recipient: any) => ({
|
||||
...(recipient.id && { id: recipient.id }),
|
||||
...(recipient.username && { username: recipient.username }),
|
||||
...(recipient.name && { name: recipient.name }),
|
||||
})
|
||||
);
|
||||
}
|
||||
break;
|
||||
|
||||
case 'messenger':
|
||||
case 'instagram':
|
||||
if (messageFields.to_id) {
|
||||
draftData.to_fields = [
|
||||
{
|
||||
id: messageFields.to_id,
|
||||
},
|
||||
];
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
const conversationOptions = propsValue.conversation_options || {};
|
||||
|
||||
if (conversationOptions.existing_conversation_id) {
|
||||
draftData.conversation = conversationOptions.existing_conversation_id;
|
||||
}
|
||||
|
||||
if (
|
||||
conversationOptions.references &&
|
||||
Array.isArray(conversationOptions.references) &&
|
||||
conversationOptions.references.length > 0
|
||||
) {
|
||||
draftData.references = conversationOptions.references.map(
|
||||
(ref: any) => ref.reference
|
||||
);
|
||||
}
|
||||
|
||||
if (conversationOptions.organization) {
|
||||
draftData.organization = conversationOptions.organization;
|
||||
}
|
||||
|
||||
if (conversationOptions.team) {
|
||||
draftData.team = conversationOptions.team;
|
||||
}
|
||||
|
||||
if (conversationOptions.force_team) {
|
||||
draftData.force_team = true;
|
||||
}
|
||||
|
||||
if (
|
||||
conversationOptions.add_shared_labels &&
|
||||
Array.isArray(conversationOptions.add_shared_labels) &&
|
||||
conversationOptions.add_shared_labels.length > 0
|
||||
) {
|
||||
draftData.add_shared_labels = conversationOptions.add_shared_labels;
|
||||
}
|
||||
|
||||
if (
|
||||
conversationOptions.remove_shared_labels &&
|
||||
Array.isArray(conversationOptions.remove_shared_labels) &&
|
||||
conversationOptions.remove_shared_labels.length > 0
|
||||
) {
|
||||
draftData.remove_shared_labels = conversationOptions.remove_shared_labels;
|
||||
}
|
||||
|
||||
if (conversationOptions.conversation_subject) {
|
||||
draftData.conversation_subject = conversationOptions.conversation_subject;
|
||||
}
|
||||
|
||||
if (conversationOptions.conversation_color) {
|
||||
draftData.conversation_color = conversationOptions.conversation_color;
|
||||
}
|
||||
|
||||
if (conversationOptions.add_to_inbox) {
|
||||
draftData.add_to_inbox = true;
|
||||
}
|
||||
|
||||
if (conversationOptions.add_to_team_inbox) {
|
||||
draftData.add_to_team_inbox = true;
|
||||
}
|
||||
|
||||
if (conversationOptions.close_conversation) {
|
||||
draftData.close = true;
|
||||
}
|
||||
|
||||
if (send_immediately) {
|
||||
draftData.send = true;
|
||||
}
|
||||
|
||||
if (schedule_send && send_at_timestamp) {
|
||||
draftData.send_at = send_at_timestamp;
|
||||
|
||||
if (auto_followup) {
|
||||
draftData.auto_followup = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (attachments && Array.isArray(attachments) && attachments.length > 0) {
|
||||
draftData.attachments = attachments.map((attachment: any) => ({
|
||||
filename: attachment.filename,
|
||||
base64_data: attachment.base64_data,
|
||||
}));
|
||||
}
|
||||
|
||||
const response = await missiveCommon.apiCall({
|
||||
auth: context.auth,
|
||||
method: HttpMethod.POST,
|
||||
resourceUri: '/drafts',
|
||||
body: {
|
||||
drafts: draftData,
|
||||
},
|
||||
});
|
||||
|
||||
return response.body;
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,325 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { HttpMethod } from '@activepieces/pieces-common';
|
||||
import { missiveAuth } from '../common/auth';
|
||||
import { missiveCommon } from '../common/client';
|
||||
|
||||
export const createTask = createAction({
|
||||
name: 'create_task',
|
||||
displayName: 'Create Task',
|
||||
description: 'Create a task that can be standalone or associated with a conversation',
|
||||
auth: missiveAuth,
|
||||
props: {
|
||||
task_type: Property.StaticDropdown({
|
||||
displayName: 'Task Type',
|
||||
description: 'Type of task to create',
|
||||
required: true,
|
||||
options: {
|
||||
options: [
|
||||
{ label: 'Standalone Task', value: 'standalone' },
|
||||
{ label: 'Conversation Subtask', value: 'subtask' }
|
||||
]
|
||||
}
|
||||
}),
|
||||
title: Property.ShortText({
|
||||
displayName: 'Task Title',
|
||||
description: 'Title of the task (max 1000 characters)',
|
||||
required: true,
|
||||
}),
|
||||
description: Property.LongText({
|
||||
displayName: 'Description',
|
||||
description: 'Description of the task (max 10000 characters)',
|
||||
required: false,
|
||||
}),
|
||||
state: Property.StaticDropdown({
|
||||
displayName: 'Task State',
|
||||
description: 'Current state of the task',
|
||||
required: false,
|
||||
defaultValue: 'todo',
|
||||
options: {
|
||||
options: [
|
||||
{ label: 'Todo', value: 'todo' },
|
||||
{ label: 'In Progress', value: 'in_progress' },
|
||||
{ label: 'Closed', value: 'closed' }
|
||||
]
|
||||
}
|
||||
}),
|
||||
due_at: Property.DateTime({
|
||||
displayName: 'Due Date',
|
||||
description: 'Due date for the task',
|
||||
required: false,
|
||||
}),
|
||||
task_configuration: Property.DynamicProperties({
|
||||
auth: missiveAuth, displayName: 'Task Configuration',
|
||||
description: 'Configure task assignment and organization based on task type',
|
||||
required: false,
|
||||
refreshers: ['task_type'],
|
||||
props: async ({ auth, task_type }) => {
|
||||
if (!auth || !task_type) {
|
||||
return {
|
||||
placeholder: Property.ShortText({
|
||||
displayName: 'Select Task Type',
|
||||
description: 'Please select a task type first',
|
||||
required: false,
|
||||
})
|
||||
};
|
||||
}
|
||||
|
||||
let organizationOptions: Array<{ label: string; value: string }> = [];
|
||||
let teamOptions: Array<{ label: string; value: string }> = [];
|
||||
let userOptions: Array<{ label: string; value: string }> = [];
|
||||
let conversationOptions: Array<{ label: string; value: string }> = [];
|
||||
|
||||
try {
|
||||
const orgsResponse = await missiveCommon.apiCall({
|
||||
auth: auth,
|
||||
method: HttpMethod.GET,
|
||||
resourceUri: '/organizations',
|
||||
});
|
||||
organizationOptions = orgsResponse.body?.organizations?.map((org: any) => ({
|
||||
label: org.name,
|
||||
value: org.id
|
||||
})) || [];
|
||||
|
||||
if (organizationOptions.length > 0) {
|
||||
try {
|
||||
const teamsResponse = await missiveCommon.apiCall({
|
||||
auth: auth,
|
||||
method: HttpMethod.GET,
|
||||
resourceUri: `/teams?organization=${organizationOptions[0].value}`,
|
||||
});
|
||||
teamOptions = teamsResponse.body?.teams?.map((team: any) => ({
|
||||
label: team.name,
|
||||
value: team.id
|
||||
})) || [];
|
||||
} catch (error) {
|
||||
console.error('Failed to fetch teams:', error);
|
||||
}
|
||||
|
||||
try {
|
||||
const usersResponse = await missiveCommon.apiCall({
|
||||
auth: auth,
|
||||
method: HttpMethod.GET,
|
||||
resourceUri: `/users?organization=${organizationOptions[0].value}`,
|
||||
});
|
||||
userOptions = usersResponse.body?.users?.map((user: any) => ({
|
||||
label: `${user.name} (${user.email})`,
|
||||
value: user.id
|
||||
})) || [];
|
||||
} catch (error) {
|
||||
console.error('Failed to fetch users:', error);
|
||||
}
|
||||
}
|
||||
|
||||
if (task_type as unknown as string === 'subtask') {
|
||||
try {
|
||||
const convsResponse = await missiveCommon.apiCall({
|
||||
auth: auth,
|
||||
method: HttpMethod.GET,
|
||||
resourceUri: '/conversations?limit=50',
|
||||
});
|
||||
conversationOptions = convsResponse.body?.conversations?.map((conv: any) => {
|
||||
const subject = conv.subject || conv.latest_message_subject || 'No Subject';
|
||||
const label = subject.length > 50 ? `${subject.substring(0, 50)}...` : subject;
|
||||
return { label, value: conv.id };
|
||||
}) || [];
|
||||
} catch (error) {
|
||||
console.error('Failed to fetch conversations:', error);
|
||||
}
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('Failed to fetch task options:', error);
|
||||
}
|
||||
|
||||
const props: any = {};
|
||||
|
||||
props.organization = Property.StaticDropdown({
|
||||
displayName: 'Organization',
|
||||
description: task_type as unknown as string === 'standalone'
|
||||
? 'Organization (required when using team or assignees)'
|
||||
: 'Organization (required when adding users to conversation)',
|
||||
required: false,
|
||||
options: {
|
||||
options: organizationOptions.length > 0 ? organizationOptions : [{ label: 'No organizations found', value: '' }]
|
||||
}
|
||||
});
|
||||
|
||||
if (task_type as unknown as string === 'standalone') {
|
||||
// Standalone task fields
|
||||
props.assignment_type = Property.StaticDropdown({
|
||||
displayName: 'Assignment Type',
|
||||
description: 'How to assign this standalone task (either team or specific users required)',
|
||||
required: true,
|
||||
options: {
|
||||
options: [
|
||||
{ label: 'Assign to Team', value: 'team' },
|
||||
{ label: 'Assign to Specific Users', value: 'users' }
|
||||
]
|
||||
}
|
||||
});
|
||||
|
||||
props.team = Property.StaticDropdown({
|
||||
displayName: 'Team',
|
||||
description: 'Team to assign the task to (only for team assignment)',
|
||||
required: false,
|
||||
options: {
|
||||
options: teamOptions.length > 0 ? teamOptions : [{ label: 'Select organization first or no teams found', value: '' }]
|
||||
}
|
||||
});
|
||||
|
||||
props.assignees_array = Property.Array({
|
||||
displayName: 'Assignees',
|
||||
description: 'Specific users to assign the task to (only for user assignment)',
|
||||
required: false,
|
||||
properties: {
|
||||
user: Property.StaticDropdown({
|
||||
displayName: 'User',
|
||||
description: 'Select user to assign',
|
||||
required: true,
|
||||
options: {
|
||||
options: userOptions.length > 0 ? userOptions : [{ label: 'Select organization first or no users found', value: '' }]
|
||||
}
|
||||
})
|
||||
}
|
||||
});
|
||||
} else {
|
||||
props.conversation_selection = Property.StaticDropdown({
|
||||
displayName: 'Conversation Selection Method',
|
||||
description: 'How to select the parent conversation',
|
||||
required: true,
|
||||
options: {
|
||||
options: [
|
||||
{ label: 'Select Existing Conversation', value: 'existing' },
|
||||
{ label: 'Find/Create by References', value: 'references' }
|
||||
]
|
||||
}
|
||||
});
|
||||
|
||||
props.conversation = Property.StaticDropdown({
|
||||
displayName: 'Parent Conversation',
|
||||
description: 'Conversation to create subtask in (only for existing conversation)',
|
||||
required: false,
|
||||
options: {
|
||||
options: conversationOptions.length > 0 ? conversationOptions : [{ label: 'No conversations found', value: '' }]
|
||||
}
|
||||
});
|
||||
|
||||
props.references = Property.Array({
|
||||
displayName: 'Message References',
|
||||
description: 'References to find/create parent conversation (only for reference method)',
|
||||
required: false,
|
||||
properties: {
|
||||
reference: Property.ShortText({
|
||||
displayName: 'Reference ID',
|
||||
description: 'Message reference (e.g., <message-id@domain.com>)',
|
||||
required: true,
|
||||
})
|
||||
}
|
||||
});
|
||||
|
||||
props.conversation_subject = Property.ShortText({
|
||||
displayName: 'New Conversation Subject',
|
||||
description: 'Subject for new conversation if created via references',
|
||||
required: false,
|
||||
});
|
||||
|
||||
props.assignees_array = Property.Array({
|
||||
displayName: 'Task Assignees',
|
||||
description: 'Users to assign this subtask to',
|
||||
required: false,
|
||||
properties: {
|
||||
user: Property.StaticDropdown({
|
||||
displayName: 'User',
|
||||
description: 'Select user to assign',
|
||||
required: true,
|
||||
options: {
|
||||
options: userOptions.length > 0 ? userOptions : [{ label: 'Select organization first or no users found', value: '' }]
|
||||
}
|
||||
})
|
||||
}
|
||||
});
|
||||
|
||||
props.add_users_array = Property.Array({
|
||||
displayName: 'Add Users to Conversation',
|
||||
description: 'Additional users to add to the parent conversation',
|
||||
required: false,
|
||||
properties: {
|
||||
user: Property.StaticDropdown({
|
||||
displayName: 'User',
|
||||
description: 'Select user to add to conversation',
|
||||
required: true,
|
||||
options: {
|
||||
options: userOptions.length > 0 ? userOptions : [{ label: 'Select organization first or no users found', value: '' }]
|
||||
}
|
||||
})
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
return props;
|
||||
},
|
||||
})
|
||||
},
|
||||
async run(context) {
|
||||
const propsValue = context.propsValue as any;
|
||||
const {
|
||||
task_type,
|
||||
title,
|
||||
description,
|
||||
state,
|
||||
due_at
|
||||
} = propsValue;
|
||||
|
||||
const taskData: Record<string, any> = {
|
||||
title,
|
||||
};
|
||||
|
||||
if (description) taskData['description'] = description;
|
||||
if (state) taskData['state'] = state;
|
||||
if (due_at) taskData['due_at'] = Math.floor(new Date(due_at).getTime() / 1000);
|
||||
|
||||
const taskConfig = propsValue['task_configuration'] || {};
|
||||
|
||||
if (taskConfig['organization']) {
|
||||
taskData['organization'] = taskConfig['organization'];
|
||||
}
|
||||
|
||||
if (task_type === 'standalone') {
|
||||
if (taskConfig['assignment_type'] === 'team' && taskConfig['team']) {
|
||||
taskData['team'] = taskConfig['team'];
|
||||
} else if (taskConfig['assignment_type'] === 'users' && taskConfig['assignees_array'] && Array.isArray(taskConfig['assignees_array'])) {
|
||||
taskData['assignees'] = taskConfig['assignees_array'].map((assignee: any) => assignee.user);
|
||||
}
|
||||
} else if (task_type === 'subtask') {
|
||||
taskData['subtask'] = true;
|
||||
|
||||
if (taskConfig['conversation_selection'] === 'existing' && taskConfig['conversation']) {
|
||||
taskData['conversation'] = taskConfig['conversation'];
|
||||
} else if (taskConfig['conversation_selection'] === 'references' && taskConfig['references'] && Array.isArray(taskConfig['references'])) {
|
||||
taskData['references'] = taskConfig['references'].map((ref: any) => ref.reference);
|
||||
|
||||
if (taskConfig['conversation_subject']) {
|
||||
taskData['conversation_subject'] = taskConfig['conversation_subject'];
|
||||
}
|
||||
}
|
||||
|
||||
if (taskConfig['assignees_array'] && Array.isArray(taskConfig['assignees_array']) && taskConfig['assignees_array'].length > 0) {
|
||||
taskData['assignees'] = taskConfig['assignees_array'].map((assignee: any) => assignee.user);
|
||||
}
|
||||
|
||||
if (taskConfig['add_users_array'] && Array.isArray(taskConfig['add_users_array']) && taskConfig['add_users_array'].length > 0) {
|
||||
taskData['add_users'] = taskConfig['add_users_array'].map((user: any) => user.user);
|
||||
}
|
||||
}
|
||||
|
||||
const response = await missiveCommon.apiCall({
|
||||
auth: context.auth,
|
||||
method: HttpMethod.POST,
|
||||
resourceUri: '/tasks',
|
||||
body: {
|
||||
tasks: taskData // Fixed: Single object, not array
|
||||
},
|
||||
});
|
||||
|
||||
return response.body;
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,237 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { HttpMethod } from '@activepieces/pieces-common';
|
||||
import { missiveAuth } from '../common/auth';
|
||||
import { missiveCommon } from '../common/client';
|
||||
import { contactBookDropdown } from '../common/dynamic-dropdowns';
|
||||
|
||||
export const findContact = createAction({
|
||||
name: 'find_contact',
|
||||
displayName: 'Find Contact',
|
||||
description: 'Search for contacts by text, email, name, or any contact information',
|
||||
auth: missiveAuth,
|
||||
props: {
|
||||
contact_book: contactBookDropdown,
|
||||
search: Property.ShortText({
|
||||
displayName: 'Search Term',
|
||||
description: 'Search across all contact information including name, email, phone, organization, custom fields, notes, etc. Leave empty to get all contacts.',
|
||||
required: false,
|
||||
}),
|
||||
search_options: Property.DynamicProperties({
|
||||
auth: missiveAuth, displayName: 'Search & Filter Options',
|
||||
description: 'Configure how to search and filter contacts',
|
||||
required: false,
|
||||
refreshers: [],
|
||||
props: async ({ auth }) => {
|
||||
if (!auth) {
|
||||
return {
|
||||
order: Property.StaticDropdown({
|
||||
displayName: 'Please Authenticate',
|
||||
description: 'Please authenticate to access search options',
|
||||
required: false,
|
||||
options: {
|
||||
disabled: true,
|
||||
options: [{ label: 'Please authenticate first', value: '' }]
|
||||
}
|
||||
}),
|
||||
limit: Property.Number({
|
||||
displayName: 'Results Limit',
|
||||
description: 'Please authenticate first',
|
||||
required: false,
|
||||
defaultValue: 50,
|
||||
}),
|
||||
offset: Property.Number({
|
||||
displayName: 'Offset',
|
||||
description: 'Please authenticate first',
|
||||
required: false,
|
||||
defaultValue: 0,
|
||||
}),
|
||||
modified_since: Property.DateTime({
|
||||
displayName: 'Modified Since',
|
||||
description: 'Please authenticate first',
|
||||
required: false,
|
||||
}),
|
||||
include_deleted: Property.Checkbox({
|
||||
displayName: 'Include Deleted Contacts',
|
||||
description: 'Please authenticate first',
|
||||
required: false,
|
||||
defaultValue: false,
|
||||
})
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
order: Property.StaticDropdown({
|
||||
displayName: 'Sort Order',
|
||||
description: 'How to order the contact results',
|
||||
required: false,
|
||||
defaultValue: 'last_name',
|
||||
options: {
|
||||
options: [
|
||||
{ label: 'Last Name (A-Z)', value: 'last_name' },
|
||||
{ label: 'Last Modified (Newest First)', value: 'last_modified' }
|
||||
]
|
||||
}
|
||||
}),
|
||||
limit: Property.Number({
|
||||
displayName: 'Results Limit',
|
||||
description: 'Maximum number of contacts to return (1-200)',
|
||||
required: false,
|
||||
defaultValue: 50,
|
||||
}),
|
||||
offset: Property.Number({
|
||||
displayName: 'Offset',
|
||||
description: 'Number of contacts to skip (for pagination)',
|
||||
required: false,
|
||||
defaultValue: 0,
|
||||
}),
|
||||
modified_since: Property.DateTime({
|
||||
displayName: 'Modified Since',
|
||||
description: 'Only return contacts modified or created after this date/time',
|
||||
required: false,
|
||||
}),
|
||||
include_deleted: Property.Checkbox({
|
||||
displayName: 'Include Deleted Contacts',
|
||||
description: 'Include deleted contacts when using "Modified Since" filter (only shows ID and deleted status)',
|
||||
required: false,
|
||||
defaultValue: false,
|
||||
})
|
||||
};
|
||||
},
|
||||
}),
|
||||
result_format: Property.StaticDropdown({
|
||||
displayName: 'Result Format',
|
||||
description: 'How to format the returned contact data',
|
||||
required: false,
|
||||
defaultValue: 'full',
|
||||
options: {
|
||||
options: [
|
||||
{ label: 'Full Contact Data', value: 'full' },
|
||||
{ label: 'Summary Only', value: 'summary' },
|
||||
{ label: 'Count Only', value: 'count' }
|
||||
]
|
||||
}
|
||||
})
|
||||
},
|
||||
async run(context) {
|
||||
const propsValue = context.propsValue as any;
|
||||
const {
|
||||
contact_book,
|
||||
search,
|
||||
result_format
|
||||
} = propsValue;
|
||||
|
||||
if (!contact_book) {
|
||||
throw new Error('Contact book is required to search for contacts');
|
||||
}
|
||||
|
||||
// Build query parameters
|
||||
const queryParams: Record<string, string> = {
|
||||
contact_book: contact_book
|
||||
};
|
||||
|
||||
if (search && search.trim()) {
|
||||
queryParams['search'] = search.trim();
|
||||
}
|
||||
|
||||
// Handle search options
|
||||
const searchOptions = propsValue['search_options'] || {};
|
||||
|
||||
if (searchOptions['order']) {
|
||||
queryParams['order'] = searchOptions['order'];
|
||||
}
|
||||
|
||||
if (searchOptions['limit'] && searchOptions['limit'] > 0) {
|
||||
const limit = Math.min(Math.max(1, parseInt(searchOptions['limit'])), 200);
|
||||
queryParams['limit'] = limit.toString();
|
||||
}
|
||||
|
||||
if (searchOptions['offset'] && searchOptions['offset'] >= 0) {
|
||||
queryParams['offset'] = parseInt(searchOptions['offset']).toString();
|
||||
}
|
||||
|
||||
if (searchOptions['modified_since']) {
|
||||
const date = new Date(searchOptions['modified_since']);
|
||||
const timestamp = Math.floor(date.getTime() / 1000);
|
||||
queryParams['modified_since'] = timestamp.toString();
|
||||
}
|
||||
|
||||
if (searchOptions['include_deleted']) {
|
||||
queryParams['include_deleted'] = 'true';
|
||||
}
|
||||
|
||||
// Make API call
|
||||
const response = await missiveCommon.apiCall({
|
||||
auth: context.auth,
|
||||
method: HttpMethod.GET,
|
||||
resourceUri: '/contacts',
|
||||
queryParams,
|
||||
});
|
||||
|
||||
const contacts = response.body?.contacts || [];
|
||||
|
||||
// Format results based on user preference
|
||||
if (result_format === 'count') {
|
||||
return {
|
||||
total_found: contacts.length,
|
||||
search_term: search || 'all contacts',
|
||||
contact_book_id: contact_book,
|
||||
filters_applied: {
|
||||
order: searchOptions['order'] || 'last_name',
|
||||
limit: queryParams['limit'] || '50',
|
||||
modified_since: searchOptions['modified_since'] || null,
|
||||
include_deleted: searchOptions['include_deleted'] || false
|
||||
}
|
||||
};
|
||||
} else if (result_format === 'summary') {
|
||||
return {
|
||||
total_found: contacts.length,
|
||||
contacts: contacts.map((contact: any) => {
|
||||
const primaryEmail = contact.infos?.find((info: any) => info.kind === 'email')?.value;
|
||||
const primaryPhone = contact.infos?.find((info: any) => info.kind === 'phone_number')?.value;
|
||||
const primaryOrg = contact.memberships?.find((membership: any) =>
|
||||
membership.group?.kind === 'organization'
|
||||
)?.group?.name;
|
||||
|
||||
return {
|
||||
id: contact.id,
|
||||
name: [contact.first_name, contact.last_name].filter(Boolean).join(' ') || 'No Name',
|
||||
first_name: contact.first_name || null,
|
||||
last_name: contact.last_name || null,
|
||||
primary_email: primaryEmail || null,
|
||||
primary_phone: primaryPhone || null,
|
||||
primary_organization: primaryOrg || null,
|
||||
starred: contact.starred || false,
|
||||
deleted: contact.deleted || false,
|
||||
modified_at: contact.modified_at,
|
||||
contact_book: contact.contact_book
|
||||
};
|
||||
}),
|
||||
search_info: {
|
||||
search_term: search || 'all contacts',
|
||||
contact_book_id: contact_book,
|
||||
order: searchOptions['order'] || 'last_name',
|
||||
limit: parseInt(queryParams['limit'] || '50'),
|
||||
offset: parseInt(queryParams['offset'] || '0')
|
||||
}
|
||||
};
|
||||
} else {
|
||||
// Full format - return complete API response with metadata
|
||||
return {
|
||||
total_found: contacts.length,
|
||||
contacts: contacts,
|
||||
search_info: {
|
||||
search_term: search || 'all contacts',
|
||||
contact_book_id: contact_book,
|
||||
api_endpoint: '/v1/contacts',
|
||||
filters_applied: {
|
||||
order: searchOptions['order'] || 'last_name',
|
||||
limit: parseInt(queryParams['limit'] || '50'),
|
||||
offset: parseInt(queryParams['offset'] || '0'),
|
||||
modified_since: searchOptions['modified_since'] || null,
|
||||
include_deleted: searchOptions['include_deleted'] || false
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,516 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { HttpMethod } from '@activepieces/pieces-common';
|
||||
import { missiveAuth } from '../common/auth';
|
||||
import { missiveCommon } from '../common/client';
|
||||
import { contactBookDropdown } from '../common/dynamic-dropdowns';
|
||||
|
||||
export const updateContact = createAction({
|
||||
name: 'update_contact',
|
||||
displayName: 'Update Contact',
|
||||
description: 'Modify fields for an existing contact',
|
||||
auth: missiveAuth,
|
||||
props: {
|
||||
contact_book: contactBookDropdown,
|
||||
contact_id: Property.Dropdown({
|
||||
auth: missiveAuth,
|
||||
displayName: 'Contact',
|
||||
description: 'Select the contact to update',
|
||||
required: true,
|
||||
refreshers: ['contact_book'],
|
||||
options: async ({ auth, contact_book }) => {
|
||||
if (!auth) {
|
||||
return {
|
||||
disabled: true,
|
||||
placeholder: 'Please authenticate first',
|
||||
options: [],
|
||||
};
|
||||
}
|
||||
|
||||
if (!contact_book) {
|
||||
return {
|
||||
disabled: true,
|
||||
placeholder: 'Please select a contact book first',
|
||||
options: [],
|
||||
};
|
||||
}
|
||||
|
||||
try {
|
||||
const response = await missiveCommon.apiCall({
|
||||
auth: auth,
|
||||
method: HttpMethod.GET,
|
||||
resourceUri: `/contacts?contact_book=${contact_book}`,
|
||||
});
|
||||
const contacts = response.body?.contacts || [];
|
||||
const options = contacts.map((contact: any) => {
|
||||
let label = '';
|
||||
if (contact.first_name || contact.last_name) {
|
||||
label = `${contact.first_name || ''} ${contact.last_name || ''}`.trim();
|
||||
} else {
|
||||
label = 'Unnamed Contact';
|
||||
}
|
||||
|
||||
// Add email or phone if available for better identification
|
||||
const primaryEmail = contact.infos?.find((info: any) => info.kind === 'email')?.value;
|
||||
const primaryPhone = contact.infos?.find((info: any) => info.kind === 'phone_number')?.value;
|
||||
|
||||
if (primaryEmail) {
|
||||
label += ` (${primaryEmail})`;
|
||||
} else if (primaryPhone) {
|
||||
label += ` (${primaryPhone})`;
|
||||
}
|
||||
|
||||
return {
|
||||
label,
|
||||
value: contact.id,
|
||||
};
|
||||
});
|
||||
return {
|
||||
disabled: false,
|
||||
options,
|
||||
};
|
||||
} catch (error) {
|
||||
return {
|
||||
disabled: true,
|
||||
placeholder: 'Failed to load contacts',
|
||||
options: [],
|
||||
};
|
||||
}
|
||||
},
|
||||
}),
|
||||
move_to_contact_book: Property.Dropdown({
|
||||
displayName: 'Move to Contact Book',
|
||||
description: 'Move contact to a different contact book (optional)',
|
||||
required: false,
|
||||
auth: missiveAuth,
|
||||
refreshers: [],
|
||||
options: async ({ auth }) => {
|
||||
if (!auth) {
|
||||
return {
|
||||
disabled: true,
|
||||
placeholder: 'Please authenticate first',
|
||||
options: [],
|
||||
};
|
||||
}
|
||||
|
||||
try {
|
||||
const response = await missiveCommon.apiCall({
|
||||
auth: auth,
|
||||
method: HttpMethod.GET,
|
||||
resourceUri: '/contact_books',
|
||||
});
|
||||
const contactBooks = response.body?.contact_books || [];
|
||||
const options = contactBooks.map((book: any) => ({
|
||||
label: book.name,
|
||||
value: book.id,
|
||||
}));
|
||||
return {
|
||||
disabled: false,
|
||||
options,
|
||||
};
|
||||
} catch (error) {
|
||||
return {
|
||||
disabled: true,
|
||||
placeholder: 'Failed to load contact books',
|
||||
options: [],
|
||||
};
|
||||
}
|
||||
},
|
||||
}),
|
||||
first_name: Property.ShortText({
|
||||
displayName: 'First Name',
|
||||
description: 'First name of the contact',
|
||||
required: false,
|
||||
}),
|
||||
last_name: Property.ShortText({
|
||||
displayName: 'Last Name',
|
||||
description: 'Last name of the contact',
|
||||
required: false,
|
||||
}),
|
||||
middle_name: Property.ShortText({
|
||||
displayName: 'Middle Name',
|
||||
description: 'Middle name of the contact',
|
||||
required: false,
|
||||
}),
|
||||
phonetic_first_name: Property.ShortText({
|
||||
displayName: 'Phonetic First Name',
|
||||
description: 'Phonetic spelling of the first name',
|
||||
required: false,
|
||||
}),
|
||||
phonetic_last_name: Property.ShortText({
|
||||
displayName: 'Phonetic Last Name',
|
||||
description: 'Phonetic spelling of the last name',
|
||||
required: false,
|
||||
}),
|
||||
phonetic_middle_name: Property.ShortText({
|
||||
displayName: 'Phonetic Middle Name',
|
||||
description: 'Phonetic spelling of the middle name',
|
||||
required: false,
|
||||
}),
|
||||
prefix: Property.ShortText({
|
||||
displayName: 'Prefix',
|
||||
description: 'Name prefix (e.g., Mr., Mrs., Dr.)',
|
||||
required: false,
|
||||
}),
|
||||
suffix: Property.ShortText({
|
||||
displayName: 'Suffix',
|
||||
description: 'Name suffix (e.g., Jr., Sr., III)',
|
||||
required: false,
|
||||
}),
|
||||
nickname: Property.ShortText({
|
||||
displayName: 'Nickname',
|
||||
description: 'Nickname for the contact',
|
||||
required: false,
|
||||
}),
|
||||
file_as: Property.ShortText({
|
||||
displayName: 'File As',
|
||||
description: 'How the contact should be filed/sorted',
|
||||
required: false,
|
||||
}),
|
||||
notes: Property.LongText({
|
||||
displayName: 'Notes',
|
||||
description: 'Additional notes about the contact',
|
||||
required: false,
|
||||
}),
|
||||
starred: Property.Checkbox({
|
||||
displayName: 'Starred',
|
||||
description: 'Whether the contact should be starred',
|
||||
required: false,
|
||||
}),
|
||||
gender: Property.StaticDropdown({
|
||||
displayName: 'Gender',
|
||||
description: 'Gender of the contact',
|
||||
required: false,
|
||||
options: {
|
||||
options: [
|
||||
{ label: 'Male', value: 'Male' },
|
||||
{ label: 'Female', value: 'Female' },
|
||||
{ label: 'Other', value: 'Other' }
|
||||
]
|
||||
}
|
||||
}),
|
||||
infos: Property.Array({
|
||||
displayName: 'Contact Information',
|
||||
description: 'Email addresses, phone numbers, and other contact information. Note: When updating infos, all existing infos will be replaced with the ones provided here.',
|
||||
required: false,
|
||||
properties: {
|
||||
kind: Property.StaticDropdown({
|
||||
displayName: 'Type',
|
||||
description: 'Type of contact information',
|
||||
required: true,
|
||||
options: {
|
||||
options: [
|
||||
{ label: 'Email', value: 'email' },
|
||||
{ label: 'Phone Number', value: 'phone_number' },
|
||||
{ label: 'Twitter', value: 'twitter' },
|
||||
{ label: 'Facebook', value: 'facebook' },
|
||||
{ label: 'Physical Address', value: 'physical_address' },
|
||||
{ label: 'URL', value: 'url' },
|
||||
{ label: 'Custom', value: 'custom' }
|
||||
]
|
||||
}
|
||||
}),
|
||||
label: Property.StaticDropdown({
|
||||
displayName: 'Label',
|
||||
description: 'Label for this contact information',
|
||||
required: true,
|
||||
options: {
|
||||
options: [
|
||||
{ label: 'Home', value: 'home' },
|
||||
{ label: 'Work', value: 'work' },
|
||||
{ label: 'Personal', value: 'personal' },
|
||||
{ label: 'Mobile', value: 'mobile' },
|
||||
{ label: 'Main', value: 'main' },
|
||||
{ label: 'Home Fax', value: 'home_fax' },
|
||||
{ label: 'Work Fax', value: 'work_fax' },
|
||||
{ label: 'Other Fax', value: 'other_fax' },
|
||||
{ label: 'Pager', value: 'pager' },
|
||||
{ label: 'Homepage', value: 'homepage' },
|
||||
{ label: 'Profile', value: 'profile' },
|
||||
{ label: 'Blog', value: 'blog' },
|
||||
{ label: 'Other', value: 'other' }
|
||||
]
|
||||
}
|
||||
}),
|
||||
value: Property.ShortText({
|
||||
displayName: 'Value',
|
||||
description: 'The actual contact information value',
|
||||
required: true,
|
||||
}),
|
||||
custom_label: Property.ShortText({
|
||||
displayName: 'Custom Label',
|
||||
description: 'Custom label value (use only if label is "other")',
|
||||
required: false,
|
||||
}),
|
||||
street: Property.ShortText({
|
||||
displayName: 'Street',
|
||||
description: 'Street address (for physical address)',
|
||||
required: false,
|
||||
}),
|
||||
extended_address: Property.ShortText({
|
||||
displayName: 'Extended Address',
|
||||
description: 'Extended address (e.g., apartment, suite)',
|
||||
required: false,
|
||||
}),
|
||||
city: Property.ShortText({
|
||||
displayName: 'City',
|
||||
description: 'City (for physical address)',
|
||||
required: false,
|
||||
}),
|
||||
region: Property.ShortText({
|
||||
displayName: 'Region/State',
|
||||
description: 'Region or state (for physical address)',
|
||||
required: false,
|
||||
}),
|
||||
postal_code: Property.ShortText({
|
||||
displayName: 'Postal Code',
|
||||
description: 'Postal code (for physical address)',
|
||||
required: false,
|
||||
}),
|
||||
po_box: Property.ShortText({
|
||||
displayName: 'PO Box',
|
||||
description: 'PO Box (for physical address)',
|
||||
required: false,
|
||||
}),
|
||||
country: Property.ShortText({
|
||||
displayName: 'Country',
|
||||
description: 'Country (for physical address)',
|
||||
required: false,
|
||||
}),
|
||||
name: Property.ShortText({
|
||||
displayName: 'Facebook Name',
|
||||
description: 'Facebook user name (for facebook type)',
|
||||
required: false,
|
||||
})
|
||||
}
|
||||
}),
|
||||
memberships: Property.DynamicProperties({
|
||||
auth: missiveAuth, displayName: 'Memberships',
|
||||
description: 'Organizations and groups the contact belongs to. Note: When updating memberships, all existing memberships will be replaced with the ones provided here.',
|
||||
required: false,
|
||||
refreshers: ['contact_book'],
|
||||
props: async ({ auth, contact_book }) => {
|
||||
if (!auth) {
|
||||
return {
|
||||
memberships_array: Property.Array({
|
||||
displayName: 'Memberships',
|
||||
description: 'Please authenticate first',
|
||||
required: false,
|
||||
properties: {
|
||||
placeholder: Property.ShortText({
|
||||
displayName: 'Authenticate First',
|
||||
description: 'Please authenticate to access memberships',
|
||||
required: false,
|
||||
})
|
||||
}
|
||||
})
|
||||
};
|
||||
}
|
||||
|
||||
let organizationOptions: Array<{ label: string; value: string }> = [];
|
||||
let contactGroupOptions: Array<{ label: string; value: string }> = [];
|
||||
|
||||
try {
|
||||
const orgsResponse = await missiveCommon.apiCall({
|
||||
auth: auth,
|
||||
method: HttpMethod.GET,
|
||||
resourceUri: '/organizations',
|
||||
});
|
||||
organizationOptions = orgsResponse.body?.organizations?.map((org: any) => ({
|
||||
label: org.name,
|
||||
value: org.id
|
||||
})) || [];
|
||||
} catch (error) {
|
||||
console.error('Failed to fetch organizations:', error);
|
||||
}
|
||||
|
||||
if (contact_book) {
|
||||
try {
|
||||
const groupsResponse = await missiveCommon.apiCall({
|
||||
auth: auth,
|
||||
method: HttpMethod.GET,
|
||||
resourceUri: `/contact_groups?contact_book=${contact_book}&kind=group`,
|
||||
});
|
||||
contactGroupOptions = groupsResponse.body?.contact_groups?.map((group: any) => ({
|
||||
label: group.name,
|
||||
value: group.id
|
||||
})) || [];
|
||||
} catch (error) {
|
||||
console.error('Failed to fetch contact groups:', error);
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
memberships_array: Property.Array({
|
||||
displayName: 'Memberships',
|
||||
description: 'Add, remove, and manage contact memberships. All existing memberships will be replaced.',
|
||||
required: false,
|
||||
properties: {
|
||||
type: Property.StaticDropdown({
|
||||
displayName: 'Type',
|
||||
description: 'Type of membership',
|
||||
required: true,
|
||||
options: {
|
||||
options: [
|
||||
{ label: 'Organization', value: 'organization' },
|
||||
{ label: 'Group', value: 'group' }
|
||||
]
|
||||
}
|
||||
}),
|
||||
organization: Property.StaticDropdown({
|
||||
displayName: 'Organization',
|
||||
description: 'Select organization (only for Organization type)',
|
||||
required: false,
|
||||
options: {
|
||||
options: organizationOptions.length > 0 ? organizationOptions : [{ label: 'No organizations found', value: '' }]
|
||||
}
|
||||
}),
|
||||
contact_group: Property.StaticDropdown({
|
||||
displayName: 'Contact Group',
|
||||
description: contact_book ? 'Select contact group (only for Group type)' : 'Select contact book first to see groups',
|
||||
required: false,
|
||||
options: {
|
||||
options: contactGroupOptions.length > 0 ? contactGroupOptions : [{ label: contact_book ? 'No groups found' : 'Select contact book first', value: '' }]
|
||||
}
|
||||
}),
|
||||
title: Property.ShortText({
|
||||
displayName: 'Title',
|
||||
description: 'Job title or role',
|
||||
required: false,
|
||||
}),
|
||||
location: Property.ShortText({
|
||||
displayName: 'Location',
|
||||
description: 'Location or office',
|
||||
required: false,
|
||||
}),
|
||||
department: Property.ShortText({
|
||||
displayName: 'Department',
|
||||
description: 'Department',
|
||||
required: false,
|
||||
}),
|
||||
description: Property.ShortText({
|
||||
displayName: 'Description',
|
||||
description: 'Description of role or membership',
|
||||
required: false,
|
||||
})
|
||||
}
|
||||
})
|
||||
};
|
||||
},
|
||||
})
|
||||
},
|
||||
async run(context) {
|
||||
const propsValue = context.propsValue as any;
|
||||
const {
|
||||
contact_id,
|
||||
contact_book,
|
||||
move_to_contact_book,
|
||||
first_name,
|
||||
last_name,
|
||||
middle_name,
|
||||
phonetic_first_name,
|
||||
phonetic_last_name,
|
||||
phonetic_middle_name,
|
||||
prefix,
|
||||
suffix,
|
||||
nickname,
|
||||
file_as,
|
||||
notes,
|
||||
starred,
|
||||
gender,
|
||||
infos
|
||||
} = propsValue;
|
||||
|
||||
const contactData: Record<string, any> = {
|
||||
id: contact_id,
|
||||
};
|
||||
|
||||
if (move_to_contact_book) contactData['contact_book'] = move_to_contact_book;
|
||||
if (first_name) contactData['first_name'] = first_name;
|
||||
if (last_name) contactData['last_name'] = last_name;
|
||||
if (middle_name) contactData['middle_name'] = middle_name;
|
||||
if (phonetic_first_name) contactData['phonetic_first_name'] = phonetic_first_name;
|
||||
if (phonetic_last_name) contactData['phonetic_last_name'] = phonetic_last_name;
|
||||
if (phonetic_middle_name) contactData['phonetic_middle_name'] = phonetic_middle_name;
|
||||
if (prefix) contactData['prefix'] = prefix;
|
||||
if (suffix) contactData['suffix'] = suffix;
|
||||
if (nickname) contactData['nickname'] = nickname;
|
||||
if (file_as) contactData['file_as'] = file_as;
|
||||
if (notes) contactData['notes'] = notes;
|
||||
if (starred !== undefined) contactData['starred'] = starred;
|
||||
if (gender) contactData['gender'] = gender;
|
||||
|
||||
if (infos && infos.length > 0) {
|
||||
contactData['infos'] = infos.map((info: any) => {
|
||||
const infoObj: any = {
|
||||
kind: info.kind,
|
||||
label: info.label,
|
||||
};
|
||||
|
||||
if (info.kind === 'email' || info.kind === 'phone_number' || info.kind === 'twitter' || info.kind === 'url' || info.kind === 'custom') {
|
||||
infoObj.value = info.value;
|
||||
} else if (info.kind === 'facebook') {
|
||||
infoObj.name = info.name;
|
||||
} else if (info.kind === 'physical_address') {
|
||||
if (info.street) infoObj.street = info.street;
|
||||
if (info.extended_address) infoObj.extended_address = info.extended_address;
|
||||
if (info.city) infoObj.city = info.city;
|
||||
if (info.region) infoObj.region = info.region;
|
||||
if (info.postal_code) infoObj.postal_code = info.postal_code;
|
||||
if (info.po_box) infoObj.po_box = info.po_box;
|
||||
if (info.country) infoObj.country = info.country;
|
||||
}
|
||||
|
||||
if (info.custom_label && info.label === 'other') {
|
||||
infoObj.custom_label = info.custom_label;
|
||||
}
|
||||
|
||||
return infoObj;
|
||||
});
|
||||
}
|
||||
|
||||
const membershipsArray = propsValue.memberships_array;
|
||||
if (membershipsArray && Array.isArray(membershipsArray) && membershipsArray.length > 0) {
|
||||
const memberships: any[] = [];
|
||||
for (const membership of membershipsArray) {
|
||||
if (!membership.type) continue;
|
||||
|
||||
const membershipObj: any = {};
|
||||
|
||||
if (membership.title) membershipObj.title = membership.title;
|
||||
if (membership.location) membershipObj.location = membership.location;
|
||||
if (membership.department) membershipObj.department = membership.department;
|
||||
if (membership.description) membershipObj.description = membership.description;
|
||||
|
||||
if (membership.type === 'organization' && membership.organization) {
|
||||
membershipObj.group = {
|
||||
kind: 'organization',
|
||||
id: membership.organization
|
||||
};
|
||||
} else if (membership.type === 'group' && membership.contact_group) {
|
||||
membershipObj.group = {
|
||||
kind: 'group',
|
||||
id: membership.contact_group
|
||||
};
|
||||
}
|
||||
|
||||
if (membershipObj.group) {
|
||||
memberships.push(membershipObj);
|
||||
}
|
||||
}
|
||||
if (memberships.length > 0) {
|
||||
contactData['memberships'] = memberships;
|
||||
}
|
||||
}
|
||||
|
||||
const response = await missiveCommon.apiCall({
|
||||
auth: context.auth,
|
||||
method: HttpMethod.PATCH,
|
||||
resourceUri: `/contacts/${contact_id}`,
|
||||
body: {
|
||||
contacts: [contactData]
|
||||
},
|
||||
});
|
||||
|
||||
return response.body;
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,45 @@
|
||||
import { PieceAuth } from '@activepieces/pieces-framework';
|
||||
import { httpClient, HttpMethod, AuthenticationType } from '@activepieces/pieces-common';
|
||||
|
||||
export const missiveAuth = PieceAuth.SecretText({
|
||||
displayName: 'API Token',
|
||||
required: true,
|
||||
description: `
|
||||
To get your API token:
|
||||
|
||||
1. Go to your Missive preferences
|
||||
2. Click the API tab
|
||||
3. Click "Create a new token"
|
||||
4. Copy the generated token (starts with 'missive_pat-')
|
||||
|
||||
Note: You need to be part of an organization subscribed to the Productive plan to generate API tokens.
|
||||
`,
|
||||
validate: async ({ auth }) => {
|
||||
try {
|
||||
const response = await httpClient.sendRequest({
|
||||
method: HttpMethod.GET,
|
||||
url: 'https://public.missiveapp.com/v1/organizations',
|
||||
authentication: {
|
||||
type: AuthenticationType.BEARER_TOKEN,
|
||||
token: auth,
|
||||
}
|
||||
});
|
||||
|
||||
if (response.status === 200) {
|
||||
return {
|
||||
valid: true,
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
valid: false,
|
||||
error: 'Invalid API token. Please check your token and try again.',
|
||||
};
|
||||
} catch (error) {
|
||||
return {
|
||||
valid: false,
|
||||
error: 'Failed to validate API token. Please check your token and try again.',
|
||||
};
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -0,0 +1,34 @@
|
||||
import { httpClient, HttpMethod, AuthenticationType } from '@activepieces/pieces-common';
|
||||
import { AppConnectionValueForAuthProperty } from '@activepieces/pieces-framework';
|
||||
import { missiveAuth } from './auth';
|
||||
|
||||
const MISSIVE_API_BASE_URL = 'https://public.missiveapp.com/v1';
|
||||
|
||||
export const missiveCommon = {
|
||||
baseUrl: MISSIVE_API_BASE_URL,
|
||||
|
||||
async apiCall({
|
||||
auth,
|
||||
method,
|
||||
resourceUri,
|
||||
body = undefined,
|
||||
queryParams = undefined,
|
||||
}: {
|
||||
auth: AppConnectionValueForAuthProperty<typeof missiveAuth>;
|
||||
method: HttpMethod;
|
||||
resourceUri: string;
|
||||
body?: any;
|
||||
queryParams?: Record<string, string>;
|
||||
}) {
|
||||
return await httpClient.sendRequest({
|
||||
method: method,
|
||||
url: `${MISSIVE_API_BASE_URL}${resourceUri}`,
|
||||
body,
|
||||
queryParams,
|
||||
authentication: {
|
||||
type: AuthenticationType.BEARER_TOKEN,
|
||||
token: auth.secret_text,
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,535 @@
|
||||
import { Property } from '@activepieces/pieces-framework';
|
||||
import { HttpMethod } from '@activepieces/pieces-common';
|
||||
import { missiveCommon } from './client';
|
||||
import { missiveAuth } from './auth';
|
||||
|
||||
|
||||
export const contactBookDropdown = Property.Dropdown({
|
||||
auth: missiveAuth,
|
||||
displayName: 'Contact Book',
|
||||
description: 'Select the contact book where the contact will be created',
|
||||
required: true,
|
||||
refreshers: [],
|
||||
options: async ({ auth }) => {
|
||||
if (!auth) {
|
||||
return {
|
||||
disabled: true,
|
||||
placeholder: 'Please authenticate first',
|
||||
options: [],
|
||||
};
|
||||
}
|
||||
|
||||
try {
|
||||
const response = await missiveCommon.apiCall({
|
||||
auth: auth,
|
||||
method: HttpMethod.GET,
|
||||
resourceUri: '/contact_books',
|
||||
});
|
||||
|
||||
const contactBooks = response.body?.contact_books || [];
|
||||
const options = contactBooks.map((book: any) => ({
|
||||
label: book.name,
|
||||
value: book.id,
|
||||
}));
|
||||
|
||||
return {
|
||||
disabled: false,
|
||||
options,
|
||||
};
|
||||
} catch (error) {
|
||||
return {
|
||||
disabled: true,
|
||||
placeholder: 'Failed to load contact books',
|
||||
options: [],
|
||||
};
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
|
||||
export const organizationDropdown = Property.Dropdown({
|
||||
auth: missiveAuth,
|
||||
displayName: 'Organization',
|
||||
description: 'Select an organization',
|
||||
required: false,
|
||||
refreshers: [],
|
||||
options: async ({ auth }) => {
|
||||
if (!auth) {
|
||||
return {
|
||||
disabled: true,
|
||||
placeholder: 'Please authenticate first',
|
||||
options: [],
|
||||
};
|
||||
}
|
||||
|
||||
try {
|
||||
const response = await missiveCommon.apiCall({
|
||||
auth: auth,
|
||||
method: HttpMethod.GET,
|
||||
resourceUri: '/organizations',
|
||||
});
|
||||
|
||||
const organizations = response.body?.organizations || [];
|
||||
const options = organizations.map((org: any) => ({
|
||||
label: org.name,
|
||||
value: org.id,
|
||||
}));
|
||||
|
||||
return {
|
||||
disabled: false,
|
||||
options,
|
||||
};
|
||||
} catch (error) {
|
||||
return {
|
||||
disabled: true,
|
||||
placeholder: 'Failed to load organizations',
|
||||
options: [],
|
||||
};
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
|
||||
export const groupDropdown = Property.Dropdown({
|
||||
auth: missiveAuth,
|
||||
displayName: 'Group',
|
||||
description: 'Select a group',
|
||||
required: false,
|
||||
refreshers: [],
|
||||
options: async ({ auth }) => {
|
||||
if (!auth) {
|
||||
return {
|
||||
disabled: true,
|
||||
placeholder: 'Please authenticate first',
|
||||
options: [],
|
||||
};
|
||||
}
|
||||
|
||||
try {
|
||||
const response = await missiveCommon.apiCall({
|
||||
auth: auth,
|
||||
method: HttpMethod.GET,
|
||||
resourceUri: '/groups',
|
||||
});
|
||||
|
||||
const groups = response.body?.groups || [];
|
||||
const options = groups.map((group: any) => ({
|
||||
label: group.name,
|
||||
value: group.id,
|
||||
}));
|
||||
|
||||
return {
|
||||
disabled: false,
|
||||
options,
|
||||
};
|
||||
} catch (error) {
|
||||
return {
|
||||
disabled: true,
|
||||
placeholder: 'Failed to load groups',
|
||||
options: [],
|
||||
};
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
|
||||
export const contactGroupDropdown = Property.Dropdown({
|
||||
auth: missiveAuth,
|
||||
displayName: 'Contact Group',
|
||||
description: 'Select a contact group or organization',
|
||||
required: false,
|
||||
refreshers: ['contact_book', 'group_kind'],
|
||||
options: async ({ auth, contact_book, group_kind }) => {
|
||||
if (!auth) {
|
||||
return {
|
||||
disabled: true,
|
||||
placeholder: 'Please authenticate first',
|
||||
options: [],
|
||||
};
|
||||
}
|
||||
|
||||
if (!contact_book) {
|
||||
return {
|
||||
disabled: true,
|
||||
placeholder: 'Please select a contact book first',
|
||||
options: [],
|
||||
};
|
||||
}
|
||||
|
||||
if (!group_kind) {
|
||||
return {
|
||||
disabled: true,
|
||||
placeholder: 'Please select a group type first',
|
||||
options: [],
|
||||
};
|
||||
}
|
||||
|
||||
try {
|
||||
const response = await missiveCommon.apiCall({
|
||||
auth: auth,
|
||||
method: HttpMethod.GET,
|
||||
resourceUri: `/contact_groups?contact_book=${contact_book}&kind=${group_kind}`,
|
||||
});
|
||||
|
||||
const contactGroups = response.body?.contact_groups || [];
|
||||
const options = contactGroups.map((group: any) => ({
|
||||
label: group.name,
|
||||
value: group.id,
|
||||
}));
|
||||
|
||||
return {
|
||||
disabled: false,
|
||||
options,
|
||||
};
|
||||
} catch (error) {
|
||||
return {
|
||||
disabled: true,
|
||||
placeholder: 'Failed to load contact groups',
|
||||
options: [],
|
||||
};
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
|
||||
export const optionalContactBookDropdown = Property.Dropdown({
|
||||
auth: missiveAuth,
|
||||
displayName: 'Contact Book',
|
||||
description: 'Contact book to search within (optional)',
|
||||
required: false,
|
||||
refreshers: [],
|
||||
options: async ({ auth }) => {
|
||||
if (!auth) {
|
||||
return {
|
||||
disabled: true,
|
||||
placeholder: 'Please authenticate first',
|
||||
options: [],
|
||||
};
|
||||
}
|
||||
|
||||
try {
|
||||
const response = await missiveCommon.apiCall({
|
||||
auth: auth,
|
||||
method: HttpMethod.GET,
|
||||
resourceUri: '/contact_books',
|
||||
});
|
||||
|
||||
const contactBooks = response.body?.contact_books || [];
|
||||
const options = contactBooks.map((book: any) => ({
|
||||
label: book.name,
|
||||
value: book.id,
|
||||
}));
|
||||
|
||||
return {
|
||||
disabled: false,
|
||||
options,
|
||||
};
|
||||
} catch (error) {
|
||||
return {
|
||||
disabled: true,
|
||||
placeholder: 'Failed to load contact books',
|
||||
options: [],
|
||||
};
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
export const contactDropdown = Property.Dropdown({
|
||||
auth: missiveAuth,
|
||||
displayName: 'Contact',
|
||||
description: 'Select a contact',
|
||||
required: true,
|
||||
refreshers: [],
|
||||
options: async ({ auth }) => {
|
||||
if (!auth) {
|
||||
return {
|
||||
disabled: true,
|
||||
placeholder: 'Please authenticate first',
|
||||
options: [],
|
||||
};
|
||||
}
|
||||
|
||||
try {
|
||||
const response = await missiveCommon.apiCall({
|
||||
auth: auth,
|
||||
method: HttpMethod.GET,
|
||||
resourceUri: '/contacts?limit=200',
|
||||
});
|
||||
|
||||
const contacts = response.body?.contacts || [];
|
||||
const options = contacts.map((contact: any) => {
|
||||
const name = [contact.first_name, contact.last_name].filter(Boolean).join(' ') || 'Unnamed Contact';
|
||||
const email = contact.infos?.find((info: any) => info.kind === 'email')?.value;
|
||||
const label = email ? `${name} (${email})` : name;
|
||||
return {
|
||||
label: label,
|
||||
value: contact.id,
|
||||
};
|
||||
});
|
||||
|
||||
return {
|
||||
disabled: false,
|
||||
options,
|
||||
};
|
||||
} catch (error) {
|
||||
return {
|
||||
disabled: true,
|
||||
placeholder: 'Failed to load contacts',
|
||||
options: [],
|
||||
};
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
|
||||
export const teamDropdown = Property.Dropdown({
|
||||
auth: missiveAuth,
|
||||
displayName: 'Team',
|
||||
description: 'Select a team',
|
||||
required: false,
|
||||
refreshers: ['organization'],
|
||||
options: async ({ auth, organization }) => {
|
||||
if (!auth) {
|
||||
return {
|
||||
disabled: true,
|
||||
placeholder: 'Please authenticate first',
|
||||
options: [],
|
||||
};
|
||||
}
|
||||
|
||||
if (!organization) {
|
||||
return {
|
||||
disabled: true,
|
||||
placeholder: 'Please select an organization first',
|
||||
options: [],
|
||||
};
|
||||
}
|
||||
|
||||
try {
|
||||
const response = await missiveCommon.apiCall({
|
||||
auth: auth,
|
||||
method: HttpMethod.GET,
|
||||
resourceUri: `/teams?organization=${organization}`,
|
||||
});
|
||||
|
||||
const teams = response.body?.teams || [];
|
||||
const options = teams.map((team: any) => ({
|
||||
label: team.name,
|
||||
value: team.id,
|
||||
}));
|
||||
|
||||
return {
|
||||
disabled: false,
|
||||
options,
|
||||
};
|
||||
} catch (error) {
|
||||
return {
|
||||
disabled: true,
|
||||
placeholder: 'Failed to load teams',
|
||||
options: [],
|
||||
};
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
|
||||
export const sharedLabelDropdown = Property.Dropdown({
|
||||
auth: missiveAuth,
|
||||
displayName: 'Shared Label',
|
||||
description: 'Select a shared label',
|
||||
required: false,
|
||||
refreshers: ['organization'],
|
||||
options: async ({ auth, organization }) => {
|
||||
if (!auth) {
|
||||
return {
|
||||
disabled: true,
|
||||
placeholder: 'Please authenticate first',
|
||||
options: [],
|
||||
};
|
||||
}
|
||||
|
||||
if (!organization) {
|
||||
return {
|
||||
disabled: true,
|
||||
placeholder: 'Please select an organization first',
|
||||
options: [],
|
||||
};
|
||||
}
|
||||
|
||||
try {
|
||||
const response = await missiveCommon.apiCall({
|
||||
auth: auth,
|
||||
method: HttpMethod.GET,
|
||||
resourceUri: `/shared_labels?organization=${organization}`,
|
||||
});
|
||||
|
||||
const sharedLabels = response.body?.shared_labels || [];
|
||||
const options = sharedLabels.map((label: any) => ({
|
||||
label: label.name,
|
||||
value: label.id,
|
||||
}));
|
||||
|
||||
return {
|
||||
disabled: false,
|
||||
options,
|
||||
};
|
||||
} catch (error) {
|
||||
return {
|
||||
disabled: true,
|
||||
placeholder: 'Failed to load shared labels',
|
||||
options: [],
|
||||
};
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
|
||||
export const userDropdown = Property.Dropdown({
|
||||
auth: missiveAuth,
|
||||
displayName: 'User',
|
||||
description: 'Select a user',
|
||||
required: false,
|
||||
refreshers: ['organization'],
|
||||
options: async ({ auth, organization }) => {
|
||||
if (!auth) {
|
||||
return {
|
||||
disabled: true,
|
||||
placeholder: 'Please authenticate first',
|
||||
options: [],
|
||||
};
|
||||
}
|
||||
|
||||
if (!organization) {
|
||||
return {
|
||||
disabled: true,
|
||||
placeholder: 'Please select an organization first',
|
||||
options: [],
|
||||
};
|
||||
}
|
||||
|
||||
try {
|
||||
const response = await missiveCommon.apiCall({
|
||||
auth: auth,
|
||||
method: HttpMethod.GET,
|
||||
resourceUri: `/users?organization=${organization}`,
|
||||
});
|
||||
|
||||
const users = response.body?.users || [];
|
||||
const options = users.map((user: any) => ({
|
||||
label: `${user.name} (${user.email})`,
|
||||
value: user.id,
|
||||
}));
|
||||
|
||||
return {
|
||||
disabled: false,
|
||||
options,
|
||||
};
|
||||
} catch (error) {
|
||||
return {
|
||||
disabled: true,
|
||||
placeholder: 'Failed to load users',
|
||||
options: [],
|
||||
};
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
export const membershipOrganizationDropdown = Property.Dropdown({
|
||||
auth: missiveAuth,
|
||||
displayName: 'Organization',
|
||||
description: 'Select an organization for membership',
|
||||
required: false,
|
||||
refreshers: [],
|
||||
options: async ({ auth }) => {
|
||||
if (!auth) {
|
||||
return {
|
||||
disabled: true,
|
||||
placeholder: 'Please authenticate first',
|
||||
options: [],
|
||||
};
|
||||
}
|
||||
|
||||
try {
|
||||
const response = await missiveCommon.apiCall({
|
||||
auth: auth,
|
||||
method: HttpMethod.GET,
|
||||
resourceUri: '/organizations',
|
||||
});
|
||||
|
||||
const organizations = response.body?.organizations || [];
|
||||
const options = organizations.map((org: any) => ({
|
||||
label: org.name,
|
||||
value: org.id,
|
||||
}));
|
||||
|
||||
return {
|
||||
disabled: false,
|
||||
options,
|
||||
};
|
||||
} catch (error) {
|
||||
return {
|
||||
disabled: true,
|
||||
placeholder: 'Failed to load organizations',
|
||||
options: [],
|
||||
};
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
export const membershipContactGroupDropdown = Property.Dropdown({
|
||||
auth: missiveAuth,
|
||||
displayName: 'Contact Group',
|
||||
description: 'Select a contact group',
|
||||
required: false,
|
||||
refreshers: ['contact_book', 'group_kind'],
|
||||
options: async ({ auth, contact_book, group_kind }) => {
|
||||
if (!auth) {
|
||||
return {
|
||||
disabled: true,
|
||||
placeholder: 'Please authenticate first',
|
||||
options: [],
|
||||
};
|
||||
}
|
||||
|
||||
if (!contact_book) {
|
||||
return {
|
||||
disabled: true,
|
||||
placeholder: 'Please select a contact book first',
|
||||
options: [],
|
||||
};
|
||||
}
|
||||
|
||||
if (!group_kind) {
|
||||
return {
|
||||
disabled: true,
|
||||
placeholder: 'Please select a group type first',
|
||||
options: [],
|
||||
};
|
||||
}
|
||||
|
||||
try {
|
||||
const response = await missiveCommon.apiCall({
|
||||
auth: auth,
|
||||
method: HttpMethod.GET,
|
||||
resourceUri: `/contact_groups?contact_book=${contact_book}&kind=${group_kind}`,
|
||||
});
|
||||
|
||||
const contactGroups = response.body?.contact_groups || [];
|
||||
const options = contactGroups.map((group: any) => ({
|
||||
label: group.name,
|
||||
value: group.id,
|
||||
}));
|
||||
|
||||
return {
|
||||
disabled: false,
|
||||
options,
|
||||
};
|
||||
} catch (error) {
|
||||
return {
|
||||
disabled: true,
|
||||
placeholder: 'Failed to load contact groups',
|
||||
options: [],
|
||||
};
|
||||
}
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,121 @@
|
||||
import {
|
||||
createTrigger,
|
||||
Property,
|
||||
TriggerStrategy,
|
||||
} from '@activepieces/pieces-framework';
|
||||
import { missiveAuth } from '../common/auth';
|
||||
|
||||
export const newComment = createTrigger({
|
||||
name: 'new_comment',
|
||||
displayName: 'New Comment',
|
||||
description: 'Triggers when new comments are added to conversations',
|
||||
auth: missiveAuth,
|
||||
props: {
|
||||
setupInstructions: Property.MarkDown({
|
||||
value: `
|
||||
## Setup Instructions
|
||||
|
||||
To use this trigger, you need to manually create a webhook rule in your Missive account:
|
||||
|
||||
### 1. Access Missive Rules
|
||||
- Open Missive and go to **Settings > Rules**
|
||||
- Click **"New incoming rule"** or **"New outgoing rule"**
|
||||
|
||||
### 2. Configure the Trigger
|
||||
In the **When should rule trigger?** section:
|
||||
- Select **"New comment"** from the User actions
|
||||
|
||||
### 3. Add Filters (Optional)
|
||||
Configure filters like:
|
||||
- **Specific author** - Only comments from certain team members
|
||||
- **Task comments only** - Only comments on tasks
|
||||
- **Content contains** - Comments with specific keywords
|
||||
- **Mentions** - When specific users are mentioned
|
||||
- **Organization scope** - Organization vs personal conversations
|
||||
|
||||
### 4. Set Webhook Action
|
||||
1. In the **Actions** section, select **"Webhook"**
|
||||
2. Paste this URL in the **Webhook URL** field:
|
||||
\`\`\`text
|
||||
{{webhookUrl}}
|
||||
\`\`\`
|
||||
3. Set **HTTP Method** to **POST**
|
||||
4. Leave **Content Type** as **application/json**
|
||||
|
||||
### 5. Save the Rule
|
||||
- Click **Save** to activate the webhook
|
||||
- Missive will validate your endpoint automatically
|
||||
|
||||
---
|
||||
|
||||
**Note:** You need admin/owner permissions and a Productive plan to create rules.
|
||||
|
||||
**Example Use Cases:**
|
||||
- Alert managers when team members comment on critical conversations
|
||||
- Track task progress through comment notifications
|
||||
- Route comments with specific keywords to specialized workflows
|
||||
- Log team collaboration activity to project management tools
|
||||
`,
|
||||
}),
|
||||
},
|
||||
type: TriggerStrategy.WEBHOOK,
|
||||
sampleData: {
|
||||
rule: {
|
||||
id: "45408b30-aa3a-45n1-bh67-0a0cb8da9080",
|
||||
description: "New comment webhook",
|
||||
type: "new_comment"
|
||||
},
|
||||
conversation: {
|
||||
id: "47a57b76-df42-4d8k-927x-80dbe5d87191",
|
||||
subject: "Project discussion",
|
||||
latest_message_subject: "Re: Project discussion",
|
||||
organization: {
|
||||
id: "93e5e5d5-11a2-4c9b-80b8-94f3c08068cf",
|
||||
name: "Your Organization"
|
||||
},
|
||||
team: {
|
||||
id: "2f618f9e-d3d4-4a01-b7d5-57124ab366b8",
|
||||
name: "Project Team",
|
||||
organization: "93e5e5d5-11a2-4c9b-80b8-94f3c08068cf"
|
||||
},
|
||||
assignees: [
|
||||
{
|
||||
id: "6b52b6b9-9b51-46ad-a4e3-82ef3c45512c",
|
||||
name: "Project Manager",
|
||||
email: "pm@company.com"
|
||||
}
|
||||
],
|
||||
shared_labels: [
|
||||
{
|
||||
id: "146ff5c4-d5la-3b63-b994-76711fn790lq",
|
||||
name: "Active Projects"
|
||||
}
|
||||
],
|
||||
web_url: "https://mail.missiveapp.com/#inbox/conversations/47a57b76-df42-4d8k-927x-80dbe5d87191"
|
||||
},
|
||||
comment: {
|
||||
id: "comment_12345678-abcd-1234-5678-1234567890ab",
|
||||
content: "I've reviewed the proposal and have some feedback...",
|
||||
author: {
|
||||
id: "user_12345678-abcd-1234-5678-1234567890ab",
|
||||
name: "Team Member",
|
||||
email: "member@company.com"
|
||||
},
|
||||
created_at: "2023-07-27T10:00:00+00:00",
|
||||
is_task: false,
|
||||
mentions: ["user_87654321-dcba-4321-8765-ba0987654321"]
|
||||
}
|
||||
},
|
||||
|
||||
async onEnable(context) {
|
||||
// Manual setup - no programmatic registration needed
|
||||
},
|
||||
|
||||
async onDisable(context) {
|
||||
// Manual setup - users manage rules in Missive UI
|
||||
},
|
||||
|
||||
async run(context) {
|
||||
return [context.payload.body];
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,103 @@
|
||||
import {
|
||||
createTrigger,
|
||||
Property,
|
||||
TriggerStrategy,
|
||||
} from '@activepieces/pieces-framework';
|
||||
import { missiveAuth } from '../common/auth';
|
||||
|
||||
export const newContactBook = createTrigger({
|
||||
name: 'new_contact_book',
|
||||
displayName: 'New Contact Book',
|
||||
description: 'Triggers when new contact books are created',
|
||||
auth: missiveAuth,
|
||||
props: {
|
||||
setupInstructions: Property.MarkDown({
|
||||
value: `
|
||||
## Setup Instructions
|
||||
|
||||
To use this trigger, you need to manually create a webhook rule in your Missive account:
|
||||
|
||||
### 1. Access Missive Rules
|
||||
- Open Missive and go to **Settings > Rules**
|
||||
- Click **"New incoming rule"** or **"New outgoing rule"**
|
||||
|
||||
### 2. Configure the Trigger
|
||||
In the **When should rule trigger?** section:
|
||||
- Look for **"New contact book"** or **"Contact book created"** in the available trigger types
|
||||
- Select this option to trigger on contact book creation
|
||||
|
||||
### 3. Add Filters (Optional)
|
||||
Configure filters like:
|
||||
- **Book owner** - Only contact books created by specific users
|
||||
- **Organization scope** - Organization vs personal contact books
|
||||
- **Book name contains** - Contact books with specific naming patterns
|
||||
|
||||
### 4. Set Webhook Action
|
||||
1. In the **Actions** section, select **"Webhook"**
|
||||
2. Paste this URL in the **Webhook URL** field:
|
||||
\`\`\`text
|
||||
{{webhookUrl}}
|
||||
\`\`\`
|
||||
3. Set **HTTP Method** to **POST**
|
||||
4. Leave **Content Type** as **application/json**
|
||||
|
||||
### 5. Save the Rule
|
||||
- Click **Save** to activate the webhook
|
||||
- Missive will validate your endpoint automatically
|
||||
|
||||
---
|
||||
|
||||
**Note:** You need admin/owner permissions and a Productive plan to create rules.
|
||||
|
||||
**Example Use Cases:**
|
||||
- Set up automatic contact book backups when new books are created
|
||||
- Initialize contact book permissions and sharing settings
|
||||
- Notify administrators when teams create new contact databases
|
||||
- Create corresponding contact lists in external CRM systems
|
||||
- Track contact book creation for audit and compliance
|
||||
`,
|
||||
}),
|
||||
},
|
||||
type: TriggerStrategy.WEBHOOK,
|
||||
sampleData: {
|
||||
rule: {
|
||||
id: "45408b30-aa3a-45n1-bh67-0a0cb8da9080",
|
||||
description: "New contact book webhook",
|
||||
type: "new_contact_book"
|
||||
},
|
||||
contact_book: {
|
||||
id: "book_12345678-abcd-1234-5678-1234567890ab",
|
||||
name: "Sales Prospects 2024",
|
||||
description: "Potential customers for Q1 2024 campaign",
|
||||
created_at: "2023-07-27T10:00:00+00:00",
|
||||
modified_at: 1556200645,
|
||||
organization: {
|
||||
id: "org_12345678-abcd-1234-5678-1234567890ab",
|
||||
name: "Your Organization"
|
||||
},
|
||||
owner: {
|
||||
id: "user_12345678-abcd-1234-5678-1234567890ab",
|
||||
name: "Book Creator",
|
||||
email: "creator@company.com"
|
||||
},
|
||||
permissions: {
|
||||
public: false,
|
||||
team_access: true,
|
||||
organization_access: false
|
||||
},
|
||||
contact_count: 0
|
||||
}
|
||||
},
|
||||
|
||||
async onEnable(context) {
|
||||
// Manual setup - no programmatic registration needed
|
||||
},
|
||||
|
||||
async onDisable(context) {
|
||||
// Manual setup - users manage rules in Missive UI
|
||||
},
|
||||
|
||||
async run(context) {
|
||||
return [context.payload.body];
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,102 @@
|
||||
import {
|
||||
createTrigger,
|
||||
Property,
|
||||
TriggerStrategy,
|
||||
} from '@activepieces/pieces-framework';
|
||||
import { missiveAuth } from '../common/auth';
|
||||
|
||||
export const newContactGroup = createTrigger({
|
||||
name: 'new_contact_group',
|
||||
displayName: 'New Contact Group',
|
||||
description: 'Triggers when new contact groups are created',
|
||||
auth: missiveAuth,
|
||||
props: {
|
||||
setupInstructions: Property.MarkDown({
|
||||
value: `
|
||||
## Setup Instructions
|
||||
|
||||
To use this trigger, you need to manually create a webhook rule in your Missive account:
|
||||
|
||||
### 1. Access Missive Rules
|
||||
- Open Missive and go to **Settings > Rules**
|
||||
- Click **"New incoming rule"** or **"New outgoing rule"**
|
||||
|
||||
### 2. Configure the Trigger
|
||||
In the **When should rule trigger?** section:
|
||||
- Look for **"New contact group"** or **"Contact group created"** in the available trigger types
|
||||
- Select this option to trigger on contact group creation
|
||||
|
||||
### 3. Add Filters (Optional)
|
||||
Configure filters like:
|
||||
- **Contact book** - Only groups created in specific contact books
|
||||
- **Group type** - Organizations vs regular groups
|
||||
- **Group creator** - Only groups created by specific users
|
||||
- **Group name contains** - Groups with specific naming patterns
|
||||
|
||||
### 4. Set Webhook Action
|
||||
1. In the **Actions** section, select **"Webhook"**
|
||||
2. Paste this URL in the **Webhook URL** field:
|
||||
\`\`\`text
|
||||
{{webhookUrl}}
|
||||
\`\`\`
|
||||
3. Set **HTTP Method** to **POST**
|
||||
4. Leave **Content Type** as **application/json**
|
||||
|
||||
### 5. Save the Rule
|
||||
- Click **Save** to activate the webhook
|
||||
- Missive will validate your endpoint automatically
|
||||
|
||||
---
|
||||
|
||||
**Note:** You need admin/owner permissions and a Productive plan to create rules.
|
||||
|
||||
**Example Use Cases:**
|
||||
- Sync new contact groups to external CRM systems
|
||||
- Set up automatic group permissions and access controls
|
||||
- Create corresponding lists in marketing automation platforms
|
||||
- Track contact organization for sales pipeline management
|
||||
- Initialize group-specific workflows and templates
|
||||
`,
|
||||
}),
|
||||
},
|
||||
type: TriggerStrategy.WEBHOOK,
|
||||
sampleData: {
|
||||
rule: {
|
||||
id: "45408b30-aa3a-45n1-bh67-0a0cb8da9080",
|
||||
description: "New contact group webhook",
|
||||
type: "new_contact_group"
|
||||
},
|
||||
contact_group: {
|
||||
id: "group_12345678-abcd-1234-5678-1234567890ab",
|
||||
name: "Enterprise Customers",
|
||||
kind: "organization",
|
||||
description: "High-value enterprise customer accounts",
|
||||
contact_book: "book_12345678-abcd-1234-5678-1234567890ab",
|
||||
created_at: "2023-07-27T10:00:00+00:00",
|
||||
modified_at: 1556200645,
|
||||
organization: {
|
||||
id: "org_12345678-abcd-1234-5678-1234567890ab",
|
||||
name: "Your Organization"
|
||||
},
|
||||
creator: {
|
||||
id: "user_12345678-abcd-1234-5678-1234567890ab",
|
||||
name: "Group Creator",
|
||||
email: "creator@company.com"
|
||||
},
|
||||
member_count: 0,
|
||||
tags: ["enterprise", "high-value", "priority"]
|
||||
}
|
||||
},
|
||||
|
||||
async onEnable(context) {
|
||||
// Manual setup - no programmatic registration needed
|
||||
},
|
||||
|
||||
async onDisable(context) {
|
||||
// Manual setup - users manage rules in Missive UI
|
||||
},
|
||||
|
||||
async run(context) {
|
||||
return [context.payload.body];
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,125 @@
|
||||
import {
|
||||
createTrigger,
|
||||
Property,
|
||||
TriggerStrategy,
|
||||
} from '@activepieces/pieces-framework';
|
||||
import { missiveAuth } from '../common/auth';
|
||||
|
||||
export const newContact = createTrigger({
|
||||
name: 'new_contact',
|
||||
displayName: 'New Contact',
|
||||
description: 'Triggers when new contacts are added to contact books',
|
||||
auth: missiveAuth,
|
||||
props: {
|
||||
setupInstructions: Property.MarkDown({
|
||||
value: `
|
||||
## Setup Instructions
|
||||
|
||||
To use this trigger, you need to manually create a webhook rule in your Missive account:
|
||||
|
||||
### 1. Access Missive Rules
|
||||
- Open Missive and go to **Settings > Rules**
|
||||
- Click **"New incoming rule"** or **"New outgoing rule"**
|
||||
|
||||
### 2. Configure the Trigger
|
||||
In the **When should rule trigger?** section:
|
||||
- Look for **"New contact"** or **"Contact created"** in the available trigger types
|
||||
- Select this option to trigger on contact creation
|
||||
|
||||
### 3. Add Filters (Optional)
|
||||
Configure filters like:
|
||||
- **Contact book** - Only contacts added to specific contact books
|
||||
- **Contact owner** - Only contacts assigned to specific users
|
||||
- **Has email** - Only contacts with email addresses
|
||||
- **Has phone** - Only contacts with phone numbers
|
||||
- **Organization membership** - Contacts belonging to specific organizations
|
||||
- **Starred contacts** - Only starred contacts
|
||||
|
||||
### 4. Set Webhook Action
|
||||
1. In the **Actions** section, select **"Webhook"**
|
||||
2. Paste this URL in the **Webhook URL** field:
|
||||
\`\`\`text
|
||||
{{webhookUrl}}
|
||||
\`\`\`
|
||||
3. Set **HTTP Method** to **POST**
|
||||
4. Leave **Content Type** as **application/json**
|
||||
|
||||
### 5. Save the Rule
|
||||
- Click **Save** to activate the webhook
|
||||
- Missive will validate your endpoint automatically
|
||||
|
||||
---
|
||||
|
||||
**Note:** You need admin/owner permissions and a Productive plan to create rules.
|
||||
|
||||
**Example Use Cases:**
|
||||
- Sync new contacts to your CRM automatically
|
||||
- Send welcome emails to new business contacts
|
||||
- Add new contacts to marketing automation workflows
|
||||
- Alert sales team when new prospects are added
|
||||
- Backup contact data to external systems
|
||||
`,
|
||||
}),
|
||||
},
|
||||
type: TriggerStrategy.WEBHOOK,
|
||||
sampleData: {
|
||||
rule: {
|
||||
id: "45408b30-aa3a-45n1-bh67-0a0cb8da9080",
|
||||
description: "New contact webhook",
|
||||
type: "new_contact"
|
||||
},
|
||||
contact: {
|
||||
id: "contact_12345678-abcd-1234-5678-1234567890ab",
|
||||
first_name: "John",
|
||||
last_name: "Doe",
|
||||
middle_name: "Michael",
|
||||
starred: false,
|
||||
contact_book: "487bc080-6631-4edc-830e-1d114eef4ab0",
|
||||
created_at: "2023-07-27T10:00:00+00:00",
|
||||
modified_at: 1556200645,
|
||||
infos: [
|
||||
{
|
||||
kind: "email",
|
||||
label: "work",
|
||||
value: "john.doe@company.com"
|
||||
},
|
||||
{
|
||||
kind: "phone_number",
|
||||
label: "mobile",
|
||||
value: "+1-555-123-4567"
|
||||
}
|
||||
],
|
||||
memberships: [
|
||||
{
|
||||
title: "Sales Manager",
|
||||
location: "New York",
|
||||
group: {
|
||||
kind: "organization",
|
||||
name: "ABC Corporation"
|
||||
}
|
||||
}
|
||||
],
|
||||
organization: {
|
||||
id: "org_12345678-abcd-1234-5678-1234567890ab",
|
||||
name: "Your Organization"
|
||||
},
|
||||
owner: {
|
||||
id: "user_12345678-abcd-1234-5678-1234567890ab",
|
||||
name: "Contact Owner",
|
||||
email: "owner@company.com"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
async onEnable(context) {
|
||||
// Manual setup - no programmatic registration needed
|
||||
},
|
||||
|
||||
async onDisable(context) {
|
||||
// Manual setup - users manage rules in Missive UI
|
||||
},
|
||||
|
||||
async run(context) {
|
||||
return [context.payload.body];
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,131 @@
|
||||
import {
|
||||
createTrigger,
|
||||
Property,
|
||||
TriggerStrategy,
|
||||
} from '@activepieces/pieces-framework';
|
||||
import { missiveAuth } from '../common/auth';
|
||||
|
||||
export const newMessage = createTrigger({
|
||||
name: 'new_message',
|
||||
displayName: 'New Message',
|
||||
description: 'Triggers when new messages are received (email, SMS, WhatsApp, Facebook, etc.)',
|
||||
auth: missiveAuth,
|
||||
props: {
|
||||
setupInstructions: Property.MarkDown({
|
||||
value: `
|
||||
## Setup Instructions
|
||||
|
||||
To use this trigger, you need to manually create a webhook rule in your Missive account:
|
||||
|
||||
### 1. Access Missive Rules
|
||||
- Open Missive and go to **Settings > Rules**
|
||||
- Click **"New incoming rule"** or **"New outgoing rule"**
|
||||
|
||||
### 2. Configure the Trigger
|
||||
Choose from these message types:
|
||||
- **Email** - Incoming email messages
|
||||
- **SMS** - Text messages
|
||||
- **WhatsApp** - WhatsApp messages
|
||||
- **Facebook Messenger** - Facebook messages
|
||||
- **Instagram** - Instagram messages
|
||||
- **Twitter** - Twitter messages
|
||||
- **Missive Live Chat** - Live chat messages
|
||||
|
||||
### 3. Add Filters (Optional)
|
||||
Configure filters like:
|
||||
- Specific sender email addresses
|
||||
- Subject line contains text
|
||||
- Message content contains keywords
|
||||
- Organization or team scope
|
||||
|
||||
### 4. Set Webhook Action
|
||||
1. In the **Actions** section, select **"Webhook"**
|
||||
2. Paste this URL in the **Webhook URL** field:
|
||||
\`\`\`text
|
||||
{{webhookUrl}}
|
||||
\`\`\`
|
||||
3. Set **HTTP Method** to **POST**
|
||||
4. Leave **Content Type** as **application/json**
|
||||
|
||||
### 5. Save the Rule
|
||||
- Click **Save** to activate the webhook
|
||||
- Missive will validate your endpoint automatically
|
||||
|
||||
---
|
||||
|
||||
**Note:** You need admin/owner permissions and a Productive plan to create rules.
|
||||
|
||||
**Example Use Cases:**
|
||||
- Trigger when emails from specific customers arrive
|
||||
- Process all WhatsApp messages for customer support
|
||||
- Route urgent emails (subject contains "URGENT") to special workflows
|
||||
- Log all social media interactions to your CRM
|
||||
`,
|
||||
}),
|
||||
},
|
||||
type: TriggerStrategy.WEBHOOK,
|
||||
sampleData: {
|
||||
rule: {
|
||||
id: "45408b30-aa3a-45n1-bh67-0a0cb8da9080",
|
||||
description: "New message webhook",
|
||||
type: "incoming_email"
|
||||
},
|
||||
conversation: {
|
||||
id: "47a57b76-df42-4d8k-927x-80dbe5d87191",
|
||||
subject: "Important customer inquiry",
|
||||
latest_message_subject: "Re: Important customer inquiry",
|
||||
organization: {
|
||||
id: "93e5e5d5-11a2-4c9b-80b8-94f3c08068cf",
|
||||
name: "Your Organization"
|
||||
},
|
||||
team: {
|
||||
id: "2f618f9e-d3d4-4a01-b7d5-57124ab366b8",
|
||||
name: "Support Team",
|
||||
organization: "93e5e5d5-11a2-4c9b-80b8-94f3c08068cf"
|
||||
},
|
||||
assignees: [
|
||||
{
|
||||
id: "6b52b6b9-9b51-46ad-a4e3-82ef3c45512c",
|
||||
name: "John Doe",
|
||||
email: "john@company.com"
|
||||
}
|
||||
],
|
||||
shared_labels: [
|
||||
{
|
||||
id: "146ff5c4-d5la-3b63-b994-76711fn790lq",
|
||||
name: "Customer Support"
|
||||
}
|
||||
],
|
||||
web_url: "https://mail.missiveapp.com/#inbox/conversations/47a57b76-df42-4d8k-927x-80dbe5d87191"
|
||||
},
|
||||
latest_message: {
|
||||
id: "86ef8bb8-269c-4959-a4f0-213db4e67844",
|
||||
subject: "Important customer inquiry",
|
||||
preview: "Hi there, I need help with my recent order...",
|
||||
type: "email",
|
||||
delivered_at: 1548415828,
|
||||
from_field: {
|
||||
name: "Customer Name",
|
||||
address: "customer@example.com"
|
||||
},
|
||||
to_fields: [
|
||||
{
|
||||
name: "Support Team",
|
||||
address: "support@company.com"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
|
||||
async onEnable(context) {
|
||||
// Manual setup - no programmatic registration needed
|
||||
},
|
||||
|
||||
async onDisable(context) {
|
||||
// Manual setup - users manage rules in Missive UI
|
||||
},
|
||||
|
||||
async run(context) {
|
||||
return [context.payload.body];
|
||||
},
|
||||
});
|
||||
Reference in New Issue
Block a user