---
title: "Brug ThunderPhone med n8n"
description: "Installer ThunderPhone-noden til n8n, tilslut en server-API-nøgle, og opbyg et workflow, der kører, hver gang et opkald afsluttes."
---

[n8n](https://n8n.io) er et værktøj til automatisering af workflows. ThunderPhone-pakken
til n8n tilføjer to noder:

- **ThunderPhone Trigger** starter et workflow, når et opkald slutter (**Opkald
  afsluttet**), eller når en kørsel til opkaldsvurdering afsluttes (**Opkald
  vurderet**).
- **ThunderPhone** foretager udgående opkald, tilføjer kontakter til kampagner og
  starter dem, henter opkald med deres transskription og optagelse og viser dine
  agenter og telefonnumre.

Det er en verificeret fællesskabsnode, som er angivet på
[ThunderPhone på n8n](https://n8n.io/integrations/thunderphone/).

## Installer noden

Klik på **+** i n8n-editoren for at åbne nodepanelet, og søg efter
**ThunderPhone**. En instansejer skal muligvis konfigurere verificerede noder, før
andre brugere kan tilføje dem.

På selvhostet n8n kan du også installere efter pakkenavn: Åbn
**Indstillinger > Fællesskabsnoder**, og installer `n8n-nodes-thunderphone`. Kontrollér risiciene ved fællesskabsnoder og din instanspolitik,
før du installerer.

## Opret en server-API-nøgle

<Steps>
  <Step title="Åbn fanen Nøgler">
    Gå til **Organisation → Nøgler** i ThunderPhone, og klik på **Opret nøgle**.
  </Step>
  <Step title="Giv den et navn">
    Brug et navn, der angiver, hvor nøglen bruges, f.eks. "n8n".
  </Step>
  <Step title="Kopiér den nu">
    Den fulde `sk_live_...`-hemmelighed vises kun én gang. Kopiér den, før du lukker
    dialogen.
  </Step>
</Steps>

Kun en administrator eller ejer kan oprette nøglen, og ThunderPhone behandler anmodninger
foretaget med den, som om de kommer fra den pågældende person. Triggeren og kampagne-
handlingerne kræver, at personen beholder rollen som administrator eller ejer.
[Opret en server-API-nøgle](/da/guides/api-keys) beskriver rotation og tilbagekaldelse.

## Tilføj legitimationsoplysningerne i n8n

1. Opret legitimationsoplysninger af typen **ThunderPhone API** i n8n.
2. Indsæt nøglen i **API-nøgle**.
3. Gem den, og kør testen af legitimationsoplysningerne. Testen læser ét opkald fra din
   organisation med `GET /v1/calls?limit=1`.

## Byg et første workflow

Dette workflow tilføjer en række til et Google Sheet, hver gang et opkald afsluttes.

<Steps>
  <Step title="Tilføj udløseren">
    Tilføj **ThunderPhone Trigger**, vælg din ThunderPhone API-legitimationsoplysning, og
    indstil **Event** til **Call Completed**.
  </Step>
  <Step title="Hent opkaldet">
    Tilføj en **ThunderPhone**-node. Indstil **Resource** til **Call**, **Operation**
    til **Get** og **Call ID** til udtrykket `{{ $json.data.call_id }}`.
    Outputtet er [opkaldsposten](/api-reference/calls) plus `transcripts`
    og `recording_url`, et kortvarigt link, som er `null`, når opkaldet ikke har
    nogen optagelse.
  </Step>
  <Step title="Tilføj en række">
    Tilføj en Google Sheets-node, der tilføjer en række, og knyt de ønskede kolonner
    fra outputtet Get Call (se tabellen nedenfor).
  </Step>
  <Step title="Aktivér workflowet">
    Gem og aktivér. Udløseren registrerer sin Production URL som et webhook-slutpunkt
    i din ThunderPhone-organisation. Deaktivering af workflowet sletter dette slutpunkt.
  </Step>
  <Step title="Test det">
    Åbn en agent i builderen, klik på **Talk**, og afslut opkaldet. Builderens
    testopkald leveres som `web.complete`, en af de to hændelser bag
    Call Completed, så workflowet kører, og der vises en række.
  </Step>
</Steps>

Nyttige kolonner:

| Kolonne | Udtryk |
|---|---|
| Opkalds-ID | `{{ $json.call_id }}` |
| Retning | `{{ $json.direction }}` |
| Fra | `{{ $json.from_number }}` |
| Til | `{{ $json.to_number }}` |
| Startet | `{{ $json.start_time }}` |
| Varighed (s) | `{{ $json.duration_seconds }}` |
| Status | `{{ $json.status }}` |
| Årsag til afslutning | `{{ $json.end_reason }}` |
| Opkaldslink | `https://app.thunderphone.com/dashboard/call-history/{{ $json.call_id }}` |

Opkaldslinket åbner opkaldet i ThunderPhone-dashboardet for medlemmer af
din organisation med dets transskription og optagelse, så arket ikke behøver
at indeholde nogen af delene.

For også at tilføje transskriptionen skal du knytte
`{{ $json.transcripts.filter(t => typeof t.content === 'string').map(t => t.role + ': ' + t.content).join('\n') }}`.
Optagelses-URL'en udløber, så gem opkalds-ID'et, og kør Get Call igen, når
du har brug for et nyt link. Opkaldstransskriptioner, resuméer og optagelser kan indeholde
personlige oplysninger eller helbredsoplysninger. Send dem kun til apps, som din
organisation må bruge til disse data, under en BAA, når helbredsoplysninger er
involveret, og behold kun de felter, du har brug for.

<Note>
  ThunderPhone leverer hændelser med `POST` til udløserens **Production
  URL**, så din n8n-instans skal kunne nås via HTTPS fra internettet,
  og workflowet skal være aktivt. Udløseren verificerer
  `X-ThunderPhone-Signature` HMAC'en for hver anmodning og svarer `401` på
  alt, der ikke er signeret eller er ugyldigt.
</Note>

Udløseren giver hele hændelsen som output: `type`, `event_id` og `data`. Se
[`telephony.complete` / `web.complete`](/da/webhooks/call-complete) og
[`call.graded`](/da/webhooks/events) for alle felter. Levering sker mindst én gang,
og `event_id` forbliver det samme ved genforsøg for én hændelse, så kontrollér
det før et trin, der ikke må gentages.

## Foretag udgående opkald sikkert

**Foretag udgående opkald** (Ressource **Udgående opkald**, Handling **Foretag**)
tager:

| Felt | Betydning |
|---|---|
| Agentnavn eller -id | En gemt agent. Rullemenuen viser dine agenter. |
| Telefonnummernavn eller -id | Afsendernummeret. Rullemenuen viser kun numre, der er aktiveret til udgående opkald. |
| Til-nummer | Destination i E.164-format, f.eks. `+14155552671`. |
| Variabler | JSON-objekt med værdier til pladsholdere i agentprompten. |
| Idempotensnøgle | Et stabilt id fra den overordnede post eller hændelse. Påkrævet. |

Knyt **Idempotensnøgle** til et id fra det, der udløste kørslen, f.eks. et
CRM-post-id eller udløserens `event_id`. Noden sender
`n8n:<node ID>:<your value>`, så:

- Et automatisk genforsøg eller **Prøv kørsel igen** sender den samme nøgle, og
  ThunderPhone returnerer det oprindelige opkald med `idempotent_replay: true`
  i stedet for at ringe op igen.
- To ThunderPhone-noder, der modtager den samme post, sender forskellige nøgler.
- En tom værdi fejler, før der sendes nogen anmodning.

Undgå tidsstempler, tilfældige værdier og n8n-kørsels- eller workflow-id'er. En ny
værdi ved genforsøg foretager et andet rigtigt opkald. Hele nøglen må højst være på 128
tegn. Genbrug af en nøgle med en anden agent, et andet nummer eller andre variabler fejler
med en konflikt.

**Kampagner.** **Tilføj kontakter** (Ressource **Kampagne**) tilføjer kontakter til en
kladdekampagne. Den tager et kampagne-id og et JSON-array med kontakter. Hver kontakt skal have `phone_number`; andre nøgler
bliver opkaldsvariabler. Noden fejler, når alle kontakter afvises, og angiver
`partial_success: true`, når kun nogle af dem afvises. **Start** kræver afkrydsningsfeltet,
der bekræfter, at kampagnen foretager rigtige opkald og bruger ThunderPhone-
kreditter. Se [Udgående kampagner](/da/guides/outbound-campaigns).

Før et workflow starter opkald:

- Hvis ThunderPhone beder din organisation om at bekræfte, at dens udgående opkald
  overholder TCPA og andre opkaldslove, skal en administrator først registrere den
  bekræftelse i dashboardet.
- Afsendernummeret skal være aktiveret til udgående opkald. Numre, du medbringer fra
  din egen udbyder, kvalificerer, når de er verificeret. ThunderPhone-numre starter
  kun med indgående opkald og kan godkendes til udgående brug: En administrator anmoder om det
  fra siden Telefonnumre. Se
  [Få et telefonnummer](/da/guides/get-a-phone-number).
- Din organisation er ansvarlig for at have samtykke til at ringe til hvert nummer
  og for at overholde de gældende opkaldslove. Se
  [Love for udgående opkald](/da/guides/outbound-calling-laws).

## Eksempel-workflows

- **CRM-kontakter til en kampagne.** Tilføj CRM-kontakter til en ThunderPhone-
  kladdekampagne, og start derefter kampagnen, når nogen godkender listen.
- **Fuldført opkald til kundeposten.** Ved Opkald fuldført skal du køre Hent opkald
  og gemme transskriptionen og optagelseslinket på den tilsvarende kundepost.
- **Lave vurderinger til gennemgang.** Ved Opkald bedømt skal du filtrere efter
  `{{ $json.data.grade.score }}` og sende opkald med lave vurderinger til en gennemgangskø
  med opkalds-id og vurderingsoplysninger. Et opkald kan blive vurderet mere end én gang,
  og hver afsluttet vurderingskørsel udløser triggeren, så behold kun den seneste
  `graded_at` for hvert opkalds-id.

Opkaldstransskriptioner, resuméer og optagelser kan indeholde person- eller
helbredsoplysninger. Send dem kun til apps, som din organisation har tilladelse til at bruge
til disse data, i henhold til en BAA, når helbredsoplysninger er involveret, og behold kun
de felter, du har brug for.

<Note>
  Sender du de samme opkaldshændelser til din egen server i stedet? Se
  [Webhook-slutpunkter](/da/webhooks/endpoints).
  [Foretag udgående opkald](/da/guides/place-outbound-calls) dækker API'et bag
  Foretag udgående opkald.
</Note>
