Add Activepieces integration for workflow automation
- Add Activepieces fork with SmoothSchedule custom piece - Create integrations app with Activepieces service layer - Add embed token endpoint for iframe integration - Create Automations page with embedded workflow builder - Add sidebar visibility fix for embed mode - Add list inactive customers endpoint to Public API - Include SmoothSchedule triggers: event created/updated/cancelled - Include SmoothSchedule actions: create/update/cancel events, list resources/services/customers 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,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)"
|
||||
}
|
||||
@@ -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)"
|
||||
}
|
||||
@@ -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)"
|
||||
}
|
||||
@@ -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)": "キーワード (任意)"
|
||||
}
|
||||
@@ -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)"
|
||||
}
|
||||
@@ -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)"
|
||||
}
|
||||
@@ -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)": "Ключевое слово (необязательно)"
|
||||
}
|
||||
@@ -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)"
|
||||
}
|
||||
@@ -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)"
|
||||
}
|
||||
@@ -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)"
|
||||
}
|
||||
@@ -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;
|
||||
};
|
||||
@@ -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;
|
||||
},
|
||||
});
|
||||
@@ -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;
|
||||
},
|
||||
});
|
||||
@@ -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;
|
||||
},
|
||||
});
|
||||
@@ -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;
|
||||
},
|
||||
});
|
||||
@@ -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;
|
||||
},
|
||||
});
|
||||
@@ -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;
|
||||
},
|
||||
});
|
||||
@@ -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;
|
||||
},
|
||||
});
|
||||
@@ -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;
|
||||
},
|
||||
});
|
||||
@@ -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;
|
||||
},
|
||||
});
|
||||
@@ -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;
|
||||
},
|
||||
});
|
||||
@@ -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;
|
||||
},
|
||||
});
|
||||
@@ -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] : {},
|
||||
};
|
||||
},
|
||||
});
|
||||
@@ -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] : {},
|
||||
};
|
||||
},
|
||||
});
|
||||
@@ -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] : {},
|
||||
};
|
||||
},
|
||||
});
|
||||
@@ -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] : {},
|
||||
};
|
||||
},
|
||||
});
|
||||
@@ -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;
|
||||
},
|
||||
});
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
})
|
||||
@@ -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;
|
||||
},
|
||||
});
|
||||
@@ -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;
|
||||
},
|
||||
});
|
||||
@@ -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;
|
||||
},
|
||||
});
|
||||
@@ -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>;
|
||||
};
|
||||
};
|
||||
@@ -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;
|
||||
},
|
||||
});
|
||||
@@ -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,
|
||||
},
|
||||
});
|
||||
@@ -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,
|
||||
},
|
||||
});
|
||||
@@ -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];
|
||||
},
|
||||
});
|
||||
@@ -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,
|
||||
},
|
||||
});
|
||||
@@ -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;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
@@ -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,
|
||||
},
|
||||
});
|
||||
@@ -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];
|
||||
},
|
||||
});
|
||||
@@ -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];
|
||||
},
|
||||
});
|
||||
@@ -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,
|
||||
},
|
||||
});
|
||||
@@ -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,
|
||||
},
|
||||
});
|
||||
@@ -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,
|
||||
},
|
||||
});
|
||||
@@ -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,
|
||||
},
|
||||
});
|
||||
@@ -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,
|
||||
},
|
||||
});
|
||||
@@ -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',
|
||||
},
|
||||
});
|
||||
@@ -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,
|
||||
},
|
||||
});
|
||||
@@ -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;
|
||||
}[];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
@@ -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];
|
||||
},
|
||||
});
|
||||
@@ -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];
|
||||
},
|
||||
});
|
||||
@@ -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;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
@@ -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;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
Reference in New Issue
Block a user