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,31 @@
|
||||
{
|
||||
"Meeting assistant that automatically records, transcribes, and analyzes conversations": "Meeting-Assistent, der Gespräche automatisch aufzeichnet, transkribiert und analysiert",
|
||||
"\nTo use Fireflies.ai, you need to get an API key:\n1. Login to your account at https://fireflies.ai.\n2. Navigate to Settings > Developer Settings in the left sidebar.\n3. Copy the API key from the API Key section.\n": "\nUm Fireflies.ai nutzen zu können, musst du einen API-Schlüssel erhalten:\n1. Logge dich bei deinem Konto unter https://fireflies.ai ein.\n2. Navigieren Sie zu Einstellungen > Entwicklereinstellungen in der linken Seitenleiste.\n3. Kopieren Sie den API-Schlüssel aus dem Abschnitt API-Schlüssel.\n",
|
||||
"Find Meeting by ID": "Besprechung über ID finden",
|
||||
"Find Recent Meeting": "Letztes Meeting finden",
|
||||
"Find Meeting by Call Deatils": "Besprechung nach Anrufdeatils finden",
|
||||
"Upload Audio": "Audio hochladen",
|
||||
"Get User Details": "Benutzerdetails abrufen",
|
||||
"Finds a specific meeting by ID.": "Findet ein bestimmtes Meeting nach ID.",
|
||||
"Retrieves the latest meeting for a user.": "Ruft das neueste Meeting eines Benutzers ab.",
|
||||
"Searches meetings based on provided parameters.": "Sucht Besprechungen basierend auf den angegebenen Parametern.",
|
||||
"Creates a new meeeting in Fireflies for transcription (requires a publicly accessible URL).": "Erstellt einen neuen Meeeting in Fireflies für die Transkription (benötigt eine öffentlich zugängliche URL).",
|
||||
"Retrieves profile information by ID.": "Ruft Profilinformationen nach ID ab.",
|
||||
"Meeting ID": "Besprechungs-ID",
|
||||
"Meeting Title": "Besprechungstitel",
|
||||
"Host Email": "Host-E-Mail",
|
||||
"Participant Email": "Teilnehmer-E-Mail",
|
||||
"Date": "Datum",
|
||||
"Audio URL": "Audio-URL",
|
||||
"Title": "Titel",
|
||||
"User ID": "Benutzer-ID",
|
||||
"The ID of the meeting to retrieve.": "Die ID des Treffens abzurufen.",
|
||||
"Filter meetings by host email.": "Besprechungen nach Host-E-Mail filtern.",
|
||||
"Filter meetings by participant email": "Besprechungen nach Teilnehmer-E-Mail filtern",
|
||||
"Filter meetings on this date (YYYY-MM-DD).": "Treffen nach diesem Datum filtern (YYY-MM-DD).",
|
||||
"The publicly accessible URL to your audio file (mp3, mp4, wav, m4a, ogg). Fireflies API only accepts URLs, not direct file uploads. For private files, consider using signed URLs with short expiry times.": "Die öffentlich zugängliche URL zu Ihrer Audiodatei (mp3, mp4, wav, m4a, ogg). Fireflies API akzeptiert nur URLs, nicht direkte Datei-Uploads. Für private Dateien sollten signierte URLs mit kurzen Ablaufzeiten verwendet werden.",
|
||||
"New Transcription Completed": "Neue Transkription abgeschlossen",
|
||||
"Triggered when a new meeting is transcribed.": "Wird ausgelöst, wenn ein neues Treffen übertragen wird.",
|
||||
"Markdown": "Markdown",
|
||||
"\n\t\t\t## Fireflies.ai Webhook Setup\n\t\t\tTo use this trigger, you need to manually set up a webhook in your Fireflies.ai account:\n\n\t\t\t1. Login to your Fireflies.ai account.\n\t\t\t2. Navigate to **Settings** > **Developer Settings** in the left sidebar.\n\t\t\t3. Enter the following URL in the webhooks field:\n\t\t\t```text\n\t\t\t{{webhookUrl}}\n\t\t\t```\n\t\t\t4. Click Save to register the webhook.\n\n\t\t\tThis webhook will be triggered when a meeting transcription is completed.\n\t\t\t": "\n\t\t\t## Fireflies.ai Webhook Setup\n\t\t\tUm diesen Trigger zu verwenden, müssen Sie manuell einen Webhook in Ihren Fireflies einrichten. i Konto:\n\n\t\t\t1. Melden Sie sich bei Ihrem Fireflies.ai-Konto an.\n\t\t\t2. Navigieren Sie zu **Einstellungen** > **Entwicklereinstellungen** in der linken Seitenleiste.\n\t\t\t3. Geben Sie die folgende URL in das Feld Webhooks ein:\n\t\t\t```text\n\t\t\t{{webhookUrl}}\n\t\t\t```\n\t\t\t4. Klicken Sie auf Speichern, um den Webhook zu registrieren.\n\n\t\t\tDieser Webhook wird ausgelöst, wenn eine Meeting-Transkription abgeschlossen ist.\n\t\t\t"
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
{
|
||||
"Meeting assistant that automatically records, transcribes, and analyzes conversations": "Asistente de reunión que automáticamente registra, transcribe y analiza las conversaciones",
|
||||
"\nTo use Fireflies.ai, you need to get an API key:\n1. Login to your account at https://fireflies.ai.\n2. Navigate to Settings > Developer Settings in the left sidebar.\n3. Copy the API key from the API Key section.\n": "\nTo use Fireflies.ai, you need to get an API key:\n1. Login to your account at https://fireflies.ai.\n2. Navigate to Settings > Developer Settings in the left sidebar.\n3. Copy the API key from the API Key section.\n",
|
||||
"Find Meeting by ID": "Buscar reunión por ID",
|
||||
"Find Recent Meeting": "Buscar Reunión Reciente",
|
||||
"Find Meeting by Call Deatils": "Encuentre reuniones por llamadas",
|
||||
"Upload Audio": "Subir Audio",
|
||||
"Get User Details": "Obtener detalles del usuario",
|
||||
"Finds a specific meeting by ID.": "Encuentra una reunión específica por ID.",
|
||||
"Retrieves the latest meeting for a user.": "Recuperar la última reunión para un usuario.",
|
||||
"Searches meetings based on provided parameters.": "Busca reuniones basadas en parámetros proporcionados.",
|
||||
"Creates a new meeeting in Fireflies for transcription (requires a publicly accessible URL).": "Crea un nuevo meeeting en Fireflies para su transcripción (requiere una URL públicamente accesible).",
|
||||
"Retrieves profile information by ID.": "Recuperar la información del perfil por ID.",
|
||||
"Meeting ID": "ID de reunión",
|
||||
"Meeting Title": "Título de la reunión",
|
||||
"Host Email": "Email del host",
|
||||
"Participant Email": "Email del participante",
|
||||
"Date": "Fecha",
|
||||
"Audio URL": "URL de audio",
|
||||
"Title": "Título",
|
||||
"User ID": "ID Usuario",
|
||||
"The ID of the meeting to retrieve.": "El ID de la reunión para recuperar.",
|
||||
"Filter meetings by host email.": "Filtrar reuniones por correo electrónico.",
|
||||
"Filter meetings by participant email": "Filtrar reuniones por email del participante",
|
||||
"Filter meetings on this date (YYYY-MM-DD).": "Filtrar reuniones en esta fecha (AAA-MM-DD).",
|
||||
"The publicly accessible URL to your audio file (mp3, mp4, wav, m4a, ogg). Fireflies API only accepts URLs, not direct file uploads. For private files, consider using signed URLs with short expiry times.": "La URL de acceso público a tu archivo de audio (mp3, mp4, wav, m4a, ogg). La API de Fireflies sólo acepta URLs, no subidas directas de archivos. Para archivos privados, considere el uso de URLs firmadas con cortos tiempos de caducidad.",
|
||||
"New Transcription Completed": "Nueva Transcripción Completada",
|
||||
"Triggered when a new meeting is transcribed.": "Se activa cuando se transcribe una nueva reunión.",
|
||||
"Markdown": "Markdown",
|
||||
"\n\t\t\t## Fireflies.ai Webhook Setup\n\t\t\tTo use this trigger, you need to manually set up a webhook in your Fireflies.ai account:\n\n\t\t\t1. Login to your Fireflies.ai account.\n\t\t\t2. Navigate to **Settings** > **Developer Settings** in the left sidebar.\n\t\t\t3. Enter the following URL in the webhooks field:\n\t\t\t```text\n\t\t\t{{webhookUrl}}\n\t\t\t```\n\t\t\t4. Click Save to register the webhook.\n\n\t\t\tThis webhook will be triggered when a meeting transcription is completed.\n\t\t\t": "\n\t\t\t## Fireflies.ai Webhook Setup\n\t\t\tPara utilizar este activador, necesita configurar manualmente un webhook en sus Fireflies. Cuenta i:\n\n\t\t\t1. Inicie sesión en su cuenta Fireflies.ai.\n\t\t\t2. Navegue a **Ajustes** > **Configuración del desarrollador** en la barra izquierda.\n\t\t\t3. Introduzca la siguiente URL en el campo de los webhooks:\n\t\t\t```text\n\t\t\t{{webhookUrl}}\n\t\t\t```\n\t\t\t4. Haga clic en Guardar para registrar el webhook.\n\n\t\t\tEste webhook se activará cuando se complete una transcripción de la reunión.\n\t\t\t"
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
{
|
||||
"Meeting assistant that automatically records, transcribes, and analyzes conversations": "Assistant de réunion qui enregistre automatiquement, transcrit et analyse les conversations",
|
||||
"\nTo use Fireflies.ai, you need to get an API key:\n1. Login to your account at https://fireflies.ai.\n2. Navigate to Settings > Developer Settings in the left sidebar.\n3. Copy the API key from the API Key section.\n": "\nTo use Fireflies.ai, you need to get an API key:\n1. Login to your account at https://fireflies.ai.\n2. Navigate to Settings > Developer Settings in the left sidebar.\n3. Copy the API key from the API Key section.\n",
|
||||
"Find Meeting by ID": "Trouver une réunion par ID",
|
||||
"Find Recent Meeting": "Trouver une réunion récente",
|
||||
"Find Meeting by Call Deatils": "Trouver une réunion par Déatils d'Appel",
|
||||
"Upload Audio": "Télécharger l'audio",
|
||||
"Get User Details": "Obtenir les détails de l'utilisateur",
|
||||
"Finds a specific meeting by ID.": "Trouve une réunion spécifique par ID.",
|
||||
"Retrieves the latest meeting for a user.": "Récupère la dernière réunion pour un utilisateur.",
|
||||
"Searches meetings based on provided parameters.": "Recherche des réunions en fonction des paramètres fournis.",
|
||||
"Creates a new meeeting in Fireflies for transcription (requires a publicly accessible URL).": "Crée une nouvelle rencontre dans Fireflies pour transcription (nécessite une URL accessible au public).",
|
||||
"Retrieves profile information by ID.": "Récupère les informations de profil par ID.",
|
||||
"Meeting ID": "ID de la réunion",
|
||||
"Meeting Title": "Titre de la réunion",
|
||||
"Host Email": "Adresse e-mail de l'hôte",
|
||||
"Participant Email": "Courriel du participant",
|
||||
"Date": "Date",
|
||||
"Audio URL": "URL audio",
|
||||
"Title": "Titre de la page",
|
||||
"User ID": "Identifiant de l'utilisateur",
|
||||
"The ID of the meeting to retrieve.": "L'ID de la réunion à récupérer.",
|
||||
"Filter meetings by host email.": "Filtrer les réunions par e-mail de l'hôte.",
|
||||
"Filter meetings by participant email": "Filtrer les réunions par email des participants",
|
||||
"Filter meetings on this date (YYYY-MM-DD).": "Filtrer les réunions à cette date (AAAA-MM-JJ).",
|
||||
"The publicly accessible URL to your audio file (mp3, mp4, wav, m4a, ogg). Fireflies API only accepts URLs, not direct file uploads. For private files, consider using signed URLs with short expiry times.": "L'URL accessible publiquement à votre fichier audio (mp3, mp4, wav, m4a, ogg). L'API Fireflies n'accepte que les URL, pas les envois directs de fichiers. Pour les fichiers privés, pensez à utiliser des URL signées avec de courts délais d'expiration.",
|
||||
"New Transcription Completed": "Nouvelle transcription terminée",
|
||||
"Triggered when a new meeting is transcribed.": "Déclenché lorsqu'une nouvelle réunion est transcrite.",
|
||||
"Markdown": "Markdown",
|
||||
"\n\t\t\t## Fireflies.ai Webhook Setup\n\t\t\tTo use this trigger, you need to manually set up a webhook in your Fireflies.ai account:\n\n\t\t\t1. Login to your Fireflies.ai account.\n\t\t\t2. Navigate to **Settings** > **Developer Settings** in the left sidebar.\n\t\t\t3. Enter the following URL in the webhooks field:\n\t\t\t```text\n\t\t\t{{webhookUrl}}\n\t\t\t```\n\t\t\t4. Click Save to register the webhook.\n\n\t\t\tThis webhook will be triggered when a meeting transcription is completed.\n\t\t\t": "\n\t\t\t## Configuration du Webhook Fireflies.ai\n\t\t\tPour utiliser ce déclencheur, vous devez configurer manuellement un webhook dans vos Fireflies. compte i :\n\n\t\t\t1. Connectez-vous à votre compte Fireflies.ai.\n\t\t\t2. Allez dans **Paramètres** > **Paramètres du développeur** dans la barre latérale gauche.\n\t\t\t3. Entrez l'URL suivante dans le champ webhooks :\n\t\t\t```text\n\t\t\t{{webhookUrl}}\n\t\t\t```\n\t\t\t4. Cliquez sur Enregistrer pour enregistrer le webhook.\n\n\t\t\tCe webhook sera déclenché quand la transcription d'une réunion sera terminée.\n\t\t\t"
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
{
|
||||
"Meeting assistant that automatically records, transcribes, and analyzes conversations": "自動的に会話を記録、転写、分析するミーティングアシスタント",
|
||||
"\nTo use Fireflies.ai, you need to get an API key:\n1. Login to your account at https://fireflies.ai.\n2. Navigate to Settings > Developer Settings in the left sidebar.\n3. Copy the API key from the API Key section.\n": "\nTo use Fireflies.ai, you need to get an API key:\n1. Login to your account at https://fireflies.ai.\n2. Navigate to Settings > Developer Settings in the left sidebar.\n3. Copy the API key from the API Key section.\n",
|
||||
"Find Meeting by ID": "IDでミーティングを見つける",
|
||||
"Find Recent Meeting": "最近のミーティングを検索",
|
||||
"Find Meeting by Call Deatils": "電話によるミーティングの検索",
|
||||
"Upload Audio": "オーディオをアップロード",
|
||||
"Get User Details": "ユーザーの詳細を取得",
|
||||
"Finds a specific meeting by ID.": "ID で特定のミーティングを検索します.",
|
||||
"Retrieves the latest meeting for a user.": "ユーザーの最新のミーティングを取得します。",
|
||||
"Searches meetings based on provided parameters.": "指定されたパラメータに基づいてミーティングを検索します.",
|
||||
"Creates a new meeeting in Fireflies for transcription (requires a publicly accessible URL).": "ホタルに新しいミーティングを作成します(公開URLが必要)。",
|
||||
"Retrieves profile information by ID.": "IDでプロファイル情報を取得します。",
|
||||
"Meeting ID": "ミーティングID",
|
||||
"Meeting Title": "ミーティングタイトル",
|
||||
"Host Email": "ホストメール",
|
||||
"Participant Email": "参加者のメールアドレス",
|
||||
"Date": "日付",
|
||||
"Audio URL": "オーディオ URL",
|
||||
"Title": "タイトル",
|
||||
"User ID": "ユーザー ID",
|
||||
"The ID of the meeting to retrieve.": "取得するミーティングのID.",
|
||||
"Filter meetings by host email.": "ホストメールでミーティングをフィルタリングします.",
|
||||
"Filter meetings by participant email": "出席者の電子メールでミーティングを絞り込みます",
|
||||
"Filter meetings on this date (YYYY-MM-DD).": "この日付のミーティング(YYYY-MM-DD)をフィルタリングします.",
|
||||
"The publicly accessible URL to your audio file (mp3, mp4, wav, m4a, ogg). Fireflies API only accepts URLs, not direct file uploads. For private files, consider using signed URLs with short expiry times.": "あなたのオーディオファイル(mp3、mp4、wav、m4a、ogg)へのアクセス可能なURL。 FirefliesのAPIは直接ファイルのアップロードではなくURLのみを受け付けます。プライベートファイルの場合は、短い有効期限で署名済みURLを使用することを検討してください。",
|
||||
"New Transcription Completed": "新しい書き起こし完了",
|
||||
"Triggered when a new meeting is transcribed.": "新しいミーティングが転写されたときにトリガーされます.",
|
||||
"Markdown": "Markdown",
|
||||
"\n\t\t\t## Fireflies.ai Webhook Setup\n\t\t\tTo use this trigger, you need to manually set up a webhook in your Fireflies.ai account:\n\n\t\t\t1. Login to your Fireflies.ai account.\n\t\t\t2. Navigate to **Settings** > **Developer Settings** in the left sidebar.\n\t\t\t3. Enter the following URL in the webhooks field:\n\t\t\t```text\n\t\t\t{{webhookUrl}}\n\t\t\t```\n\t\t\t4. Click Save to register the webhook.\n\n\t\t\tThis webhook will be triggered when a meeting transcription is completed.\n\t\t\t": "\n\t\t\t## Fireflies.ai Webhook Setup\n\t\t\tTo use this trigger, you need to manually set up a webhook in your Fireflies.ai account:\n\n\t\t\t1. Login to your Fireflies.ai account.\n\t\t\t2. Navigate to **Settings** > **Developer Settings** in the left sidebar.\n\t\t\t3. Enter the following URL in the webhooks field:\n\t\t\t```text\n\t\t\t{{webhookUrl}}\n\t\t\t```\n\t\t\t4. Click Save to register the webhook.\n\n\t\t\tThis webhook will be triggered when a meeting transcription is completed.\n\t\t\t"
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
{
|
||||
"Meeting assistant that automatically records, transcribes, and analyzes conversations": "Vergadering assistent die gesprekken automatisch opneemt, overschrijft en analyseert",
|
||||
"\nTo use Fireflies.ai, you need to get an API key:\n1. Login to your account at https://fireflies.ai.\n2. Navigate to Settings > Developer Settings in the left sidebar.\n3. Copy the API key from the API Key section.\n": "\nOm Fireflies.ai, te gebruiken, moet je een API-sleutel krijgen:\n1. Log in op je account op https://fireflies.ai.\n2. Navigeer naar Instellingen > Ontwikkelaarsinstellingen in de linker zijbalk.\n3. Kopieer de API-sleutel vanuit het API-sleutelgedeelte.\n",
|
||||
"Find Meeting by ID": "Vind vergadering via ID",
|
||||
"Find Recent Meeting": "Vind recente vergadering",
|
||||
"Find Meeting by Call Deatils": "Vind vergadering via telefoongesprekken",
|
||||
"Upload Audio": "Audio uploaden",
|
||||
"Get User Details": "Gebruikersgegevens ophalen",
|
||||
"Finds a specific meeting by ID.": "Vindt een specifieke vergadering per ID.",
|
||||
"Retrieves the latest meeting for a user.": "Herstelt de laatste vergadering voor een gebruiker.",
|
||||
"Searches meetings based on provided parameters.": "Doorzoekt vergaderingen op basis van verstrekte parameters.",
|
||||
"Creates a new meeeting in Fireflies for transcription (requires a publicly accessible URL).": "Creëert een nieuwe meeeting in Fireflies voor transcriptie (vereist een openbaar toegankelijke URL).",
|
||||
"Retrieves profile information by ID.": "Haal profielgegevens op via ID.",
|
||||
"Meeting ID": "ID vergadering",
|
||||
"Meeting Title": "Titel vergadering",
|
||||
"Host Email": "E-mail host",
|
||||
"Participant Email": "E-mailadres gebruiker",
|
||||
"Date": "Datum:",
|
||||
"Audio URL": "Audio URL",
|
||||
"Title": "Aanspreektitel",
|
||||
"User ID": "Gebruiker ID",
|
||||
"The ID of the meeting to retrieve.": "Het ID van de vergadering om op te halen.",
|
||||
"Filter meetings by host email.": "Filter vergaderingen op host e-mail.",
|
||||
"Filter meetings by participant email": "Filter vergaderingen per e-mail van gebruiker",
|
||||
"Filter meetings on this date (YYYY-MM-DD).": "Filter vergaderingen op deze datum (JJJJ-MM-DDD).",
|
||||
"The publicly accessible URL to your audio file (mp3, mp4, wav, m4a, ogg). Fireflies API only accepts URLs, not direct file uploads. For private files, consider using signed URLs with short expiry times.": "De publiekelijk toegankelijke URL naar uw audiobestand (mp3, mp4, wav, m4a, ogg). Fireflies API accepteert alleen URL's, niet directe bestandsuploads. Overweeg om voor privé bestanden ondertekende URL's met korte verlooptijden.",
|
||||
"New Transcription Completed": "Nieuwe transcriptie voltooid",
|
||||
"Triggered when a new meeting is transcribed.": "Uitgelokt wanneer een nieuwe vergadering wordt overgedragen.",
|
||||
"Markdown": "Markdown",
|
||||
"\n\t\t\t## Fireflies.ai Webhook Setup\n\t\t\tTo use this trigger, you need to manually set up a webhook in your Fireflies.ai account:\n\n\t\t\t1. Login to your Fireflies.ai account.\n\t\t\t2. Navigate to **Settings** > **Developer Settings** in the left sidebar.\n\t\t\t3. Enter the following URL in the webhooks field:\n\t\t\t```text\n\t\t\t{{webhookUrl}}\n\t\t\t```\n\t\t\t4. Click Save to register the webhook.\n\n\t\t\tThis webhook will be triggered when a meeting transcription is completed.\n\t\t\t": "\n\t\t\t## Fireflies.ai Webhook Setup\n\t\t\tTo use this trigger, you need to manually set up a webhook in your Fireflies.ai account:\n\n\t\t\t1. Login to your Fireflies.ai account.\n\t\t\t2. Navigate to **Settings** > **Developer Settings** in the left sidebar.\n\t\t\t3. Enter the following URL in the webhooks field:\n\t\t\t```text\n\t\t\t{{webhookUrl}}\n\t\t\t```\n\t\t\t4. Click Save to register the webhook.\n\n\t\t\tThis webhook will be triggered when a meeting transcription is completed.\n\t\t\t"
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
{
|
||||
"Meeting assistant that automatically records, transcribes, and analyzes conversations": "Assistente de reunião que registra automaticamente, transcreve e analisa conversas",
|
||||
"\nTo use Fireflies.ai, you need to get an API key:\n1. Login to your account at https://fireflies.ai.\n2. Navigate to Settings > Developer Settings in the left sidebar.\n3. Copy the API key from the API Key section.\n": "\nPara usar o Fireflies.ai, você precisa obter uma chave de API:\n1. Faça login em sua conta em https://fireflies.ai.\n2. Navegue para Configurações > Configurações do desenvolvedor na barra lateral esquerda.\n3. Copie a chave da API na seção da API.\n",
|
||||
"Find Meeting by ID": "Encontrar reunião por ID",
|
||||
"Find Recent Meeting": "Encontrar Reunião Recente",
|
||||
"Find Meeting by Call Deatils": "Encontrar Reunião por Depósitos de Chamadas",
|
||||
"Upload Audio": "Enviar Áudio",
|
||||
"Get User Details": "Obter detalhes do usuário",
|
||||
"Finds a specific meeting by ID.": "Encontra uma reunião específica por ID.",
|
||||
"Retrieves the latest meeting for a user.": "Recupera a última reunião para um usuário.",
|
||||
"Searches meetings based on provided parameters.": "Pesquisa reuniões com base em parâmetros fornecidos.",
|
||||
"Creates a new meeeting in Fireflies for transcription (requires a publicly accessible URL).": "Cria um novo meeeting em Fireflies para transcrição (requer uma URL acessível ao público).",
|
||||
"Retrieves profile information by ID.": "Recupera informações de perfil por ID.",
|
||||
"Meeting ID": "ID da reunião",
|
||||
"Meeting Title": "Título da Reunião",
|
||||
"Host Email": "E-mail do Servidor",
|
||||
"Participant Email": "E-mail do usuário",
|
||||
"Date": "Encontro",
|
||||
"Audio URL": "URL do Áudio",
|
||||
"Title": "Título",
|
||||
"User ID": "ID de usuário",
|
||||
"The ID of the meeting to retrieve.": "A ID da reunião para recuperar.",
|
||||
"Filter meetings by host email.": "Filtrar reuniões por e-mail do host.",
|
||||
"Filter meetings by participant email": "Filtrar reuniões por e-mail do participante",
|
||||
"Filter meetings on this date (YYYY-MM-DD).": "Filtrar reuniões nesta data (AAAA-MM-DD).",
|
||||
"The publicly accessible URL to your audio file (mp3, mp4, wav, m4a, ogg). Fireflies API only accepts URLs, not direct file uploads. For private files, consider using signed URLs with short expiry times.": "A URL publicamente acessível ao seu arquivo de áudio (mp3, mp4, wav, m4a, ogg). O Fireflies API só aceita URLs, não envio direto de arquivos. Para arquivos privados, considere usar URLs assinadas com tempos de expiração curta.",
|
||||
"New Transcription Completed": "Nova Transcrição Concluída",
|
||||
"Triggered when a new meeting is transcribed.": "Acionada quando uma nova reunião é transcrita.",
|
||||
"Markdown": "Markdown",
|
||||
"\n\t\t\t## Fireflies.ai Webhook Setup\n\t\t\tTo use this trigger, you need to manually set up a webhook in your Fireflies.ai account:\n\n\t\t\t1. Login to your Fireflies.ai account.\n\t\t\t2. Navigate to **Settings** > **Developer Settings** in the left sidebar.\n\t\t\t3. Enter the following URL in the webhooks field:\n\t\t\t```text\n\t\t\t{{webhookUrl}}\n\t\t\t```\n\t\t\t4. Click Save to register the webhook.\n\n\t\t\tThis webhook will be triggered when a meeting transcription is completed.\n\t\t\t": "\n\t\t\t## Fireflies.ai Webhook Setup\n\t\t\tTo use this trigger, you need to manually set up a webhook in your Fireflies.ai account:\n\n\t\t\t1. Login to your Fireflies.ai account.\n\t\t\t2. Navigate to **Settings** > **Developer Settings** in the left sidebar.\n\t\t\t3. Enter the following URL in the webhooks field:\n\t\t\t```text\n\t\t\t{{webhookUrl}}\n\t\t\t```\n\t\t\t4. Click Save to register the webhook.\n\n\t\t\tThis webhook will be triggered when a meeting transcription is completed.\n\t\t\t"
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
{
|
||||
"Fireflies.ai": "Fireflies.ai",
|
||||
"Meeting assistant that automatically records, transcribes, and analyzes conversations": "Ассистент заседания, который автоматически записывает, передает и анализирует разговоры",
|
||||
"\nTo use Fireflies.ai, you need to get an API key:\n1. Login to your account at https://fireflies.ai.\n2. Navigate to Settings > Developer Settings in the left sidebar.\n3. Copy the API key from the API Key section.\n": "\nTo use Fireflies.ai, you need to get an API key:\n1. Login to your account at https://fireflies.ai.\n2. Navigate to Settings > Developer Settings in the left sidebar.\n3. Copy the API key from the API Key section.\n",
|
||||
"Find Meeting by ID": "Найти встречу по ID",
|
||||
"Find Recent Meeting": "Найти недавнюю встречу",
|
||||
"Find Meeting by Call Deatils": "Найдите встречу по вызову Deatils",
|
||||
"Upload Audio": "Загрузить аудио",
|
||||
"Get User Details": "Получить информацию о пользователе",
|
||||
"Finds a specific meeting by ID.": "Находит конкретное совещание по ID.",
|
||||
"Retrieves the latest meeting for a user.": "Получает последнюю встречу для пользователя.",
|
||||
"Searches meetings based on provided parameters.": "Поиск встреч по заданным параметрам.",
|
||||
"Creates a new meeeting in Fireflies for transcription (requires a publicly accessible URL).": "Создает новую встречу в Fireflies для транскрипции (требует общедоступной URL).",
|
||||
"Retrieves profile information by ID.": "Получает информацию о профиле по ID.",
|
||||
"Meeting ID": "ID встречи",
|
||||
"Meeting Title": "Название встречи",
|
||||
"Host Email": "Email хоста",
|
||||
"Participant Email": "Email участника",
|
||||
"Date": "Дата",
|
||||
"Audio URL": "URL аудио",
|
||||
"Title": "Заголовок",
|
||||
"User ID": "ID пользователя",
|
||||
"The ID of the meeting to retrieve.": "ID встречи для извлечения.",
|
||||
"Filter meetings by host email.": "Фильтрация встреч по электронной почте хоста.",
|
||||
"Filter meetings by participant email": "Фильтровать встречи по электронной почте участников",
|
||||
"Filter meetings on this date (YYYY-MM-DD).": "Фильтровать встречи по этой дате (ГГГГ-ММ-ДД).",
|
||||
"The publicly accessible URL to your audio file (mp3, mp4, wav, m4a, ogg). Fireflies API only accepts URLs, not direct file uploads. For private files, consider using signed URLs with short expiry times.": "Публичный URL-адрес аудио файла (mp3, mp4, wav, m4a, ogg). Fireflies API принимает только URL, а не прямые загрузки файлов. Для частных файлов используйте подписанные URL-адреса с коротким сроком действия.",
|
||||
"New Transcription Completed": "Транскрипция завершена",
|
||||
"Triggered when a new meeting is transcribed.": "Срабатывает при транскрипции новой встречи.",
|
||||
"Markdown": "Markdown",
|
||||
"\n\t\t\t## Fireflies.ai Webhook Setup\n\t\t\tTo use this trigger, you need to manually set up a webhook in your Fireflies.ai account:\n\n\t\t\t1. Login to your Fireflies.ai account.\n\t\t\t2. Navigate to **Settings** > **Developer Settings** in the left sidebar.\n\t\t\t3. Enter the following URL in the webhooks field:\n\t\t\t```text\n\t\t\t{{webhookUrl}}\n\t\t\t```\n\t\t\t4. Click Save to register the webhook.\n\n\t\t\tThis webhook will be triggered when a meeting transcription is completed.\n\t\t\t": "\n\t\t\t## Fireflies.ai настройка Webhook\n\t\t\tдля использования этого триггера необходимо вручную настроить вебхук в Fireflies. i account:\n\n\t\t\t1. Войдите в ваш аккаунт Fireflies.ai.\n\t\t\t2. Перейдите в **Настройки** > **Настройки разработчика** в левой боковой панели.\n\t\t\t3. Введите следующий URL в поле вебхуков:\n\t\t\t```text\n\t\t\t{{webhookUrl}}\n\t\t\t```\n\t\t\t4. Нажмите кнопку Сохранить, чтобы зарегистрировать вебхук.\n\n\t\t\tЭтот вебхук будет запущен после завершения транскрипции встречи.\n\t\t\t"
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
{
|
||||
"Meeting assistant that automatically records, transcribes, and analyzes conversations": "Meeting assistant that automatically records, transcribes, and analyzes conversations",
|
||||
"\nTo use Fireflies.ai, you need to get an API key:\n1. Login to your account at https://fireflies.ai.\n2. Navigate to Settings > Developer Settings in the left sidebar.\n3. Copy the API key from the API Key section.\n": "\nTo use Fireflies.ai, you need to get an API key:\n1. Login to your account at https://fireflies.ai.\n2. Navigate to Settings > Developer Settings in the left sidebar.\n3. Copy the API key from the API Key section.\n",
|
||||
"Find Meeting by ID": "Find Meeting by ID",
|
||||
"Find Recent Meeting": "Find Recent Meeting",
|
||||
"Find Meeting by Call Deatils": "Find Meeting by Call Deatils",
|
||||
"Upload Audio": "Upload Audio",
|
||||
"Get User Details": "Get User Details",
|
||||
"Finds a specific meeting by ID.": "Finds a specific meeting by ID.",
|
||||
"Retrieves the latest meeting for a user.": "Retrieves the latest meeting for a user.",
|
||||
"Searches meetings based on provided parameters.": "Searches meetings based on provided parameters.",
|
||||
"Creates a new meeeting in Fireflies for transcription (requires a publicly accessible URL).": "Creates a new meeeting in Fireflies for transcription (requires a publicly accessible URL).",
|
||||
"Retrieves profile information by ID.": "Retrieves profile information by ID.",
|
||||
"Meeting ID": "Meeting ID",
|
||||
"Meeting Title": "Meeting Title",
|
||||
"Host Email": "Host Email",
|
||||
"Participant Email": "Participant Email",
|
||||
"Date": "Date",
|
||||
"Audio URL": "Audio URL",
|
||||
"Title": "Title",
|
||||
"User ID": "User ID",
|
||||
"The ID of the meeting to retrieve.": "The ID of the meeting to retrieve.",
|
||||
"Filter meetings by host email.": "Filter meetings by host email.",
|
||||
"Filter meetings by participant email": "Filter meetings by participant email",
|
||||
"Filter meetings on this date (YYYY-MM-DD).": "Filter meetings on this date (YYYY-MM-DD).",
|
||||
"The publicly accessible URL to your audio file (mp3, mp4, wav, m4a, ogg). Fireflies API only accepts URLs, not direct file uploads. For private files, consider using signed URLs with short expiry times.": "The publicly accessible URL to your audio file (mp3, mp4, wav, m4a, ogg). Fireflies API only accepts URLs, not direct file uploads. For private files, consider using signed URLs with short expiry times.",
|
||||
"New Transcription Completed": "New Transcription Completed",
|
||||
"Triggered when a new meeting is transcribed.": "Triggered when a new meeting is transcribed.",
|
||||
"Markdown": "Markdown",
|
||||
"\n\t\t\t## Fireflies.ai Webhook Setup\n\t\t\tTo use this trigger, you need to manually set up a webhook in your Fireflies.ai account:\n\n\t\t\t1. Login to your Fireflies.ai account.\n\t\t\t2. Navigate to **Settings** > **Developer Settings** in the left sidebar.\n\t\t\t3. Enter the following URL in the webhooks field:\n\t\t\t```text\n\t\t\t{{webhookUrl}}\n\t\t\t```\n\t\t\t4. Click Save to register the webhook.\n\n\t\t\tThis webhook will be triggered when a meeting transcription is completed.\n\t\t\t": "\n\t\t\t## Fireflies.ai Webhook Setup\n\t\t\tTo use this trigger, you need to manually set up a webhook in your Fireflies.ai account:\n\n\t\t\t1. Login to your Fireflies.ai account.\n\t\t\t2. Navigate to **Settings** > **Developer Settings** in the left sidebar.\n\t\t\t3. Enter the following URL in the webhooks field:\n\t\t\t```text\n\t\t\t{{webhookUrl}}\n\t\t\t```\n\t\t\t4. Click Save to register the webhook.\n\n\t\t\tThis webhook will be triggered when a meeting transcription is completed.\n\t\t\t"
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
{
|
||||
"Fireflies.ai": "Fireflies.ai",
|
||||
"Meeting assistant that automatically records, transcribes, and analyzes conversations": "Meeting assistant that automatically records, transcribes, and analyzes conversations",
|
||||
"\nTo use Fireflies.ai, you need to get an API key:\n1. Login to your account at https://fireflies.ai.\n2. Navigate to Settings > Developer Settings in the left sidebar.\n3. Copy the API key from the API Key section.\n": "\nTo use Fireflies.ai, you need to get an API key:\n1. Login to your account at https://fireflies.ai.\n2. Navigate to Settings > Developer Settings in the left sidebar.\n3. Copy the API key from the API Key section.\n",
|
||||
"Find Meeting by ID": "Find Meeting by ID",
|
||||
"Find Recent Meeting": "Find Recent Meeting",
|
||||
"Find Meeting by Call Deatils": "Find Meeting by Call Deatils",
|
||||
"Upload Audio": "Upload Audio",
|
||||
"Get User Details": "Get User Details",
|
||||
"Finds a specific meeting by ID.": "Finds a specific meeting by ID.",
|
||||
"Retrieves the latest meeting for a user.": "Retrieves the latest meeting for a user.",
|
||||
"Searches meetings based on provided parameters.": "Searches meetings based on provided parameters.",
|
||||
"Creates a new meeeting in Fireflies for transcription (requires a publicly accessible URL).": "Creates a new meeeting in Fireflies for transcription (requires a publicly accessible URL).",
|
||||
"Retrieves profile information by ID.": "Retrieves profile information by ID.",
|
||||
"Meeting ID": "Meeting ID",
|
||||
"Meeting Title": "Meeting Title",
|
||||
"Host Email": "Host Email",
|
||||
"Participant Email": "Participant Email",
|
||||
"Date": "Date",
|
||||
"Audio URL": "Audio URL",
|
||||
"Title": "Title",
|
||||
"User ID": "User ID",
|
||||
"The ID of the meeting to retrieve.": "The ID of the meeting to retrieve.",
|
||||
"Filter meetings by host email.": "Filter meetings by host email.",
|
||||
"Filter meetings by participant email": "Filter meetings by participant email",
|
||||
"Filter meetings on this date (YYYY-MM-DD).": "Filter meetings on this date (YYYY-MM-DD).",
|
||||
"The publicly accessible URL to your audio file (mp3, mp4, wav, m4a, ogg). Fireflies API only accepts URLs, not direct file uploads. For private files, consider using signed URLs with short expiry times.": "The publicly accessible URL to your audio file (mp3, mp4, wav, m4a, ogg). Fireflies API only accepts URLs, not direct file uploads. For private files, consider using signed URLs with short expiry times.",
|
||||
"New Transcription Completed": "New Transcription Completed",
|
||||
"Triggered when a new meeting is transcribed.": "Triggered when a new meeting is transcribed.",
|
||||
"Markdown": "Markdown",
|
||||
"\n\t\t\t## Fireflies.ai Webhook Setup\n\t\t\tTo use this trigger, you need to manually set up a webhook in your Fireflies.ai account:\n\n\t\t\t1. Login to your Fireflies.ai account.\n\t\t\t2. Navigate to **Settings** > **Developer Settings** in the left sidebar.\n\t\t\t3. Enter the following URL in the webhooks field:\n\t\t\t```text\n\t\t\t{{webhookUrl}}\n\t\t\t```\n\t\t\t4. Click Save to register the webhook.\n\n\t\t\tThis webhook will be triggered when a meeting transcription is completed.\n\t\t\t": "\n\t\t\t## Fireflies.ai Webhook Setup\n\t\t\tTo use this trigger, you need to manually set up a webhook in your Fireflies.ai account:\n\n\t\t\t1. Login to your Fireflies.ai account.\n\t\t\t2. Navigate to **Settings** > **Developer Settings** in the left sidebar.\n\t\t\t3. Enter the following URL in the webhooks field:\n\t\t\t```text\n\t\t\t{{webhookUrl}}\n\t\t\t```\n\t\t\t4. Click Save to register the webhook.\n\n\t\t\tThis webhook will be triggered when a meeting transcription is completed.\n\t\t\t"
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
{
|
||||
"Meeting assistant that automatically records, transcribes, and analyzes conversations": "Meeting assistant that automatically records, transcribes, and analyzes conversations",
|
||||
"\nTo use Fireflies.ai, you need to get an API key:\n1. Login to your account at https://fireflies.ai.\n2. Navigate to Settings > Developer Settings in the left sidebar.\n3. Copy the API key from the API Key section.\n": "\nTo use Fireflies.ai, you need to get an API key:\n1. Login to your account at https://fireflies.ai.\n2. Navigate to Settings > Developer Settings in the left sidebar.\n3. Copy the API key from the API Key section.\n",
|
||||
"Find Meeting by ID": "Find Meeting by ID",
|
||||
"Find Recent Meeting": "Find Recent Meeting",
|
||||
"Find Meeting by Call Deatils": "Find Meeting by Call Deatils",
|
||||
"Upload Audio": "Upload Audio",
|
||||
"Get User Details": "Get User Details",
|
||||
"Finds a specific meeting by ID.": "Finds a specific meeting by ID.",
|
||||
"Retrieves the latest meeting for a user.": "Retrieves the latest meeting for a user.",
|
||||
"Searches meetings based on provided parameters.": "Searches meetings based on provided parameters.",
|
||||
"Creates a new meeeting in Fireflies for transcription (requires a publicly accessible URL).": "Creates a new meeeting in Fireflies for transcription (requires a publicly accessible URL).",
|
||||
"Retrieves profile information by ID.": "Retrieves profile information by ID.",
|
||||
"Meeting ID": "Meeting ID",
|
||||
"Meeting Title": "Meeting Title",
|
||||
"Host Email": "Host Email",
|
||||
"Participant Email": "Participant Email",
|
||||
"Date": "Date",
|
||||
"Audio URL": "Audio URL",
|
||||
"Title": "标题",
|
||||
"User ID": "User ID",
|
||||
"The ID of the meeting to retrieve.": "The ID of the meeting to retrieve.",
|
||||
"Filter meetings by host email.": "Filter meetings by host email.",
|
||||
"Filter meetings by participant email": "Filter meetings by participant email",
|
||||
"Filter meetings on this date (YYYY-MM-DD).": "Filter meetings on this date (YYYY-MM-DD).",
|
||||
"The publicly accessible URL to your audio file (mp3, mp4, wav, m4a, ogg). Fireflies API only accepts URLs, not direct file uploads. For private files, consider using signed URLs with short expiry times.": "The publicly accessible URL to your audio file (mp3, mp4, wav, m4a, ogg). Fireflies API only accepts URLs, not direct file uploads. For private files, consider using signed URLs with short expiry times.",
|
||||
"New Transcription Completed": "New Transcription Completed",
|
||||
"Triggered when a new meeting is transcribed.": "Triggered when a new meeting is transcribed.",
|
||||
"Markdown": "Markdown",
|
||||
"\n\t\t\t## Fireflies.ai Webhook Setup\n\t\t\tTo use this trigger, you need to manually set up a webhook in your Fireflies.ai account:\n\n\t\t\t1. Login to your Fireflies.ai account.\n\t\t\t2. Navigate to **Settings** > **Developer Settings** in the left sidebar.\n\t\t\t3. Enter the following URL in the webhooks field:\n\t\t\t```text\n\t\t\t{{webhookUrl}}\n\t\t\t```\n\t\t\t4. Click Save to register the webhook.\n\n\t\t\tThis webhook will be triggered when a meeting transcription is completed.\n\t\t\t": "\n\t\t\t## Fireflies.ai Webhook Setup\n\t\t\tTo use this trigger, you need to manually set up a webhook in your Fireflies.ai account:\n\n\t\t\t1. Login to your Fireflies.ai account.\n\t\t\t2. Navigate to **Settings** > **Developer Settings** in the left sidebar.\n\t\t\t3. Enter the following URL in the webhooks field:\n\t\t\t```text\n\t\t\t{{webhookUrl}}\n\t\t\t```\n\t\t\t4. Click Save to register the webhook.\n\n\t\t\tThis webhook will be triggered when a meeting transcription is completed.\n\t\t\t"
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
import { createPiece, PieceAuth } from '@activepieces/pieces-framework';
|
||||
import { PieceCategory } from '@activepieces/shared';
|
||||
|
||||
import { findMeetingByIdAction } from './lib/actions/find-meeting-by-id';
|
||||
import { findRecentMeetingAction } from './lib/actions/find-recent-meeting';
|
||||
import { findMeetingByQueryAction } from './lib/actions/find-meeting-by-query';
|
||||
import { uploadAudioAction } from './lib/actions/upload-audio';
|
||||
import { getUserDetailsAction } from './lib/actions/get-user-details';
|
||||
import { newTranscriptionCompletedTrigger } from './lib/triggers/new-transcription-complete';
|
||||
|
||||
const markdownDescription = `
|
||||
To use Fireflies.ai, you need to get an API key:
|
||||
1. Login to your account at https://fireflies.ai.
|
||||
2. Navigate to Settings > Developer Settings in the left sidebar.
|
||||
3. Copy the API key from the API Key section.
|
||||
`;
|
||||
|
||||
export const firefliesAiAuth = PieceAuth.SecretText({
|
||||
displayName: 'API Key',
|
||||
description: markdownDescription,
|
||||
required: true,
|
||||
});
|
||||
|
||||
export const firefliesAi = createPiece({
|
||||
displayName: 'Fireflies.ai',
|
||||
description: 'Meeting assistant that automatically records, transcribes, and analyzes conversations',
|
||||
logoUrl: 'https://cdn.activepieces.com/pieces/fireflies-ai.png',
|
||||
authors: ['AnkitSharmaOnGithub'],
|
||||
auth: firefliesAiAuth,
|
||||
actions: [
|
||||
findMeetingByIdAction,
|
||||
findRecentMeetingAction,
|
||||
findMeetingByQueryAction,
|
||||
uploadAudioAction,
|
||||
getUserDetailsAction
|
||||
],
|
||||
triggers: [newTranscriptionCompletedTrigger],
|
||||
categories: [PieceCategory.PRODUCTIVITY],
|
||||
});
|
||||
@@ -0,0 +1,37 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { AuthenticationType, httpClient, HttpMethod } from '@activepieces/pieces-common';
|
||||
import { firefliesAiAuth } from '../../index';
|
||||
import { getTranscript } from '../common/queries';
|
||||
import { BASE_URL } from '../common';
|
||||
|
||||
export const findMeetingByIdAction = createAction({
|
||||
auth: firefliesAiAuth,
|
||||
name: 'find-meeting-by-id',
|
||||
displayName: 'Find Meeting by ID',
|
||||
description: 'Finds a specific meeting by ID.',
|
||||
props: {
|
||||
meetingId: Property.ShortText({
|
||||
displayName: 'Meeting ID',
|
||||
description: 'The ID of the meeting to retrieve.',
|
||||
required: true,
|
||||
}),
|
||||
},
|
||||
async run(context) {
|
||||
const response = await httpClient.sendRequest<{ data: { transcript: Record<string, any> } }>({
|
||||
url: BASE_URL,
|
||||
method: HttpMethod.POST,
|
||||
authentication: {
|
||||
type: AuthenticationType.BEARER_TOKEN,
|
||||
token: context.auth.secret_text,
|
||||
},
|
||||
body: {
|
||||
query: getTranscript,
|
||||
variables: {
|
||||
transcriptId: context.propsValue.meetingId,
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
return response.body.data.transcript;
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,171 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { AuthenticationType, httpClient, HttpMethod } from '@activepieces/pieces-common';
|
||||
import { firefliesAiAuth } from '../../index';
|
||||
import { BASE_URL } from '../common';
|
||||
|
||||
export const findMeetingByQueryAction = createAction({
|
||||
auth: firefliesAiAuth,
|
||||
name: 'find_meeting_by_query',
|
||||
displayName: 'Find Meeting by Call Deatils',
|
||||
description: 'Searches meetings based on provided parameters.',
|
||||
props: {
|
||||
title: Property.ShortText({
|
||||
displayName: 'Meeting Title',
|
||||
required: false,
|
||||
}),
|
||||
hostEmail: Property.ShortText({
|
||||
displayName: 'Host Email',
|
||||
description: 'Filter meetings by host email.',
|
||||
required: false,
|
||||
}),
|
||||
participantEmail: Property.ShortText({
|
||||
displayName: 'Participant Email',
|
||||
description: 'Filter meetings by participant email',
|
||||
required: false,
|
||||
}),
|
||||
date: Property.DateTime({
|
||||
displayName: 'Date',
|
||||
description: 'Filter meetings on this date (YYYY-MM-DD).',
|
||||
required: false,
|
||||
}),
|
||||
},
|
||||
async run({ propsValue, auth }) {
|
||||
const filterVariables: Record<string, any> = {};
|
||||
|
||||
if (propsValue.title) {
|
||||
filterVariables['title'] = propsValue.title;
|
||||
}
|
||||
|
||||
if (propsValue.hostEmail) {
|
||||
filterVariables['hostEmail'] = propsValue.hostEmail;
|
||||
}
|
||||
|
||||
if (propsValue.participantEmail) {
|
||||
filterVariables['participantEmail'] = propsValue.participantEmail;
|
||||
}
|
||||
|
||||
if (propsValue.date) {
|
||||
// Convert ISO string to milliseconds for the API
|
||||
const dateMs = new Date(propsValue.date).getTime();
|
||||
filterVariables['date'] = dateMs;
|
||||
}
|
||||
|
||||
const query = `
|
||||
query Transcripts(
|
||||
$title: String
|
||||
$hostEmail: String
|
||||
$participantEmail: String
|
||||
$date: Float
|
||||
$limit: Int
|
||||
$skip: Int
|
||||
) {
|
||||
transcripts(
|
||||
title: $title
|
||||
host_email: $hostEmail
|
||||
participant_email: $participantEmail
|
||||
date: $date
|
||||
limit: $limit
|
||||
skip: $skip
|
||||
) {
|
||||
id
|
||||
dateString
|
||||
privacy
|
||||
speakers
|
||||
{
|
||||
id
|
||||
name
|
||||
}
|
||||
title
|
||||
host_email
|
||||
organizer_email
|
||||
calendar_id
|
||||
user
|
||||
{
|
||||
user_id
|
||||
email
|
||||
name
|
||||
num_transcripts
|
||||
recent_meeting
|
||||
minutes_consumed
|
||||
is_admin
|
||||
integrations
|
||||
}
|
||||
fireflies_users
|
||||
participants
|
||||
date
|
||||
transcript_url
|
||||
audio_url
|
||||
video_url
|
||||
duration
|
||||
meeting_attendees
|
||||
{
|
||||
displayName
|
||||
email
|
||||
phoneNumber
|
||||
name
|
||||
location
|
||||
}
|
||||
summary
|
||||
{
|
||||
keywords
|
||||
action_items
|
||||
outline
|
||||
shorthand_bullet
|
||||
overview
|
||||
bullet_gist
|
||||
gist
|
||||
short_summary
|
||||
short_overview
|
||||
meeting_type
|
||||
topics_discussed
|
||||
transcript_chapters
|
||||
}
|
||||
cal_id
|
||||
calendar_type
|
||||
meeting_link
|
||||
}
|
||||
}
|
||||
`;
|
||||
|
||||
const limit = 50;
|
||||
let skip = 0;
|
||||
let hasMore = true;
|
||||
const meetings = [];
|
||||
|
||||
while (hasMore) {
|
||||
const variables = {
|
||||
...filterVariables,
|
||||
limit,
|
||||
skip,
|
||||
};
|
||||
|
||||
const response = await httpClient.sendRequest<{
|
||||
data: { transcripts: Record<string, any>[] };
|
||||
}>({
|
||||
url: BASE_URL,
|
||||
method: HttpMethod.POST,
|
||||
authentication: {
|
||||
type: AuthenticationType.BEARER_TOKEN,
|
||||
token: auth.secret_text,
|
||||
},
|
||||
body: {
|
||||
query: query,
|
||||
variables,
|
||||
},
|
||||
});
|
||||
|
||||
const transcripts = response?.body?.data?.transcripts || [];
|
||||
if (transcripts.length === 0) {
|
||||
hasMore = false;
|
||||
} else {
|
||||
meetings.push(...transcripts);
|
||||
skip += transcripts.length;
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
found: meetings.length !== 0,
|
||||
meetings,
|
||||
};
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,76 @@
|
||||
import { createAction } from '@activepieces/pieces-framework';
|
||||
import { AuthenticationType, httpClient, HttpMethod } from '@activepieces/pieces-common';
|
||||
import { firefliesAiAuth } from '../../index';
|
||||
import { getTranscript } from '../common/queries';
|
||||
import { isNil } from '@activepieces/shared';
|
||||
import { BASE_URL } from '../common';
|
||||
|
||||
export const findRecentMeetingAction = createAction({
|
||||
auth: firefliesAiAuth,
|
||||
name: 'find_recent_meeting',
|
||||
displayName: 'Find Recent Meeting',
|
||||
description: 'Retrieves the latest meeting for a user.',
|
||||
props: {},
|
||||
async run(context) {
|
||||
const userResponse = await httpClient.sendRequest<{
|
||||
data: { user: { recent_meeting?: string } };
|
||||
}>({
|
||||
url: BASE_URL,
|
||||
method: HttpMethod.POST,
|
||||
authentication: {
|
||||
type: AuthenticationType.BEARER_TOKEN,
|
||||
token: context.auth.secret_text,
|
||||
},
|
||||
body: {
|
||||
query: `
|
||||
query User
|
||||
{
|
||||
user
|
||||
{
|
||||
user_id
|
||||
recent_transcript
|
||||
recent_meeting
|
||||
num_transcripts
|
||||
name
|
||||
minutes_consumed
|
||||
is_admin
|
||||
integrations
|
||||
email
|
||||
}
|
||||
}`,
|
||||
variables: {},
|
||||
},
|
||||
});
|
||||
|
||||
console.log(JSON.stringify(userResponse, null, 2));
|
||||
|
||||
if (isNil(userResponse.body.data.user.recent_meeting)) {
|
||||
return {
|
||||
found: false,
|
||||
meeting: {},
|
||||
};
|
||||
}
|
||||
|
||||
const meetingResponse = await httpClient.sendRequest<{
|
||||
data: { transcript: Record<string, any> };
|
||||
}>({
|
||||
url: BASE_URL,
|
||||
method: HttpMethod.POST,
|
||||
authentication: {
|
||||
type: AuthenticationType.BEARER_TOKEN,
|
||||
token: context.auth.secret_text,
|
||||
},
|
||||
body: {
|
||||
query: getTranscript,
|
||||
variables: {
|
||||
transcriptId: userResponse.body.data.user.recent_meeting,
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
return {
|
||||
found: true,
|
||||
meeting: meetingResponse.body.data.transcript,
|
||||
};
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,36 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { AuthenticationType, httpClient, HttpMethod } from '@activepieces/pieces-common';
|
||||
import { firefliesAiAuth } from '../../index';
|
||||
import { getUser } from '../common/queries';
|
||||
import { BASE_URL } from '../common';
|
||||
|
||||
export const getUserDetailsAction = createAction({
|
||||
auth: firefliesAiAuth,
|
||||
name: 'get-user-details',
|
||||
displayName: 'Get User Details',
|
||||
description: 'Retrieves profile information by ID.',
|
||||
props: {
|
||||
userId: Property.ShortText({
|
||||
displayName: 'User ID',
|
||||
required: true,
|
||||
}),
|
||||
},
|
||||
async run(context) {
|
||||
const response = await httpClient.sendRequest<{ data: { user: Record<string, any> } }>({
|
||||
url: BASE_URL,
|
||||
method: HttpMethod.POST,
|
||||
authentication: {
|
||||
type: AuthenticationType.BEARER_TOKEN,
|
||||
token: context.auth.secret_text,
|
||||
},
|
||||
body: {
|
||||
query: getUser,
|
||||
variables: {
|
||||
userId: context.propsValue.userId,
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
return response.body.data.user;
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,65 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { AuthenticationType, httpClient, HttpMethod } from '@activepieces/pieces-common';
|
||||
import { firefliesAiAuth } from '../../index';
|
||||
import { BASE_URL } from '../common';
|
||||
|
||||
export const uploadAudioAction = createAction({
|
||||
auth: firefliesAiAuth,
|
||||
name: 'upload_audio',
|
||||
displayName: 'Upload Audio',
|
||||
description:
|
||||
'Creates a new meeeting in Fireflies for transcription (requires a publicly accessible URL).',
|
||||
props: {
|
||||
audioUrl: Property.ShortText({
|
||||
displayName: 'Audio URL',
|
||||
description:
|
||||
'The publicly accessible URL to your audio file (mp3, mp4, wav, m4a, ogg). Fireflies API only accepts URLs, not direct file uploads. For private files, consider using signed URLs with short expiry times.',
|
||||
required: true,
|
||||
}),
|
||||
title: Property.ShortText({
|
||||
displayName: 'Title',
|
||||
required: true,
|
||||
}),
|
||||
},
|
||||
async run({ propsValue, auth }) {
|
||||
// GraphQL mutation for uploading audio
|
||||
const query = `
|
||||
mutation uploadAudio($input: AudioUploadInput) {
|
||||
uploadAudio(input: $input) {
|
||||
success
|
||||
title
|
||||
message
|
||||
}
|
||||
}
|
||||
`;
|
||||
|
||||
// Define interface for the input
|
||||
interface AudioUploadInput {
|
||||
url: string;
|
||||
title: string;
|
||||
}
|
||||
|
||||
// Create input for the mutation with proper typing
|
||||
const input: AudioUploadInput = {
|
||||
url: propsValue.audioUrl,
|
||||
title: propsValue.title,
|
||||
};
|
||||
|
||||
const response = await httpClient.sendRequest({
|
||||
url: BASE_URL,
|
||||
method: HttpMethod.POST,
|
||||
authentication: {
|
||||
type: AuthenticationType.BEARER_TOKEN,
|
||||
token: auth.secret_text,
|
||||
},
|
||||
body: {
|
||||
query,
|
||||
variables: {
|
||||
input,
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
return response.body;
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1 @@
|
||||
export const BASE_URL = 'https://api.fireflies.ai/graphql';
|
||||
@@ -0,0 +1,94 @@
|
||||
export const getTranscript =
|
||||
`
|
||||
query Transcript($transcriptId: String!)
|
||||
{
|
||||
transcript(id: $transcriptId)
|
||||
{
|
||||
id
|
||||
dateString
|
||||
privacy
|
||||
speakers
|
||||
{
|
||||
id
|
||||
name
|
||||
}
|
||||
title
|
||||
host_email
|
||||
organizer_email
|
||||
calendar_id
|
||||
user
|
||||
{
|
||||
user_id
|
||||
email
|
||||
name
|
||||
num_transcripts
|
||||
recent_meeting
|
||||
minutes_consumed
|
||||
is_admin
|
||||
integrations
|
||||
}
|
||||
fireflies_users
|
||||
participants
|
||||
date
|
||||
transcript_url
|
||||
audio_url
|
||||
video_url
|
||||
duration
|
||||
meeting_attendees
|
||||
{
|
||||
displayName
|
||||
email
|
||||
phoneNumber
|
||||
name
|
||||
location
|
||||
}
|
||||
summary
|
||||
{
|
||||
keywords
|
||||
action_items
|
||||
outline
|
||||
shorthand_bullet
|
||||
overview
|
||||
bullet_gist
|
||||
gist
|
||||
short_summary
|
||||
short_overview
|
||||
meeting_type
|
||||
topics_discussed
|
||||
transcript_chapters
|
||||
}
|
||||
cal_id
|
||||
calendar_type
|
||||
meeting_info
|
||||
{
|
||||
fred_joined
|
||||
silent_meeting
|
||||
summary_status
|
||||
}
|
||||
meeting_link
|
||||
}
|
||||
}
|
||||
`
|
||||
|
||||
export const getUser =
|
||||
`
|
||||
query User($userId: String!)
|
||||
{
|
||||
user(id: $userId)
|
||||
{
|
||||
user_id
|
||||
recent_transcript
|
||||
recent_meeting
|
||||
num_transcripts
|
||||
name
|
||||
minutes_consumed
|
||||
is_admin
|
||||
integrations
|
||||
email
|
||||
user_groups
|
||||
{
|
||||
name
|
||||
handle
|
||||
}
|
||||
}
|
||||
}`
|
||||
@@ -0,0 +1,155 @@
|
||||
import { createTrigger, Property, TriggerStrategy } from '@activepieces/pieces-framework';
|
||||
import { firefliesAiAuth } from '../../index';
|
||||
import { AuthenticationType, httpClient, HttpMethod } from '@activepieces/pieces-common';
|
||||
import { getTranscript } from '../common/queries';
|
||||
import { BASE_URL } from '../common';
|
||||
|
||||
export const newTranscriptionCompletedTrigger = createTrigger({
|
||||
auth: firefliesAiAuth,
|
||||
name: 'new_transcription_completed',
|
||||
displayName: 'New Transcription Completed',
|
||||
description: 'Triggered when a new meeting is transcribed.',
|
||||
props: {
|
||||
webhookInstructions: Property.MarkDown({
|
||||
value: `
|
||||
## Fireflies.ai Webhook Setup
|
||||
To use this trigger, you need to manually set up a webhook in your Fireflies.ai account:
|
||||
|
||||
1. Login to your Fireflies.ai account.
|
||||
2. Navigate to **Settings** > **Developer Settings** in the left sidebar.
|
||||
3. Enter the following URL in the webhooks field:
|
||||
\`\`\`text
|
||||
{{webhookUrl}}
|
||||
\`\`\`
|
||||
4. Click Save to register the webhook.
|
||||
|
||||
This webhook will be triggered when a meeting transcription is completed.
|
||||
`,
|
||||
}),
|
||||
},
|
||||
type: TriggerStrategy.WEBHOOK,
|
||||
sampleData: undefined,
|
||||
async onEnable(context) {
|
||||
// No need to register webhooks programmatically as user will do it manually
|
||||
},
|
||||
async onDisable(context) {
|
||||
// No need to unregister webhooks as user will do it manually
|
||||
},
|
||||
async test(context) {
|
||||
const query = `
|
||||
query Transcripts(
|
||||
$limit: Int
|
||||
$skip: Int
|
||||
){
|
||||
transcripts(
|
||||
limit: $limit
|
||||
skip: $skip
|
||||
){
|
||||
|
||||
id
|
||||
dateString
|
||||
privacy
|
||||
speakers
|
||||
{
|
||||
id
|
||||
name
|
||||
}
|
||||
title
|
||||
host_email
|
||||
organizer_email
|
||||
calendar_id
|
||||
user
|
||||
{
|
||||
user_id
|
||||
email
|
||||
name
|
||||
num_transcripts
|
||||
recent_meeting
|
||||
minutes_consumed
|
||||
is_admin
|
||||
integrations
|
||||
}
|
||||
fireflies_users
|
||||
participants
|
||||
date
|
||||
transcript_url
|
||||
audio_url
|
||||
video_url
|
||||
duration
|
||||
meeting_attendees
|
||||
{
|
||||
displayName
|
||||
email
|
||||
phoneNumber
|
||||
name
|
||||
location
|
||||
}
|
||||
summary
|
||||
{
|
||||
keywords
|
||||
action_items
|
||||
outline
|
||||
shorthand_bullet
|
||||
overview
|
||||
bullet_gist
|
||||
gist
|
||||
short_summary
|
||||
short_overview
|
||||
meeting_type
|
||||
topics_discussed
|
||||
transcript_chapters
|
||||
}
|
||||
cal_id
|
||||
calendar_type
|
||||
meeting_info
|
||||
{
|
||||
fred_joined
|
||||
silent_meeting
|
||||
summary_status
|
||||
}
|
||||
meeting_link
|
||||
}
|
||||
}`;
|
||||
const response = await httpClient.sendRequest<{ data: { transcripts: Record<string, any>[] } }>(
|
||||
{
|
||||
url: BASE_URL,
|
||||
method: HttpMethod.POST,
|
||||
authentication: {
|
||||
type: AuthenticationType.BEARER_TOKEN,
|
||||
token: context.auth.secret_text,
|
||||
},
|
||||
body: {
|
||||
query,
|
||||
variables: {
|
||||
limit: 5,
|
||||
skip: 0,
|
||||
},
|
||||
},
|
||||
},
|
||||
);
|
||||
return response.body.data.transcripts;
|
||||
},
|
||||
async run(context) {
|
||||
const payload = context.payload.body as { meetingId: string; eventType: string };
|
||||
if (payload.eventType !== 'Transcription completed') {
|
||||
return [];
|
||||
}
|
||||
|
||||
const response = await httpClient.sendRequest<{ data: { transcript: Record<string, any> } }>({
|
||||
url:BASE_URL,
|
||||
method: HttpMethod.POST,
|
||||
authentication: {
|
||||
type: AuthenticationType.BEARER_TOKEN,
|
||||
token: context.auth.secret_text,
|
||||
},
|
||||
body: {
|
||||
query: getTranscript,
|
||||
variables: {
|
||||
transcriptId: payload.meetingId,
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
return [response.body.data.transcript];
|
||||
},
|
||||
});
|
||||
Reference in New Issue
Block a user