---
title: "Bruk ThunderPhone med n8n"
description: "Installer ThunderPhone-noden for n8n, koble til en API-nøkkel for serveren, og bygg en arbeidsflyt som kjører hver gang en samtale avsluttes."
---

[n8n](https://n8n.io) er et verktøy for automatisering av arbeidsflyter. ThunderPhone-pakken
for n8n legger til to noder:

- **ThunderPhone Trigger** starter en arbeidsflyt når en samtale avsluttes (**Call
  Completed**) eller en kjøring med samtalevurdering fullføres (**Call Graded**).
- **ThunderPhone** foretar utgående samtaler, legger til kontakter i kampanjer og
  starter dem, henter samtaler med transkripsjon og opptak, og viser
  agentene og telefonnumrene dine.

Det er en verifisert fellesskapsnode, oppført på
[ThunderPhone på n8n](https://n8n.io/integrations/thunderphone/).

## Installer noden

I n8n-redigeringsprogrammet klikker du på **+** for å åpne nodepanelet og søker etter
**ThunderPhone**. En instanseier må kanskje konfigurere verifiserte noder før
andre brukere kan legge dem til.

På selvhostet n8n kan du også installere etter pakkenavn: Åpne
**Settings > Community Nodes** og installer `n8n-nodes-thunderphone`. Kontroller risikoen ved fellesskapsnoder og instanspolicyen din
før du installerer.

## Opprett en server-API-nøkkel

<Steps>
  <Step title="Åpne fanen Keys">
    I ThunderPhone går du til **Organization → Keys** og klikker på **Create key**.
  </Step>
  <Step title="Gi den et navn">
    Bruk et navn som sier hvor nøkkelen brukes, for eksempel «n8n».
  </Step>
  <Step title="Kopier den nå">
    Hele `sk_live_...`-hemmeligheten vises én gang. Kopier den før du lukker
    dialogboksen.
  </Step>
</Steps>

Bare en administrator eller eier kan opprette nøkkelen, og ThunderPhone behandler forespørsler
som gjøres med den, som om de kommer fra denne personen. Utløseren og kampanjeoperasjonene
krever at personen beholder administrator- eller eierrollen.
[Opprett en server-API-nøkkel](/nb/guides/api-keys) beskriver rotasjon og tilbakekalling.

## Legg til legitimasjonen i n8n

1. I n8n oppretter du en legitimasjon av typen **ThunderPhone API**.
2. Lim inn nøkkelen i **API Key**.
3. Lagre den og kjør legitimasjonstesten. Testen leser én samtale fra
   organisasjonen din med `GET /v1/calls?limit=1`.

## Bygg en første arbeidsflyt

Denne arbeidsflyten legger til en rad i et Google-regneark hver gang et anrop avsluttes.

<Steps>
  <Step title="Legg til utløseren">
    Legg til **ThunderPhone-utløser**, velg ThunderPhone API-legitimasjonen din,
    og sett **Hendelse** til **Anrop fullført**.
  </Step>
  <Step title="Hent anropet">
    Legg til en **ThunderPhone**-node. Sett **Ressurs** til **Anrop**, **Operasjon**
    til **Hent**, og **Anrops-ID** til uttrykket `{{ $json.data.call_id }}`.
    Utdataene er [anropsoppføringen](/api-reference/calls) pluss `transcripts`
    og `recording_url`, en kortvarig lenke som er `null` når anropet ikke har
    noe opptak.
  </Step>
  <Step title="Legg til en rad">
    Legg til en Google Sheets-node som legger til en rad, og tilordne kolonnene du vil
    ha fra utdataene for Hent anrop (se tabellen nedenfor).
  </Step>
  <Step title="Aktiver arbeidsflyten">
    Lagre og aktiver. Utløseren registrerer produksjons-URL-en sin som et
    webhook-endepunkt i ThunderPhone-organisasjonen din. Deaktivering av arbeidsflyten
    sletter dette endepunktet.
  </Step>
  <Step title="Test den">
    Åpne en agent i byggeren, klikk **Snakk**, og avslutt anropet. Testanrop i
    byggeren leveres som `web.complete`, én av de to hendelsene bak
    Anrop fullført, slik at arbeidsflyten kjører og en rad vises.
  </Step>
</Steps>

Nyttige kolonner:

| Kolonne | Uttrykk |
|---|---|
| Anrops-ID | `{{ $json.call_id }}` |
| Retning | `{{ $json.direction }}` |
| Fra | `{{ $json.from_number }}` |
| Til | `{{ $json.to_number }}` |
| Startet | `{{ $json.start_time }}` |
| Varighet (s) | `{{ $json.duration_seconds }}` |
| Status | `{{ $json.status }}` |
| Avslutningsårsak | `{{ $json.end_reason }}` |
| Anropslenke | `https://app.thunderphone.com/dashboard/call-history/{{ $json.call_id }}` |

Anropslenken åpner anropet i ThunderPhone-dashbordet for medlemmene i
organisasjonen din, med transkripsjonen og opptaket, slik at regnearket ikke
trenger å lagre noen av dem.

For å legge til transkripsjonen likevel, tilordner du
`{{ $json.transcripts.filter(t => typeof t.content === 'string').map(t => t.role + ': ' + t.content).join('\n') }}`.
Opptaks-URL-en utløper, så lagre anrops-ID-en og kjør Hent anrop på nytt når
du trenger en ny lenke. Anropstranskripsjoner, sammendrag og opptak kan inneholde
personopplysninger eller helseopplysninger. Send dem bare til apper som
organisasjonen din har tillatelse til å bruke for slike data, under en BAA når
helseopplysninger er involvert, og behold bare feltene du trenger.

<Note>
  ThunderPhone leverer hendelser med `POST` til utløserens **produksjons-URL**,
  så n8n-instansen din må være tilgjengelig via HTTPS fra internett,
  og arbeidsflyten må være aktiv. Utløseren verifiserer
  `X-ThunderPhone-Signature` HMAC for hver forespørsel og svarer `401` på
  alt som er usignert eller ugyldig.
</Note>

Utløseren sender ut den komplette hendelsen: `type`, `event_id` og `data`. Se
[`telephony.complete` / `web.complete`](/nb/webhooks/call-complete) og
[`call.graded`](/nb/webhooks/events) for hvert felt. Levering skjer minst én gang,
og `event_id` forblir den samme ved nye forsøk for én hendelse, så sjekk den før
et trinn som ikke må gjentas.

## Foreta utgående anrop på en trygg måte

**Foreta utgående anrop** (ressurs **Utgående anrop**, operasjon **Foreta**)
tar imot:

| Felt | Betydning |
|---|---|
| Agentnavn eller ID | En lagret agent. Rullegardinmenyen viser agentene dine. |
| Telefonnummernavn eller ID | Avsendernummeret. Rullegardinmenyen viser bare numre som er aktivert for utgående anrop. |
| Til-nummer | Destinasjon i E.164-format, f.eks. `+14155552671`. |
| Variabler | JSON-objekt med verdier for plassholdere i agentens instruksjon. |
| Idempotensnøkkel | En stabil ID fra oppstrømsposten eller -hendelsen. Påkrevd. |

Knytt **Idempotensnøkkel** til en ID fra det som utløste kjøringen, for eksempel
en CRM-post-ID eller utløserens `event_id`. Noden sender
`n8n:<node ID>:<your value>`, så:

- Et automatisk nytt forsøk eller **Prøv kjøringen på nytt** sender samme nøkkel, og
  ThunderPhone returnerer det opprinnelige anropet med `idempotent_replay: true`
  i stedet for å ringe på nytt.
- To ThunderPhone-noder som får samme post, sender ulike nøkler.
- En tom verdi mislykkes før noen forespørsel sendes.

Unngå tidsstempler, tilfeldige verdier og n8n-kjørings- eller arbeidsflyt-ID-er. En ny
verdi ved nytt forsøk foretar et nytt, faktisk anrop. Hele nøkkelen kan være på
maksimalt 128 tegn. Gjenbruk av en nøkkel med en annen agent, et annet nummer
eller andre variabler mislykkes med en konflikt.

**Kampanjer.** **Legg til kontakter** (ressurs **Kampanje**) legger til kontakter i en
utkastkampanje. Den tar imot en kampanje-ID og en JSON-matrise med kontakter. Hver kontakt
trenger `phone_number`; andre nøkler blir anropsvariabler. Noden mislykkes når
alle kontakter avvises, og angir `partial_success: true` når bare noen av dem avvises. **Start**
krever avmerkingsboksen som bekrefter at kampanjen foretar faktiske anrop og bruker
ThunderPhone-kreditter. Se [Utgående kampanjer](/nb/guides/outbound-campaigns).

Før en arbeidsflyt starter anrop:

- Hvis ThunderPhone ber organisasjonen din bekrefte at de utgående anropene
  følger TCPA og andre ringelover, må en administrator først registrere denne
  bekreftelsen i kontrollpanelet.
- Avsendernummeret må være aktivert for utgående anrop. Numre du tar med fra
  din egen operatør, kvalifiserer når de er bekreftet. ThunderPhone-numre starter
  som bare inngående og kan godkjennes for utgående bruk: En administrator ber om det
  fra siden Telefonnumre. Se
  [Få et telefonnummer](/nb/guides/get-a-phone-number).
- Organisasjonen din er ansvarlig for å ha samtykke til å ringe hvert nummer
  og for å følge gjeldende ringelover. Se
  [Lover for utgående anrop](/nb/guides/outbound-calling-laws).

## Eksempelarbeidsflyter

- **CRM-kontakter til en kampanje.** Legg til CRM-kontakter i en utkastkampanje i ThunderPhone,
  og start deretter kampanjen når noen godkjenner listen.
- **Fullført anrop til kundeposten.** Ved fullført anrop kjører du Hent anrop
  og lagrer transkripsjonen og opptakslenken i den samsvarende kundeposten.
- **Lave vurderinger til gjennomgang.** Ved vurdert anrop filtrerer du på
  `{{ $json.data.grade.score }}` og sender anrop med lav vurdering til en gjennomgangskø
  med anrops-ID-en og vurderingsdetaljer. Et anrop kan vurderes mer enn én gang,
  og hver fullførte vurderingskjøring utløser utløseren, så behold bare den nyeste
  `graded_at` for hver anrops-ID.

Anropstranskripsjoner, sammendrag og opptak kan inneholde person- eller
helseopplysninger. Send dem bare til apper organisasjonen din har tillatelse til å bruke
for disse dataene, under en BAA når helseopplysninger er involvert, og behold bare
feltene du trenger.

<Note>
  Sender du de samme anropshendelsene til din egen server i stedet? Se
  [Webhook-endepunkter](/nb/webhooks/endpoints).
  [Foreta utgående anrop](/nb/guides/place-outbound-calls) dekker API-et bak
  Foreta utgående anrop.
</Note>
