Add Activepieces integration for workflow automation

- Add Activepieces fork with SmoothSchedule custom piece
- Create integrations app with Activepieces service layer
- Add embed token endpoint for iframe integration
- Create Automations page with embedded workflow builder
- Add sidebar visibility fix for embed mode
- Add list inactive customers endpoint to Public API
- Include SmoothSchedule triggers: event created/updated/cancelled
- Include SmoothSchedule actions: create/update/cancel events, list resources/services/customers

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
poduck
2025-12-18 22:59:37 -05:00
parent 9848268d34
commit 3aa7199503
16292 changed files with 1284892 additions and 4708 deletions

View File

@@ -0,0 +1,168 @@
{
"Customer messaging platform for sales, marketing, and support": "Kunden-Messaging-Plattform für Verkauf, Marketing und Support",
"Region": "Region",
"US": "MN",
"EU": "EU",
"AU": "TU",
"\nPlease follow the instructions to create Intercom Oauth2 app.\n\n1.Log in to your Intercom account and navigate to **Settings > Integrations > Developer Hub**.\n2.Click on **Create a new app** and select the appropriate workspace.\n3.In **Authentication** section, add Redirect URL.\n4.In **Webhooks** section, select the events you want to receive.\n5.Go to the **Basic Information** section and copy the Client ID and Client Secret.\n": "\nBitte befolge die Anweisungen, um Intercom Oauth2 App zu erstellen.\n\n1. zu Ihrem Intercom-Konto eintragen und zu **Einstellungen > Integrationen > EntwicklerHub** navigieren.\n2.Klicken Sie auf **Neue App erstellen** und wählen Sie den passenden Arbeitsbereich.\n3.Im Abschnitt **Authentifizierung** fügen Sie Umleitungs-URL hinzu.\n4.Im Abschnitt **Webhooks** wählen Sie die Ereignisse, die Sie erhalten möchten.\n5.Gehe zum Abschnitt **Basisinformationen** und kopiere die Kunden-ID und das Kundengeheimnis.\n",
"Add Note": "Notiz hinzufügen",
"Add note to conversation": "Notiz zur Unterhaltung hinzufügen",
"Add/Remove Tag on Contact": "Tag beim Kontakt hinzufügen/entfernen",
"Add/Remove Tag on Company": "Tag in Unternehmen hinzufügen/entfernen",
"Add/Remove Tag on Conversation": "Tag bei Unterhaltung hinzufügen/entfernen",
"Create Article": "Artikel erstellen",
"Create Conversation": "Unterhaltung erstellen",
"Create Ticket": "Ticket erstellen",
"Create User": "Benutzer erstellen",
"Create or Update Lead": "Lead erstellen oder aktualisieren",
"Create/Update User": "Benutzer erstellen/aktualisieren",
"Reply to conversation": "Auf Unterhaltung antworten",
"Send Message": "Nachricht senden",
"Update Ticket": "Ticket aktualisieren",
"Find Company": "Firma finden",
"Find Conversation": "Unterhaltung finden",
"Find Lead": "Lead finden",
"Find User": "Benutzer finden",
"List Tags": "Listen-Tags",
"Retrieve a Conversation": "Unterhaltung abrufen",
"Custom API Call": "Eigener API-Aufruf",
"Add a note to a user": "Eine Notiz zu einem Benutzer hinzufügen",
"Add a note (for other admins) to an existing conversation": "Eine Notiz (für andere Admins) zu einer bestehenden Unterhaltung hinzufügen",
"Attach or remove a tag from a specific contact.": "Ein Schlagwort von einem bestimmten Kontakt hinzufügen oder entfernen.",
"Attach or remove a tag from a specific company.": "Ein Schlagwort eines bestimmten Unternehmens anhängen oder entfernen.",
"Attach or remove a tag from a specific conversation.": "Füge ein Schlagwort einer bestimmten Unterhaltung hinzu oder entferne es.",
"Creates a new article in your Help Center.": "Erstellt einen neuen Artikel in Ihrem Hilfe-Center.",
"Creates a new conversation from a contact.": "Erstellt eine neue Unterhaltung von einem Kontakt.",
"Creates a new ticket.": "Erstellt ein neues Ticket.",
"Creates a new user.": "Erstellt einen neuen Benutzer.",
"Create or update an Intercom lead.If an ID is provided, the lead will be updated.": "Erstellen oder aktualisieren Sie einen Intercom-Lead.Wenn eine ID angegeben wird, wird der Lead aktualisiert.",
"Update a user within intercom given an email address.": "Aktualisieren Sie einen Benutzer innerhalb der Intercom eine E-Mail-Adresse.",
"Reply (as an admin) to a conversation with a contact": "Antwort (als Admin) auf eine Unterhaltung mit einem Kontakt",
"Send a message to a contact (only allowed by admins)": "Sende eine Nachricht an einen Kontakt (nur von Administratoren erlaubt)",
"Updates an existing ticket.": "Aktualisiert ein bestehendes Ticket.",
"Finds an existing company.": "Findet ein bestehendes Unternehmen.",
"Searches for conversations using various criteria": "Sucht nach Unterhaltungen nach verschiedenen Kriterien",
"Finds an existing lead.": "Findet einen existierenden Blei.",
"Finds an existing user.": "Findet einen existierenden Benutzer.",
"List all tags.": "Alle Tags auflisten.",
"Retrieves a specific conversation by ID.": "Ruft eine bestimmte Konversation durch ID ab.",
"Make a custom API call to a specific endpoint": "Einen benutzerdefinierten API-Aufruf an einen bestimmten Endpunkt machen",
"Email": "E-Mail",
"Note Text": "Notiztext",
"From (Admin)": "Von (Admin)",
"Conversation ID": "Konversations-ID",
"Message Body": "Nachrichtentext",
"Contact ID": "Kontakt-ID",
"Tag Name": "Tag-Name",
"Untag ?": "Untag ?",
"Company ID": "Firmen-ID",
"Tag": "Markierung",
"Title": "Titel",
"Description": "Beschreibung",
"Body": "Körper",
"Author": "Autor",
"State": "Bundesland",
"Parent Collection": "Übergeordnete Sammlung",
"Contact Type": "Kontakttyp",
"Ticket Type": "Ticket-Typ",
"Ticket Properties": "Ticket-Eigenschaften",
"Created At": "Erstellt am",
"User ID": "Benutzer-ID",
"Full Name": "Voller Name",
"Custom Attributes": "Eigene Attribute",
"Lead ID": "Lead-ID",
"Phone": "Telefon",
"Unsubscribed From Emails": "Von E-Mails abgemeldet",
"Lookup Email": "Suche E-Mail",
"Message Type": "Nachrichtenart",
"Email Required Fields": "Benötigte Felder per E-Mail",
"To": "An",
"Create Conversation Without Contact Reply": "Unterhaltung ohne Kontaktantwort erstellen",
"Ticket": "Ticket",
"Is Open": "Ist offen",
"Snoozed Until": "Schlummert bis",
"Assigned Admin": "Zugewiesener Admin",
"Search Field": "Suchfeld",
"Search Value": "Suchwert",
"Match Type": "Match-Typ",
"Search Term": "Suchbegriff",
"Status": "Status",
"Update After": "Update nach",
"Update Before": "Update vor",
"Method": "Methode",
"Headers": "Kopfzeilen",
"Query Parameters": "Abfrageparameter",
"Response is Binary ?": "Antwort ist binär?",
"No Error on Failure": "Kein Fehler bei Fehler",
"Timeout (in seconds)": "Timeout (in Sekunden)",
"Whether a conversation should be opened in the inbox for the message without the contact replying. Defaults to false if not provided.": "Gibt an, ob eine Unterhaltung im Posteingang für die Nachricht geöffnet werden soll, ohne dass der Kontakt antwortet. Standard ist falsch, wenn nicht angegeben.",
"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..",
"Draft": "Entwurf",
"Published": "Veröffentlicht",
"User": "Benutzer",
"Lead": "Lead",
"In App Chat": "Im App-Chat",
"In Progress": "In Bearbeitung",
"Waiting on Customer": "Warte auf Kunde",
"Resolved": "Gelöst",
"Name": "Name",
"Subject": "Betreff",
"Author Email": "Autor E-Mail",
"Team": "Team",
"Tag IDs": "Tag-IDs",
"Contains": "Enthält",
"Equals": "Gleich",
"Starts With": "Beginnt mit",
"Open": "Öffnen",
"Closed": "Geschlossen",
"ID": "ID",
"GET": "ERHALTEN",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "LÖSCHEN",
"HEAD": "HEAD",
"Contact Replied": "Kontakt beantwortet",
"Lead Added Email": "Lead hinzugefügte E-Mail",
"Lead Converted To User": "Lead konvertiert zu Benutzer",
"Conversation Closed": "Unterhaltung geschlossen",
"Conversation assigned to any Intercom admin": "Unterhaltung einem Intercom-Administrator zugewiesen",
"Conversation snoozed": "Unterhaltung geschummelt",
"Conversation unsnoozed": "Unterhaltung unnoosiert",
"New Company": "Neue Firma",
"New Conversation": "Neue Unterhaltung",
"Conversation was rated": "Unterhaltung wurde bewertet",
"New Lead": "Neuer Lead",
"New Ticket": "Neues Ticket",
"New User": "Neuer Benutzer",
"Tag added to a conversation part": "Tag zu einem Konversationsteil hinzugefügt",
"Tag Added to Lead": "Tag zum Lead hinzugefügt",
"Tag Added to User": "Tag hinzugefügt zu Benutzer",
"Updated Contact": "Kontakt aktualisiert",
"Reply from a user or lead": "Antwort von einem Benutzer oder Lead",
"Reply from an Intercom admin": "Von einem Intercom-Admin antworten",
"Note added to conversation": "Notiz zur Unterhaltung hinzugefügt",
"Triggers when a contact replies to a Conversation in Intercom.": "Wird ausgelöst, wenn ein Kontakt auf eine Unterhaltung in Intercom antwortet.",
"Triggers when a lead enters an email address.": "Wird ausgelöst, wenn ein Lead eine E-Mail-Adresse eingibt.",
"Triggers when a lead is converted to a user.": "Wird ausgelöst, wenn ein Lead in einen Benutzer konvertiert wird.",
"Triggers when a conversation is closed.": "Wird ausgelöst, wenn eine Unterhaltung geschlossen wird.",
"Triggers when a conversation is assigned to an admin": "Wird ausgelöst, wenn eine Unterhaltung einem Admin zugewiesen wird",
"Triggers when a conversation is snoozed": "Wird ausgelöst, wenn eine Unterhaltung geschummelt wird",
"Triggers when a conversation is unsnoozed": "Wird ausgelöst, wenn eine Unterhaltung ungestört ist",
"Triggers when a new company is created.": "Wird ausgelöst, wenn ein neues Unternehmen gegründet wird.",
"Triggers when a conversation is created by a user or lead (not an admin).": "Wird ausgelöst, wenn eine Unterhaltung von einem Benutzer oder Lead erstellt wird (nicht einem Admin).",
"Triggers when a conversation is rated": "Wird ausgelöst, wenn eine Unterhaltung bewertet wird",
"Triggers when a new lead is created.": "Wird ausgelöst, wenn ein neuer Lead erstellt wird.",
"Triggers when a new ticket is created.": "Wird ausgelöst, wenn ein neues Ticket erstellt wird.",
"Triggers when a new user is created.": "Wird ausgelöst, wenn ein neuer Benutzer erstellt wird.",
"Triggers when a conversation part is tagged.": "Wird ausgelöst, wenn ein Gesprächsteil getaggt wird.",
"Triggers when a tag is added to a lead.": "Wird ausgelöst, wenn ein Tag zu einer Lead hinzugefügt wird.",
"Triggers when a tag is added to a user.": "Wird ausgelöst, wenn ein Tag einem Benutzer hinzugefügt wird.",
"Triggers when a contact is updated.": "Wird ausgelöst, wenn ein Kontakt aktualisiert wird.",
"Triggers when a reply is received from a user or lead (not an admin)": "Löst aus, wenn eine Antwort von einem Benutzer oder Lead (kein Admin) empfangen wird",
"Triggers when a reply is received from an Intercom admin (not a user or lead)": "Löst aus, wenn eine Antwort von einem Intercom-Administrator empfangen wird (kein Benutzer oder Führer)",
"Triggers when a note is added to a conversation": "Löst aus, wenn eine Notiz zu einer Unterhaltung hinzugefügt wird",
"Type": "Typ",
"Keyword (optional)": "Stichwort (optional)"
}

View File

@@ -0,0 +1,168 @@
{
"Customer messaging platform for sales, marketing, and support": "Plataforma de mensajería de clientes para ventas, mercadeo y soporte",
"Region": "Región",
"US": "SUS",
"EU": "EU",
"AU": "AU",
"\nPlease follow the instructions to create Intercom Oauth2 app.\n\n1.Log in to your Intercom account and navigate to **Settings > Integrations > Developer Hub**.\n2.Click on **Create a new app** and select the appropriate workspace.\n3.In **Authentication** section, add Redirect URL.\n4.In **Webhooks** section, select the events you want to receive.\n5.Go to the **Basic Information** section and copy the Client ID and Client Secret.\n": "\nPlease follow the instructions to create Intercom Oauth2 app.\n\n1.Log in to your Intercom account and navigate to **Settings > Integrations > Developer Hub**.\n2.Click on **Create a new app** and select the appropriate workspace.\n3.In **Authentication** section, add Redirect URL.\n4.In **Webhooks** section, select the events you want to receive.\n5.Go to the **Basic Information** section and copy the Client ID and Client Secret.\n",
"Add Note": "Añadir nota",
"Add note to conversation": "Añadir nota a la conversación",
"Add/Remove Tag on Contact": "Añadir/Quitar etiqueta en contacto",
"Add/Remove Tag on Company": "Añadir/Quitar etiqueta de la empresa",
"Add/Remove Tag on Conversation": "Añadir/Quitar etiqueta en la conversación",
"Create Article": "Crear artículo",
"Create Conversation": "Crear conversación",
"Create Ticket": "Crear Ticket",
"Create User": "Crear usuario",
"Create or Update Lead": "Crear o actualizar el cliente principal",
"Create/Update User": "Crear/Actualizar Usuario",
"Reply to conversation": "Responder a la conversación",
"Send Message": "Enviar mensaje",
"Update Ticket": "Actualizar Ticket",
"Find Company": "Buscar empresa",
"Find Conversation": "Encontrar conversación",
"Find Lead": "Buscar plomo",
"Find User": "Buscar usuario",
"List Tags": "Listar etiquetas",
"Retrieve a Conversation": "Recuperar una conversación",
"Custom API Call": "Llamada API personalizada",
"Add a note to a user": "Añadir una nota a un usuario",
"Add a note (for other admins) to an existing conversation": "Añadir una nota (para otros administradores) a una conversación existente",
"Attach or remove a tag from a specific contact.": "Adjuntar o eliminar una etiqueta de un contacto específico.",
"Attach or remove a tag from a specific company.": "Adjuntar o quitar una etiqueta de una empresa específica.",
"Attach or remove a tag from a specific conversation.": "Adjuntar o quitar una etiqueta de una conversación específica.",
"Creates a new article in your Help Center.": "Crea un nuevo artículo en tu Centro de Ayuda.",
"Creates a new conversation from a contact.": "Crea una nueva conversación a partir de un contacto.",
"Creates a new ticket.": "Crea un nuevo Ticket.",
"Creates a new user.": "Crea un nuevo usuario.",
"Create or update an Intercom lead.If an ID is provided, the lead will be updated.": "Crear o actualizar un cliente de Intercom. Si se proporciona un ID, el cliente potencial se actualizará.",
"Update a user within intercom given an email address.": "Actualizar un usuario dentro del intercom dado una dirección de correo electrónico.",
"Reply (as an admin) to a conversation with a contact": "Responder (como administrador) a una conversación con un contacto",
"Send a message to a contact (only allowed by admins)": "Enviar un mensaje a un contacto (sólo permitido por los administradores)",
"Updates an existing ticket.": "Actualiza un ticket existente.",
"Finds an existing company.": "Encuentra una empresa existente.",
"Searches for conversations using various criteria": "Busca conversaciones usando varios criterios",
"Finds an existing lead.": "Encuentra un plomo existente.",
"Finds an existing user.": "Encuentra un usuario existente.",
"List all tags.": "Listar todas las etiquetas.",
"Retrieves a specific conversation by ID.": "Recuperar una conversación específica por ID.",
"Make a custom API call to a specific endpoint": "Hacer una llamada API personalizada a un extremo específico",
"Email": "E-mail",
"Note Text": "Nota texto",
"From (Admin)": "De (Admin)",
"Conversation ID": "ID de conversación",
"Message Body": "Cuerpo",
"Contact ID": "ID de contacto",
"Tag Name": "Nombre de la etiqueta",
"Untag ?": "Untag ?",
"Company ID": "ID de empresa",
"Tag": "Etiqueta",
"Title": "Título",
"Description": "Descripción",
"Body": "Cuerpo",
"Author": "Autor",
"State": "Estado",
"Parent Collection": "Colección padre",
"Contact Type": "Tipo de contacto",
"Ticket Type": "Tipo de ticket",
"Ticket Properties": "Propiedades del Ticket",
"Created At": "Creado el",
"User ID": "ID Usuario",
"Full Name": "Nombre completo",
"Custom Attributes": "Atributos personalizados",
"Lead ID": "ID de plomo",
"Phone": "Teléfono",
"Unsubscribed From Emails": "Desuscrito de correos electrónicos",
"Lookup Email": "Buscar Email",
"Message Type": "Tipo de mensaje",
"Email Required Fields": "Campos requeridos por email",
"To": "A",
"Create Conversation Without Contact Reply": "Crear conversación sin respuesta de contacto",
"Ticket": "Ticket",
"Is Open": "Está abierto",
"Snoozed Until": "Retrasado hasta",
"Assigned Admin": "Admin asignado",
"Search Field": "Campo de búsqueda",
"Search Value": "Valor de búsqueda",
"Match Type": "Tipo de partida",
"Search Term": "Buscar término",
"Status": "Estado",
"Update After": "Actualizar después de",
"Update Before": "Actualizar antes",
"Method": "Método",
"Headers": "Encabezados",
"Query Parameters": "Parámetros de consulta",
"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)",
"Whether a conversation should be opened in the inbox for the message without the contact replying. Defaults to false if not provided.": "Si una conversación debe abrirse en la bandeja de entrada del mensaje sin que el contacto responda. Por defecto es falso si no se proporciona.",
"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.",
"Draft": "Borrador",
"Published": "Publicado",
"User": "Usuario",
"Lead": "Plomo",
"In App Chat": "En App Chat",
"In Progress": "En curso",
"Waiting on Customer": "Esperando al cliente",
"Resolved": "Resuelto",
"Name": "Nombre",
"Subject": "Asunto",
"Author Email": "Email del autor",
"Team": "Equipo",
"Tag IDs": "ID de etiqueta",
"Contains": "Contiene",
"Equals": "Iguales",
"Starts With": "Comienza por",
"Open": "Abrir",
"Closed": "Cerrado",
"ID": "ID",
"GET": "RECOGER",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "BORRAR",
"HEAD": "LIMPIO",
"Contact Replied": "Contacto contestado",
"Lead Added Email": "Correo principal añadido",
"Lead Converted To User": "Prospectos convertidos a usuario",
"Conversation Closed": "Conversación cerrada",
"Conversation assigned to any Intercom admin": "Conversación asignada a cualquier administrador de Intercom",
"Conversation snoozed": "Conversación pospuesta",
"Conversation unsnoozed": "Conversación no pospuesta",
"New Company": "Nueva empresa",
"New Conversation": "Nueva conversación",
"Conversation was rated": "La conversación ha sido calificada",
"New Lead": "Nuevo plomo",
"New Ticket": "Nuevo Ticket",
"New User": "Nuevo usuario",
"Tag added to a conversation part": "Etiqueta añadida a una parte de conversación",
"Tag Added to Lead": "Etiqueta añadida al plomo",
"Tag Added to User": "Etiqueta añadida al usuario",
"Updated Contact": "Contacto actualizado",
"Reply from a user or lead": "Responder de un usuario o líder",
"Reply from an Intercom admin": "Responder de un administrador de Intercom",
"Note added to conversation": "Nota añadida a la conversación",
"Triggers when a contact replies to a Conversation in Intercom.": "Dispara cuando un contacto responde a una conversación en Intercom.",
"Triggers when a lead enters an email address.": "Desencadena cuando un plomo introduce una dirección de correo electrónico.",
"Triggers when a lead is converted to a user.": "Dispara cuando un plomo se convierte en un usuario.",
"Triggers when a conversation is closed.": "Dispara cuando una conversación está cerrada.",
"Triggers when a conversation is assigned to an admin": "Dispara cuando una conversación es asignada a un administrador",
"Triggers when a conversation is snoozed": "Dispara cuando una conversación es pospuesta",
"Triggers when a conversation is unsnoozed": "Dispara cuando una conversación no está pospuesta",
"Triggers when a new company is created.": "Dispara cuando se crea una nueva empresa.",
"Triggers when a conversation is created by a user or lead (not an admin).": "Se activa cuando una conversación es creada por un usuario o líder (no por un administrador).",
"Triggers when a conversation is rated": "Dispara cuando una conversación es valorada",
"Triggers when a new lead is created.": "Dispara cuando se crea un nuevo plomo.",
"Triggers when a new ticket is created.": "Dispara cuando se crea un nuevo ticket.",
"Triggers when a new user is created.": "Dispara cuando se crea un nuevo usuario.",
"Triggers when a conversation part is tagged.": "Dispara cuando una parte de conversación está etiquetada.",
"Triggers when a tag is added to a lead.": "Dispara cuando una etiqueta se agrega a un lead.",
"Triggers when a tag is added to a user.": "Dispara cuando se agrega una etiqueta a un usuario.",
"Triggers when a contact is updated.": "Dispara cuando un contacto es actualizado.",
"Triggers when a reply is received from a user or lead (not an admin)": "Dispara cuando una respuesta es recibida de un usuario o usuario principal (no de un administrador)",
"Triggers when a reply is received from an Intercom admin (not a user or lead)": "Dispara cuando una respuesta es recibida de un administrador de Intercom (no un usuario o lead)",
"Triggers when a note is added to a conversation": "Dispara cuando se agrega una nota a una conversación",
"Type": "Tipo",
"Keyword (optional)": "Palabra clave (opcional)"
}

View File

@@ -0,0 +1,168 @@
{
"Customer messaging platform for sales, marketing, and support": "Plateforme de messagerie client pour les ventes, le marketing et le support",
"Region": "Région",
"US": "US",
"EU": "EU",
"AU": "UA",
"\nPlease follow the instructions to create Intercom Oauth2 app.\n\n1.Log in to your Intercom account and navigate to **Settings > Integrations > Developer Hub**.\n2.Click on **Create a new app** and select the appropriate workspace.\n3.In **Authentication** section, add Redirect URL.\n4.In **Webhooks** section, select the events you want to receive.\n5.Go to the **Basic Information** section and copy the Client ID and Client Secret.\n": "\nPlease follow the instructions to create Intercom Oauth2 app.\n\n1.Log in to your Intercom account and navigate to **Settings > Integrations > Developer Hub**.\n2.Click on **Create a new app** and select the appropriate workspace.\n3.In **Authentication** section, add Redirect URL.\n4.In **Webhooks** section, select the events you want to receive.\n5.Go to the **Basic Information** section and copy the Client ID and Client Secret.\n",
"Add Note": "Ajouter une note",
"Add note to conversation": "Ajouter une note à la conversation",
"Add/Remove Tag on Contact": "Ajouter/Supprimer le tag sur le contact",
"Add/Remove Tag on Company": "Ajouter/Retirer le tag de la société",
"Add/Remove Tag on Conversation": "Ajouter/Supprimer le tag dans la conversation",
"Create Article": "Créer un article",
"Create Conversation": "Créer une conversation",
"Create Ticket": "Créer un ticket",
"Create User": "Créer un utilisateur",
"Create or Update Lead": "Créer ou mettre à jour le prospect",
"Create/Update User": "Créer/Mettre à jour l'utilisateur",
"Reply to conversation": "Répondre à la conversation",
"Send Message": "Envoyer un message",
"Update Ticket": "Mettre à jour le ticket",
"Find Company": "Trouver une entreprise",
"Find Conversation": "Trouver une conversation",
"Find Lead": "Trouver un prospect",
"Find User": "Trouver un utilisateur",
"List Tags": "Lister les tags",
"Retrieve a Conversation": "Récupérer une conversation",
"Custom API Call": "Appel API personnalisé",
"Add a note to a user": "Ajouter une note à un utilisateur",
"Add a note (for other admins) to an existing conversation": "Ajouter une note (pour les autres administrateurs) à une conversation existante",
"Attach or remove a tag from a specific contact.": "Attacher ou supprimer un tag à un contact spécifique.",
"Attach or remove a tag from a specific company.": "Attachez ou supprimez un tag d'une société spécifique.",
"Attach or remove a tag from a specific conversation.": "Attacher ou supprimer un tag d'une conversation spécifique.",
"Creates a new article in your Help Center.": "Crée un nouvel article dans votre centre d'aide.",
"Creates a new conversation from a contact.": "Crée une nouvelle conversation à partir d'un contact.",
"Creates a new ticket.": "Crée un nouveau ticket.",
"Creates a new user.": "Crée un nouvel utilisateur.",
"Create or update an Intercom lead.If an ID is provided, the lead will be updated.": "Créer ou mettre à jour un prospect Intercom. Si un ID est fourni, le prospect sera mis à jour.",
"Update a user within intercom given an email address.": "Mettre à jour un utilisateur dans intercom avec une adresse e-mail.",
"Reply (as an admin) to a conversation with a contact": "Répondre (en tant qu'administrateur) à une conversation avec un contact",
"Send a message to a contact (only allowed by admins)": "Envoyer un message à un contact (uniquement autorisé par les administrateurs)",
"Updates an existing ticket.": "Met à jour un ticket existant.",
"Finds an existing company.": "Trouve une société existante.",
"Searches for conversations using various criteria": "Recherche des conversations selon différents critères",
"Finds an existing lead.": "Trouve un prospect existant.",
"Finds an existing user.": "Trouve un utilisateur existant.",
"List all tags.": "Lister tous les tags.",
"Retrieves a specific conversation by ID.": "Récupère une conversation spécifique par ID.",
"Make a custom API call to a specific endpoint": "Passez un appel API personnalisé à un point de terminaison spécifique",
"Email": "Courriel",
"Note Text": "Texte de la note",
"From (Admin)": "De (Admin)",
"Conversation ID": "ID de la conversation",
"Message Body": "Corps du message",
"Contact ID": "ID du contact",
"Tag Name": "Nom de l'étiquette",
"Untag ?": "Untag ?",
"Company ID": "ID de la société",
"Tag": "Étiquette",
"Title": "Titre de la page",
"Description": "Libellé",
"Body": "Corps",
"Author": "Auteur",
"State": "État",
"Parent Collection": "Collection parente",
"Contact Type": "Type de contact",
"Ticket Type": "Type de ticket",
"Ticket Properties": "Propriétés du ticket",
"Created At": "Créé le",
"User ID": "Identifiant de l'utilisateur",
"Full Name": "Nom complet",
"Custom Attributes": "Attributs personnalisés",
"Lead ID": "ID du prospect",
"Phone": "Téléphone",
"Unsubscribed From Emails": "Désabonné des E-mails",
"Lookup Email": "Email de recherche",
"Message Type": "Type de message",
"Email Required Fields": "Champs de l'e-mail requis",
"To": "À",
"Create Conversation Without Contact Reply": "Créer une conversation sans réponse de contact",
"Ticket": "Billet",
"Is Open": "Est ouvert",
"Snoozed Until": "Reporté jusqu'au",
"Assigned Admin": "Administrateur assigné",
"Search Field": "Champ de recherche",
"Search Value": "Valeur de la recherche",
"Match Type": "Type de correspondance",
"Search Term": "Terme de recherche",
"Status": "Statut",
"Update After": "Mettre à jour après",
"Update Before": "Mettre à jour avant",
"Method": "Méthode",
"Headers": "En-têtes",
"Query Parameters": "Paramètres de requête",
"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)",
"Whether a conversation should be opened in the inbox for the message without the contact replying. Defaults to false if not provided.": "Si une conversation doit être ouverte dans la boîte de réception du message sans la réponse du contact. Faux par défaut si non fourni.",
"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.",
"Draft": "Brouillon",
"Published": "Publié",
"User": "Utilisateur",
"Lead": "Prospect",
"In App Chat": "Dans l'App Chat",
"In Progress": "En cours",
"Waiting on Customer": "En attente du client",
"Resolved": "Résolu",
"Name": "Nom",
"Subject": "Sujet",
"Author Email": "E-mail de l'auteur",
"Team": "Équipe",
"Tag IDs": "ID du tag",
"Contains": "Contient",
"Equals": "Egal",
"Starts With": "Commence avec",
"Open": "Ouvert",
"Closed": "Fermé",
"ID": "ID",
"GET": "OBTENIR",
"POST": "POSTER",
"PATCH": "PATCH",
"PUT": "EFFACER",
"DELETE": "SUPPRIMER",
"HEAD": "TÊTE",
"Contact Replied": "Contact Répondu",
"Lead Added Email": "Courriel ajouté au prospect",
"Lead Converted To User": "Prospect converti en utilisateur",
"Conversation Closed": "Conversation fermée",
"Conversation assigned to any Intercom admin": "Conversation assignée à n'importe quel administrateur Intercom",
"Conversation snoozed": "Conversation reportée",
"Conversation unsnoozed": "Conversation non reportée",
"New Company": "Nouvelle entreprise",
"New Conversation": "Nouvelle conversation",
"Conversation was rated": "La conversation a été évaluée",
"New Lead": "Nouveau prospect",
"New Ticket": "Nouveau ticket",
"New User": "Nouvel utilisateur",
"Tag added to a conversation part": "Tag ajouté à une partie de la conversation",
"Tag Added to Lead": "Étiquette ajoutée au prospect",
"Tag Added to User": "Tag ajouté à l'utilisateur",
"Updated Contact": "Contact mis à jour",
"Reply from a user or lead": "Répondre d'un utilisateur ou d'un prospect",
"Reply from an Intercom admin": "Réponse d'un administrateur Intercom",
"Note added to conversation": "Note ajoutée à la conversation",
"Triggers when a contact replies to a Conversation in Intercom.": "Déclenche lorsqu'un contact répond à une conversation dans Intercom.",
"Triggers when a lead enters an email address.": "Déclenche lorsqu'un prospect entre une adresse e-mail.",
"Triggers when a lead is converted to a user.": "Déclenche lorsqu'un prospect est converti en utilisateur.",
"Triggers when a conversation is closed.": "Déclenche quand une conversation est fermée.",
"Triggers when a conversation is assigned to an admin": "Déclenche quand une conversation est assignée à un administrateur",
"Triggers when a conversation is snoozed": "Déclenche quand une conversation est reportée",
"Triggers when a conversation is unsnoozed": "Déclenche lorsqu'une conversation est débranchée",
"Triggers when a new company is created.": "Déclenche quand une nouvelle entreprise est créée.",
"Triggers when a conversation is created by a user or lead (not an admin).": "Déclenche lorsqu'une conversation est créée par un utilisateur ou un prospect (pas un administrateur).",
"Triggers when a conversation is rated": "Déclenche quand une conversation est évaluée",
"Triggers when a new lead is created.": "Déclenche lorsqu'un nouveau prospect est créé.",
"Triggers when a new ticket is created.": "Déclenche lorsqu'un nouveau ticket est créé.",
"Triggers when a new user is created.": "Déclenche lorsqu'un nouvel utilisateur est créé.",
"Triggers when a conversation part is tagged.": "Déclenche quand une partie de conversation est étiquetée.",
"Triggers when a tag is added to a lead.": "Déclenche lorsqu'un tag est ajouté à un plomb.",
"Triggers when a tag is added to a user.": "Déclenche lorsqu'un tag est ajouté à un utilisateur.",
"Triggers when a contact is updated.": "Déclenche lorsqu'un contact est mis à jour.",
"Triggers when a reply is received from a user or lead (not an admin)": "Déclenche lorsqu'une réponse est reçue par un utilisateur ou un prospect (pas un administrateur)",
"Triggers when a reply is received from an Intercom admin (not a user or lead)": "Déclenche lorsqu'une réponse est reçue par un administrateur Intercom (pas un utilisateur ou un lead)",
"Triggers when a note is added to a conversation": "Déclenche quand une note est ajoutée à une conversation",
"Type": "Type de texte",
"Keyword (optional)": "Mot-clé (optionnel)"
}

View File

@@ -0,0 +1,168 @@
{
"Customer messaging platform for sales, marketing, and support": "営業、マーケティング、サポートのための顧客メッセージングプラットフォーム",
"Region": "地域",
"US": "米国",
"EU": "EU",
"AU": "AU",
"\nPlease follow the instructions to create Intercom Oauth2 app.\n\n1.Log in to your Intercom account and navigate to **Settings > Integrations > Developer Hub**.\n2.Click on **Create a new app** and select the appropriate workspace.\n3.In **Authentication** section, add Redirect URL.\n4.In **Webhooks** section, select the events you want to receive.\n5.Go to the **Basic Information** section and copy the Client ID and Client Secret.\n": "\nPlease follow the instructions to create Intercom Oauth2 app.\n\n1.Log in to your Intercom account and navigate to **Settings > Integrations > Developer Hub**.\n2.Click on **Create a new app** and select the appropriate workspace.\n3.In **Authentication** section, add Redirect URL.\n4.In **Webhooks** section, select the events you want to receive.\n5.Go to the **Basic Information** section and copy the Client ID and Client Secret.\n",
"Add Note": "メモを追加",
"Add note to conversation": "会話にメモを追加",
"Add/Remove Tag on Contact": "連絡先にタグを追加/削除",
"Add/Remove Tag on Company": "所属タグの追加/削除",
"Add/Remove Tag on Conversation": "会話にタグを追加/削除",
"Create Article": "記事を作成",
"Create Conversation": "会話を作成",
"Create Ticket": "チケットを作成",
"Create User": "ユーザーを作成",
"Create or Update Lead": "リードを作成または更新",
"Create/Update User": "ユーザーの作成/更新",
"Reply to conversation": "会話に返信",
"Send Message": "メッセージを送信",
"Update Ticket": "チケットを更新",
"Find Company": "会社を検索",
"Find Conversation": "会話を検索",
"Find Lead": "リードを見つける",
"Find User": "ユーザーを検索",
"List Tags": "タグ一覧",
"Retrieve a Conversation": "会話を取得",
"Custom API Call": "カスタムAPI通話",
"Add a note to a user": "ユーザーにメモを追加",
"Add a note (for other admins) to an existing conversation": "既存の会話にノート(他の管理者向け)を追加",
"Attach or remove a tag from a specific contact.": "特定の連絡先からタグを添付または削除します。",
"Attach or remove a tag from a specific company.": "特定の会社からタグを添付または削除します。",
"Attach or remove a tag from a specific conversation.": "特定の会話からタグを添付または削除します。",
"Creates a new article in your Help Center.": "ヘルプセンターで新しい記事を作成します。",
"Creates a new conversation from a contact.": "コンタクトから新しい会話を作成します。",
"Creates a new ticket.": "新しいチケットを作成します。",
"Creates a new user.": "新しいユーザーを作成します。",
"Create or update an Intercom lead.If an ID is provided, the lead will be updated.": "Intercomのリードを作成または更新します。IDが入力された場合、リードは更新されます。",
"Update a user within intercom given an email address.": "インターコム内のユーザーを更新します。",
"Reply (as an admin) to a conversation with a contact": "連絡先との会話に(管理者として)返信",
"Send a message to a contact (only allowed by admins)": "連絡先にメッセージを送信(管理者のみ許可)",
"Updates an existing ticket.": "既存のチケットを更新します",
"Finds an existing company.": "既存の会社を検索します。",
"Searches for conversations using various criteria": "さまざまな基準を使用して会話を検索します",
"Finds an existing lead.": "既存のリードを検索します。",
"Finds an existing user.": "既存のユーザーを検索します。",
"List all tags.": "すべてのタグの一覧です。",
"Retrieves a specific conversation by ID.": "IDで特定の会話を取得します。",
"Make a custom API call to a specific endpoint": "特定のエンドポイントへのカスタム API コールを実行します。",
"Email": "Eメールアドレス",
"Note Text": "ノートテキスト",
"From (Admin)": "差出人(管理者)",
"Conversation ID": "会話ID",
"Message Body": "メッセージ本文",
"Contact ID": "連絡先ID",
"Tag Name": "タグ名",
"Untag ?": "Untag ?",
"Company ID": "会社ID",
"Tag": "タグ",
"Title": "タイトル",
"Description": "Description",
"Body": "本文",
"Author": "作成者",
"State": "都道府県:",
"Parent Collection": "親コレクション",
"Contact Type": "連絡先の種類",
"Ticket Type": "チケットタイプ",
"Ticket Properties": "チケットのプロパティ",
"Created At": "作成日時",
"User ID": "ユーザー ID",
"Full Name": "フルネーム",
"Custom Attributes": "カスタム属性",
"Lead ID": "リードID",
"Phone": "電話番号",
"Unsubscribed From Emails": "メール購読解除のお知らせ",
"Lookup Email": "検索メール",
"Message Type": "メッセージの種類",
"Email Required Fields": "メールの必須項目",
"To": "終了日",
"Create Conversation Without Contact Reply": "連絡先の返信なしで会話を作成",
"Ticket": "チケット",
"Is Open": "開いている",
"Snoozed Until": "スヌーズされた期限",
"Assigned Admin": "アサインされた管理者",
"Search Field": "検索フィールド",
"Search Value": "検索値",
"Match Type": "一致するタイプ",
"Search Term": "検索用語",
"Status": "ステータス",
"Update After": "次の後に更新",
"Update Before": "前に更新",
"Method": "方法",
"Headers": "ヘッダー",
"Query Parameters": "クエリパラメータ",
"Response is Binary ?": "応答はバイナリですか?",
"No Error on Failure": "失敗時にエラーはありません",
"Timeout (in seconds)": "タイムアウト(秒)",
"Whether a conversation should be opened in the inbox for the message without the contact replying. Defaults to false if not provided.": "連絡先の返信なしにメッセージの受信トレイに会話を開くかどうか。指定されていない場合、デフォルトは false です。",
"Authorization headers are injected automatically from your connection.": "認証ヘッダは接続から自動的に注入されます。",
"Enable for files like PDFs, images, etc..": "PDF、画像などのファイルを有効にします。",
"Draft": "下書き",
"Published": "公開済み",
"User": "ユーザー",
"Lead": "リード",
"In App Chat": "アプリチャットで",
"In Progress": "進行中",
"Waiting on Customer": "顧客を待っています",
"Resolved": "解決済み",
"Name": "Name",
"Subject": "件名",
"Author Email": "投稿者のメールアドレス",
"Team": "Team",
"Tag IDs": "タグID",
"Contains": "以下を含む",
"Equals": "等しい",
"Starts With": "で始まる",
"Open": "開く",
"Closed": "クローズ済み",
"ID": "ID",
"GET": "取得",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "削除",
"HEAD": "頭",
"Contact Replied": "連絡先の返信",
"Lead Added Email": "見込み客が追加したメール",
"Lead Converted To User": "ユーザーに変換されたリード",
"Conversation Closed": "会話を閉じました",
"Conversation assigned to any Intercom admin": "Intercom管理者に割り当てられた会話",
"Conversation snoozed": "会話をスヌーズしました",
"Conversation unsnoozed": "会話をスヌーズ解除しました",
"New Company": "新規会社",
"New Conversation": "新しい会話",
"Conversation was rated": "会話が評価されました",
"New Lead": "新しいリード",
"New Ticket": "新規チケット",
"New User": "新規ユーザー",
"Tag added to a conversation part": "会話パートにタグを追加しました",
"Tag Added to Lead": "見込み客にタグを追加しました",
"Tag Added to User": "ユーザーにタグを追加しました",
"Updated Contact": "連絡先の更新",
"Reply from a user or lead": "ユーザーまたはリードからの返信",
"Reply from an Intercom admin": "インターコム管理者から返信",
"Note added to conversation": "メモを会話に追加しました",
"Triggers when a contact replies to a Conversation in Intercom.": "インターコムで連絡先が会話に返信したときにトリガーします。",
"Triggers when a lead enters an email address.": "リードがメールアドレスを入力したときにトリガーします。",
"Triggers when a lead is converted to a user.": "リードがユーザーに変換されたときにトリガーされます。",
"Triggers when a conversation is closed.": "会話が終了したときにトリガーします。",
"Triggers when a conversation is assigned to an admin": "会話が管理者に割り当てられたときにトリガーします",
"Triggers when a conversation is snoozed": "会話がスヌーズされたときにトリガーします",
"Triggers when a conversation is unsnoozed": "会話がスヌーズされていないときにトリガーします",
"Triggers when a new company is created.": "新しい会社が作成されたときにトリガーします。",
"Triggers when a conversation is created by a user or lead (not an admin).": "ユーザーまたはリード (管理者ではない) によって会話が作成されたときにトリガーします。",
"Triggers when a conversation is rated": "会話が評価されたときに発生する",
"Triggers when a new lead is created.": "新しいリードが作成されたときにトリガーします。",
"Triggers when a new ticket is created.": "新しいチケットが作成されたときにトリガーされます。",
"Triggers when a new user is created.": "新しいユーザーが作成されたときにトリガーします。",
"Triggers when a conversation part is tagged.": "会話パートがタグ付けされたときにトリガーします。",
"Triggers when a tag is added to a lead.": "タグがリードに追加されたときにトリガーします。",
"Triggers when a tag is added to a user.": "タグがユーザーに追加されたときにトリガーします。",
"Triggers when a contact is updated.": "連絡先が更新されたときにトリガーします。",
"Triggers when a reply is received from a user or lead (not an admin)": "ユーザーまたはリードから返信を受け取ったときにトリガーします (管理者ではありません)",
"Triggers when a reply is received from an Intercom admin (not a user or lead)": "Intercom管理者から返信を受け取ったときにトリガーします (ユーザーやリードではありません)",
"Triggers when a note is added to a conversation": "会話にノートが追加されたときにトリガーします",
"Type": "タイプ",
"Keyword (optional)": "キーワード (任意)"
}

View File

@@ -0,0 +1,168 @@
{
"Customer messaging platform for sales, marketing, and support": "Klanten berichten platform voor verkoop, marketing en ondersteuning",
"Region": "Regio",
"US": "VS",
"EU": "EU",
"AU": "AU",
"\nPlease follow the instructions to create Intercom Oauth2 app.\n\n1.Log in to your Intercom account and navigate to **Settings > Integrations > Developer Hub**.\n2.Click on **Create a new app** and select the appropriate workspace.\n3.In **Authentication** section, add Redirect URL.\n4.In **Webhooks** section, select the events you want to receive.\n5.Go to the **Basic Information** section and copy the Client ID and Client Secret.\n": "\nVolg de instructies om een intercom Oauth2 app te maken.\n\n1. log in naar je intercom account en navigeer naar **Instellingen > Integraties > Developer Hub**.\n2.Klik op **Maak een nieuwe app** en selecteer de juiste werkruimte.\n3.In **Authenticatie** sectie voeg je een doorstuur URL toe.\n4.In **Webhooks** sectie, selecteer je de evenementen die je wilt ontvangen.\n5.Ga naar de **Basis Informatie** sectie en kopieer het Client-ID en Client-geheim.\n",
"Add Note": "Notitie toevoegen",
"Add note to conversation": "Notitie aan gesprek toevoegen",
"Add/Remove Tag on Contact": "Toevoegen/Verwijderen Tag bij Contact",
"Add/Remove Tag on Company": "Tag aan bedrijf toevoegen/verwijderen",
"Add/Remove Tag on Conversation": "Toevoegen/Verwijderen Tag op conversatie",
"Create Article": "Artikel maken",
"Create Conversation": "Gesprek aanmaken",
"Create Ticket": "Ticket aanmaken",
"Create User": "Gebruiker aanmaken",
"Create or Update Lead": "Maak of update Lead",
"Create/Update User": "Gebruiker maken/bijwerken",
"Reply to conversation": "Reageer op gesprek",
"Send Message": "Verstuur bericht",
"Update Ticket": "Ticket bijwerken",
"Find Company": "Bedrijf zoeken",
"Find Conversation": "Gesprek zoeken",
"Find Lead": "Zoek Lead",
"Find User": "Gebruiker zoeken",
"List Tags": "Lijst tags",
"Retrieve a Conversation": "Ophalen van een gesprek",
"Custom API Call": "Custom API Call",
"Add a note to a user": "Voeg een notitie toe aan een gebruiker",
"Add a note (for other admins) to an existing conversation": "Voeg een notitie (voor andere admins) toe aan een bestaand gesprek",
"Attach or remove a tag from a specific contact.": "Voeg een tag toe of verwijder deze uit een specifiek contact.",
"Attach or remove a tag from a specific company.": "Voeg een tag toe of verwijder deze van een specifiek bedrijf.",
"Attach or remove a tag from a specific conversation.": "Voeg een tag toe of verwijder deze uit een specifiek gesprek.",
"Creates a new article in your Help Center.": "Maakt een nieuw artikel aan in uw Helpcentrum.",
"Creates a new conversation from a contact.": "Maakt een nieuw gesprek van een contactpersoon.",
"Creates a new ticket.": "Maakt een nieuw ticket.",
"Creates a new user.": "Maakt een nieuwe gebruiker aan.",
"Create or update an Intercom lead.If an ID is provided, the lead will be updated.": "Aanmaken of bijwerken van een intercom lead.Als een ID is opgegeven, wordt de lead bijgewerkt.",
"Update a user within intercom given an email address.": "Werk een gebruiker bij binnen intercom met een e-mailadres.",
"Reply (as an admin) to a conversation with a contact": "Antwoord (als een admin) op een gesprek met een contact",
"Send a message to a contact (only allowed by admins)": "Stuur een bericht naar een contact (alleen toegestaan door admins)",
"Updates an existing ticket.": "Werkt een bestaand ticket bij.",
"Finds an existing company.": "Vindt een bestaand bedrijf.",
"Searches for conversations using various criteria": "Zoekt naar conversaties met verschillende criteria",
"Finds an existing lead.": "Vindt een bestaande lood.",
"Finds an existing user.": "Vindt een bestaande gebruiker.",
"List all tags.": "Toon alle tags",
"Retrieves a specific conversation by ID.": "Haalt een specifiek gesprek op via ID.",
"Make a custom API call to a specific endpoint": "Maak een aangepaste API call naar een specifiek eindpunt",
"Email": "E-mail",
"Note Text": "Notitie tekst",
"From (Admin)": "Van (Admin)",
"Conversation ID": "Conversatie ID",
"Message Body": "Bericht Body",
"Contact ID": "Contact ID",
"Tag Name": "Tag naam",
"Untag ?": "Untag ?",
"Company ID": "Bedrijf ID",
"Tag": "Tagnaam",
"Title": "Aanspreektitel",
"Description": "Beschrijving",
"Body": "Lichaam",
"Author": "Auteur",
"State": "Provincie",
"Parent Collection": "Ouder collectie",
"Contact Type": "Type contactpersoon",
"Ticket Type": "Type ticket",
"Ticket Properties": "Ticket eigenschappen",
"Created At": "Aangemaakt op",
"User ID": "Gebruiker ID",
"Full Name": "Volledige naam",
"Custom Attributes": "Aangepaste kenmerken",
"Lead ID": "Lead ID",
"Phone": "Telefoonnummer",
"Unsubscribed From Emails": "Uitgeschreven uit e-mails",
"Lookup Email": "E-mail opzoeken",
"Message Type": "Bericht type",
"Email Required Fields": "E-mail verplichte velden",
"To": "tot",
"Create Conversation Without Contact Reply": "Gesprek maken zonder antwoord van contact",
"Ticket": "Ticketsysteem",
"Is Open": "Is Open",
"Snoozed Until": "Gesluimerd tot",
"Assigned Admin": "Toegewezen beheerder",
"Search Field": "Zoek veld",
"Search Value": "Waarde zoeken",
"Match Type": "Wedstrijd Type",
"Search Term": "Zoek term",
"Status": "status",
"Update After": "Bijwerken na",
"Update Before": "Update voor",
"Method": "Methode",
"Headers": "Kopteksten",
"Query Parameters": "Query parameters",
"Response is Binary ?": "Antwoord is binair?",
"No Error on Failure": "Geen fout bij fout",
"Timeout (in seconds)": "Time-out (in seconden)",
"Whether a conversation should be opened in the inbox for the message without the contact replying. Defaults to false if not provided.": "Of een gesprek in het postvak van het bericht moet worden geopend zonder dat de contactpersoon antwoordt. Standaard ingesteld op 'onwaar' indien niet opgegeven.",
"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..",
"Draft": "Concept",
"Published": "Gepubliceerd",
"User": "Gebruiker",
"Lead": "Lood",
"In App Chat": "In App chat",
"In Progress": "In uitvoering",
"Waiting on Customer": "Wachten op klant",
"Resolved": "Opgelost",
"Name": "Naam",
"Subject": "Onderwerp",
"Author Email": "E-mailadres auteur",
"Team": "Team",
"Tag IDs": "Tag ID's",
"Contains": "Bevat",
"Equals": "Gelijk aan",
"Starts With": "Begint met",
"Open": "Open",
"Closed": "gesloten",
"ID": "ID",
"GET": "KRIJG",
"POST": "POSTE",
"PATCH": "BEKIJK",
"PUT": "PUT",
"DELETE": "VERWIJDEREN",
"HEAD": "HOOFD",
"Contact Replied": "Contact beantwoord",
"Lead Added Email": "Lead toegevoegd e-mail",
"Lead Converted To User": "Lead Omgezet naar gebruiker",
"Conversation Closed": "Gesprek gesloten",
"Conversation assigned to any Intercom admin": "Gesprek toegewezen aan een beheerder",
"Conversation snoozed": "Gesprek gesluimerd",
"Conversation unsnoozed": "Gesprek niet gesluimerd",
"New Company": "Nieuw bedrijf",
"New Conversation": "Nieuwe conversatie",
"Conversation was rated": "Gesprek werd beoordeeld",
"New Lead": "Nieuwe Lead",
"New Ticket": "Nieuw ticket",
"New User": "Nieuwe gebruiker",
"Tag added to a conversation part": "Tag toegevoegd aan een gespreksonderdeel",
"Tag Added to Lead": "Tag toegevoegd aan Lead",
"Tag Added to User": "Tag toegevoegd aan gebruiker",
"Updated Contact": "Contact bijgewerkt",
"Reply from a user or lead": "Antwoord van een gebruiker of lead",
"Reply from an Intercom admin": "Antwoorden vanuit een beheerder intercom",
"Note added to conversation": "Notitie toegevoegd aan gesprek",
"Triggers when a contact replies to a Conversation in Intercom.": "Triggert wanneer een contact reageert op een gesprek in de intercom.",
"Triggers when a lead enters an email address.": "Triggert wanneer een lead een e-mailadres invoert.",
"Triggers when a lead is converted to a user.": "Triggert wanneer een lead wordt omgezet naar een gebruiker.",
"Triggers when a conversation is closed.": "Triggert wanneer een gesprek wordt gesloten.",
"Triggers when a conversation is assigned to an admin": "Activeert wanneer een gesprek is toegewezen aan een beheerder",
"Triggers when a conversation is snoozed": "Triggert wanneer een gesprek is gesluimerd",
"Triggers when a conversation is unsnoozed": "Triggert wanneer een gesprek niet gesluimerd is",
"Triggers when a new company is created.": "Triggers wanneer een nieuw bedrijf wordt aangemaakt.",
"Triggers when a conversation is created by a user or lead (not an admin).": "Activeert wanneer een gesprek wordt gemaakt door een gebruiker of lead (niet door een admin).",
"Triggers when a conversation is rated": "Triggert wanneer een gesprek beoordeeld wordt",
"Triggers when a new lead is created.": "Triggert wanneer een nieuwe lead wordt gemaakt.",
"Triggers when a new ticket is created.": "Triggert wanneer een nieuw ticket is aangemaakt.",
"Triggers when a new user is created.": "Triggert wanneer een nieuwe gebruiker is aangemaakt.",
"Triggers when a conversation part is tagged.": "Triggert wanneer een gespreksonderdeel gelabeld is.",
"Triggers when a tag is added to a lead.": "Triggert wanneer een tag aan een lead wordt toegevoegd.",
"Triggers when a tag is added to a user.": "Triggert wanneer een tag aan een gebruiker wordt toegevoegd.",
"Triggers when a contact is updated.": "Triggert wanneer een contact is bijgewerkt.",
"Triggers when a reply is received from a user or lead (not an admin)": "Triggert wanneer een antwoord wordt ontvangen van een gebruiker of lood (niet een admin)",
"Triggers when a reply is received from an Intercom admin (not a user or lead)": "Triggert wanneer een antwoord wordt ontvangen van een intercom admin (niet een gebruiker of leiding)",
"Triggers when a note is added to a conversation": "Triggert wanneer een notitie aan een gesprek wordt toegevoegd",
"Type": "Type",
"Keyword (optional)": "Sleutelwoord (optioneel)"
}

View File

@@ -0,0 +1,168 @@
{
"Customer messaging platform for sales, marketing, and support": "Plataforma de mensagens do cliente para vendas, marketing e suporte",
"Region": "Região",
"US": "EUA",
"EU": "EU",
"AU": "UA",
"\nPlease follow the instructions to create Intercom Oauth2 app.\n\n1.Log in to your Intercom account and navigate to **Settings > Integrations > Developer Hub**.\n2.Click on **Create a new app** and select the appropriate workspace.\n3.In **Authentication** section, add Redirect URL.\n4.In **Webhooks** section, select the events you want to receive.\n5.Go to the **Basic Information** section and copy the Client ID and Client Secret.\n": "\nSiga as instruções para criar o aplicativo Oauth2 Intercom.\n\n1. Entre na sua conta Intercom e navegue até **Configurações> Integrações > Desenvolvedores Hub**.\n2.Clique em **Criar um novo aplicativo** e selecione o espaço de trabalho apropriado.\n3.Na seção **Autenticação**, adicione a URL de redirecionamento.\n4.Na seção **Webhooks**, selecione os eventos que você deseja receber.\n5.Vá para a seção **Informações Básicas** e copie o ID do cliente e o Segredo do cliente.\n",
"Add Note": "Adicionar Nota",
"Add note to conversation": "Adicionar nota à conversa",
"Add/Remove Tag on Contact": "Adicionar/Remover Tag no Contato",
"Add/Remove Tag on Company": "Adicionar/Remover Tag da Empresa",
"Add/Remove Tag on Conversation": "Adicionar/Remover Tag na Conversa",
"Create Article": "Criar Artigo",
"Create Conversation": "Criar conversa",
"Create Ticket": "Criar Ticket",
"Create User": "Criar Usuário",
"Create or Update Lead": "Criar ou atualizar Potencial",
"Create/Update User": "Criar/Atualizar Usuário",
"Reply to conversation": "Responder à conversa",
"Send Message": "Enviar mensagem",
"Update Ticket": "Atualizar Ticket",
"Find Company": "Encontrar empresa",
"Find Conversation": "Localizar Conversa",
"Find Lead": "Encontrar Potencial",
"Find User": "Localizar usuário",
"List Tags": "Listar Tags",
"Retrieve a Conversation": "Recuperar uma conversa",
"Custom API Call": "Chamada de API personalizada",
"Add a note to a user": "Adicionar uma nota a um usuário",
"Add a note (for other admins) to an existing conversation": "Adicionar uma nota (para outros administradores) a uma conversa existente",
"Attach or remove a tag from a specific contact.": "Anexar ou remover uma etiqueta de um contato específico.",
"Attach or remove a tag from a specific company.": "Anexar ou remover uma tag de uma empresa específica.",
"Attach or remove a tag from a specific conversation.": "Anexar ou remover uma etiqueta de uma conversa específica.",
"Creates a new article in your Help Center.": "Cria um novo artigo no seu centro de ajuda.",
"Creates a new conversation from a contact.": "Cria uma nova conversa a partir de um contato.",
"Creates a new ticket.": "Cria um novo ticket.",
"Creates a new user.": "Cria um novo usuário.",
"Create or update an Intercom lead.If an ID is provided, the lead will be updated.": "Criar ou atualizar um Lead Intercom. Se um ID for fornecido, o Lead será atualizado.",
"Update a user within intercom given an email address.": "Atualize um usuário dentro de um endereço de e-mail informado via intercom.",
"Reply (as an admin) to a conversation with a contact": "Responder (como administrador) a uma conversa com um contato",
"Send a message to a contact (only allowed by admins)": "Enviar mensagem para um contato (permitido apenas pelos administradores)",
"Updates an existing ticket.": "Atualiza um ticket existente.",
"Finds an existing company.": "Localiza uma empresa existente.",
"Searches for conversations using various criteria": "Procura por conversas usando vários critérios",
"Finds an existing lead.": "Encontra um lead existente.",
"Finds an existing user.": "Localiza um usuário existente.",
"List all tags.": "Listar todas as tags.",
"Retrieves a specific conversation by ID.": "Recupera uma conversa específica por ID.",
"Make a custom API call to a specific endpoint": "Faça uma chamada de API personalizada para um ponto de extremidade específico",
"Email": "e-mail",
"Note Text": "Texto da nota",
"From (Admin)": "De (Admin)",
"Conversation ID": "ID da conversa",
"Message Body": "Corpo da Mensagem",
"Contact ID": "ID do contato",
"Tag Name": "Nome do Marcador",
"Untag ?": "Untag ?",
"Company ID": "ID da Empresa",
"Tag": "Etiqueta",
"Title": "Título",
"Description": "Descrição",
"Body": "Conteúdo",
"Author": "Autor",
"State": "Estado:",
"Parent Collection": "Coleção Pai",
"Contact Type": "Tipo de contato",
"Ticket Type": "Tipo de Ticket",
"Ticket Properties": "Propriedades do Ticket",
"Created At": "Criado em",
"User ID": "ID de usuário",
"Full Name": "Nome Completo",
"Custom Attributes": "Atributos personalizados",
"Lead ID": "ID do lead",
"Phone": "Smartphone",
"Unsubscribed From Emails": "Cancelada De E-mails",
"Lookup Email": "Email de Busca",
"Message Type": "Tipo de mensagem",
"Email Required Fields": "Campos obrigatórios do e-mail",
"To": "Para",
"Create Conversation Without Contact Reply": "Criar Conversa Sem Resposta de Contato",
"Ticket": "Chamado",
"Is Open": "Está Aberto",
"Snoozed Until": "Adiado até",
"Assigned Admin": "Administrador Atribuído",
"Search Field": "Campo de pesquisa",
"Search Value": "Pesquisar Valor",
"Match Type": "Tipo de correspondência",
"Search Term": "Termo para pesquisa",
"Status": "Estado",
"Update After": "Atualizar após",
"Update Before": "Atualizar antes",
"Method": "Método",
"Headers": "Cabeçalhos",
"Query Parameters": "Parâmetros da consulta",
"Response is Binary ?": "A resposta é binária ?",
"No Error on Failure": "Nenhum erro no Failure",
"Timeout (in seconds)": "Tempo limite (em segundos)",
"Whether a conversation should be opened in the inbox for the message without the contact replying. Defaults to false if not provided.": "Se uma conversa deve ser aberta na caixa de entrada para a mensagem sem o contato responder. Padrão é falso se não fornecido.",
"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..",
"Draft": "Rascunho",
"Published": "Publicado",
"User": "Usuário",
"Lead": "Conduzir",
"In App Chat": "No Chat do App",
"In Progress": "Em Execução",
"Waiting on Customer": "Esperando pelo cliente",
"Resolved": "Resolvido",
"Name": "Nome",
"Subject": "Cargo",
"Author Email": "Email do Autor",
"Team": "Equipe",
"Tag IDs": "IDs de tags",
"Contains": "contém",
"Equals": "iguais",
"Starts With": "Começa com",
"Open": "Abertas",
"Closed": "Fechado",
"ID": "ID",
"GET": "OBTER",
"POST": "POSTAR",
"PATCH": "COMPRAR",
"PUT": "COLOCAR",
"DELETE": "EXCLUIR",
"HEAD": "CABEÇA",
"Contact Replied": "Contato Respondido",
"Lead Added Email": "Lead Adicionado e-mail",
"Lead Converted To User": "Lead Convertido Para Usuário",
"Conversation Closed": "Conversa fechada",
"Conversation assigned to any Intercom admin": "Conversa atribuída a qualquer administrador de Intercom",
"Conversation snoozed": "Conversa adiada",
"Conversation unsnoozed": "Conversa não snoozed",
"New Company": "Nova Empresa",
"New Conversation": "Nova conversa",
"Conversation was rated": "Conversa foi avaliada",
"New Lead": "Novo Potencial",
"New Ticket": "Novo Ticket",
"New User": "Novo Usuário",
"Tag added to a conversation part": "Tag adicionada a uma parte da conversa",
"Tag Added to Lead": "Tag Adicionada à Lead",
"Tag Added to User": "Tag adicionada ao usuário",
"Updated Contact": "Contato atualizado",
"Reply from a user or lead": "Resposta de um usuário ou lead",
"Reply from an Intercom admin": "Resposta de um administrador Intercom",
"Note added to conversation": "Nota adicionada à conversa",
"Triggers when a contact replies to a Conversation in Intercom.": "Aciona quando um contato responde a uma conversa na Intercom.",
"Triggers when a lead enters an email address.": "Dispara quando um líder entra em um endereço de e-mail.",
"Triggers when a lead is converted to a user.": "Aciona quando um lead é convertido para um usuário.",
"Triggers when a conversation is closed.": "Dispara quando uma conversa é fechada.",
"Triggers when a conversation is assigned to an admin": "Dispara quando uma conversa é atribuída a um administrador",
"Triggers when a conversation is snoozed": "Dispara quando uma conversa é adiada",
"Triggers when a conversation is unsnoozed": "Dispara quando uma conversa não é adiada",
"Triggers when a new company is created.": "Dispara quando uma nova empresa é criada.",
"Triggers when a conversation is created by a user or lead (not an admin).": "Dispara quando uma conversa é criada por um usuário ou lead (não é um administrador).",
"Triggers when a conversation is rated": "Dispara quando uma conversa é avaliada",
"Triggers when a new lead is created.": "Dispara quando um novo lead é criado.",
"Triggers when a new ticket is created.": "Aciona quando um novo ticket é criado.",
"Triggers when a new user is created.": "Dispara quando um novo usuário é criado.",
"Triggers when a conversation part is tagged.": "Dispara quando uma parte da conversa é marcada.",
"Triggers when a tag is added to a lead.": "Dispara quando uma tag é adicionada a um lead.",
"Triggers when a tag is added to a user.": "Dispara quando uma tag é adicionada a um usuário.",
"Triggers when a contact is updated.": "Dispara quando um contato é atualizado.",
"Triggers when a reply is received from a user or lead (not an admin)": "Aciona quando uma resposta é recebida de um usuário ou lead (não é administrador)",
"Triggers when a reply is received from an Intercom admin (not a user or lead)": "Aciona quando uma resposta é recebida de um administrador Intercom (não um usuário ou lead)",
"Triggers when a note is added to a conversation": "Aciona quando uma nota é adicionada a uma conversa",
"Type": "tipo",
"Keyword (optional)": "Palavra-chave (opcional)"
}

View File

@@ -0,0 +1,167 @@
{
"Intercom": "Интерком",
"Customer messaging platform for sales, marketing, and support": "Платформа сообщений клиентов для продаж, маркетинга и поддержки",
"Region": "Регион",
"US": "США",
"EU": "EU",
"AU": "АУ",
"\nPlease follow the instructions to create Intercom Oauth2 app.\n\n1.Log in to your Intercom account and navigate to **Settings > Integrations > Developer Hub**.\n2.Click on **Create a new app** and select the appropriate workspace.\n3.In **Authentication** section, add Redirect URL.\n4.In **Webhooks** section, select the events you want to receive.\n5.Go to the **Basic Information** section and copy the Client ID and Client Secret.\n": "\nПожалуйста, следуйте инструкциям по созданию приложения Intercom Oauth2.\n\n1. перейдите по ссылке **Settings > Integrations > Developer Hub**.\n2.Нажмите на **Создать новое приложение** и выберите соответствующую рабочую область.\n3.In **Authentication** add Redirect URL.\n4.In **Webhooks** select the events you want to receive.\n5.Перейдите в раздел **Основная информация** и скопируйте ID Клиента и Секретный ключ Клиента\n",
"Add Note": "Добавить заметку",
"Add note to conversation": "Добавить заметку в разговор",
"Add/Remove Tag on Contact": "Добавить/Удалить тег в контакте",
"Add/Remove Tag on Company": "Добавить/Удалить тег на компании",
"Add/Remove Tag on Conversation": "Добавить/Удалить тег в диалоге",
"Create Article": "Создать статью",
"Create Conversation": "Создать диалог",
"Create Ticket": "Создать тикет",
"Create User": "Создать пользователя",
"Create or Update Lead": "Создать или обновить предв. контакт",
"Create/Update User": "Создать/Обновить пользователя",
"Reply to conversation": "Ответить в разговоре",
"Send Message": "Отправить сообщение",
"Update Ticket": "Обновить тикет",
"Find Company": "Найти компанию",
"Find Conversation": "Найти разговор",
"Find Lead": "Найти предв. контакт",
"Find User": "Найти пользователя",
"List Tags": "Список тегов",
"Retrieve a Conversation": "Получить разговор",
"Custom API Call": "Пользовательский вызов API",
"Add a note to a user": "Добавить заметку пользователю",
"Add a note (for other admins) to an existing conversation": "Добавить заметку (для других администраторов) в существующий разговор",
"Attach or remove a tag from a specific contact.": "Прикрепить или удалить тег из определенного контакта.",
"Attach or remove a tag from a specific company.": "Прикрепить или удалить тег из конкретной компании.",
"Attach or remove a tag from a specific conversation.": "Прикрепить или удалить тег из определенного диалога.",
"Creates a new article in your Help Center.": "Создает новую статью в вашем Центре помощи.",
"Creates a new conversation from a contact.": "Создает новый разговор из контакта.",
"Creates a new ticket.": "Создает новую Заявку.",
"Creates a new user.": "Создает нового пользователя.",
"Create or update an Intercom lead.If an ID is provided, the lead will be updated.": "Создайте или обновите Intercom lead.Если указан идентификатор, контакт будет обновлен.",
"Update a user within intercom given an email address.": "Обновите пользователя внутри intercom с таким адресом электронной почты.",
"Reply (as an admin) to a conversation with a contact": "Ответить (как администратор) в разговоре с контактом",
"Send a message to a contact (only allowed by admins)": "Отправить сообщение контакту (допускается только администраторами)",
"Updates an existing ticket.": "Обновляет существующую Заявку.",
"Finds an existing company.": "Находит существующую компанию.",
"Searches for conversations using various criteria": "Поиск разговоров с использованием различных критериев",
"Finds an existing lead.": "Поиск существующего свинца.",
"Finds an existing user.": "Поиск существующего пользователя.",
"List all tags.": "Список всех тегов.",
"Retrieves a specific conversation by ID.": "Получает определённый разговор по ID.",
"Make a custom API call to a specific endpoint": "Сделать пользовательский API вызов к определенной конечной точке",
"Email": "Почта",
"Note Text": "Текст заметки",
"From (Admin)": "От (Админ)",
"Conversation ID": "ID разговора",
"Message Body": "Тело сообщения",
"Contact ID": "ID контакта",
"Tag Name": "Имя тега",
"Untag ?": "Untag ?",
"Company ID": "ID Компании",
"Tag": "Тег",
"Title": "Заголовок",
"Description": "Описание",
"Body": "Тело",
"Author": "Автор",
"State": "Область",
"Parent Collection": "Родительская коллекция",
"Contact Type": "Тип контакта",
"Ticket Type": "Тип заявки",
"Ticket Properties": "Свойства заявки",
"Created At": "Создано в",
"User ID": "ID пользователя",
"Full Name": "Полное имя",
"Custom Attributes": "Пользовательские атрибуты",
"Lead ID": "ID контакта",
"Phone": "Телефон",
"Unsubscribed From Emails": "Отписаться от писем",
"Lookup Email": "Поиск E-mail",
"Message Type": "Тип сообщения",
"Email Required Fields": "E-mail обязательные поля",
"To": "Кому",
"Create Conversation Without Contact Reply": "Создать диалог без контакта",
"Ticket": "Билет",
"Is Open": "Открыт",
"Snoozed Until": "Отложить до",
"Assigned Admin": "Назначенный администратор",
"Search Field": "Поле поиска",
"Search Value": "Поисковое значение",
"Match Type": "Тип матча",
"Search Term": "Поиск термина",
"Status": "Status",
"Update After": "Обновить после",
"Update Before": "Обновить до",
"Method": "Метод",
"Headers": "Заголовки",
"Query Parameters": "Параметры запроса",
"No Error on Failure": "Нет ошибок при ошибке",
"Timeout (in seconds)": "Таймаут (в секундах)",
"Whether a conversation should be opened in the inbox for the message without the contact replying. Defaults to false if not provided.": "Должен ли разговор быть открыт во входящем сообщении без контактного ответа. По умолчанию false, если не указано.",
"Authorization headers are injected automatically from your connection.": "Заголовки авторизации включаются автоматически из вашего соединения.",
"Draft": "Черновик",
"Published": "Опубликовано",
"User": "Пользователь",
"Lead": "Предв. контакт",
"In App Chat": "В App Chat",
"In Progress": "В процессе",
"Waiting on Customer": "Ожидание клиента",
"Resolved": "Решена",
"Name": "Наименование",
"Subject": "Тема",
"Author Email": "Email автора",
"Team": "Команда",
"Tag IDs": "ID тегов",
"Contains": "Содержит",
"Equals": "Равно",
"Starts With": "Начинается с",
"Open": "Открыть",
"Closed": "Закрыто",
"ID": "ID",
"GET": "ПОЛУЧИТЬ",
"POST": "ПОСТ",
"PATCH": "ПАТЧ",
"PUT": "ПОКУПИТЬ",
"DELETE": "УДАЛИТЬ",
"HEAD": "HEAD",
"Contact Replied": "Контакт ответил",
"Lead Added Email": "Письмо с предварительным контактом",
"Lead Converted To User": "Предварительный контакт преобразуется в пользователя",
"Conversation Closed": "Обсуждение закрыто",
"Conversation assigned to any Intercom admin": "Разговор, назначенный любому администратору Intercom",
"Conversation snoozed": "Разговор отложен",
"Conversation unsnoozed": "Разговор отменен",
"New Company": "Новая компания",
"New Conversation": "Новый разговор",
"Conversation was rated": "Разговор был оценен",
"New Lead": "Новый предв. контакт",
"New Ticket": "Новая заявка",
"New User": "Новый пользователь",
"Tag added to a conversation part": "Метка добавлена в часть разговора",
"Tag Added to Lead": "Тег добавлен в предв. контакт",
"Tag Added to User": "Тег добавлен пользователю",
"Updated Contact": "Контакт обновлен",
"Reply from a user or lead": "Ответить от пользователя или от руководителя",
"Reply from an Intercom admin": "Ответ администратора Intercom",
"Note added to conversation": "Заметка добавлена в разговор",
"Triggers when a contact replies to a Conversation in Intercom.": "Включает при ответе контакта на разговор в Intercom.",
"Triggers when a lead enters an email address.": "Триггеры, когда лидер вводит адрес электронной почты.",
"Triggers when a lead is converted to a user.": "Срабатывает при преобразовании свинца в пользователя.",
"Triggers when a conversation is closed.": "Триггеры при закрытии диалога.",
"Triggers when a conversation is assigned to an admin": "Триггеры при назначении разговора администратору",
"Triggers when a conversation is snoozed": "Триггеры, когда разговор отложен",
"Triggers when a conversation is unsnoozed": "Триггеры, когда разговор не отложен",
"Triggers when a new company is created.": "Триггеры при создании новой компании.",
"Triggers when a conversation is created by a user or lead (not an admin).": "Включает когда разговор создается пользователем или лидером (не администратором).",
"Triggers when a conversation is rated": "Триггеры при рейтинге разговора",
"Triggers when a new lead is created.": "Триггеры при создании нового свинца.",
"Triggers when a new ticket is created.": "Триггеры при создании новой Заявки.",
"Triggers when a new user is created.": "Триггеры при создании нового пользователя.",
"Triggers when a conversation part is tagged.": "Включает при отмеченной части диалога.",
"Triggers when a tag is added to a lead.": "Триггеры при добавлении тега к свинцу.",
"Triggers when a tag is added to a user.": "Срабатывает при добавлении тега к пользователю.",
"Triggers when a contact is updated.": "Триггеры при обновлении контакта.",
"Triggers when a reply is received from a user or lead (not an admin)": "Срабатывает при получении ответа от пользователя или руководителя (не администратора)",
"Triggers when a reply is received from an Intercom admin (not a user or lead)": "Срабатывает при получении ответа от администратора Intercom (не пользователя или свинца)",
"Triggers when a note is added to a conversation": "Включает при добавлении заметки в разговор",
"Type": "Тип",
"Keyword (optional)": "Ключевое слово (необязательно)"
}

View File

@@ -0,0 +1,168 @@
{
"Customer messaging platform for sales, marketing, and support": "Customer messaging platform for sales, marketing, and support",
"Region": "Region",
"US": "US",
"EU": "EU",
"AU": "AU",
"\nPlease follow the instructions to create Intercom Oauth2 app.\n\n1.Log in to your Intercom account and navigate to **Settings > Integrations > Developer Hub**.\n2.Click on **Create a new app** and select the appropriate workspace.\n3.In **Authentication** section, add Redirect URL.\n4.In **Webhooks** section, select the events you want to receive.\n5.Go to the **Basic Information** section and copy the Client ID and Client Secret.\n": "\nPlease follow the instructions to create Intercom Oauth2 app.\n\n1.Log in to your Intercom account and navigate to **Settings > Integrations > Developer Hub**.\n2.Click on **Create a new app** and select the appropriate workspace.\n3.In **Authentication** section, add Redirect URL.\n4.In **Webhooks** section, select the events you want to receive.\n5.Go to the **Basic Information** section and copy the Client ID and Client Secret.\n",
"Add Note": "Add Note",
"Add note to conversation": "Add note to conversation",
"Add/Remove Tag on Contact": "Add/Remove Tag on Contact",
"Add/Remove Tag on Company": "Add/Remove Tag on Company",
"Add/Remove Tag on Conversation": "Add/Remove Tag on Conversation",
"Create Article": "Create Article",
"Create Conversation": "Create Conversation",
"Create Ticket": "Create Ticket",
"Create User": "Create User",
"Create or Update Lead": "Create or Update Lead",
"Create/Update User": "Create/Update User",
"Reply to conversation": "Reply to conversation",
"Send Message": "Send Message",
"Update Ticket": "Update Ticket",
"Find Company": "Find Company",
"Find Conversation": "Find Conversation",
"Find Lead": "Find Lead",
"Find User": "Find User",
"List Tags": "List Tags",
"Retrieve a Conversation": "Retrieve a Conversation",
"Custom API Call": "Custom API Call",
"Add a note to a user": "Add a note to a user",
"Add a note (for other admins) to an existing conversation": "Add a note (for other admins) to an existing conversation",
"Attach or remove a tag from a specific contact.": "Attach or remove a tag from a specific contact.",
"Attach or remove a tag from a specific company.": "Attach or remove a tag from a specific company.",
"Attach or remove a tag from a specific conversation.": "Attach or remove a tag from a specific conversation.",
"Creates a new article in your Help Center.": "Creates a new article in your Help Center.",
"Creates a new conversation from a contact.": "Creates a new conversation from a contact.",
"Creates a new ticket.": "Creates a new ticket.",
"Creates a new user.": "Creates a new user.",
"Create or update an Intercom lead.If an ID is provided, the lead will be updated.": "Create or update an Intercom lead.If an ID is provided, the lead will be updated.",
"Update a user within intercom given an email address.": "Update a user within intercom given an email address.",
"Reply (as an admin) to a conversation with a contact": "Reply (as an admin) to a conversation with a contact",
"Send a message to a contact (only allowed by admins)": "Send a message to a contact (only allowed by admins)",
"Updates an existing ticket.": "Updates an existing ticket.",
"Finds an existing company.": "Finds an existing company.",
"Searches for conversations using various criteria": "Searches for conversations using various criteria",
"Finds an existing lead.": "Finds an existing lead.",
"Finds an existing user.": "Finds an existing user.",
"List all tags.": "List all tags.",
"Retrieves a specific conversation by ID.": "Retrieves a specific conversation by ID.",
"Make a custom API call to a specific endpoint": "Make a custom API call to a specific endpoint",
"Email": "Email",
"Note Text": "Note Text",
"From (Admin)": "From (Admin)",
"Conversation ID": "Conversation ID",
"Message Body": "Message Body",
"Contact ID": "Contact ID",
"Tag Name": "Tag Name",
"Untag ?": "Untag ?",
"Company ID": "Company ID",
"Tag": "Tag",
"Title": "Title",
"Description": "Description",
"Body": "Body",
"Author": "Author",
"State": "State",
"Parent Collection": "Parent Collection",
"Contact Type": "Contact Type",
"Ticket Type": "Ticket Type",
"Ticket Properties": "Ticket Properties",
"Created At": "Created At",
"User ID": "User ID",
"Full Name": "Full Name",
"Custom Attributes": "Custom Attributes",
"Lead ID": "Lead ID",
"Phone": "Phone",
"Unsubscribed From Emails": "Unsubscribed From Emails",
"Lookup Email": "Lookup Email",
"Message Type": "Message Type",
"Email Required Fields": "Email Required Fields",
"To": "To",
"Create Conversation Without Contact Reply": "Create Conversation Without Contact Reply",
"Ticket": "Ticket",
"Is Open": "Is Open",
"Snoozed Until": "Snoozed Until",
"Assigned Admin": "Assigned Admin",
"Search Field": "Search Field",
"Search Value": "Search Value",
"Match Type": "Match Type",
"Search Term": "Search Term",
"Status": "Status",
"Update After": "Update After",
"Update Before": "Update Before",
"Method": "Method",
"Headers": "Headers",
"Query Parameters": "Query Parameters",
"Response is Binary ?": "Response is Binary ?",
"No Error on Failure": "No Error on Failure",
"Timeout (in seconds)": "Timeout (in seconds)",
"Whether a conversation should be opened in the inbox for the message without the contact replying. Defaults to false if not provided.": "Whether a conversation should be opened in the inbox for the message without the contact replying. Defaults to false if not provided.",
"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..",
"Draft": "Draft",
"Published": "Published",
"User": "User",
"Lead": "Lead",
"In App Chat": "In App Chat",
"In Progress": "In Progress",
"Waiting on Customer": "Waiting on Customer",
"Resolved": "Resolved",
"Name": "Name",
"Subject": "Subject",
"Author Email": "Author Email",
"Team": "Team",
"Tag IDs": "Tag IDs",
"Contains": "Contains",
"Equals": "Equals",
"Starts With": "Starts With",
"Open": "Open",
"Closed": "Closed",
"ID": "ID",
"GET": "GET",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "DELETE",
"HEAD": "HEAD",
"Contact Replied": "Contact Replied",
"Lead Added Email": "Lead Added Email",
"Lead Converted To User": "Lead Converted To User",
"Conversation Closed": "Conversation Closed",
"Conversation assigned to any Intercom admin": "Conversation assigned to any Intercom admin",
"Conversation snoozed": "Conversation snoozed",
"Conversation unsnoozed": "Conversation unsnoozed",
"New Company": "New Company",
"New Conversation": "New Conversation",
"Conversation was rated": "Conversation was rated",
"New Lead": "New Lead",
"New Ticket": "New Ticket",
"New User": "New User",
"Tag added to a conversation part": "Tag added to a conversation part",
"Tag Added to Lead": "Tag Added to Lead",
"Tag Added to User": "Tag Added to User",
"Updated Contact": "Updated Contact",
"Reply from a user or lead": "Reply from a user or lead",
"Reply from an Intercom admin": "Reply from an Intercom admin",
"Note added to conversation": "Note added to conversation",
"Triggers when a contact replies to a Conversation in Intercom.": "Triggers when a contact replies to a Conversation in Intercom.",
"Triggers when a lead enters an email address.": "Triggers when a lead enters an email address.",
"Triggers when a lead is converted to a user.": "Triggers when a lead is converted to a user.",
"Triggers when a conversation is closed.": "Triggers when a conversation is closed.",
"Triggers when a conversation is assigned to an admin": "Triggers when a conversation is assigned to an admin",
"Triggers when a conversation is snoozed": "Triggers when a conversation is snoozed",
"Triggers when a conversation is unsnoozed": "Triggers when a conversation is unsnoozed",
"Triggers when a new company is created.": "Triggers when a new company is created.",
"Triggers when a conversation is created by a user or lead (not an admin).": "Triggers when a conversation is created by a user or lead (not an admin).",
"Triggers when a conversation is rated": "Triggers when a conversation is rated",
"Triggers when a new lead is created.": "Triggers when a new lead is created.",
"Triggers when a new ticket is created.": "Triggers when a new ticket is created.",
"Triggers when a new user is created.": "Triggers when a new user is created.",
"Triggers when a conversation part is tagged.": "Triggers when a conversation part is tagged.",
"Triggers when a tag is added to a lead.": "Triggers when a tag is added to a lead.",
"Triggers when a tag is added to a user.": "Triggers when a tag is added to a user.",
"Triggers when a contact is updated.": "Triggers when a contact is updated.",
"Triggers when a reply is received from a user or lead (not an admin)": "Triggers when a reply is received from a user or lead (not an admin)",
"Triggers when a reply is received from an Intercom admin (not a user or lead)": "Triggers when a reply is received from an Intercom admin (not a user or lead)",
"Triggers when a note is added to a conversation": "Triggers when a note is added to a conversation",
"Type": "Type",
"Keyword (optional)": "Keyword (optional)"
}

View File

@@ -0,0 +1,167 @@
{
"Intercom": "Intercom",
"Customer messaging platform for sales, marketing, and support": "Customer messaging platform for sales, marketing, and support",
"Region": "Region",
"US": "US",
"EU": "EU",
"AU": "AU",
"\nPlease follow the instructions to create Intercom Oauth2 app.\n\n1.Log in to your Intercom account and navigate to **Settings > Integrations > Developer Hub**.\n2.Click on **Create a new app** and select the appropriate workspace.\n3.In **Authentication** section, add Redirect URL.\n4.In **Webhooks** section, select the events you want to receive.\n5.Go to the **Basic Information** section and copy the Client ID and Client Secret.\n": "\nPlease follow the instructions to create Intercom Oauth2 app.\n\n1.Log in to your Intercom account and navigate to **Settings > Integrations > Developer Hub**.\n2.Click on **Create a new app** and select the appropriate workspace.\n3.In **Authentication** section, add Redirect URL.\n4.In **Webhooks** section, select the events you want to receive.\n5.Go to the **Basic Information** section and copy the Client ID and Client Secret.\n",
"Add Note": "Add Note",
"Add note to conversation": "Add note to conversation",
"Add/Remove Tag on Contact": "Add/Remove Tag on Contact",
"Add/Remove Tag on Company": "Add/Remove Tag on Company",
"Add/Remove Tag on Conversation": "Add/Remove Tag on Conversation",
"Create Article": "Create Article",
"Create Conversation": "Create Conversation",
"Create Ticket": "Create Ticket",
"Create User": "Create User",
"Create or Update Lead": "Create or Update Lead",
"Create/Update User": "Create/Update User",
"Reply to conversation": "Reply to conversation",
"Send Message": "Send Message",
"Update Ticket": "Update Ticket",
"Find Company": "Find Company",
"Find Conversation": "Find Conversation",
"Find Lead": "Find Lead",
"Find User": "Find User",
"List Tags": "List Tags",
"Retrieve a Conversation": "Retrieve a Conversation",
"Custom API Call": "Custom API Call",
"Add a note to a user": "Add a note to a user",
"Add a note (for other admins) to an existing conversation": "Add a note (for other admins) to an existing conversation",
"Attach or remove a tag from a specific contact.": "Attach or remove a tag from a specific contact.",
"Attach or remove a tag from a specific company.": "Attach or remove a tag from a specific company.",
"Attach or remove a tag from a specific conversation.": "Attach or remove a tag from a specific conversation.",
"Creates a new article in your Help Center.": "Creates a new article in your Help Center.",
"Creates a new conversation from a contact.": "Creates a new conversation from a contact.",
"Creates a new ticket.": "Creates a new ticket.",
"Creates a new user.": "Creates a new user.",
"Create or update an Intercom lead.If an ID is provided, the lead will be updated.": "Create or update an Intercom lead.If an ID is provided, the lead will be updated.",
"Update a user within intercom given an email address.": "Update a user within intercom given an email address.",
"Reply (as an admin) to a conversation with a contact": "Reply (as an admin) to a conversation with a contact",
"Send a message to a contact (only allowed by admins)": "Send a message to a contact (only allowed by admins)",
"Updates an existing ticket.": "Updates an existing ticket.",
"Finds an existing company.": "Finds an existing company.",
"Searches for conversations using various criteria": "Searches for conversations using various criteria",
"Finds an existing lead.": "Finds an existing lead.",
"Finds an existing user.": "Finds an existing user.",
"List all tags.": "List all tags.",
"Retrieves a specific conversation by ID.": "Retrieves a specific conversation by ID.",
"Make a custom API call to a specific endpoint": "Make a custom API call to a specific endpoint",
"Email": "Email",
"Note Text": "Note Text",
"From (Admin)": "From (Admin)",
"Conversation ID": "Conversation ID",
"Message Body": "Message Body",
"Contact ID": "Contact ID",
"Tag Name": "Tag Name",
"Untag ?": "Untag ?",
"Company ID": "Company ID",
"Tag": "Tag",
"Title": "Title",
"Description": "Description",
"Body": "Body",
"Author": "Author",
"State": "State",
"Parent Collection": "Parent Collection",
"Contact Type": "Contact Type",
"Ticket Type": "Ticket Type",
"Ticket Properties": "Ticket Properties",
"Created At": "Created At",
"User ID": "User ID",
"Full Name": "Full Name",
"Custom Attributes": "Custom Attributes",
"Lead ID": "Lead ID",
"Phone": "Phone",
"Unsubscribed From Emails": "Unsubscribed From Emails",
"Lookup Email": "Lookup Email",
"Message Type": "Message Type",
"Email Required Fields": "Email Required Fields",
"To": "To",
"Create Conversation Without Contact Reply": "Create Conversation Without Contact Reply",
"Ticket": "Ticket",
"Is Open": "Is Open",
"Snoozed Until": "Snoozed Until",
"Assigned Admin": "Assigned Admin",
"Search Field": "Search Field",
"Search Value": "Search Value",
"Match Type": "Match Type",
"Search Term": "Search Term",
"Status": "Status",
"Update After": "Update After",
"Update Before": "Update Before",
"Method": "Method",
"Headers": "Headers",
"Query Parameters": "Query Parameters",
"No Error on Failure": "No Error on Failure",
"Timeout (in seconds)": "Timeout (in seconds)",
"Whether a conversation should be opened in the inbox for the message without the contact replying. Defaults to false if not provided.": "Whether a conversation should be opened in the inbox for the message without the contact replying. Defaults to false if not provided.",
"Authorization headers are injected automatically from your connection.": "Authorization headers are injected automatically from your connection.",
"Draft": "Bản nháp",
"Published": "Đã xuất bản",
"User": "User",
"Lead": "Lead",
"In App Chat": "In App Chat",
"In Progress": "In Progress",
"Waiting on Customer": "Waiting on Customer",
"Resolved": "Resolved",
"Name": "Name",
"Subject": "Subject",
"Author Email": "Author Email",
"Team": "Team",
"Tag IDs": "Tag IDs",
"Contains": "Contains",
"Equals": "Equals",
"Starts With": "Starts With",
"Open": "Open",
"Closed": "Closed",
"ID": "ID",
"GET": "GET",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "DELETE",
"HEAD": "HEAD",
"Contact Replied": "Contact Replied",
"Lead Added Email": "Lead Added Email",
"Lead Converted To User": "Lead Converted To User",
"Conversation Closed": "Conversation Closed",
"Conversation assigned to any Intercom admin": "Conversation assigned to any Intercom admin",
"Conversation snoozed": "Conversation snoozed",
"Conversation unsnoozed": "Conversation unsnoozed",
"New Company": "New Company",
"New Conversation": "New Conversation",
"Conversation was rated": "Conversation was rated",
"New Lead": "New Lead",
"New Ticket": "New Ticket",
"New User": "New User",
"Tag added to a conversation part": "Tag added to a conversation part",
"Tag Added to Lead": "Tag Added to Lead",
"Tag Added to User": "Tag Added to User",
"Updated Contact": "Updated Contact",
"Reply from a user or lead": "Reply from a user or lead",
"Reply from an Intercom admin": "Reply from an Intercom admin",
"Note added to conversation": "Note added to conversation",
"Triggers when a contact replies to a Conversation in Intercom.": "Triggers when a contact replies to a Conversation in Intercom.",
"Triggers when a lead enters an email address.": "Triggers when a lead enters an email address.",
"Triggers when a lead is converted to a user.": "Triggers when a lead is converted to a user.",
"Triggers when a conversation is closed.": "Triggers when a conversation is closed.",
"Triggers when a conversation is assigned to an admin": "Triggers when a conversation is assigned to an admin",
"Triggers when a conversation is snoozed": "Triggers when a conversation is snoozed",
"Triggers when a conversation is unsnoozed": "Triggers when a conversation is unsnoozed",
"Triggers when a new company is created.": "Triggers when a new company is created.",
"Triggers when a conversation is created by a user or lead (not an admin).": "Triggers when a conversation is created by a user or lead (not an admin).",
"Triggers when a conversation is rated": "Triggers when a conversation is rated",
"Triggers when a new lead is created.": "Triggers when a new lead is created.",
"Triggers when a new ticket is created.": "Triggers when a new ticket is created.",
"Triggers when a new user is created.": "Triggers when a new user is created.",
"Triggers when a conversation part is tagged.": "Triggers when a conversation part is tagged.",
"Triggers when a tag is added to a lead.": "Triggers when a tag is added to a lead.",
"Triggers when a tag is added to a user.": "Triggers when a tag is added to a user.",
"Triggers when a contact is updated.": "Triggers when a contact is updated.",
"Triggers when a reply is received from a user or lead (not an admin)": "Triggers when a reply is received from a user or lead (not an admin)",
"Triggers when a reply is received from an Intercom admin (not a user or lead)": "Triggers when a reply is received from an Intercom admin (not a user or lead)",
"Triggers when a note is added to a conversation": "Triggers when a note is added to a conversation",
"Type": "Type",
"Keyword (optional)": "Keyword (optional)"
}

View File

@@ -0,0 +1,168 @@
{
"Customer messaging platform for sales, marketing, and support": "Customer messaging platform for sales, marketing, and support",
"Region": "Region",
"US": "US",
"EU": "EU",
"AU": "AU",
"\nPlease follow the instructions to create Intercom Oauth2 app.\n\n1.Log in to your Intercom account and navigate to **Settings > Integrations > Developer Hub**.\n2.Click on **Create a new app** and select the appropriate workspace.\n3.In **Authentication** section, add Redirect URL.\n4.In **Webhooks** section, select the events you want to receive.\n5.Go to the **Basic Information** section and copy the Client ID and Client Secret.\n": "\nPlease follow the instructions to create Intercom Oauth2 app.\n\n1.Log in to your Intercom account and navigate to **Settings > Integrations > Developer Hub**.\n2.Click on **Create a new app** and select the appropriate workspace.\n3.In **Authentication** section, add Redirect URL.\n4.In **Webhooks** section, select the events you want to receive.\n5.Go to the **Basic Information** section and copy the Client ID and Client Secret.\n",
"Add Note": "Add Note",
"Add note to conversation": "Add note to conversation",
"Add/Remove Tag on Contact": "Add/Remove Tag on Contact",
"Add/Remove Tag on Company": "Add/Remove Tag on Company",
"Add/Remove Tag on Conversation": "Add/Remove Tag on Conversation",
"Create Article": "Create Article",
"Create Conversation": "Create Conversation",
"Create Ticket": "Create Ticket",
"Create User": "Create User",
"Create or Update Lead": "Create or Update Lead",
"Create/Update User": "Create/Update User",
"Reply to conversation": "Reply to conversation",
"Send Message": "Send Message",
"Update Ticket": "Update Ticket",
"Find Company": "Find Company",
"Find Conversation": "Find Conversation",
"Find Lead": "Find Lead",
"Find User": "Find User",
"List Tags": "List Tags",
"Retrieve a Conversation": "Retrieve a Conversation",
"Custom API Call": "自定义 API 呼叫",
"Add a note to a user": "Add a note to a user",
"Add a note (for other admins) to an existing conversation": "Add a note (for other admins) to an existing conversation",
"Attach or remove a tag from a specific contact.": "Attach or remove a tag from a specific contact.",
"Attach or remove a tag from a specific company.": "Attach or remove a tag from a specific company.",
"Attach or remove a tag from a specific conversation.": "Attach or remove a tag from a specific conversation.",
"Creates a new article in your Help Center.": "Creates a new article in your Help Center.",
"Creates a new conversation from a contact.": "Creates a new conversation from a contact.",
"Creates a new ticket.": "Creates a new ticket.",
"Creates a new user.": "Creates a new user.",
"Create or update an Intercom lead.If an ID is provided, the lead will be updated.": "Create or update an Intercom lead.If an ID is provided, the lead will be updated.",
"Update a user within intercom given an email address.": "Update a user within intercom given an email address.",
"Reply (as an admin) to a conversation with a contact": "Reply (as an admin) to a conversation with a contact",
"Send a message to a contact (only allowed by admins)": "Send a message to a contact (only allowed by admins)",
"Updates an existing ticket.": "Updates an existing ticket.",
"Finds an existing company.": "Finds an existing company.",
"Searches for conversations using various criteria": "Searches for conversations using various criteria",
"Finds an existing lead.": "Finds an existing lead.",
"Finds an existing user.": "Finds an existing user.",
"List all tags.": "List all tags.",
"Retrieves a specific conversation by ID.": "Retrieves a specific conversation by ID.",
"Make a custom API call to a specific endpoint": "将一个自定义 API 调用到一个特定的终点",
"Email": "电子邮件地址",
"Note Text": "Note Text",
"From (Admin)": "From (Admin)",
"Conversation ID": "Conversation ID",
"Message Body": "Message Body",
"Contact ID": "Contact ID",
"Tag Name": "Tag Name",
"Untag ?": "Untag ?",
"Company ID": "Company ID",
"Tag": "标签",
"Title": "标题",
"Description": "描述",
"Body": "正文内容",
"Author": "Author",
"State": "State",
"Parent Collection": "Parent Collection",
"Contact Type": "Contact Type",
"Ticket Type": "Ticket Type",
"Ticket Properties": "Ticket Properties",
"Created At": "Created At",
"User ID": "User ID",
"Full Name": "Full Name",
"Custom Attributes": "Custom Attributes",
"Lead ID": "Lead ID",
"Phone": "Phone",
"Unsubscribed From Emails": "Unsubscribed From Emails",
"Lookup Email": "Lookup Email",
"Message Type": "Message Type",
"Email Required Fields": "Email Required Fields",
"To": "To",
"Create Conversation Without Contact Reply": "Create Conversation Without Contact Reply",
"Ticket": "Ticket",
"Is Open": "Is Open",
"Snoozed Until": "Snoozed Until",
"Assigned Admin": "Assigned Admin",
"Search Field": "Search Field",
"Search Value": "搜索值",
"Match Type": "Match Type",
"Search Term": "Search Term",
"Status": "状态",
"Update After": "Update After",
"Update Before": "Update Before",
"Method": "方法",
"Headers": "信头",
"Query Parameters": "查询参数",
"Response is Binary ?": "Response is Binary ?",
"No Error on Failure": "失败时没有错误",
"Timeout (in seconds)": "超时(秒)",
"Whether a conversation should be opened in the inbox for the message without the contact replying. Defaults to false if not provided.": "Whether a conversation should be opened in the inbox for the message without the contact replying. Defaults to false if not provided.",
"Authorization headers are injected automatically from your connection.": "授权头自动从您的连接中注入。",
"Enable for files like PDFs, images, etc..": "Enable for files like PDFs, images, etc..",
"Draft": "草稿",
"Published": "已发布",
"User": "用户",
"Lead": "Lead",
"In App Chat": "In App Chat",
"In Progress": "In Progress",
"Waiting on Customer": "Waiting on Customer",
"Resolved": "已解决",
"Name": "名称",
"Subject": "Subject",
"Author Email": "Author Email",
"Team": "Team",
"Tag IDs": "Tag IDs",
"Contains": "Contains",
"Equals": "Equals",
"Starts With": "Starts With",
"Open": "Open",
"Closed": "Closed",
"ID": "ID",
"GET": "获取",
"POST": "帖子",
"PATCH": "PATCH",
"PUT": "弹出",
"DELETE": "删除",
"HEAD": "黑色",
"Contact Replied": "Contact Replied",
"Lead Added Email": "Lead Added Email",
"Lead Converted To User": "Lead Converted To User",
"Conversation Closed": "Conversation Closed",
"Conversation assigned to any Intercom admin": "Conversation assigned to any Intercom admin",
"Conversation snoozed": "Conversation snoozed",
"Conversation unsnoozed": "Conversation unsnoozed",
"New Company": "New Company",
"New Conversation": "New Conversation",
"Conversation was rated": "Conversation was rated",
"New Lead": "New Lead",
"New Ticket": "New Ticket",
"New User": "New User",
"Tag added to a conversation part": "Tag added to a conversation part",
"Tag Added to Lead": "Tag Added to Lead",
"Tag Added to User": "Tag Added to User",
"Updated Contact": "Updated Contact",
"Reply from a user or lead": "Reply from a user or lead",
"Reply from an Intercom admin": "Reply from an Intercom admin",
"Note added to conversation": "Note added to conversation",
"Triggers when a contact replies to a Conversation in Intercom.": "Triggers when a contact replies to a Conversation in Intercom.",
"Triggers when a lead enters an email address.": "Triggers when a lead enters an email address.",
"Triggers when a lead is converted to a user.": "Triggers when a lead is converted to a user.",
"Triggers when a conversation is closed.": "Triggers when a conversation is closed.",
"Triggers when a conversation is assigned to an admin": "Triggers when a conversation is assigned to an admin",
"Triggers when a conversation is snoozed": "Triggers when a conversation is snoozed",
"Triggers when a conversation is unsnoozed": "Triggers when a conversation is unsnoozed",
"Triggers when a new company is created.": "Triggers when a new company is created.",
"Triggers when a conversation is created by a user or lead (not an admin).": "Triggers when a conversation is created by a user or lead (not an admin).",
"Triggers when a conversation is rated": "Triggers when a conversation is rated",
"Triggers when a new lead is created.": "Triggers when a new lead is created.",
"Triggers when a new ticket is created.": "Triggers when a new ticket is created.",
"Triggers when a new user is created.": "Triggers when a new user is created.",
"Triggers when a conversation part is tagged.": "Triggers when a conversation part is tagged.",
"Triggers when a tag is added to a lead.": "Triggers when a tag is added to a lead.",
"Triggers when a tag is added to a user.": "Triggers when a tag is added to a user.",
"Triggers when a contact is updated.": "Triggers when a contact is updated.",
"Triggers when a reply is received from a user or lead (not an admin)": "Triggers when a reply is received from a user or lead (not an admin)",
"Triggers when a reply is received from an Intercom admin (not a user or lead)": "Triggers when a reply is received from an Intercom admin (not a user or lead)",
"Triggers when a note is added to a conversation": "Triggers when a note is added to a conversation",
"Type": "类型",
"Keyword (optional)": "Keyword (optional)"
}

View File

@@ -0,0 +1,181 @@
import { createCustomApiCallAction } from '@activepieces/pieces-common';
import {
OAuth2PropertyValue,
PieceAuth,
createPiece,
Property,
} from '@activepieces/pieces-framework';
import { PieceCategory } from '@activepieces/shared';
import { sendMessageAction } from './lib/actions/send-message.action';
import crypto from 'node:crypto';
import { noteAddedToConversation } from './lib/triggers/note-added-to-conversation';
import { addNoteToConversationAction } from './lib/actions/add-note-to-conversation';
import { replyToConversation } from './lib/actions/reply-to-conversation';
import { newConversationFromUser } from './lib/triggers/new-conversation-from-user';
import { replyFromUser } from './lib/triggers/reply-from-user';
import { replyFromAdmin } from './lib/triggers/reply-from-admin';
import { conversationAssigned } from './lib/triggers/conversation-assigned';
import { conversationClosedTrigger } from './lib/triggers/conversation-closed';
import { conversationSnoozed } from './lib/triggers/conversation-snoozed';
import { conversationUnsnoozed } from './lib/triggers/conversation-unsnoozed';
import { conversationRated } from './lib/triggers/conversation-rated';
import { conversationPartTagged } from './lib/triggers/conversation-part-tagged';
import { findConversationAction } from './lib/actions/find-conversation';
import { addNoteToUserAction } from './lib/actions/add-note-to-user';
import { findUserAction } from './lib/actions/find-user';
import { findLeadAction } from './lib/actions/find-lead';
import { addOrRemoveTagOnConversationAction } from './lib/actions/add-remove-tag-on-conversation';
import { addOrRemoveTagOnCompanyAction } from './lib/actions/add-remove-tag-on-company';
import { createUserAction } from './lib/actions/create-user';
import { createOrUpdateUserAction } from './lib/actions/create-update-user';
import { listAllTagsAction } from './lib/actions/list-all-tags';
import { newLeadTrigger } from './lib/triggers/new-lead';
import { newCompanyTrigger } from './lib/triggers/new-company';
import { addOrRemoveTagOnContactAction } from './lib/actions/add-remove-tag-on-contact';
import { createArticleAction } from './lib/actions/create-article';
import { createConversationAction } from './lib/actions/create-conversation';
import { getConversationAction } from './lib/actions/get-conversation';
import { createOrUpdateLeadAction } from './lib/actions/create-update-lead';
import { createTicketAction } from './lib/actions/create-ticket';
import { updateTicketAction } from './lib/actions/update-ticket';
import { findCompanyAction } from './lib/actions/find-company';
import { leadAddedEmailTrigger } from './lib/triggers/lead-added-email';
import { newTicketTrigger } from './lib/triggers/new-ticket';
import { tagAddedToLeadTrigger } from './lib/triggers/tag-added-to-lead';
import { contactRepliedTrigger } from './lib/triggers/contact-replied';
import { leadConvertedToUserTrigger } from './lib/triggers/lead-converted-to-user';
import { newUserTrigger } from './lib/triggers/new-user';
import { tagAddedToUserTrigger } from './lib/triggers/tag-added-to-user';
import { contactUpdatedTrigger } from './lib/triggers/contact-updated';
const description = `
Please follow the instructions to create Intercom Oauth2 app.
1.Log in to your Intercom account and navigate to **Settings > Integrations > Developer Hub**.
2.Click on **Create a new app** and select the appropriate workspace.
3.In **Authentication** section, add Redirect URL.
4.In **Webhooks** section, select the events you want to receive.
5.Go to the **Basic Information** section and copy the Client ID and Client Secret.
`;
export const intercomAuth = PieceAuth.OAuth2({
authUrl: 'https://app.{region}.com/oauth',
tokenUrl: 'https://api.{region}.io/auth/eagle/token',
required: true,
description,
scope: [],
props: {
region: Property.StaticDropdown({
displayName: 'Region',
required: true,
options: {
options: [
{ label: 'US', value: 'intercom' },
{ label: 'EU', value: 'eu.intercom' },
{ label: 'AU', value: 'au.intercom' },
],
},
}),
},
});
export const intercom = createPiece({
displayName: 'Intercom',
description: 'Customer messaging platform for sales, marketing, and support',
minimumSupportedRelease: '0.29.0', // introduction of new intercom APP_WEBHOOK
logoUrl: 'https://cdn.activepieces.com/pieces/intercom.png',
categories: [PieceCategory.CUSTOMER_SUPPORT],
auth: intercomAuth,
authors: [
'kishanprmr',
'MoShizzle',
'AbdulTheActivePiecer',
'khaledmashaly',
'abuaboud',
'AdamSelene',
],
actions: [
addNoteToUserAction,
addNoteToConversationAction,
addOrRemoveTagOnContactAction,
addOrRemoveTagOnCompanyAction,
addOrRemoveTagOnConversationAction,
createArticleAction,
createConversationAction,
createTicketAction,
createUserAction,
createOrUpdateLeadAction,
createOrUpdateUserAction,
replyToConversation,
sendMessageAction,
updateTicketAction,
findCompanyAction,
findConversationAction,
findLeadAction,
findUserAction,
listAllTagsAction,
getConversationAction,
createCustomApiCallAction({
baseUrl: (auth) => `https://api.${(auth as OAuth2PropertyValue).props?.['region']}.io`,
auth: intercomAuth,
authMapping: async (auth) => ({
Authorization: `Bearer ${(auth as OAuth2PropertyValue).access_token}`,
}),
}),
],
triggers: [
contactRepliedTrigger,
leadAddedEmailTrigger,
leadConvertedToUserTrigger,
conversationClosedTrigger,
conversationAssigned,
conversationSnoozed,
conversationUnsnoozed,
newCompanyTrigger,
newConversationFromUser,
conversationRated,
newLeadTrigger,
newTicketTrigger,
newUserTrigger,
conversationPartTagged,
tagAddedToLeadTrigger,
tagAddedToUserTrigger,
contactUpdatedTrigger,
replyFromUser,
replyFromAdmin,
noteAddedToConversation,
],
events: {
parseAndReply: ({ payload }) => {
const payloadBody = payload.body as PayloadBody;
return {
event: payloadBody.topic,
identifierValue: payloadBody.app_id,
};
},
verify: ({ payload, webhookSecret }) => {
const signature = payload.headers['x-hub-signature'];
let hmac: crypto.Hmac;
if (typeof webhookSecret === 'string') {
hmac = crypto.createHmac('sha1', webhookSecret);
} else {
const app_id = (payload.body as PayloadBody).app_id;
const webhookSecrets = webhookSecret as Record<string, string>;
if (!(app_id in webhookSecrets)) {
return false;
}
hmac = crypto.createHmac('sha1', webhookSecrets[app_id]);
}
hmac.update(`${payload.rawBody}`);
const computedSignature = `sha1=${hmac.digest('hex')}`;
return signature === computedSignature;
},
},
});
type PayloadBody = {
type: string;
topic: string;
id: string;
app_id: string;
};

View File

@@ -0,0 +1,34 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { intercomAuth } from '../..';
import { commonProps, intercomClient } from '../common';
import { conversationIdProp } from '../common/props';
export const addNoteToConversationAction = createAction({
auth: intercomAuth,
name: 'addNoteToConversation',
displayName: 'Add note to conversation',
description: 'Add a note (for other admins) to an existing conversation',
props: {
from: commonProps.admins({ displayName: 'From (Admin)', required: true }),
conversationId:conversationIdProp('Conversation ID', true),
body: Property.ShortText({
displayName: 'Message Body',
required: true,
}),
},
async run(context) {
const client = intercomClient(context.auth);
const response = await client.conversations.reply({
conversation_id: context.propsValue.conversationId!,
body: {
type: 'admin',
message_type: 'note',
body: context.propsValue.body,
admin_id: context.propsValue.from,
},
});
return response;
},
});

View File

@@ -0,0 +1,44 @@
import { intercomAuth } from '../../index';
import { createAction, Property } from '@activepieces/pieces-framework';
import { intercomClient } from '../common';
export const addNoteToUserAction = createAction({
auth: intercomAuth,
name: 'add-note-to-user',
displayName: 'Add Note',
description: 'Add a note to a user',
props: {
email: Property.ShortText({
displayName: 'Email',
required: true,
}),
body: Property.LongText({
displayName: 'Note Text',
required: true,
}),
},
async run(context) {
const client = intercomClient(context.auth);
const contactResponse = await client.contacts.search({
query: {
field: 'email',
operator: '=',
value: context.propsValue.email,
},
});
if (contactResponse.data.length === 0) {
throw new Error('Could not find user with this email address.');
}
const contactId = contactResponse.data[0].id;
const noteResponse = await client.notes.create({
contact_id: contactId,
body: context.propsValue.body,
});
return noteResponse;
},
});

View File

@@ -0,0 +1,47 @@
import { intercomAuth } from '../../index';
import { createAction, Property } from '@activepieces/pieces-framework';
import { companyIdProp } from '../common/props';
import { intercomClient } from '../common';
export const addOrRemoveTagOnCompanyAction = createAction({
auth: intercomAuth,
name: 'add-or-remove-tag-on-company',
displayName: 'Add/Remove Tag on Company',
description: 'Attach or remove a tag from a specific company.',
props: {
companyId: companyIdProp('Company ID', true),
tagName: Property.ShortText({
displayName: 'Tag Name',
required: true,
}),
untag: Property.Checkbox({
displayName: 'Untag ?',
required: false,
defaultValue: false,
}),
},
async run(context) {
const client = intercomClient(context.auth);
if (context.propsValue.untag) {
const company = await client.companies.find({ company_id: context.propsValue.companyId! });
const userDefinedCompanyId = company.company_id;
const response = await client.tags.create({
name: context.propsValue.tagName,
companies: [
{ id: context.propsValue.companyId!, untag: true, company_id: userDefinedCompanyId },
],
});
return response;
}
const response = await client.tags.create({
name: context.propsValue.tagName,
companies: [{ id: context.propsValue.companyId }],
});
return response;
},
});

View File

@@ -0,0 +1,39 @@
import { intercomAuth } from '../../index';
import { createAction, Property } from '@activepieces/pieces-framework';
import { contactIdProp, tagIdProp } from '../common/props';
import { intercomClient } from '../common';
export const addOrRemoveTagOnContactAction = createAction({
auth: intercomAuth,
name: 'add-or-remove-tag-on-contact',
displayName: 'Add/Remove Tag on Contact',
description: 'Attach or remove a tag from a specific contact.',
props: {
contactId: contactIdProp('Contact ID','user', true),
tagId: tagIdProp('Tag Name', true),
untag: Property.Checkbox({
displayName: 'Untag ?',
required: false,
defaultValue: false,
}),
},
async run(context) {
const client = intercomClient(context.auth);
if (context.propsValue.untag) {
const response = await client.tags.untagContact({
contact_id: context.propsValue.contactId!,
tag_id: context.propsValue.tagId!,
});
return response;
}
const response = await client.tags.tagContact({
contact_id: context.propsValue.contactId!,
id: context.propsValue.tagId!,
});
return response;
},
});

View File

@@ -0,0 +1,43 @@
import { intercomAuth } from '../../index';
import { createAction, Property } from '@activepieces/pieces-framework';
import { conversationIdProp, tagIdProp } from '../common/props';
import { intercomClient } from '../common';
export const addOrRemoveTagOnConversationAction = createAction({
auth: intercomAuth,
name: 'add-or-remove-tag-on-conversation',
displayName: 'Add/Remove Tag on Conversation',
description: 'Attach or remove a tag from a specific conversation.',
props: {
conversationId: conversationIdProp('Conversation ID', true),
tagId: tagIdProp('Tag', true),
untag: Property.Checkbox({
displayName: 'Untag ?',
required: false,
defaultValue: false,
}),
},
async run(context) {
const client = intercomClient(context.auth);
const admin = await client.admins.identify();
const adminId = admin.id;
if (context.propsValue.untag) {
const response = await client.tags.untagConversation({
conversation_id: context.propsValue.conversationId!,
tag_id: context.propsValue.tagId!,
admin_id: adminId,
});
return response;
}
const response = await client.tags.tagConversation({
conversation_id: context.propsValue.conversationId!,
id: context.propsValue.tagId!,
admin_id: adminId,
});
return response;
},
});

View File

@@ -0,0 +1,59 @@
import { intercomAuth } from '../../index';
import { createAction, Property } from '@activepieces/pieces-framework';
import { commonProps, intercomClient } from '../common';
import { collectionIdProp } from '../common/props';
export const createArticleAction = createAction({
auth: intercomAuth,
name: 'create-article',
displayName: 'Create Article',
description: 'Creates a new article in your Help Center.',
props: {
title: Property.LongText({
displayName: 'Title',
required: true,
}),
description: Property.ShortText({
displayName: 'Description',
required: false,
}),
body: Property.LongText({
displayName: 'Body',
required: false,
}),
authorId: commonProps.admins({ displayName: 'Author', required: true }),
state: Property.StaticDropdown({
displayName: 'State',
required: true,
defaultValue: 'draft',
options: {
disabled: false,
options: [
{ label: 'Draft', value: 'draft' },
{ label: 'Published', value: 'published' },
],
},
}),
collectionId: collectionIdProp('Parent Collection', false),
},
async run(context) {
const { authorId, collectionId, title, description, body, state } = context.propsValue;
if (!authorId) {
throw new Error('Author is required');
}
const client = intercomClient(context.auth);
const response = await client.articles.create({
title,
description,
body,
author_id: Number(authorId),
state: state as 'published' | 'draft',
parent_id: collectionId ? Number(collectionId) : undefined,
});
return response;
},
});

View File

@@ -0,0 +1,83 @@
import { intercomAuth } from '../../index';
import {
createAction,
DropdownOption,
PiecePropValueSchema,
Property,
} from '@activepieces/pieces-framework';
import { intercomClient } from '../common';
export const createConversationAction = createAction({
auth: intercomAuth,
name: 'create-conversation',
displayName: 'Create Conversation',
description: 'Creates a new conversation from a contact.',
props: {
contactType: Property.StaticDropdown({
displayName: 'Contact Type',
required: true,
defaultValue: 'user',
options: {
disabled: false,
options: [
{ value: 'user', label: 'User' },
{ value: 'lead', label: 'Lead' },
],
},
}),
contactId: Property.Dropdown({
auth: intercomAuth,
displayName: 'Contact ID',
required: true,
refreshers: ['contactType'],
options: async ({ auth, contactType }) => {
if (!auth || !contactType) {
return {
options: [],
disabled: true,
placeholder: 'Please connect your account first.',
};
}
const type = contactType as 'user' | 'lead';
const authValue = auth as PiecePropValueSchema<typeof intercomAuth>;
const client = intercomClient(authValue);
const response = await client.contacts.list();
const options: DropdownOption<string>[] = [];
for await (const contact of response) {
if (contact.role === type) {
options.push({
value: contact.id,
label: `${contact.name ?? ''}, ${contact.email}, ${contact.external_id ?? ''}`,
});
}
}
return {
disabled: false,
options,
};
},
}),
body: Property.LongText({
displayName: 'Message Body',
required: true,
}),
},
async run(context) {
const { contactId, body, contactType } = context.propsValue;
const client = intercomClient(context.auth);
const response = await client.conversations.create({
body,
from: {
type: contactType as 'lead' | 'user' | 'contact',
id: contactId,
},
});
return response;
},
});

View File

@@ -0,0 +1,57 @@
import { intercomAuth } from '../../index';
import { createAction } from '@activepieces/pieces-framework';
import { intercomClient } from '../common';
import {
companyIdProp,
contactIdProp,
ticketPropertiesProp,
ticketTypeIdProp,
} from '../common/props';
import dayjs from 'dayjs';
export const createTicketAction = createAction({
auth: intercomAuth,
name: 'create-ticket',
displayName: 'Create Ticket',
description: 'Creates a new ticket.',
props: {
ticketTypeId: ticketTypeIdProp('Ticket Type', true),
contactId: contactIdProp('Contact ID', null, true),
companyId: companyIdProp('Company ID', false),
ticketProperties: ticketPropertiesProp('Ticket Properties', true),
},
async run(context) {
const { ticketTypeId, contactId, companyId } = context.propsValue;
const ticketProperties = context.propsValue.ticketProperties ?? {};
if (!ticketTypeId) {
throw new Error('Ticket Type is required');
}
if (!contactId) {
throw new Error('Contact ID is required');
}
const client = intercomClient(context.auth);
const formattedProperties: Record<string, any> = {};
for (const key in ticketProperties) {
const value = ticketProperties[key];
// Check if value is a valid date string and convert it to a timestamp
if (typeof value === 'string' && dayjs(value).isValid()) {
formattedProperties[key] = dayjs(value).unix(); // Convert to timestamp
} else {
formattedProperties[key] = value;
}
}
const response = await client.tickets.create({
ticket_type_id: ticketTypeId,
contacts: [{ id: contactId }],
company_id: companyId,
ticket_attributes: formattedProperties,
});
return response;
},
});

View File

@@ -0,0 +1,95 @@
import { intercomAuth } from '../../index';
import { createAction, Property } from '@activepieces/pieces-framework';
import { intercomClient } from '../common';
import dayjs from 'dayjs';
export const createOrUpdateLeadAction = createAction({
auth: intercomAuth,
name: 'create-or-update-lead',
displayName: 'Create or Update Lead',
description: 'Create or update an Intercom lead.If an ID is provided, the lead will be updated.',
props: {
leadId: Property.ShortText({
displayName: 'Lead ID',
required: false,
}),
name: Property.ShortText({
displayName: 'Full Name',
required: false,
}),
email: Property.ShortText({
displayName: 'Email',
required: false,
}),
phone: Property.ShortText({
displayName: 'Phone',
required: false,
}),
unsubscribe: Property.Checkbox({
displayName: 'Unsubscribed From Emails',
required: false,
}),
createdAt: Property.DateTime({
displayName: 'Created At',
required: false,
}),
customAttributes: Property.Object({
displayName: 'Custom Attributes',
required: false,
}),
},
async run(context) {
const { leadId, name, email, phone, unsubscribe, createdAt, customAttributes } =
context.propsValue;
const client = intercomClient(context.auth);
if (leadId) {
const lead = await client.contacts.search({
query: {
operator: 'AND',
value: [
{
field: 'id',
operator: '=',
value: leadId,
},
{
field: 'role',
operator: '=',
value: 'lead',
},
],
},
pagination: { per_page: 1 },
});
if (lead.data.length === 0) {
throw new Error('Could not find lead with this id.');
}
const response = await client.contacts.update({
contact_id: lead.data[0].id,
name: name,
email: email,
phone: phone,
unsubscribed_from_emails: unsubscribe,
custom_attributes: customAttributes,
signed_up_at: createdAt ? dayjs(createdAt).unix() : undefined,
});
return response;
}
const response = await client.contacts.create({
role: 'lead',
name: name,
email: email,
phone: phone,
unsubscribed_from_emails: unsubscribe,
custom_attributes: customAttributes,
signed_up_at: createdAt ? dayjs(createdAt).unix() : undefined,
});
return response;
},
});

View File

@@ -0,0 +1,90 @@
import { intercomAuth } from '../../index';
import { createAction, Property } from '@activepieces/pieces-framework';
import { intercomClient } from '../common';
import dayjs from 'dayjs';
export const createOrUpdateUserAction = createAction({
auth: intercomAuth,
name: 'create-or-update-user',
displayName: 'Create/Update User',
description: 'Update a user within intercom given an email address.',
props: {
email: Property.ShortText({
displayName: 'Lookup Email',
required: true,
}),
name: Property.ShortText({
displayName: 'Full Name',
required: false,
}),
userId: Property.ShortText({
displayName: 'User ID',
required: false,
}),
phone: Property.ShortText({
displayName: 'Phone',
required: false,
}),
createdAt: Property.DateTime({
displayName: 'Created At',
required: false,
}),
customAttributes: Property.Object({
displayName: 'Custom Attributes',
required: false,
}),
},
async run(context) {
const client = intercomClient(context.auth);
const contact = await client.contacts.search({
query: {
operator: 'AND',
value: [
{
field: 'email',
operator: '=',
value: context.propsValue.email,
},
{
field: 'role',
operator: '=',
value: 'user',
},
],
},
pagination: { per_page: 1 },
});
if (contact.data.length === 0) {
const response = await client.contacts.create({
role: 'user',
email: context.propsValue.email,
name: context.propsValue.name,
custom_attributes: context.propsValue.customAttributes,
signed_up_at: context.propsValue.createdAt
? dayjs(context.propsValue.createdAt).unix()
: undefined,
external_id: context.propsValue.userId,
phone: context.propsValue.phone,
});
return response;
}
const contactId = contact.data[0].id;
const response = await client.contacts.update({
contact_id: contactId,
name: context.propsValue.name,
custom_attributes: context.propsValue.customAttributes,
signed_up_at: context.propsValue.createdAt
? dayjs(context.propsValue.createdAt).unix()
: undefined,
external_id: context.propsValue.userId,
phone: context.propsValue.phone,
});
return response;
},
});

View File

@@ -0,0 +1,49 @@
import { intercomAuth } from '../../index';
import { createAction, Property } from '@activepieces/pieces-framework';
import { intercomClient } from '../common';
import dayjs from 'dayjs';
export const createUserAction = createAction({
auth: intercomAuth,
name: 'create-user',
displayName: 'Create User',
description: 'Creates a new user.',
props: {
email: Property.ShortText({
displayName: 'Email',
required: true,
}),
createdAt: Property.DateTime({
displayName: 'Created At',
required: false,
}),
userId: Property.ShortText({
displayName: 'User ID',
required: false,
}),
name: Property.ShortText({
displayName: 'Full Name',
required: false,
}),
customAttributes: Property.Object({
displayName: 'Custom Attributes',
required: false,
}),
},
async run(context) {
const client = intercomClient(context.auth);
const response = await client.contacts.create({
role: 'user',
email: context.propsValue.email,
name: context.propsValue.name,
custom_attributes: context.propsValue.customAttributes,
signed_up_at: context.propsValue.createdAt
? dayjs(context.propsValue.createdAt).unix()
: undefined,
external_id: context.propsValue.userId,
});
return response;
},
});

View File

@@ -0,0 +1,44 @@
import { intercomAuth } from '../../index';
import { createAction, Property } from '@activepieces/pieces-framework';
import { intercomClient } from '../common';
export const findCompanyAction = createAction({
auth: intercomAuth,
name: 'find-company',
displayName: 'Find Company',
description: 'Finds an existing company.',
props: {
searchField: Property.StaticDropdown({
displayName: 'Search Field',
required: true,
options: {
disabled: false,
options: [
{ label: 'Name', value: 'name' },
{ label: 'Company ID', value: 'company_id' },
],
},
}),
searchValue: Property.ShortText({
displayName: 'Search Value',
required: true,
}),
},
async run(context) {
const { searchField, searchValue } = context.propsValue;
const client = intercomClient(context.auth);
const companyResponse = await client.companies.retrieve({
company_id: searchField === 'company_id' ? searchValue : undefined,
name: searchField === 'name' ? searchValue : undefined,
per_page:1
})
return {
found: companyResponse.data.length > 0,
user: companyResponse.data.length > 0 ? companyResponse.data[0] : {},
};
},
});

View File

@@ -0,0 +1,114 @@
import { intercomAuth } from '../../index';
import { createAction, Property } from '@activepieces/pieces-framework';
import { intercomClient, Operator } from '../common';
import dayjs from 'dayjs';
export const findConversationAction = createAction({
auth: intercomAuth,
name: 'find-conversation',
displayName: 'Find Conversation',
description: 'Searches for conversations using various criteria',
props: {
searchField: Property.StaticDropdown({
displayName: 'Search Field',
required: true,
options: {
disabled: false,
options: [
{ label: 'Conversation ID', value: 'id' },
{ label: 'Subject', value: 'source.subject' },
{ label: 'Message Body', value: 'source.body' },
{ label: 'Author Email', value: 'source.author.email' },
{ label: 'Assigned Admin', value: 'admin_assignee_id' },
{ label: 'Team', value: 'team_assignee_id' },
{ label: 'Tag IDs', value: 'tag_ids' },
],
},
}),
matchType: Property.StaticDropdown({
displayName: 'Match Type',
required: true,
options: {
disabled: false,
options: [
{ label: 'Contains', value: 'contains' },
{ label: 'Equals', value: 'equals' },
{ label: 'Starts With', value: 'starts_with' },
],
},
}),
searchTerm: Property.ShortText({
displayName: 'Search Term',
required: true,
}),
status: Property.StaticDropdown({
displayName: 'Status',
required: false,
options: {
disabled: false,
options: [
{ label: 'Open', value: 'open' },
{ label: 'Closed', value: 'closed' },
],
},
}),
updateAfter: Property.DateTime({
displayName: 'Update After',
required: false,
}),
updateBefore: Property.DateTime({
displayName: 'Update Before',
required: false,
}),
},
async run(context) {
const { searchField, matchType, searchTerm, status, updateAfter, updateBefore } =
context.propsValue;
const operator = matchType === 'contains' ? '~' : matchType === 'starts_with' ? '^' : '=';
const client = intercomClient(context.auth);
const filter = [
{
field: searchField,
operator: operator as Operator,
value: searchTerm,
},
];
if (status) {
filter.push({
field: 'state',
operator: "=",
value: status,
});
}
if (updateAfter) {
filter.push({
field: 'updated_at',
operator: '>',
value: dayjs(updateAfter).unix().toString(),
});
}
if (updateBefore) {
filter.push({
field: 'updated_at',
operator: "<",
value: dayjs(updateBefore).unix().toString(),
});
}
const response = await client.conversations.search({
query: {
operator: 'AND',
value: filter,
},
});
return {
found: response.data.length > 0,
conversation: response.data.length > 0 ? response.data[0] : {},
};
},
});

View File

@@ -0,0 +1,57 @@
import { intercomAuth } from '../../index';
import { createAction, Property } from '@activepieces/pieces-framework';
import { intercomClient } from '../common';
export const findLeadAction = createAction({
auth: intercomAuth,
name: 'find-lead',
displayName: 'Find Lead',
description: 'Finds an existing lead.',
props: {
searchField: Property.StaticDropdown({
displayName: 'Search Field',
required: true,
options: {
disabled: false,
options: [
{ label: 'Email', value: 'email' },
{ label: 'ID', value: 'id' },
{ label: 'User ID', value: 'external_id' },
],
},
}),
searchValue: Property.ShortText({
displayName: 'Search Value',
required: true,
}),
},
async run(context) {
const { searchField, searchValue } = context.propsValue;
const client = intercomClient(context.auth);
const contactResponse = await client.contacts.search({
query: {
operator: 'AND',
value: [
{
field: searchField,
operator: '=',
value: searchValue,
},
{
field: 'role',
operator: '=',
value: 'lead',
},
],
},
pagination: { per_page: 1 },
});
return {
found: contactResponse.data.length > 0,
lead: contactResponse.data.length > 0 ? contactResponse.data[0] : {},
};
},
});

View File

@@ -0,0 +1,57 @@
import { intercomAuth } from '../../index';
import { createAction, Property } from '@activepieces/pieces-framework';
import { intercomClient } from '../common';
export const findUserAction = createAction({
auth: intercomAuth,
name: 'find-user',
displayName: 'Find User',
description: 'Finds an existing user.',
props: {
searchField: Property.StaticDropdown({
displayName: 'Search Field',
required: true,
options: {
disabled: false,
options: [
{ label: 'Email', value: 'email' },
{ label: 'ID', value: 'id' },
{ label: 'User ID', value: 'external_id' },
],
},
}),
searchValue: Property.ShortText({
displayName: 'Search Value',
required: true,
}),
},
async run(context) {
const { searchField, searchValue } = context.propsValue;
const client = intercomClient(context.auth);
const contactResponse = await client.contacts.search({
query: {
operator: 'AND',
value: [
{
field: searchField,
operator: '=',
value: searchValue,
},
{
field: 'role',
operator: '=',
value: 'user',
},
],
},
pagination: { per_page: 1 },
});
return {
found: contactResponse.data.length > 0,
user: contactResponse.data.length > 0 ? contactResponse.data[0] : {},
};
},
});

View File

@@ -0,0 +1,28 @@
import { intercomAuth } from '../../index';
import { createAction } from '@activepieces/pieces-framework';
import { conversationIdProp } from '../common/props';
import { intercomClient } from '../common';
export const getConversationAction = createAction({
auth: intercomAuth,
name: 'get-conversation',
displayName: 'Retrieve a Conversation',
description: 'Retrieves a specific conversation by ID.',
props: {
conversationId: conversationIdProp('Conversation ID', true),
},
async run(context) {
const { conversationId } = context.propsValue;
const client = intercomClient(context.auth);
if (!conversationId) {
throw new Error('Conversation ID is required');
}
const response = await client.conversations.find({
conversation_id: conversationId,
});
return response;
},
});

View File

@@ -0,0 +1,19 @@
import { intercomAuth } from "../../index";
import { createAction } from "@activepieces/pieces-framework";
import { intercomClient } from "../common";
export const listAllTagsAction = createAction({
auth:intercomAuth,
name:'list-all-tags',
displayName:'List Tags',
description:'List all tags.',
props:{},
async run(context){
const client = intercomClient(context.auth);
const response = await client.tags.list();
return response;
}
})

View File

@@ -0,0 +1,34 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { intercomAuth } from '../..';
import { commonProps, intercomClient } from '../common';
import { conversationIdProp } from '../common/props';
export const replyToConversation = createAction({
auth: intercomAuth,
name: 'replyToConversation',
displayName: 'Reply to conversation',
description: 'Reply (as an admin) to a conversation with a contact',
props: {
from: commonProps.admins({ displayName: 'From (Admin)', required: true }),
conversationId: conversationIdProp('Conversation ID', true),
body: Property.ShortText({
displayName: 'Message Body',
required: true,
}),
},
async run(context) {
const client = intercomClient(context.auth);
const response = await client.conversations.reply({
conversation_id: context.propsValue.conversationId!,
body: {
type: 'admin',
message_type: 'comment',
body: context.propsValue.body,
admin_id: context.propsValue.from,
},
});
return response;
},
});

View File

@@ -0,0 +1,87 @@
import { createAction, DynamicPropsValue, Property } from '@activepieces/pieces-framework';
import { commonProps, intercomClient } from '../common';
import { intercomAuth } from '../..';
export const sendMessageAction = createAction({
auth: intercomAuth,
description: 'Send a message to a contact (only allowed by admins)',
displayName: 'Send Message',
name: 'send_message',
props: {
message_type: Property.StaticDropdown({
displayName: 'Message Type',
options: {
options: [
{ value: 'email', label: 'Email' },
{ value: 'inapp', label: 'In App Chat' },
],
},
required: true,
defaultValue: 'email',
}),
email_required_fields: Property.DynamicProperties({
auth: intercomAuth,
displayName: 'Email Required Fields',
required: true,
refreshers: ['message_type'],
props: async ({ message_type }) => {
let fields: DynamicPropsValue = {};
if ((message_type as unknown as string) === 'email' || !message_type) {
fields = {
subject: Property.ShortText({
displayName: 'Subject',
required: true,
description: 'Email title',
}),
template: Property.StaticDropdown({
displayName: 'Template',
options: {
options: [
{ label: 'Personal', value: 'personal' },
{ label: 'Plain', value: 'plain' },
],
},
required: true,
defaultValue: 'personal',
description: 'Style of the email',
}),
};
}
return fields;
},
}),
from: commonProps.admins({ displayName: 'From (Admin)', required: true }),
to: commonProps.contacts({ displayName: 'To', required: true }),
body: Property.ShortText({
displayName: 'Message Body',
required: true,
}),
create_conversation_without_contact_reply: Property.Checkbox({
displayName: 'Create Conversation Without Contact Reply',
description:
'Whether a conversation should be opened in the inbox for the message without the contact replying. Defaults to false if not provided.',
required: false,
defaultValue: false,
}),
},
run: async (context) => {
const client = intercomClient(context.auth);
const user = await client.contacts.find({ contact_id: context.propsValue.to });
const response = await client.messages.create({
message_type: context.propsValue.message_type as 'email' | 'inapp',
from: { id: Number(context.propsValue.from), type: 'admin' },
to: {
id: context.propsValue.to,
type: user.role === 'user' ? 'user' : 'lead',
},
template: context.propsValue.email_required_fields['template'],
subject: context.propsValue.email_required_fields['subject'],
create_conversation_without_contact_reply:
context.propsValue.create_conversation_without_contact_reply,
body: context.propsValue.body,
});
return response;
},
});

View File

@@ -0,0 +1,100 @@
import { intercomAuth } from '../../index';
import { createAction, Property } from '@activepieces/pieces-framework';
import { commonProps, intercomClient } from '../common';
import { ticketIdProp, ticketPropertiesProp, ticketTypeIdProp } from '../common/props';
import { UpdateTicketRequest } from 'intercom-client/api';
import dayjs from 'dayjs';
export const updateTicketAction = createAction({
auth: intercomAuth,
name: 'update-ticket',
displayName: 'Update Ticket',
description: 'Updates an existing ticket.',
props: {
ticketTypeId: ticketTypeIdProp('Ticket Type', true),
ticketId: ticketIdProp('Ticket', true),
ticketProperties: ticketPropertiesProp('Ticket Properties', true),
isOpen: Property.Checkbox({
displayName: 'Is Open',
required: false,
}),
state: Property.StaticDropdown({
displayName: 'State',
required: false,
options: {
disabled: false,
options: [
{
value: 'in_progress',
label: 'In Progress',
},
{
value: 'waiting_on_customer',
label: 'Waiting on Customer',
},
{
value: 'resolved',
label: 'Resolved',
},
],
},
}),
snoozedTill: Property.DateTime({
displayName: 'Snoozed Until',
required: false,
}),
assignedAdminId: commonProps.admins({ displayName: 'Assigned Admin', required: false }),
},
async run(context) {
const { ticketTypeId, ticketId, isOpen, state, snoozedTill, assignedAdminId } =
context.propsValue;
const ticketProperties = context.propsValue.ticketProperties ?? {};
if (!ticketTypeId) {
throw new Error('Ticket Type is required');
}
if (!ticketId) {
throw new Error('Ticket ID is required');
}
const client = intercomClient(context.auth);
const request: UpdateTicketRequest = {
ticket_id: ticketId,
open: isOpen,
state: state as 'in_progress' | 'waiting_on_customer' | 'resolved' | undefined,
};
if (snoozedTill) {
request.snoozed_until = dayjs(snoozedTill).unix();
}
if (assignedAdminId) {
const admin = await client.admins.identify();
request.assignment = {
assignee_id: assignedAdminId,
admin_id: admin.id,
};
}
if (Object.keys(ticketProperties).length > 0) {
const formattedProperties: Record<string, any> = {};
for (const key in ticketProperties) {
const value = ticketProperties[key];
// Check if value is a valid date string and convert it to a timestamp
if (typeof value === 'string' && dayjs(value).isValid()) {
formattedProperties[key] = dayjs(value).unix(); // Convert to timestamp
} else {
formattedProperties[key] = value;
}
}
request.ticket_attributes = formattedProperties;
}
const response = await client.tickets.update(request);
return response;
},
});

View File

@@ -0,0 +1,109 @@
import { getAccessTokenOrThrow } from '@activepieces/pieces-common';
import { IntercomClient } from 'intercom-client';
import {
OAuth2PropertyValue,
OAuth2Props,
Property,
} from '@activepieces/pieces-framework';
import { intercomAuth } from '../../index';
export const intercomClient = (auth: OAuth2PropertyValue<OAuth2Props>) => {
const client = new IntercomClient({
token: getAccessTokenOrThrow(auth),
environment: `https://api.${auth.props?.['region']}.io`,
});
return client;
};
export const commonProps = {
admins: <R extends boolean>(options: { displayName: string; required: R }) =>
Property.Dropdown<string, R, typeof intercomAuth>({
auth: intercomAuth,
displayName: options.displayName,
required: options.required,
options: async ({ auth }) => {
if (!auth) {
return {
options: [],
disabled: true,
placeholder: 'Please connect your account first',
};
}
const client = intercomClient(auth as OAuth2PropertyValue);
const adminsResponse = await client.admins.list();
return {
options: adminsResponse.admins.map((c) => {
const res = { value: c.id, label: '' };
if (c.name) {
res.label = c.name;
} else if (c.email) {
res.label = c.email;
} else {
res.label = c.id;
}
return res;
}),
};
},
refreshers: [],
}),
contacts: <R extends boolean>(options: {
displayName: string;
required: R;
}) =>
Property.Dropdown<string, R, typeof intercomAuth>({
auth: intercomAuth,
displayName: options.displayName,
required: options.required,
options: async ({ auth }) => {
if (!auth) {
return {
options: [],
disabled: true,
placeholder: 'Please connect your account first',
};
}
const client = intercomClient(auth);
const contactsResponse = await client.contacts.list({});
return {
options: contactsResponse.data.map((c) => {
const res = { value: c.id, label: '' };
if (c.name) {
res.label = c.name;
} else if (c.email) {
res.label = c.email;
} else {
res.label = c.id;
}
return res;
}),
};
},
refreshers: [],
}),
};
export type Operator =
| '='
| '!='
| 'IN'
| 'NIN'
| '<'
| '>'
| '~'
| '!~'
| '^'
| '$';
export type TriggerPayload = {
type: string;
app_id: string;
id: string;
topic: string;
data: {
type: string;
item: Record<string, any>;
};
};

View File

@@ -0,0 +1,408 @@
import { AuthenticationType, httpClient, HttpMethod } from '@activepieces/pieces-common';
import { intercomClient } from '.';
import { intercomAuth } from '../../index';
import {
DropdownOption,
DynamicPropsValue,
PiecePropValueSchema,
Property,
} from '@activepieces/pieces-framework';
export const conversationIdProp = (displayName: string, required = true) =>
Property.Dropdown({
auth: intercomAuth,
displayName,
required,
refreshers: [],
options: async ({ auth }) => {
if (!auth) {
return {
options: [],
disabled: true,
placeholder: 'Please connect your account first.',
};
}
const authValue = auth as PiecePropValueSchema<typeof intercomAuth>;
const client = intercomClient(authValue);
const response = await client.conversations.list();
const options: DropdownOption<string>[] = [];
for await (const conversation of response) {
options.push({
value: conversation.id,
label: `${conversation.source.author.email}${
conversation.title ? `, ${conversation.title}` : ''
}, ${conversation.id}`,
});
}
return {
disabled: false,
options,
};
},
});
export const tagIdProp = (displayName: string, required = true) =>
Property.Dropdown({
auth: intercomAuth,
displayName,
required,
refreshers: [],
options: async ({ auth }) => {
if (!auth) {
return {
options: [],
disabled: true,
placeholder: 'Please connect your account first.',
};
}
const authValue = auth as PiecePropValueSchema<typeof intercomAuth>;
const client = intercomClient(authValue);
const response = await client.tags.list();
const options: DropdownOption<string>[] = [];
for (const tag of response.data) {
options.push({
value: tag.id,
label: tag.name,
});
}
return {
disabled: false,
options,
};
},
});
export const companyIdProp = (displayName: string, required = true) =>
Property.Dropdown({
auth: intercomAuth,
displayName,
required,
refreshers: [],
options: async ({ auth }) => {
if (!auth) {
return {
options: [],
disabled: true,
placeholder: 'Please connect your account first.',
};
}
const authValue = auth as PiecePropValueSchema<typeof intercomAuth>;
const client = intercomClient(authValue);
const response = await client.companies.list();
const options: DropdownOption<string>[] = [];
for await (const company of response) {
options.push({
value: company.id,
label: company.name,
});
}
return {
disabled: false,
options,
};
},
});
export const contactIdProp = (displayName: string, contactType: string | null, required = true) =>
Property.Dropdown({
auth: intercomAuth,
displayName,
required,
refreshers: [],
options: async ({ auth }) => {
if (!auth) {
return {
options: [],
disabled: true,
placeholder: 'Please connect your account first.',
};
}
const authValue = auth as PiecePropValueSchema<typeof intercomAuth>;
const client = intercomClient(authValue);
const response = await client.contacts.list();
const options: DropdownOption<string>[] = [];
for await (const contact of response) {
if (contactType === null || contact.role === contactType) {
options.push({
value: contact.id,
label: `${contact.name ?? ''}, ${contact.email}, ${contact.external_id ?? ''}`,
});
}
}
return {
disabled: false,
options,
};
},
});
export const collectionIdProp = (displayName: string, required = true) =>
Property.Dropdown({
auth: intercomAuth,
displayName,
required,
refreshers: [],
options: async ({ auth }) => {
if (!auth) {
return {
options: [],
disabled: true,
placeholder: 'Please connect your account first.',
};
}
const authValue = auth as PiecePropValueSchema<typeof intercomAuth>;
const client = intercomClient(authValue);
const response = await client.helpCenters.collections.list();
const options: DropdownOption<string>[] = [];
for await (const collection of response) {
options.push({
value: collection.id,
label: collection.name,
});
}
return {
disabled: false,
options,
};
},
});
export const ticketTypeIdProp = (displayName: string, required = true) =>
Property.Dropdown({
auth: intercomAuth,
displayName,
required,
refreshers: [],
options: async ({ auth }) => {
if (!auth) {
return {
options: [],
disabled: true,
placeholder: 'Please connect your account first.',
};
}
const authValue = auth as PiecePropValueSchema<typeof intercomAuth>;
const response = await httpClient.sendRequest<{ data: Array<{ id: string; name: string }> }>({
method: HttpMethod.GET,
url: `https://api.${authValue.props?.['region']}.io/ticket_types `,
authentication: {
type: AuthenticationType.BEARER_TOKEN,
token: authValue.access_token,
},
});
const options: DropdownOption<string>[] = [];
for (const type of response.body.data) {
options.push({
value: type.id,
label: type.name,
});
}
return {
disabled: false,
options,
};
},
});
export const ticketStateIdProp = (displayName: string, required = true) =>
Property.Dropdown({
auth: intercomAuth,
displayName,
required,
refreshers: [],
options: async ({ auth }) => {
if (!auth) {
return {
options: [],
disabled: true,
};
}
const authValue = auth as PiecePropValueSchema<typeof intercomAuth>;
const options: DropdownOption<string>[] = [];
const response = await httpClient.sendRequest<{
data: Array<{ id: string; internal_label: string }>;
}>({
method: HttpMethod.GET,
url: `https://api.${authValue.props?.['region']}.io/ticket_states`,
authentication: {
type: AuthenticationType.BEARER_TOKEN,
token: authValue.access_token,
},
});
if (response.body.data) {
for (const state of response.body.data) {
options.push({
label: state.internal_label,
value: state.id,
});
}
}
return {
disabled: true,
options: [],
};
},
});
export const ticketIdProp = (displayName: string, required = true) =>
Property.Dropdown({
auth: intercomAuth,
displayName,
required,
refreshers: ['ticketTypeId'],
options: async ({ auth, ticketTypeId }) => {
if (!auth || !ticketTypeId) {
return {
options: [],
disabled: true,
placeholder: 'Please connect your account first.',
};
}
const authValue = auth as PiecePropValueSchema<typeof intercomAuth>;
const client = intercomClient(authValue);
const options: DropdownOption<string>[] = [];
const response = await client.tickets.search({
query: {
field: 'ticket_type_id',
operator: '=',
value: ticketTypeId as unknown as string,
},
pagination: { per_page: 100 },
});
for await (const ticket of response) {
options.push({
value: ticket.id,
label: (ticket.ticket_attributes['_default_title_'] as string) ?? ticket.id,
});
}
return {
disabled: false,
options,
};
},
});
export const ticketPropertiesProp = (displayName: string, required = true) =>
Property.DynamicProperties({
auth: intercomAuth,
displayName,
refreshers: ['ticketTypeId'],
required,
props: async ({ auth, ticketTypeId }) => {
if (!auth) return {};
if (!ticketTypeId) return {};
const props: DynamicPropsValue = {};
const authValue = auth as PiecePropValueSchema<typeof intercomAuth>;
const response = await httpClient.sendRequest<{
ticket_type_attributes: {
data: Array<{ data_type: string; name: string; input_options: Record<string, unknown> }>;
};
}>({
method: HttpMethod.GET,
url: `https://api.${authValue.props?.['region']}.io/ticket_types/${ticketTypeId} `,
authentication: {
type: AuthenticationType.BEARER_TOKEN,
token: authValue.access_token,
},
});
for (const field of response.body.ticket_type_attributes.data) {
switch (field.data_type) {
case 'string':
props[field.name] = Property.LongText({
displayName:
field.name === '_default_title_'
? 'Title (Default)'
: field.name === '_default_description_'
? 'Description (Default)'
: field.name,
required: false,
});
break;
case 'integer':
case 'decimal':
props[field.name] = Property.Number({
displayName: field.name,
required: false,
});
break;
case 'boolean':
props[field.name] = Property.Checkbox({
displayName: field.name,
required: false,
});
break;
case 'datetime':
props[field.name] = Property.DateTime({
displayName: field.name,
required: false,
});
break;
case 'list':
{
const options = field.input_options.list_options as Array<{
label: string;
id: string;
}>;
props[field.name] = Property.StaticDropdown({
displayName: field.name,
required: false,
options: {
disabled: false,
options: options
? options.map((option) => ({
value: option.id,
label: option.label,
}))
: [],
},
});
}
break;
default:
break;
}
}
return props;
},
});

View File

@@ -0,0 +1,180 @@
import { createTrigger, TriggerStrategy } from '@activepieces/pieces-framework';
import { intercomAuth } from '../..';
import { intercomClient, TriggerPayload } from '../common';
export const contactRepliedTrigger = createTrigger({
name: 'contactReplied',
displayName: 'Contact Replied',
description: 'Triggers when a contact replies to a Conversation in Intercom.',
props: {},
auth: intercomAuth,
type: TriggerStrategy.APP_WEBHOOK,
async onEnable(context) {
const client = intercomClient(context.auth);
const response = await client.admins.identify();
if (!response.app?.id_code) {
throw new Error('Could not find admin id code');
}
context.app.createListeners({
events: ['conversation.user.replied'],
identifierValue: response['app']['id_code'],
});
},
async onDisable(context) {
// implement webhook deletion logic
},
async test(context) {
const client = intercomClient(context.auth);
const response = await client.conversations.list({ per_page: 10 });
return response.data;
},
async run(context) {
const payload = context.payload.body as TriggerPayload;
return [payload.data.item];
},
sampleData: {
type: 'conversation',
id: '2',
created_at: 1739105560,
updated_at: 1739524230,
waiting_since: null,
snoozed_until: null,
source: {
type: null,
id: '2',
delivered_as: 'admin_initiated',
subject: '',
body: '',
author: {
type: 'admin',
id: '8055721',
name: 'Fin',
email: 'operator+k2gbyfxu@intercom.io',
},
attachments: [],
url: null,
redacted: false,
},
contacts: {
type: 'contact.list',
contacts: [
{
type: 'contact',
id: '67a87380c16da6b56c76bbb7',
external_id: '1234567',
},
],
},
first_contact_reply: null,
admin_assignee_id: 8055717,
team_assignee_id: null,
open: true,
state: 'open',
read: false,
tags: {
type: 'tag.list',
tags: [],
},
priority: 'not_priority',
sla_applied: null,
statistics: {
type: 'conversation_statistics',
time_to_assignment: null,
time_to_admin_reply: null,
time_to_first_close: null,
time_to_last_close: null,
median_time_to_reply: null,
first_contact_reply_at: null,
first_assignment_at: null,
first_admin_reply_at: null,
first_close_at: null,
last_assignment_at: null,
last_assignment_admin_reply_at: null,
last_contact_reply_at: null,
last_admin_reply_at: null,
last_close_at: null,
last_closed_by_id: null,
count_reopens: 0,
count_assignments: 0,
count_conversation_parts: 9,
},
conversation_rating: null,
teammates: {
type: 'admin.list',
admins: [
{
type: 'admin',
id: '8055717',
},
],
},
title: null,
custom_attributes: {
'Copilot used': false,
'Ticket category': 'Customer ticket',
'Created by': 8055721,
},
topics: {
type: 'topic.list',
topics: [],
total_count: 0,
},
ticket: {
type: 'ticket',
id: 2,
url: 'https://app.intercom.com/a/apps/ahah/conversations/2',
custom_attributes: {
_default_title_: {
value: 'fdfdf',
type: 'string',
},
_default_description_: {
value: 'dfdfdf',
type: 'string',
},
List: {
value: null,
type: 'list',
},
Number: {
value: null,
type: 'integer',
},
decimal: {
value: null,
type: 'decimal',
},
bool: {
value: null,
type: 'boolean',
},
'date time': {
value: null,
type: 'datetime',
},
files: {
value: null,
type: 'files',
},
},
state: 'in_progress',
ticket_type: 'zapier',
ticket_type_description: '',
ticket_type_emoji: '🚨',
ticket_custom_state_admin_label: 'In progress',
ticket_custom_state_user_label: 'In progress',
},
linked_objects: {
type: 'list',
data: [],
total_count: 0,
has_more: false,
},
ai_agent: null,
ai_agent_participated: false,
},
});

View File

@@ -0,0 +1,160 @@
import { intercomAuth } from '../../index';
import { createTrigger, Property, TriggerStrategy } from '@activepieces/pieces-framework';
import { intercomClient, TriggerPayload } from '../common';
export const contactUpdatedTrigger = createTrigger({
auth: intercomAuth,
name: 'contact-updated',
displayName: 'Updated Contact',
description: 'Triggers when a contact is updated.',
props: {
type: Property.StaticDropdown({
displayName: 'Type',
required: true,
defaultValue: 'user',
options: {
disabled: false,
options: [
{ label: 'User', value: 'user' },
{ label: 'Lead', value: 'lead' },
],
},
}),
},
type: TriggerStrategy.APP_WEBHOOK,
async onEnable(context) {
const client = intercomClient(context.auth);
const response = await client.admins.identify();
if (!response.app?.id_code) {
throw new Error('Could not find admin id code');
}
const event = context.propsValue.type === 'user' ? 'contact.user.updated' : 'contact.lead.updated';
context.app.createListeners({
events: [event],
identifierValue: response['app']['id_code'],
});
},
async onDisable(context) {
// implement webhook deletion logic
},
async test(context) {
const client = intercomClient(context.auth);
const response = await client.contacts.search({
query:{
field:'role',
operator:'=',
value:context.propsValue.type
},
pagination:{per_page:5}
});
return response.data;
},
async run(context) {
const payload = context.payload.body as TriggerPayload;
return [payload.data.item];
},
sampleData: {
type: 'contact',
id: '67a9b9dfcc14109e073fbe19',
workspace_id: 'nzekhfwb',
external_id: '5b803f65-bcec-4198-b4f4-a0588454b537',
role: 'user',
email: 'john.doe@example.com',
phone: null,
name: 'John Doe',
avatar: null,
owner_id: null,
social_profiles: {
type: 'list',
data: [],
},
has_hard_bounced: false,
marked_email_as_spam: false,
unsubscribed_from_emails: false,
created_at: '2025-02-10T08:33:35.910+00:00',
updated_at: '2025-02-10T08:33:35.907+00:00',
signed_up_at: null,
last_seen_at: null,
last_replied_at: null,
last_contacted_at: null,
last_email_opened_at: null,
last_email_clicked_at: null,
language_override: null,
browser: null,
browser_version: null,
browser_language: null,
os: null,
location: {
type: 'location',
country: null,
region: null,
city: null,
country_code: null,
continent_code: null,
},
android_app_name: null,
android_app_version: null,
android_device: null,
android_os_version: null,
android_sdk_version: null,
android_last_seen_at: null,
ios_app_name: null,
ios_app_version: null,
ios_device: null,
ios_os_version: null,
ios_sdk_version: null,
ios_last_seen_at: null,
custom_attributes: {},
tags: {
type: 'list',
data: [],
url: '/contacts/67a9b9dfcc14109e073fbe19/tags',
total_count: 0,
has_more: false,
},
notes: {
type: 'list',
data: [],
url: '/contacts/67a9b9dfcc14109e073fbe19/notes',
total_count: 0,
has_more: false,
},
companies: {
type: 'list',
data: [],
url: '/contacts/67a9b9dfcc14109e073fbe19/companies',
total_count: 0,
has_more: false,
},
opted_out_subscription_types: {
type: 'list',
data: [],
url: '/contacts/67a9b9dfcc14109e073fbe19/subscriptions',
total_count: 0,
has_more: false,
},
opted_in_subscription_types: {
type: 'list',
data: [],
url: '/contacts/67a9b9dfcc14109e073fbe19/subscriptions',
total_count: 0,
has_more: false,
},
utm_campaign: null,
utm_content: null,
utm_medium: null,
utm_source: null,
utm_term: null,
referrer: null,
sms_consent: false,
unsubscribed_from_sms: false,
enabled_push_messaging: null,
},
});

View File

@@ -0,0 +1,32 @@
import { createTrigger, TriggerStrategy } from '@activepieces/pieces-framework';
import { intercomAuth } from '../..';
import { intercomClient } from '../common';
export const conversationAssigned = createTrigger({
name: 'conversationAssigned',
displayName: 'Conversation assigned to any Intercom admin',
description: 'Triggers when a conversation is assigned to an admin',
props: {},
sampleData: undefined,
auth: intercomAuth,
type: TriggerStrategy.APP_WEBHOOK,
async onEnable(context) {
const client = intercomClient(context.auth);
const response = await client.admins.identify();
if (!response.app?.id_code) {
throw new Error('Could not find admin id code');
}
context.app.createListeners({
events: ['conversation.admin.assigned'],
identifierValue: response['app']['id_code'],
});
},
async onDisable(context) {
// implement webhook deletion logic
},
async run(context) {
return [context.payload.body];
},
});

View File

@@ -0,0 +1,187 @@
import { createTrigger, TriggerStrategy } from '@activepieces/pieces-framework';
import { intercomAuth } from '../..';
import { intercomClient, TriggerPayload } from '../common';
export const conversationClosedTrigger = createTrigger({
name: 'conversationClosed',
displayName: 'Conversation Closed',
description: 'Triggers when a conversation is closed.',
props: {},
auth: intercomAuth,
type: TriggerStrategy.APP_WEBHOOK,
async onEnable(context) {
const client = intercomClient(context.auth);
const response = await client.admins.identify();
if (!response.app?.id_code) {
throw new Error('Could not find admin id code');
}
context.app.createListeners({
events: ['conversation.admin.closed'],
identifierValue: response['app']['id_code'],
});
},
async onDisable(context) {
// implement webhook deletion logic
},
async test(context) {
const client = intercomClient(context.auth);
const response = await client.conversations.search({
query: {
field: 'state',
operator: '=',
value: 'closed',
},
pagination: { per_page: 5 },
});
return response.data;
},
async run(context) {
const payload = context.payload.body as TriggerPayload;
return [payload.data.item];
},
sampleData: {
type: 'conversation',
id: '2',
created_at: 1739105560,
updated_at: 1739524230,
waiting_since: null,
snoozed_until: null,
source: {
type: null,
id: '2',
delivered_as: 'admin_initiated',
subject: '',
body: '',
author: {
type: 'admin',
id: '8055721',
name: 'Fin',
email: 'operator+k2gbyfxu@intercom.io',
},
attachments: [],
url: null,
redacted: false,
},
contacts: {
type: 'contact.list',
contacts: [
{
type: 'contact',
id: '67a87380c16da6b56c76bbb7',
external_id: '1234567',
},
],
},
first_contact_reply: null,
admin_assignee_id: 8055717,
team_assignee_id: null,
open: true,
state: 'closed',
read: false,
tags: {
type: 'tag.list',
tags: [],
},
priority: 'not_priority',
sla_applied: null,
statistics: {
type: 'conversation_statistics',
time_to_assignment: null,
time_to_admin_reply: null,
time_to_first_close: null,
time_to_last_close: null,
median_time_to_reply: null,
first_contact_reply_at: null,
first_assignment_at: null,
first_admin_reply_at: null,
first_close_at: null,
last_assignment_at: null,
last_assignment_admin_reply_at: null,
last_contact_reply_at: null,
last_admin_reply_at: null,
last_close_at: null,
last_closed_by_id: null,
count_reopens: 0,
count_assignments: 0,
count_conversation_parts: 9,
},
conversation_rating: null,
teammates: {
type: 'admin.list',
admins: [
{
type: 'admin',
id: '8055717',
},
],
},
title: null,
custom_attributes: {
'Copilot used': false,
'Ticket category': 'Customer ticket',
'Created by': 8055721,
},
topics: {
type: 'topic.list',
topics: [],
total_count: 0,
},
ticket: {
type: 'ticket',
id: 2,
url: 'https://app.intercom.com/a/apps/ahah/conversations/2',
custom_attributes: {
_default_title_: {
value: 'fdfdf',
type: 'string',
},
_default_description_: {
value: 'dfdfdf',
type: 'string',
},
List: {
value: null,
type: 'list',
},
Number: {
value: null,
type: 'integer',
},
decimal: {
value: null,
type: 'decimal',
},
bool: {
value: null,
type: 'boolean',
},
'date time': {
value: null,
type: 'datetime',
},
files: {
value: null,
type: 'files',
},
},
state: 'closed',
ticket_type: 'zapier',
ticket_type_description: '',
ticket_type_emoji: '🚨',
ticket_custom_state_admin_label: 'In progress',
ticket_custom_state_user_label: 'In progress',
},
linked_objects: {
type: 'list',
data: [],
total_count: 0,
has_more: false,
},
ai_agent: null,
ai_agent_participated: false,
},
});

View File

@@ -0,0 +1,54 @@
import {
createTrigger,
TriggerStrategy,
} from '@activepieces/pieces-framework';
import { intercomAuth } from '../..';
import { intercomClient } from '../common';
import { tagIdProp } from '../common/props';
export const conversationPartTagged = createTrigger({
name: 'conversationPartTagged',
displayName: 'Tag added to a conversation part',
description: 'Triggers when a conversation part is tagged.',
props: {
tagId: tagIdProp('Tag', false),
},
auth: intercomAuth,
type: TriggerStrategy.APP_WEBHOOK,
async onEnable(context) {
const client = intercomClient(context.auth);
const response = await client.admins.identify();
if (!response.app?.id_code) {
throw new Error('Could not find admin id code');
}
context.app.createListeners({
events: ['conversation_part.tag.created'],
identifierValue: response['app']['id_code'],
});
},
async onDisable(context) {
// implement webhook deletion logic
},
async run(context) {
const tag = context.propsValue.tagId;
const payloadBody = context.payload.body as IntercomPayloadBodyType;
if (!tag || payloadBody?.data?.item?.tag.id === tag) {
return [payloadBody.data.item];
}
return [];
},
sampleData: undefined
});
type IntercomPayloadBodyType = {
data: {
item: {
tag: {
id: string;
};
};
};
};

View File

@@ -0,0 +1,180 @@
import { createTrigger, TriggerStrategy } from '@activepieces/pieces-framework';
import { intercomAuth } from '../..';
import { intercomClient, TriggerPayload } from '../common';
export const conversationRated = createTrigger({
name: 'conversationRated',
displayName: 'Conversation was rated',
description: 'Triggers when a conversation is rated',
props: {},
auth: intercomAuth,
type: TriggerStrategy.APP_WEBHOOK,
async onEnable(context) {
const client = intercomClient(context.auth);
const response = await client.admins.identify();
if (!response.app?.id_code) {
throw new Error('Could not find admin id code');
}
context.app.createListeners({
events: ['conversation.rating.added'],
identifierValue: response['app']['id_code'],
});
},
async onDisable(context) {
// implement webhook deletion logic
},
async test(context) {
const client = intercomClient(context.auth);
const response = await client.conversations.list({ per_page: 10 });
return response.data;
},
async run(context) {
const payload = context.payload.body as TriggerPayload;
return [payload.data.item];
},
sampleData: {
type: 'conversation',
id: '2',
created_at: 1739105560,
updated_at: 1739524230,
waiting_since: null,
snoozed_until: null,
source: {
type: null,
id: '2',
delivered_as: 'admin_initiated',
subject: '',
body: '',
author: {
type: 'admin',
id: '8055721',
name: 'Fin',
email: 'operator+k2gbyfxu@intercom.io',
},
attachments: [],
url: null,
redacted: false,
},
contacts: {
type: 'contact.list',
contacts: [
{
type: 'contact',
id: '67a87380c16da6b56c76bbb7',
external_id: '1234567',
},
],
},
first_contact_reply: null,
admin_assignee_id: 8055717,
team_assignee_id: null,
open: true,
state: 'open',
read: false,
tags: {
type: 'tag.list',
tags: [],
},
priority: 'not_priority',
sla_applied: null,
statistics: {
type: 'conversation_statistics',
time_to_assignment: null,
time_to_admin_reply: null,
time_to_first_close: null,
time_to_last_close: null,
median_time_to_reply: null,
first_contact_reply_at: null,
first_assignment_at: null,
first_admin_reply_at: null,
first_close_at: null,
last_assignment_at: null,
last_assignment_admin_reply_at: null,
last_contact_reply_at: null,
last_admin_reply_at: null,
last_close_at: null,
last_closed_by_id: null,
count_reopens: 0,
count_assignments: 0,
count_conversation_parts: 9,
},
conversation_rating: null,
teammates: {
type: 'admin.list',
admins: [
{
type: 'admin',
id: '8055717',
},
],
},
title: null,
custom_attributes: {
'Copilot used': false,
'Ticket category': 'Customer ticket',
'Created by': 8055721,
},
topics: {
type: 'topic.list',
topics: [],
total_count: 0,
},
ticket: {
type: 'ticket',
id: 2,
url: 'https://app.intercom.com/a/apps/ahah/conversations/2',
custom_attributes: {
_default_title_: {
value: 'fdfdf',
type: 'string',
},
_default_description_: {
value: 'dfdfdf',
type: 'string',
},
List: {
value: null,
type: 'list',
},
Number: {
value: null,
type: 'integer',
},
decimal: {
value: null,
type: 'decimal',
},
bool: {
value: null,
type: 'boolean',
},
'date time': {
value: null,
type: 'datetime',
},
files: {
value: null,
type: 'files',
},
},
state: 'in_progress',
ticket_type: 'zapier',
ticket_type_description: '',
ticket_type_emoji: '🚨',
ticket_custom_state_admin_label: 'In progress',
ticket_custom_state_user_label: 'In progress',
},
linked_objects: {
type: 'list',
data: [],
total_count: 0,
has_more: false,
},
ai_agent: null,
ai_agent_participated: false,
},
});

View File

@@ -0,0 +1,33 @@
import { createTrigger, TriggerStrategy } from '@activepieces/pieces-framework';
import { intercomAuth } from '../..';
import { intercomClient } from '../common';
export const conversationSnoozed = createTrigger({
// auth: check https://www.activepieces.com/docs/developers/piece-reference/authentication,
name: 'conversationSnoozed',
displayName: 'Conversation snoozed',
description: 'Triggers when a conversation is snoozed',
props: {},
sampleData: undefined,
auth: intercomAuth,
type: TriggerStrategy.APP_WEBHOOK,
async onEnable(context) {
const client = intercomClient(context.auth);
const response = await client.admins.identify();
if (!response.app?.id_code) {
throw new Error('Could not find admin id code');
}
context.app.createListeners({
events: ['conversation.admin.snoozed'],
identifierValue: response['app']['id_code'],
});
},
async onDisable(context) {
// implement webhook deletion logic
},
async run(context) {
return [context.payload.body];
},
});

View File

@@ -0,0 +1,33 @@
import { createTrigger, TriggerStrategy } from '@activepieces/pieces-framework';
import { intercomAuth } from '../..';
import { intercomClient } from '../common';
export const conversationUnsnoozed = createTrigger({
// auth: check https://www.activepieces.com/docs/developers/piece-reference/authentication,
name: 'conversationUnsnoozed',
displayName: 'Conversation unsnoozed',
description: 'Triggers when a conversation is unsnoozed',
props: {},
sampleData: undefined,
auth: intercomAuth,
type: TriggerStrategy.APP_WEBHOOK,
async onEnable(context) {
const client = intercomClient(context.auth);
const response = await client.admins.identify();
if (!response.app?.id_code) {
throw new Error('Could not find admin id code');
}
context.app.createListeners({
events: ['conversation.admin.unsnoozed'],
identifierValue: response['app']['id_code'],
});
},
async onDisable(context) {
// implement webhook deletion logic
},
async run(context) {
return [context.payload.body];
},
});

View File

@@ -0,0 +1,143 @@
import { intercomAuth } from '../../index';
import { createTrigger, TriggerStrategy } from '@activepieces/pieces-framework';
import { intercomClient, TriggerPayload } from '../common';
export const leadAddedEmailTrigger = createTrigger({
auth: intercomAuth,
name: 'lead-added-email',
displayName: 'Lead Added Email',
description: 'Triggers when a lead enters an email address.',
props: {},
type: TriggerStrategy.APP_WEBHOOK,
async onEnable(context) {
const client = intercomClient(context.auth);
const response = await client.admins.identify();
if (!response.app?.id_code) {
throw new Error('Could not find admin id code');
}
context.app.createListeners({
events: ['contact.lead.added_email'],
identifierValue: response['app']['id_code'],
});
},
async onDisable(context) {
// implement webhook deletion logic
},
async test(context) {
const client = intercomClient(context.auth);
const response = await client.contacts.search({
query: {
field: 'role',
operator: '=',
value: 'lead',
},
pagination: { per_page: 5 },
});
return response.data;
},
async run(context) {
const payload = context.payload.body as TriggerPayload;
return [payload.data.item];
},
sampleData: {
type: 'contact',
id: '67a9b9dfcc14109e073fbe19',
workspace_id: 'nzekhfwb',
external_id: '5b803f65-bcec-4198-b4f4-a0588454b537',
role: 'lead',
email: 'john.doe@example.com',
phone: null,
name: 'John Doe',
avatar: null,
owner_id: null,
social_profiles: {
type: 'list',
data: [],
},
has_hard_bounced: false,
marked_email_as_spam: false,
unsubscribed_from_emails: false,
created_at: '2025-02-10T08:33:35.910+00:00',
updated_at: '2025-02-10T08:33:35.907+00:00',
signed_up_at: null,
last_seen_at: null,
last_replied_at: null,
last_contacted_at: null,
last_email_opened_at: null,
last_email_clicked_at: null,
language_override: null,
browser: null,
browser_version: null,
browser_language: null,
os: null,
location: {
type: 'location',
country: null,
region: null,
city: null,
country_code: null,
continent_code: null,
},
android_app_name: null,
android_app_version: null,
android_device: null,
android_os_version: null,
android_sdk_version: null,
android_last_seen_at: null,
ios_app_name: null,
ios_app_version: null,
ios_device: null,
ios_os_version: null,
ios_sdk_version: null,
ios_last_seen_at: null,
custom_attributes: {},
tags: {
type: 'list',
data: [],
url: '/contacts/67a9b9dfcc14109e073fbe19/tags',
total_count: 0,
has_more: false,
},
notes: {
type: 'list',
data: [],
url: '/contacts/67a9b9dfcc14109e073fbe19/notes',
total_count: 0,
has_more: false,
},
companies: {
type: 'list',
data: [],
url: '/contacts/67a9b9dfcc14109e073fbe19/companies',
total_count: 0,
has_more: false,
},
opted_out_subscription_types: {
type: 'list',
data: [],
url: '/contacts/67a9b9dfcc14109e073fbe19/subscriptions',
total_count: 0,
has_more: false,
},
opted_in_subscription_types: {
type: 'list',
data: [],
url: '/contacts/67a9b9dfcc14109e073fbe19/subscriptions',
total_count: 0,
has_more: false,
},
utm_campaign: null,
utm_content: null,
utm_medium: null,
utm_source: null,
utm_term: null,
referrer: null,
sms_consent: false,
unsubscribed_from_sms: false,
enabled_push_messaging: null,
},
});

View File

@@ -0,0 +1,144 @@
import { intercomAuth } from '../../index';
import { createTrigger, TriggerStrategy } from '@activepieces/pieces-framework';
import { intercomClient, TriggerPayload } from '../common';
export const leadConvertedToUserTrigger = createTrigger({
auth: intercomAuth,
name: 'lead-converted-to-user',
displayName: 'Lead Converted To User',
description: 'Triggers when a lead is converted to a user.',
props: {},
type: TriggerStrategy.APP_WEBHOOK,
async onEnable(context) {
const client = intercomClient(context.auth);
const response = await client.admins.identify();
if (!response.app?.id_code) {
throw new Error('Could not find admin id code');
}
context.app.createListeners({
events: ['contact.merged'],
identifierValue: response['app']['id_code'],
});
},
async onDisable(context) {
// implement webhook deletion logic
},
async test(context) {
const client = intercomClient(context.auth);
const response = await client.contacts.search({
query:{
field:'role',
operator:'=',
value:'user'
},
pagination:{per_page:5}
});
return response.data;
},
async run(context) {
const payload = context.payload.body as TriggerPayload;
return [payload.data.item];
},
sampleData: {
type: 'contact',
id: '67a9b9dfcc14109e073fbe19',
workspace_id: 'nzekhfwb',
external_id: '5b803f65-bcec-4198-b4f4-a0588454b537',
role: 'user',
email: 'john.doe@example.com',
phone: null,
name: 'John Doe',
avatar: null,
owner_id: null,
social_profiles: {
type: 'list',
data: [],
},
has_hard_bounced: false,
marked_email_as_spam: false,
unsubscribed_from_emails: false,
created_at: '2025-02-10T08:33:35.910+00:00',
updated_at: '2025-02-10T08:33:35.907+00:00',
signed_up_at: null,
last_seen_at: null,
last_replied_at: null,
last_contacted_at: null,
last_email_opened_at: null,
last_email_clicked_at: null,
language_override: null,
browser: null,
browser_version: null,
browser_language: null,
os: null,
location: {
type: 'location',
country: null,
region: null,
city: null,
country_code: null,
continent_code: null,
},
android_app_name: null,
android_app_version: null,
android_device: null,
android_os_version: null,
android_sdk_version: null,
android_last_seen_at: null,
ios_app_name: null,
ios_app_version: null,
ios_device: null,
ios_os_version: null,
ios_sdk_version: null,
ios_last_seen_at: null,
custom_attributes: {},
tags: {
type: 'list',
data: [],
url: '/contacts/67a9b9dfcc14109e073fbe19/tags',
total_count: 0,
has_more: false,
},
notes: {
type: 'list',
data: [],
url: '/contacts/67a9b9dfcc14109e073fbe19/notes',
total_count: 0,
has_more: false,
},
companies: {
type: 'list',
data: [],
url: '/contacts/67a9b9dfcc14109e073fbe19/companies',
total_count: 0,
has_more: false,
},
opted_out_subscription_types: {
type: 'list',
data: [],
url: '/contacts/67a9b9dfcc14109e073fbe19/subscriptions',
total_count: 0,
has_more: false,
},
opted_in_subscription_types: {
type: 'list',
data: [],
url: '/contacts/67a9b9dfcc14109e073fbe19/subscriptions',
total_count: 0,
has_more: false,
},
utm_campaign: null,
utm_content: null,
utm_medium: null,
utm_source: null,
utm_term: null,
referrer: null,
sms_consent: false,
unsubscribed_from_sms: false,
enabled_push_messaging: null,
},
});

View File

@@ -0,0 +1,136 @@
import { intercomAuth } from '../../index';
import { createTrigger, TriggerStrategy } from '@activepieces/pieces-framework';
import { intercomClient, TriggerPayload } from '../common';
export const newCompanyTrigger = createTrigger({
auth: intercomAuth,
name: 'new-company',
displayName: 'New Company',
description: 'Triggers when a new company is created.',
props: {},
type: TriggerStrategy.APP_WEBHOOK,
async onEnable(context) {
const client = intercomClient(context.auth);
const response = await client.admins.identify();
if (!response.app?.id_code) {
throw new Error('Could not find admin id code');
}
context.app.createListeners({
events: ['company.created'],
identifierValue: response['app']['id_code'],
});
},
async onDisable(context) {
// implement webhook deletion logic
},
async test(context) {
const client = intercomClient(context.auth);
const response = await client.companies.list({ per_page: 5 });
return response.data;
},
async run(context) {
const payload = context.payload.body as TriggerPayload;
return [payload.data.item];
},
sampleData: {
type: 'contact',
id: '67a9b9dfcc14109e073fbe19',
workspace_id: 'nzekhfwb',
external_id: '5b803f65-bcec-4198-b4f4-a0588454b537',
role: 'lead',
email: 'john.doe@example.com',
phone: null,
name: 'John Doe',
avatar: null,
owner_id: null,
social_profiles: {
type: 'list',
data: [],
},
has_hard_bounced: false,
marked_email_as_spam: false,
unsubscribed_from_emails: false,
created_at: '2025-02-10T08:33:35.910+00:00',
updated_at: '2025-02-10T08:33:35.907+00:00',
signed_up_at: null,
last_seen_at: null,
last_replied_at: null,
last_contacted_at: null,
last_email_opened_at: null,
last_email_clicked_at: null,
language_override: null,
browser: null,
browser_version: null,
browser_language: null,
os: null,
location: {
type: 'location',
country: null,
region: null,
city: null,
country_code: null,
continent_code: null,
},
android_app_name: null,
android_app_version: null,
android_device: null,
android_os_version: null,
android_sdk_version: null,
android_last_seen_at: null,
ios_app_name: null,
ios_app_version: null,
ios_device: null,
ios_os_version: null,
ios_sdk_version: null,
ios_last_seen_at: null,
custom_attributes: {},
tags: {
type: 'list',
data: [],
url: '/contacts/67a9b9dfcc14109e073fbe19/tags',
total_count: 0,
has_more: false,
},
notes: {
type: 'list',
data: [],
url: '/contacts/67a9b9dfcc14109e073fbe19/notes',
total_count: 0,
has_more: false,
},
companies: {
type: 'list',
data: [],
url: '/contacts/67a9b9dfcc14109e073fbe19/companies',
total_count: 0,
has_more: false,
},
opted_out_subscription_types: {
type: 'list',
data: [],
url: '/contacts/67a9b9dfcc14109e073fbe19/subscriptions',
total_count: 0,
has_more: false,
},
opted_in_subscription_types: {
type: 'list',
data: [],
url: '/contacts/67a9b9dfcc14109e073fbe19/subscriptions',
total_count: 0,
has_more: false,
},
utm_campaign: null,
utm_content: null,
utm_medium: null,
utm_source: null,
utm_term: null,
referrer: null,
sms_consent: false,
unsubscribed_from_sms: false,
enabled_push_messaging: null,
},
});

View File

@@ -0,0 +1,180 @@
import { createTrigger, TriggerStrategy } from '@activepieces/pieces-framework';
import { intercomAuth } from '../..';
import { intercomClient, TriggerPayload } from '../common';
export const newConversationFromUser = createTrigger({
name: 'newConversationFromUser',
displayName: 'New Conversation',
description: 'Triggers when a conversation is created by a user or lead (not an admin).',
props: {},
auth: intercomAuth,
type: TriggerStrategy.APP_WEBHOOK,
async onEnable(context) {
const client = intercomClient(context.auth);
const response = await client.admins.identify();
if (!response.app?.id_code) {
throw new Error('Could not find admin id code');
}
context.app.createListeners({
events: ['conversation.user.created'],
identifierValue: response['app']['id_code'],
});
},
async onDisable(context) {
// implement webhook deletion logic
},
async test(context) {
const client = intercomClient(context.auth);
const response = await client.conversations.list({ per_page: 10 });
return response.data;
},
async run(context) {
const payload = context.payload.body as TriggerPayload;
return [payload.data.item];
},
sampleData: {
type: 'conversation',
id: '2',
created_at: 1739105560,
updated_at: 1739524230,
waiting_since: null,
snoozed_until: null,
source: {
type: null,
id: '2',
delivered_as: 'admin_initiated',
subject: '',
body: '',
author: {
type: 'admin',
id: '8055721',
name: 'Fin',
email: 'operator+k2gbyfxu@intercom.io',
},
attachments: [],
url: null,
redacted: false,
},
contacts: {
type: 'contact.list',
contacts: [
{
type: 'contact',
id: '67a87380c16da6b56c76bbb7',
external_id: '1234567',
},
],
},
first_contact_reply: null,
admin_assignee_id: 8055717,
team_assignee_id: null,
open: true,
state: 'open',
read: false,
tags: {
type: 'tag.list',
tags: [],
},
priority: 'not_priority',
sla_applied: null,
statistics: {
type: 'conversation_statistics',
time_to_assignment: null,
time_to_admin_reply: null,
time_to_first_close: null,
time_to_last_close: null,
median_time_to_reply: null,
first_contact_reply_at: null,
first_assignment_at: null,
first_admin_reply_at: null,
first_close_at: null,
last_assignment_at: null,
last_assignment_admin_reply_at: null,
last_contact_reply_at: null,
last_admin_reply_at: null,
last_close_at: null,
last_closed_by_id: null,
count_reopens: 0,
count_assignments: 0,
count_conversation_parts: 9,
},
conversation_rating: null,
teammates: {
type: 'admin.list',
admins: [
{
type: 'admin',
id: '8055717',
},
],
},
title: null,
custom_attributes: {
'Copilot used': false,
'Ticket category': 'Customer ticket',
'Created by': 8055721,
},
topics: {
type: 'topic.list',
topics: [],
total_count: 0,
},
ticket: {
type: 'ticket',
id: 2,
url: 'https://app.intercom.com/a/apps/ahah/conversations/2',
custom_attributes: {
_default_title_: {
value: 'fdfdf',
type: 'string',
},
_default_description_: {
value: 'dfdfdf',
type: 'string',
},
List: {
value: null,
type: 'list',
},
Number: {
value: null,
type: 'integer',
},
decimal: {
value: null,
type: 'decimal',
},
bool: {
value: null,
type: 'boolean',
},
'date time': {
value: null,
type: 'datetime',
},
files: {
value: null,
type: 'files',
},
},
state: 'in_progress',
ticket_type: 'zapier',
ticket_type_description: '',
ticket_type_emoji: '🚨',
ticket_custom_state_admin_label: 'In progress',
ticket_custom_state_user_label: 'In progress',
},
linked_objects: {
type: 'list',
data: [],
total_count: 0,
has_more: false,
},
ai_agent: null,
ai_agent_participated: false,
},
});

View File

@@ -0,0 +1,143 @@
import { intercomAuth } from '../../index';
import { createTrigger, TriggerStrategy } from '@activepieces/pieces-framework';
import { intercomClient, TriggerPayload } from '../common';
export const newLeadTrigger = createTrigger({
auth: intercomAuth,
name: 'new-lead',
displayName: 'New Lead',
description: 'Triggers when a new lead is created.',
props: {},
type: TriggerStrategy.APP_WEBHOOK,
async onEnable(context) {
const client = intercomClient(context.auth);
const response = await client.admins.identify();
if (!response.app?.id_code) {
throw new Error('Could not find admin id code');
}
context.app.createListeners({
events: ['contact.lead.created'],
identifierValue: response['app']['id_code'],
});
},
async onDisable(context) {
// implement webhook deletion logic
},
async test(context) {
const client = intercomClient(context.auth);
const response = await client.contacts.search({
query: {
field: 'role',
operator: '=',
value: 'lead',
},
pagination: { per_page: 5 },
});
return response.data;
},
async run(context) {
const payload = context.payload.body as TriggerPayload;
return [payload.data.item];
},
sampleData: {
type: 'contact',
id: '67a9b9dfcc14109e073fbe19',
workspace_id: 'nzekhfwb',
external_id: '5b803f65-bcec-4198-b4f4-a0588454b537',
role: 'lead',
email: 'john.doe@example.com',
phone: null,
name: 'John Doe',
avatar: null,
owner_id: null,
social_profiles: {
type: 'list',
data: [],
},
has_hard_bounced: false,
marked_email_as_spam: false,
unsubscribed_from_emails: false,
created_at: '2025-02-10T08:33:35.910+00:00',
updated_at: '2025-02-10T08:33:35.907+00:00',
signed_up_at: null,
last_seen_at: null,
last_replied_at: null,
last_contacted_at: null,
last_email_opened_at: null,
last_email_clicked_at: null,
language_override: null,
browser: null,
browser_version: null,
browser_language: null,
os: null,
location: {
type: 'location',
country: null,
region: null,
city: null,
country_code: null,
continent_code: null,
},
android_app_name: null,
android_app_version: null,
android_device: null,
android_os_version: null,
android_sdk_version: null,
android_last_seen_at: null,
ios_app_name: null,
ios_app_version: null,
ios_device: null,
ios_os_version: null,
ios_sdk_version: null,
ios_last_seen_at: null,
custom_attributes: {},
tags: {
type: 'list',
data: [],
url: '/contacts/67a9b9dfcc14109e073fbe19/tags',
total_count: 0,
has_more: false,
},
notes: {
type: 'list',
data: [],
url: '/contacts/67a9b9dfcc14109e073fbe19/notes',
total_count: 0,
has_more: false,
},
companies: {
type: 'list',
data: [],
url: '/contacts/67a9b9dfcc14109e073fbe19/companies',
total_count: 0,
has_more: false,
},
opted_out_subscription_types: {
type: 'list',
data: [],
url: '/contacts/67a9b9dfcc14109e073fbe19/subscriptions',
total_count: 0,
has_more: false,
},
opted_in_subscription_types: {
type: 'list',
data: [],
url: '/contacts/67a9b9dfcc14109e073fbe19/subscriptions',
total_count: 0,
has_more: false,
},
utm_campaign: null,
utm_content: null,
utm_medium: null,
utm_source: null,
utm_term: null,
referrer: null,
sms_consent: false,
unsubscribed_from_sms: false,
enabled_push_messaging: null,
},
});

View File

@@ -0,0 +1,284 @@
import { intercomAuth } from '../../index';
import { createTrigger, TriggerStrategy } from '@activepieces/pieces-framework';
import { intercomClient, TriggerPayload } from '../common';
export const newTicketTrigger = createTrigger({
auth: intercomAuth,
name: 'new-ticket',
displayName: 'New Ticket',
description: 'Triggers when a new ticket is created.',
props: {},
type: TriggerStrategy.APP_WEBHOOK,
async onEnable(context) {
const client = intercomClient(context.auth);
const response = await client.admins.identify();
if (!response.app?.id_code) {
throw new Error('Could not find admin id code');
}
context.app.createListeners({
events: ['ticket.created'],
identifierValue: response['app']['id_code'],
});
},
async onDisable(context) {
// implement webhook deletion logic
},
async test(context) {
const client = intercomClient(context.auth);
const response = await client.tickets.search({
query: {
field: 'open',
operator: '=',
value: 'true',
},
pagination: { per_page: 5 },
});
return response.data;
},
async run(context) {
const payload = context.payload.body as TriggerPayload;
return [payload.data.item];
},
sampleData: {
type: 'ticket',
id: '2',
ticket_id: '1',
ticket_attributes: {
_default_title_: 'fdfdf',
_default_description_: 'dfdfdf',
List: null,
Number: null,
decimal: null,
bool: null,
'date time': null,
files: [],
},
ticket_state: 'in_progress',
ticket_type: {
type: 'ticket_type',
id: '1',
name: 'test',
description: '',
icon: '🚨',
workspace_id: 'nzekhfwb',
archived: false,
created_at: 1739105534,
updated_at: 1739105534,
is_internal: false,
ticket_type_attributes: {
type: 'list',
data: [
{
type: 'ticket_type_attribute',
id: '6615713',
workspace_id: 'nzekhfwb',
name: '_default_title_',
description: '',
data_type: 'string',
input_options: {
multiline: false,
},
order: 0,
required_to_create: false,
required_to_create_for_contacts: false,
visible_on_create: true,
visible_to_contacts: true,
default: true,
ticket_type_id: 1,
archived: false,
created_at: 1739105534,
updated_at: 1739105534,
},
{
type: 'ticket_type_attribute',
id: '6615714',
workspace_id: 'nzekhfwb',
name: '_default_description_',
description: '',
data_type: 'string',
input_options: {
multiline: true,
},
order: 1,
required_to_create: false,
required_to_create_for_contacts: false,
visible_on_create: true,
visible_to_contacts: true,
default: true,
ticket_type_id: 1,
archived: false,
created_at: 1739105534,
updated_at: 1739105534,
},
],
},
category: 'Customer',
},
contacts: {
type: 'contact.list',
contacts: [
{
type: 'contact',
id: '67a87380c16da6b56c76bbb7',
external_id: '1234567',
},
],
},
admin_assignee_id: '8055717',
team_assignee_id: '0',
created_at: 1739105560,
updated_at: 1739524230,
ticket_parts: {
type: 'ticket_part.list',
ticket_parts: [
{
type: 'ticket_part',
id: '3',
part_type: 'ticket_state_updated_by_admin',
ticket_state: 'submitted',
previous_ticket_state: 'submitted',
created_at: 1739105561,
updated_at: 1739105561,
author: {
id: '8055721',
type: 'bot',
name: 'Fin',
email: 'operator+k2gbyfxu@intercom.io',
},
attachments: [],
redacted: false,
},
{
type: 'ticket_part',
id: '5',
part_type: 'assignment',
body: '<p class="no-margin">hghh</p>',
created_at: 1739109004,
updated_at: 1739111399,
assigned_to: {
type: 'admin',
id: '8055717',
},
author: {
id: '8055717',
type: 'admin',
name: 'John Doe',
email: 'johndoe@gmail.com',
},
attachments: [],
redacted: false,
},
{
type: 'ticket_part',
id: '6',
part_type: 'conversation_tags_updated',
created_at: 1739109007,
updated_at: 1739109007,
author: {
id: '8055717',
type: 'admin',
name: 'John Doe',
email: 'johndoe@gmail.com',
},
attachments: [],
redacted: false,
},
{
type: 'ticket_part',
id: '7',
part_type: 'conversation_tags_updated',
created_at: 1739109008,
updated_at: 1739109008,
author: {
id: '8055717',
type: 'admin',
name: 'John Doe',
email: 'johndoe@gmail.com',
},
attachments: [],
redacted: false,
},
{
type: 'ticket_part',
id: '14',
part_type: 'conversation_tags_updated',
created_at: 1739111399,
updated_at: 1739111399,
author: {
id: '8055717',
type: 'admin',
name: 'John Doe',
email: 'johndoe@gmail.com',
},
attachments: [],
redacted: false,
},
{
type: 'ticket_part',
id: '15',
part_type: 'conversation_tags_updated',
created_at: 1739111400,
updated_at: 1739111400,
author: {
id: '8055717',
type: 'admin',
name: 'John Doe',
email: 'johndoe@gmail.com',
},
attachments: [],
redacted: false,
},
{
type: 'ticket_part',
id: '16',
part_type: 'comment',
body: '<p class="no-margin">ss</p>',
created_at: 1739111407,
updated_at: 1739111407,
author: {
id: '8055717',
type: 'admin',
name: 'John Doe',
email: 'johndoe@gmail.com',
},
attachments: [],
redacted: false,
},
{
type: 'ticket_part',
id: '37',
part_type: 'ticket_state_updated_by_admin',
ticket_state: 'in_progress',
previous_ticket_state: 'submitted',
created_at: 1739524230,
updated_at: 1739524230,
author: {
id: '8055717',
type: 'admin',
name: 'John Doe',
email: 'johndoe@gmail.com',
},
attachments: [],
redacted: false,
},
],
total_count: 8,
},
open: true,
linked_objects: {
type: 'list',
data: [],
total_count: 0,
has_more: false,
},
category: 'Customer',
is_shared: true,
company_id: '67a8a24c4670c9f1995b2382',
ticket_state_internal_label: 'In progress',
ticket_state_external_label: 'In progress',
},
});

View File

@@ -0,0 +1,143 @@
import { intercomAuth } from '../../index';
import { createTrigger, TriggerStrategy } from '@activepieces/pieces-framework';
import { intercomClient, TriggerPayload } from '../common';
export const newUserTrigger = createTrigger({
auth: intercomAuth,
name: 'new-user',
displayName: 'New User',
description: 'Triggers when a new user is created.',
props: {},
type: TriggerStrategy.APP_WEBHOOK,
async onEnable(context) {
const client = intercomClient(context.auth);
const response = await client.admins.identify();
if (!response.app?.id_code) {
throw new Error('Could not find admin id code');
}
context.app.createListeners({
events: ['contact.user.created'],
identifierValue: response['app']['id_code'],
});
},
async onDisable(context) {
// implement webhook deletion logic
},
async test(context) {
const client = intercomClient(context.auth);
const response = await client.contacts.search({
query: {
field: 'role',
operator: '=',
value: 'user',
},
pagination: { per_page: 5 },
});
return response.data;
},
async run(context) {
const payload = context.payload.body as TriggerPayload;
return [payload.data.item];
},
sampleData: {
type: 'contact',
id: '67a9b9dfcc14109e073fbe19',
workspace_id: 'nzekhfwb',
external_id: '5b803f65-bcec-4198-b4f4-a0588454b537',
role: 'user',
email: 'john.doe@example.com',
phone: null,
name: 'John Doe',
avatar: null,
owner_id: null,
social_profiles: {
type: 'list',
data: [],
},
has_hard_bounced: false,
marked_email_as_spam: false,
unsubscribed_from_emails: false,
created_at: '2025-02-10T08:33:35.910+00:00',
updated_at: '2025-02-10T08:33:35.907+00:00',
signed_up_at: null,
last_seen_at: null,
last_replied_at: null,
last_contacted_at: null,
last_email_opened_at: null,
last_email_clicked_at: null,
language_override: null,
browser: null,
browser_version: null,
browser_language: null,
os: null,
location: {
type: 'location',
country: null,
region: null,
city: null,
country_code: null,
continent_code: null,
},
android_app_name: null,
android_app_version: null,
android_device: null,
android_os_version: null,
android_sdk_version: null,
android_last_seen_at: null,
ios_app_name: null,
ios_app_version: null,
ios_device: null,
ios_os_version: null,
ios_sdk_version: null,
ios_last_seen_at: null,
custom_attributes: {},
tags: {
type: 'list',
data: [],
url: '/contacts/67a9b9dfcc14109e073fbe19/tags',
total_count: 0,
has_more: false,
},
notes: {
type: 'list',
data: [],
url: '/contacts/67a9b9dfcc14109e073fbe19/notes',
total_count: 0,
has_more: false,
},
companies: {
type: 'list',
data: [],
url: '/contacts/67a9b9dfcc14109e073fbe19/companies',
total_count: 0,
has_more: false,
},
opted_out_subscription_types: {
type: 'list',
data: [],
url: '/contacts/67a9b9dfcc14109e073fbe19/subscriptions',
total_count: 0,
has_more: false,
},
opted_in_subscription_types: {
type: 'list',
data: [],
url: '/contacts/67a9b9dfcc14109e073fbe19/subscriptions',
total_count: 0,
has_more: false,
},
utm_campaign: null,
utm_content: null,
utm_medium: null,
utm_source: null,
utm_term: null,
referrer: null,
sms_consent: false,
unsubscribed_from_sms: false,
enabled_push_messaging: null,
},
});

View File

@@ -0,0 +1,64 @@
import { createTrigger, TriggerStrategy, Property } from '@activepieces/pieces-framework';
import { stripHtml } from 'string-strip-html';
import { intercomAuth } from '../..';
import { intercomClient } from '../common';
export const noteAddedToConversation = createTrigger({
// auth: check https://www.activepieces.com/docs/developers/piece-reference/authentication,
name: 'noteAddedToConversation',
displayName: 'Note added to conversation',
description: 'Triggers when a note is added to a conversation',
props: {
keyword: Property.ShortText({
displayName: 'Keyword (optional)',
required: false,
}),
},
sampleData: undefined,
auth: intercomAuth,
type: TriggerStrategy.APP_WEBHOOK,
async onEnable(context) {
const client = intercomClient(context.auth);
const response = await client.admins.identify();
if (!response.app?.id_code) {
throw new Error('Could not find admin id code');
}
context.app.createListeners({
events: ['conversation.admin.noted'],
identifierValue: response['app']['id_code'],
});
},
async onDisable(context) {
// implement webhook deletion logic
},
async run(context) {
const keyword = context.propsValue.keyword;
const payloadBody = context.payload.body as IntercomPayloadBodyType;
if (
!keyword ||
payloadBody?.data?.item?.conversation_parts.conversation_parts.some((part) =>
stripHtml(part.body)
.result.split(/\s/)
.some((word) => word === keyword),
)
) {
return [payloadBody];
}
return [];
},
});
type IntercomPayloadBodyType = {
data: {
item: {
conversation_parts: {
conversation_parts: {
body: string;
}[];
};
};
};
};

View File

@@ -0,0 +1,32 @@
import { createTrigger, TriggerStrategy } from '@activepieces/pieces-framework';
import { intercomAuth } from '../..';
import { intercomClient } from '../common';
export const replyFromAdmin = createTrigger({
// auth: check https://www.activepieces.com/docs/developers/piece-reference/authentication,
name: 'replyFromAdmin',
displayName: 'Reply from an Intercom admin',
description: 'Triggers when a reply is received from an Intercom admin (not a user or lead)',
props: {},
sampleData: undefined,
auth: intercomAuth,
type: TriggerStrategy.APP_WEBHOOK,
async onEnable(context) {
const client = intercomClient(context.auth);
const response = await client.admins.identify();
if (!response.app?.id_code) {
throw new Error('Could not find admin id code');
}
context.app.createListeners({
events: ['conversation.admin.replied'],
identifierValue: response['app']['id_code'],
});
},
async onDisable(context) {
// implement webhook deletion logic
},
async run(context) {
return [context.payload.body];
},
});

View File

@@ -0,0 +1,32 @@
import { createTrigger, TriggerStrategy } from '@activepieces/pieces-framework';
import { intercomAuth } from '../..';
import { intercomClient } from '../common';
export const replyFromUser = createTrigger({
// auth: check https://www.activepieces.com/docs/developers/piece-reference/authentication,
name: 'replyFromUser',
displayName: 'Reply from a user or lead',
description: 'Triggers when a reply is received from a user or lead (not an admin)',
props: {},
sampleData: undefined,
auth: intercomAuth,
type: TriggerStrategy.APP_WEBHOOK,
async onEnable(context) {
const client = intercomClient(context.auth);
const response = await client.admins.identify();
if (!response.app?.id_code) {
throw new Error('Could not find admin id code');
}
context.app.createListeners({
events: ['conversation.user.replied'],
identifierValue: response['app']['id_code'],
});
},
async onDisable(context) {
// implement webhook deletion logic
},
async run(context) {
return [context.payload.body];
},
});

View File

@@ -0,0 +1,233 @@
import { createTrigger, TriggerStrategy } from '@activepieces/pieces-framework';
import { intercomAuth } from '../..';
import { intercomClient } from '../common';
import { tagIdProp } from '../common/props';
export const tagAddedToLeadTrigger = createTrigger({
name: 'tag-added-to-lead',
displayName: 'Tag Added to Lead',
description: 'Triggers when a tag is added to a lead.',
props: {
tagId: tagIdProp('Tag', false),
},
auth: intercomAuth,
type: TriggerStrategy.APP_WEBHOOK,
async onEnable(context) {
const client = intercomClient(context.auth);
const response = await client.admins.identify();
if (!response.app?.id_code) {
throw new Error('Could not find admin id code');
}
context.app.createListeners({
events: ['contact.lead.tag.created'],
identifierValue: response['app']['id_code'],
});
},
async onDisable(context) {
// implement webhook deletion logic
},
async test(context) {
const client = intercomClient(context.auth);
if (context.propsValue.tagId) {
const response = await client.contacts.search({
query: {
operator: 'AND',
value: [
{
field: 'tag_id',
operator: '=',
value: context.propsValue.tagId,
},
{
field: 'role',
operator: '=',
value: 'lead',
},
],
},
pagination: { per_page: 5 },
});
const tag = await client.tags.find({ tag_id: context.propsValue.tagId });
return response.data.map((item) => {
return {
type: 'contact_tag',
tag: {
type: tag.type,
id: tag.id,
name: tag.name,
},
contact: item,
};
});
}
const response = await client.contacts.search({
query: {
operator: 'AND',
value: [
{
field: 'tag_id',
operator: '!=',
value: '',
},
{
field: 'role',
operator: '=',
value: 'lead',
},
],
},
pagination: { per_page: 100 },
});
let count = 0;
const items = [];
for await (const lead of response) {
if (lead.tags && lead.tags.data.length > 0) {
const tag = await client.tags.find({ tag_id: lead.tags.data[0].id });
items.push({
type: 'contact_tag',
tag: {
type: tag.type,
id: tag.id,
name: tag.name,
},
contact: lead,
});
count++;
}
if (count >= 5) break;
}
return items;
},
async run(context) {
const tag = context.propsValue.tagId;
const payloadBody = context.payload.body as IntercomPayloadBodyType;
if (!tag || payloadBody?.data?.item?.tag.id === tag) {
return [payloadBody.data.item];
}
return [];
},
sampleData: {
type: 'contact_tag',
tag: {
type: 'tag',
id: '34',
name: 'Manual tag',
},
contact: {
type: 'contact',
id: '67a9b9dfcc14109e073fbe19',
workspace_id: 'nzekhfwb',
external_id: '5b803f65-bcec-4198-b4f4-a0588454b537',
role: 'lead',
email: 'john.doe@example.com',
phone: null,
name: 'John Doe',
avatar: null,
owner_id: null,
social_profiles: {
type: 'list',
data: [],
},
has_hard_bounced: false,
marked_email_as_spam: false,
unsubscribed_from_emails: false,
created_at: '2025-02-10T08:33:35.910+00:00',
updated_at: '2025-02-10T08:33:35.907+00:00',
signed_up_at: null,
last_seen_at: null,
last_replied_at: null,
last_contacted_at: null,
last_email_opened_at: null,
last_email_clicked_at: null,
language_override: null,
browser: null,
browser_version: null,
browser_language: null,
os: null,
location: {
type: 'location',
country: null,
region: null,
city: null,
country_code: null,
continent_code: null,
},
android_app_name: null,
android_app_version: null,
android_device: null,
android_os_version: null,
android_sdk_version: null,
android_last_seen_at: null,
ios_app_name: null,
ios_app_version: null,
ios_device: null,
ios_os_version: null,
ios_sdk_version: null,
ios_last_seen_at: null,
custom_attributes: {},
tags: {
type: 'list',
data: [],
url: '/contacts/67a9b9dfcc14109e073fbe19/tags',
total_count: 0,
has_more: false,
},
notes: {
type: 'list',
data: [],
url: '/contacts/67a9b9dfcc14109e073fbe19/notes',
total_count: 0,
has_more: false,
},
companies: {
type: 'list',
data: [],
url: '/contacts/67a9b9dfcc14109e073fbe19/companies',
total_count: 0,
has_more: false,
},
opted_out_subscription_types: {
type: 'list',
data: [],
url: '/contacts/67a9b9dfcc14109e073fbe19/subscriptions',
total_count: 0,
has_more: false,
},
opted_in_subscription_types: {
type: 'list',
data: [],
url: '/contacts/67a9b9dfcc14109e073fbe19/subscriptions',
total_count: 0,
has_more: false,
},
utm_campaign: null,
utm_content: null,
utm_medium: null,
utm_source: null,
utm_term: null,
referrer: null,
sms_consent: false,
unsubscribed_from_sms: false,
enabled_push_messaging: null,
},
},
});
type IntercomPayloadBodyType = {
data: {
item: {
tag: {
id: string;
};
};
};
};

View File

@@ -0,0 +1,233 @@
import { createTrigger, TriggerStrategy } from '@activepieces/pieces-framework';
import { intercomAuth } from '../..';
import { intercomClient } from '../common';
import { tagIdProp } from '../common/props';
export const tagAddedToUserTrigger = createTrigger({
name: 'tag-added-to-user',
displayName: 'Tag Added to User',
description: 'Triggers when a tag is added to a user.',
props: {
tagId: tagIdProp('Tag', false),
},
auth: intercomAuth,
type: TriggerStrategy.APP_WEBHOOK,
async onEnable(context) {
const client = intercomClient(context.auth);
const response = await client.admins.identify();
if (!response.app?.id_code) {
throw new Error('Could not find admin id code');
}
context.app.createListeners({
events: ['contact.user.tag.created'],
identifierValue: response['app']['id_code'],
});
},
async onDisable(context) {
// implement webhook deletion logic
},
async test(context) {
const client = intercomClient(context.auth);
if (context.propsValue.tagId) {
const response = await client.contacts.search({
query: {
operator: 'AND',
value: [
{
field: 'tag_id',
operator: '=',
value: context.propsValue.tagId,
},
{
field: 'role',
operator: '=',
value: 'user',
},
],
},
pagination: { per_page: 5 },
});
const tag = await client.tags.find({ tag_id: context.propsValue.tagId });
return response.data.map((item) => {
return {
type: 'contact_tag',
tag: {
type: tag.type,
id: tag.id,
name: tag.name,
},
contact: item,
};
});
}
const response = await client.contacts.search({
query: {
operator: 'AND',
value: [
{
field: 'tag_id',
operator: '!=',
value: '',
},
{
field: 'role',
operator: '=',
value: 'user',
},
],
},
pagination: { per_page: 100 },
});
let count = 0;
const items = [];
for await (const user of response) {
if (user.tags && user.tags.data.length > 0) {
const tag = await client.tags.find({ tag_id: user.tags.data[0].id });
items.push({
type: 'contact_tag',
tag: {
type: tag.type,
id: tag.id,
name: tag.name,
},
contact: user,
});
count++;
}
if (count >= 5) break;
}
return items;
},
async run(context) {
const tag = context.propsValue.tagId;
const payloadBody = context.payload.body as IntercomPayloadBodyType;
if (!tag || payloadBody?.data?.item?.tag.id === tag) {
return [payloadBody.data.item];
}
return [];
},
sampleData: {
type: 'contact_tag',
tag: {
type: 'tag',
id: '34',
name: 'Manual tag',
},
contact: {
type: 'contact',
id: '67a9b9dfcc14109e073fbe19',
workspace_id: 'nzekhfwb',
external_id: '5b803f65-bcec-4198-b4f4-a0588454b537',
role: 'user',
email: 'john.doe@example.com',
phone: null,
name: 'John Doe',
avatar: null,
owner_id: null,
social_profiles: {
type: 'list',
data: [],
},
has_hard_bounced: false,
marked_email_as_spam: false,
unsubscribed_from_emails: false,
created_at: '2025-02-10T08:33:35.910+00:00',
updated_at: '2025-02-10T08:33:35.907+00:00',
signed_up_at: null,
last_seen_at: null,
last_replied_at: null,
last_contacted_at: null,
last_email_opened_at: null,
last_email_clicked_at: null,
language_override: null,
browser: null,
browser_version: null,
browser_language: null,
os: null,
location: {
type: 'location',
country: null,
region: null,
city: null,
country_code: null,
continent_code: null,
},
android_app_name: null,
android_app_version: null,
android_device: null,
android_os_version: null,
android_sdk_version: null,
android_last_seen_at: null,
ios_app_name: null,
ios_app_version: null,
ios_device: null,
ios_os_version: null,
ios_sdk_version: null,
ios_last_seen_at: null,
custom_attributes: {},
tags: {
type: 'list',
data: [],
url: '/contacts/67a9b9dfcc14109e073fbe19/tags',
total_count: 0,
has_more: false,
},
notes: {
type: 'list',
data: [],
url: '/contacts/67a9b9dfcc14109e073fbe19/notes',
total_count: 0,
has_more: false,
},
companies: {
type: 'list',
data: [],
url: '/contacts/67a9b9dfcc14109e073fbe19/companies',
total_count: 0,
has_more: false,
},
opted_out_subscription_types: {
type: 'list',
data: [],
url: '/contacts/67a9b9dfcc14109e073fbe19/subscriptions',
total_count: 0,
has_more: false,
},
opted_in_subscription_types: {
type: 'list',
data: [],
url: '/contacts/67a9b9dfcc14109e073fbe19/subscriptions',
total_count: 0,
has_more: false,
},
utm_campaign: null,
utm_content: null,
utm_medium: null,
utm_source: null,
utm_term: null,
referrer: null,
sms_consent: false,
unsubscribed_from_sms: false,
enabled_push_messaging: null,
},
},
});
type IntercomPayloadBodyType = {
data: {
item: {
tag: {
id: string;
};
};
};
};