ThunderPhone 2.0 is live.Direct zelf aan de slag, vanaf 2¢/min.Lees de aankondiging

Connect tools & data

Gebruik ThunderPhone met n8n

Installeer de ThunderPhone-node voor n8n, verbind een server-API-sleutel en bouw een workflow die wordt uitgevoerd telkens wanneer een oproep eindigt.

n8n is een tool voor workflowautomatisering. Het ThunderPhone-pakket voor n8n voegt twee nodes toe:

  • ThunderPhone Trigger start een workflow wanneer een oproep eindigt (Oproep voltooid) of een uitvoering van oproepbeoordeling is voltooid (Oproep beoordeeld).
  • ThunderPhone plaatst uitgaande oproepen, voegt contacten toe aan campagnes en start deze, haalt oproepen op met hun transcript en opname, en geeft een lijst van je agenten en telefoonnummers.

Het is een geverifieerde community-node, vermeld op ThunderPhone op n8n.

Installeer de node

Klik in de n8n-editor op + om het nodepaneel te openen en zoek naar ThunderPhone. Mogelijk moet een instantie-eigenaar geverifieerde nodes instellen voordat andere gebruikers ze kunnen toevoegen.

Op zelfgehoste n8n kun je ook installeren via de pakketnaam: open Instellingen > Community Nodes en installeer n8n-nodes-thunderphone. Controleer de risico's van community-nodes en het beleid van je instantie voordat je installeert.

Maak een server-API-sleutel

  1. Open het tabblad Sleutels

    Ga in ThunderPhone naar Organisatie → Sleutels en klik op Sleutel maken.

  2. Geef de sleutel een naam

    Gebruik een naam die aangeeft waar de sleutel wordt gebruikt, zoals "n8n".

  3. Kopieer de sleutel nu

    Het volledige geheim sk_live_... wordt één keer weergegeven. Kopieer het voordat je het dialoogvenster sluit.

Alleen een beheerder of eigenaar kan de sleutel maken, en ThunderPhone behandelt verzoeken die ermee worden gedaan alsof ze van die persoon afkomstig zijn. De trigger en de campagne- bewerkingen vereisen dat die persoon de rol van beheerder of eigenaar behoudt. Een server-API-sleutel maken behandelt rotatie en intrekking.

Voeg de inloggegevens toe in n8n

  1. Maak in n8n inloggegevens van het type ThunderPhone API.
  2. Plak de sleutel in API-sleutel.
  3. Sla deze op en voer de test voor de inloggegevens uit. De test leest één oproep uit je organisatie met GET /v1/calls?limit=1.

Een eerste workflow bouwen

Deze workflow voegt elke keer dat een oproep eindigt een rij toe aan een Google-spreadsheet.

  1. De trigger toevoegen

    Voeg ThunderPhone Trigger toe, selecteer je ThunderPhone API-inloggegevens en stel Gebeurtenis in op Oproep voltooid.

  2. De oproep ophalen

    Voeg een ThunderPhone-node toe. Stel Bron in op Oproep, Bewerking op Ophalen en Oproep-ID op de expressie {{ $json.data.call_id }}. De uitvoer is het oproeprecord, plus transcripts en recording_url, een link met een korte geldigheidsduur die null is wanneer de oproep geen opname heeft.

  3. Een rij toevoegen

    Voeg een Google Sheets-node toe die een rij toevoegt en koppel de gewenste kolommen vanuit de uitvoer van Oproep ophalen (zie de onderstaande tabel).

  4. De workflow activeren

    Sla op en activeer. De trigger registreert de productie-URL als webhook-eindpunt in je ThunderPhone-organisatie. Als je de workflow deactiveert, wordt dat eindpunt verwijderd.

  5. Testen

    Open een agent in de builder, klik op Praten en beëindig de oproep. Testoproepen in de builder worden afgeleverd als web.complete, een van de twee gebeurtenissen achter Oproep voltooid, zodat de workflow wordt uitgevoerd en er een rij verschijnt.

Handige kolommen:

KolomExpressie
Oproep-ID{{ $json.call_id }}
Richting{{ $json.direction }}
Van{{ $json.from_number }}
Naar{{ $json.to_number }}
Gestart{{ $json.start_time }}
Duur (s){{ $json.duration_seconds }}
Status{{ $json.status }}
Eindreden{{ $json.end_reason }}
Oproeplinkhttps://app.thunderphone.com/dashboard/call-history/{{ $json.call_id }}

De oproeplink opent de oproep in het ThunderPhone-dashboard voor leden van je organisatie, inclusief transcript en opname, zodat de spreadsheet geen van beide hoeft te bevatten.

Als je het transcript toch wilt toevoegen, koppel je {{ $json.transcripts.filter(t => typeof t.content === 'string').map(t => t.role + ': ' + t.content).join('\n') }}. De opname-URL verloopt, dus sla de oproep-ID op en voer Oproep ophalen opnieuw uit wanneer je een nieuwe link nodig hebt. Oproeptranscripten, samenvattingen en opnamen kunnen persoons- of gezondheidsinformatie bevatten. Stuur ze alleen naar apps die je organisatie voor die gegevens mag gebruiken, onder een BAA wanneer het om gezondheidsinformatie gaat, en bewaar alleen de velden die je nodig hebt.

De trigger geeft de volledige gebeurtenis uit: type, event_id en data. Zie telephony.complete / web.complete en call.graded voor elk veld. Aflevering gebeurt minstens één keer, en event_id blijft hetzelfde bij nieuwe pogingen voor één gebeurtenis, dus controleer dit vóór een stap die niet mag worden herhaald.

Plaats uitgaande oproepen veilig

Uitgaande oproep plaatsen (Resource Uitgaande oproep, Operation Plaatsen) vereist:

VeldBetekenis
Naam of ID van agentEen opgeslagen agent. De vervolgkeuzelijst bevat je agents.
Naam of ID van telefoonnummerHet afzendernummer. De vervolgkeuzelijst bevat alleen nummers die zijn ingeschakeld voor uitgaande oproepen.
Nummer van ontvangerBestemmingsnummer in E.164-indeling, bijvoorbeeld +14155552671.
VariabelenJSON-object met waarden voor placeholders in de agentprompt.
IdempotentiesleutelEen stabiele ID uit het upstreamrecord of de gebeurtenis. Verplicht.

Koppel de Idempotentiesleutel aan een ID van wat de uitvoering heeft veroorzaakt, zoals een CRM-record-ID of de event_id van de trigger. De node verzendt n8n:<node ID>:<your value>, dus:

  • Een automatische nieuwe poging of Uitvoering opnieuw proberen verzendt dezelfde sleutel, en ThunderPhone retourneert de oorspronkelijke oproep met idempotent_replay: true in plaats van opnieuw te bellen.
  • Twee ThunderPhone-nodes die hetzelfde record ontvangen, verzenden verschillende sleutels.
  • Een lege waarde mislukt voordat een verzoek wordt verzonden.

Vermijd tijdstempels, willekeurige waarden en n8n-uitvoerings- of workflow-ID's. Een nieuwe waarde bij een nieuwe poging plaatst een tweede echte oproep. De volledige sleutel mag maximaal 128 tekens bevatten. Het hergebruiken van een sleutel met een andere agent, nummer of variabelen mislukt met een conflict.

Campagnes. Contacten toevoegen (Resource Campagne) voegt contacten toe aan een conceptcampagne. Hiervoor zijn een campagne-ID en een JSON-array met contacten nodig. Elk contact heeft phone_number nodig; andere sleutels worden oproepvariabelen. De node mislukt wanneer elk contact wordt afgewezen en stelt partial_success: true in wanneer slechts enkele contacten worden afgewezen. Starten vereist het selectievakje waarmee je bevestigt dat de campagne echte oproepen plaatst en ThunderPhone- credits uitgeeft. Zie Uitgaande campagnes.

Voordat een workflow oproepen start:

  • Als ThunderPhone je organisatie vraagt te bevestigen dat uitgaande oproepen voldoen aan de TCPA en andere belwetten, moet een beheerder die bevestiging eerst in het dashboard vastleggen.
  • Het afzendernummer moet zijn ingeschakeld voor uitgaande oproepen. Nummers die je van je eigen provider meebrengt, komen in aanmerking zodra ze zijn geverifieerd. ThunderPhone-nummers zijn aanvankelijk alleen inkomend en kunnen worden goedgekeurd voor uitgaand gebruik: een beheerder vraagt dit aan via de pagina Telefoonnummers. Zie Een telefoonnummer aanvragen.
  • Je organisatie is verantwoordelijk voor het hebben van toestemming om elk nummer te bellen en voor het naleven van de toepasselijke belwetten. Zie Wetten voor uitgaand bellen.

Voorbeeldworkflows

  • CRM-contacten naar een campagne. Voeg CRM-contacten toe aan een concept-ThunderPhone- campagne en start de campagne zodra iemand de lijst goedkeurt.
  • Voltooide oproep naar het klantrecord. Voer bij Oproep voltooid Oproep ophalen uit en sla het transcript en de opnamelink op in het bijbehorende klantrecord.
  • Lage beoordelingen ter controle. Filter bij Oproep beoordeeld op {{ $json.data.grade.score }} en stuur oproepen met een lage score naar een controlewachtrij met de oproep-ID en beoordelingsdetails. Een oproep kan meer dan één keer worden beoordeeld en elke voltooide beoordelingsuitvoering activeert de trigger, dus bewaar alleen de meest recente graded_at voor elke oproep-ID.

Oproeptranscripten, samenvattingen en opnamen kunnen persoonlijke of medische informatie bevatten. Verstuur deze alleen naar apps die je organisatie voor die gegevens mag gebruiken, onder een BAA wanneer medische informatie betrokken is, en bewaar alleen de velden die je nodig hebt.