---
title: "Använd ThunderPhone med n8n"
description: "Installera ThunderPhone-noden för n8n, anslut en server-API-nyckel och bygg ett arbetsflöde som körs varje gång ett samtal avslutas."
---

[n8n](https://n8n.io) är ett verktyg för automatisering av arbetsflöden. ThunderPhone-paketet
för n8n lägger till två noder:

- **ThunderPhone Trigger** startar ett arbetsflöde när ett samtal avslutas (**Samtal slutfört**) eller när en körning för samtalsbedömning avslutas (**Samtal bedömt**).
- **ThunderPhone** ringer utgående samtal, lägger till kontakter i kampanjer och
  startar dem, hämtar samtal med deras transkribering och inspelning samt listar dina
  agenter och telefonnummer.

Det är en verifierad community-nod, listad på
[ThunderPhone på n8n](https://n8n.io/integrations/thunderphone/).

## Installera noden

Klicka på **+** i n8n-redigeraren för att öppna nodpanelen och sök efter
**ThunderPhone**. En instansägare kan behöva konfigurera verifierade noder innan
andra användare kan lägga till dem.

I egenhostade n8n kan du också installera via paketnamn: öppna
**Inställningar > Community-noder** och installera `n8n-nodes-thunderphone`. Kontrollera riskerna med community-noder och instansens policy
innan du installerar.

## Skapa en server-API-nyckel

<Steps>
  <Step title="Öppna fliken Nycklar">
    I ThunderPhone går du till **Organisation → Nycklar** och klickar på **Skapa nyckel**.
  </Step>
  <Step title="Namnge den">
    Använd ett namn som anger var nyckeln används, till exempel "n8n".
  </Step>
  <Step title="Kopiera den nu">
    Den fullständiga hemligheten `sk_live_...` visas en gång. Kopiera den innan du stänger
    dialogrutan.
  </Step>
</Steps>

Endast en administratör eller ägare kan skapa nyckeln, och ThunderPhone behandlar begäranden
som görs med den som om de kommer från den personen. Triggern och kampanjåtgärderna
kräver att personen behåller rollen som administratör eller ägare.
[Skapa en server-API-nyckel](/sv/guides/api-keys) beskriver rotation och återkallande.

## Lägg till autentiseringsuppgiften i n8n

1. Skapa en autentiseringsuppgift av typen **ThunderPhone API** i n8n.
2. Klistra in nyckeln i **API-nyckel**.
3. Spara den och kör testet för autentiseringsuppgiften. Testet läser ett samtal från din
   organisation med `GET /v1/calls?limit=1`.

## Bygg ditt första arbetsflöde

Det här arbetsflödet lägger till en rad i ett Google-kalkylark varje gång ett samtal avslutas.

<Steps>
  <Step title="Lägg till utlösaren">
    Lägg till **ThunderPhone Trigger**, välj dina ThunderPhone API-autentiseringsuppgifter och
    ställ in **Händelse** på **Samtal slutfört**.
  </Step>
  <Step title="Hämta samtalet">
    Lägg till en **ThunderPhone**-nod. Ställ in **Resurs** på **Samtal**, **Åtgärd**
    på **Hämta** och **Samtals-ID** på uttrycket `{{ $json.data.call_id }}`.
    Utdata är [samtalsposten](/api-reference/calls) plus `transcripts`
    och `recording_url`, en kortvarig länk som är `null` när samtalet inte har
    någon inspelning.
  </Step>
  <Step title="Lägg till en rad">
    Lägg till en Google Sheets-nod som lägger till en rad och mappa de kolumner du vill ha
    från utdata från Hämta samtal (se tabellen nedan).
  </Step>
  <Step title="Aktivera arbetsflödet">
    Spara och aktivera. Utlösaren registrerar sin produktions-URL som en webhook-
    slutpunkt i din ThunderPhone-organisation. Om du inaktiverar arbetsflödet
    tas den slutpunkten bort.
  </Step>
  <Step title="Testa det">
    Öppna en agent i byggaren, klicka på **Prata** och avsluta samtalet. Testanrop i
    byggaren levereras som `web.complete`, en av de två händelserna bakom
    Samtal slutfört, så arbetsflödet körs och en rad visas.
  </Step>
</Steps>

Användbara kolumner:

| Kolumn | Uttryck |
|---|---|
| Samtals-ID | `{{ $json.call_id }}` |
| Riktning | `{{ $json.direction }}` |
| Från | `{{ $json.from_number }}` |
| Till | `{{ $json.to_number }}` |
| Startade | `{{ $json.start_time }}` |
| Längd (s) | `{{ $json.duration_seconds }}` |
| Status | `{{ $json.status }}` |
| Avslutsorsak | `{{ $json.end_reason }}` |
| Samtalslänk | `https://app.thunderphone.com/dashboard/call-history/{{ $json.call_id }}` |

Samtalslänken öppnar samtalet i ThunderPhone-instrumentpanelen för medlemmar i
din organisation, med dess transkription och inspelning, så kalkylarket behöver
inte lagra någon av dem.

Om du ändå vill lägga till transkriptionen mappar du
`{{ $json.transcripts.filter(t => typeof t.content === 'string').map(t => t.role + ': ' + t.content).join('\n') }}`.
Inspelnings-URL:en upphör att gälla, så lagra samtals-ID:t och kör Hämta samtal igen när
du behöver en ny länk. Samtalstranskriptioner, sammanfattningar och inspelningar kan innehålla
person- eller hälsouppgifter. Skicka dem endast till appar som din organisation har
tillåtelse att använda för dessa data, enligt ett BAA när hälsouppgifter är
inblandade, och behåll endast de fält du behöver.

<Note>
  ThunderPhone levererar händelser med `POST` till utlösarens **produktions-
  URL**, så din n8n-instans måste vara nåbar via HTTPS från internet,
  och arbetsflödet måste vara aktivt. Utlösaren verifierar
  `X-ThunderPhone-Signature` HMAC på varje begäran och svarar med `401` på
  allt som är osignerat eller ogiltigt.
</Note>

Utlösaren matar ut hela händelsen: `type`, `event_id` och `data`. Se
[`telephony.complete` / `web.complete`](/sv/webhooks/call-complete) och
[`call.graded`](/sv/webhooks/events) för alla fält. Leverans sker minst en gång,
och `event_id` förblir detsamma vid återförsök för en händelse, så kontrollera
det före ett steg som inte får upprepas.

## Ring utgående samtal på ett säkert sätt

**Placera utgående samtal** (Resurs **Utgående samtal**, Åtgärd **Placera**)
tar:

| Fält | Betydelse |
|---|---|
| Agentnamn eller ID | En sparad agent. Rullgardinsmenyn visar dina agenter. |
| Telefonnummernamn eller ID | Frånnumret. Rullgardinsmenyn visar endast nummer som är aktiverade för utgående samtal. |
| Till-nummer | Destination i E.164-format, t.ex. `+14155552671`. |
| Variabler | JSON-objekt med värden för platshållare i agentens prompt. |
| Idempotensnyckel | Ett stabilt ID från den uppströms posten eller händelsen. Krävs. |

Mappa **Idempotensnyckel** till ett ID från det som orsakade körningen, till exempel
ett CRM-post-ID eller utlösarens `event_id`. Noden skickar
`n8n:<node ID>:<your value>`, vilket innebär:

- Ett automatiskt återförsök eller **Försök köra igen** skickar samma nyckel, och
  ThunderPhone returnerar det ursprungliga samtalet med `idempotent_replay: true`
  i stället för att ringa igen.
- Två ThunderPhone-noder som får samma post skickar olika nycklar.
- Ett tomt värde misslyckas innan någon begäran skickas.

Undvik tidsstämplar, slumpvärden och n8n-ID:n för körningar eller arbetsflöden. Ett nytt
värde vid återförsök placerar ett andra verkligt samtal. Hela nyckeln får vara högst 128
tecken. Att återanvända en nyckel med en annan agent, ett annat nummer eller andra variabler misslyckas
med en konflikt.

**Kampanjer.** **Lägg till kontakter** (Resurs **Kampanj**) lägger till kontakter i en
utkastkampanj. Den tar ett kampanj-ID och en JSON-array med kontakter. Varje kontakt behöver `phone_number`; andra nycklar
blir samtalsvariabler. Noden misslyckas när alla kontakter avvisas och anger
`partial_success: true` när endast vissa avvisas. **Starta** kräver kryssrutan
som bekräftar att kampanjen ringer verkliga samtal och använder ThunderPhone-krediter.
Se [Utgående kampanjer](/sv/guides/outbound-campaigns).

Innan ett arbetsflöde startar samtal:

- Om ThunderPhone ber din organisation att bekräfta att dess utgående samtal
  följer TCPA och andra lagar för telefonsamtal måste en administratör först registrera
  den bekräftelsen i instrumentpanelen.
- Frånnumret måste vara aktiverat för utgående samtal. Nummer som du tar med från
  din egen operatör blir kvalificerade när de har verifierats. ThunderPhone-nummer är från början
  endast för inkommande samtal och kan godkännas för utgående användning: en administratör begär det
  från sidan Telefonnummer. Se
  [Skaffa ett telefonnummer](/sv/guides/get-a-phone-number).
- Din organisation ansvarar för att ha samtycke att ringa varje nummer
  och för att följa de lagar för telefonsamtal som gäller. Se
  [Lagar för utgående samtal](/sv/guides/outbound-calling-laws).

## Exempel på arbetsflöden

- **CRM-kontakter till en kampanj.** Lägg till CRM-kontakter i en utkastkampanj i ThunderPhone
  och starta sedan kampanjen när någon godkänner listan.
- **Avslutat samtal till kundposten.** Vid Samtal avslutat kör du Hämta samtal
  och sparar transkriberingen och inspelningslänken i den matchande kundposten.
- **Låga betyg till granskning.** Vid Samtal betygsatt filtrerar du på
  `{{ $json.data.grade.score }}` och dirigerar samtal med låga poäng till en granskningskö
  med samtals-ID och betygsinformation. Ett samtal kan betygsättas mer än en gång,
  och varje slutförd betygskörning utlöser utlösaren, så behåll endast den senaste
  `graded_at` för varje samtals-ID.

Samtalstranskriberingar, sammanfattningar och inspelningar kan innehålla person- eller
hälsouppgifter. Skicka dem endast till appar som din organisation får använda för
dessa data, enligt ett BAA när hälsouppgifter är inblandade, och behåll endast
de fält du behöver.

<Note>
  Skickar du samma samtalshändelser till din egen server i stället? Se
  [Webhook-slutpunkter](/sv/webhooks/endpoints).
  [Placera utgående samtal](/sv/guides/place-outbound-calls) beskriver API:et bakom
  Placera utgående samtal.
</Note>
