---
title: "Používání ThunderPhone s n8n"
description: "Nainstalujte uzel ThunderPhone pro n8n, připojte klíč API serveru a vytvořte pracovní postup, který se spustí při každém ukončení hovoru."
---

[n8n](https://n8n.io) je nástroj pro automatizaci pracovních postupů. Balíček ThunderPhone
pro n8n přidává dva uzly:

- **ThunderPhone Trigger** spustí pracovní postup po ukončení hovoru (**Hovor
  dokončen**) nebo po dokončení vyhodnocení hovoru (**Hovor vyhodnocen**).
- **ThunderPhone** uskutečňuje odchozí hovory, přidává kontakty do kampaní a
  spouští je, získává hovory s jejich přepisem a nahrávkou a vypisuje vaše
  agenty a telefonní čísla.

Jde o ověřený komunitní uzel uvedený na stránce
[ThunderPhone na n8n](https://n8n.io/integrations/thunderphone/).

## Nainstalujte uzel

V editoru n8n klikněte na **+**, otevřete panel uzlů a vyhledejte
**ThunderPhone**. Vlastník instance možná bude muset ověřené uzly nastavit dříve,
než je budou moci přidat ostatní uživatelé.

V n8n hostovaném na vlastním serveru můžete uzel nainstalovat také podle názvu balíčku: otevřete
**Nastavení > Komunitní uzly** a nainstalujte `n8n-nodes-thunderphone`. Před instalací
zkontrolujte rizika komunitních uzlů a zásady vaší instance.

## Vytvořte serverový API klíč

<Steps>
  <Step title="Otevřete kartu Klíče">
    V ThunderPhone přejděte do **Organizace → Klíče** a klikněte na **Vytvořit klíč**.
  </Step>
  <Step title="Pojmenujte ho">
    Použijte název, který uvádí, kde se klíč používá, například „n8n“.
  </Step>
  <Step title="Zkopírujte ho nyní">
    Úplné tajemství `sk_live_...` se zobrazí pouze jednou. Zkopírujte ho před zavřením
    dialogového okna.
  </Step>
</Steps>

Klíč může vytvořit pouze správce nebo vlastník a ThunderPhone považuje požadavky
provedené s jeho použitím za požadavky dané osoby. Spouštěč a operace s kampaněmi
vyžadují, aby si tato osoba zachovala roli správce nebo vlastníka.
[Více o vytvoření serverového API klíče](/cs/guides/api-keys) popisuje rotaci a zneplatnění.

## Přidejte přihlašovací údaje v n8n

1. V n8n vytvořte přihlašovací údaje typu **ThunderPhone API**.
2. Vložte klíč do pole **API klíč**.
3. Uložte je a spusťte test přihlašovacích údajů. Test načte jeden hovor z vaší
   organizace pomocí `GET /v1/calls?limit=1`.

## Vytvoření prvního pracovního postupu

Tento pracovní postup přidá řádek do Tabulek Google pokaždé, když hovor skončí.

<Steps>
  <Step title="Přidejte spouštěč">
    Přidejte **Spouštěč ThunderPhone**, vyberte své přihlašovací údaje k rozhraní ThunderPhone API a
    nastavte **Událost** na **Hovor dokončen**.
  </Step>
  <Step title="Získejte hovor">
    Přidejte uzel **ThunderPhone**. Nastavte **Prostředek** na **Hovor**, **Operaci**
    na **Získat** a **ID hovoru** na výraz `{{ $json.data.call_id }}`.
    Výstupem je [záznam hovoru](/api-reference/calls) spolu s `transcripts`
    a `recording_url`, krátkodobým odkazem, který má hodnotu `null`, když hovor
    nemá nahrávku.
  </Step>
  <Step title="Přidejte řádek">
    Přidejte uzel Tabulky Google, který přidává řádek, a namapujte požadované sloupce
    z výstupu Získat hovor (viz tabulka níže).
  </Step>
  <Step title="Aktivujte pracovní postup">
    Uložte a aktivujte jej. Spouštěč zaregistruje svou produkční adresu URL jako koncový bod webhooku
    ve vaší organizaci ThunderPhone. Deaktivací pracovního postupu tento koncový bod odstraníte.
  </Step>
  <Step title="Otestujte jej">
    Otevřete agenta v nástroji pro tvorbu, klikněte na **Mluvit** a hovor ukončete. Testovací hovory
    z nástroje pro tvorbu jsou doručovány jako `web.complete`, jedna ze dvou událostí spadajících pod
    Hovor dokončen, takže se pracovní postup spustí a zobrazí se řádek.
  </Step>
</Steps>

Užitečné sloupce:

| Sloupec | Výraz |
|---|---|
| ID hovoru | `{{ $json.call_id }}` |
| Směr | `{{ $json.direction }}` |
| Od | `{{ $json.from_number }}` |
| Komu | `{{ $json.to_number }}` |
| Zahájeno | `{{ $json.start_time }}` |
| Délka (s) | `{{ $json.duration_seconds }}` |
| Stav | `{{ $json.status }}` |
| Důvod ukončení | `{{ $json.end_reason }}` |
| Odkaz na hovor | `https://app.thunderphone.com/dashboard/call-history/{{ $json.call_id }}` |

Odkaz na hovor otevře hovor v řídicím panelu ThunderPhone členům
vaší organizace, včetně jeho přepisu a nahrávky, takže tabulka nemusí
ukládat ani jedno z nich.

Chcete-li přidat také přepis, namapujte
`{{ $json.transcripts.filter(t => typeof t.content === 'string').map(t => t.role + ': ' + t.content).join('\n') }}`.
Adresa URL nahrávky vyprší, proto uložte ID hovoru a spusťte Získat hovor znovu, když
potřebujete nový odkaz. Přepisy hovorů, souhrny a nahrávky mohou obsahovat
osobní nebo zdravotní údaje. Odesílejte je pouze do aplikací, které vaše organizace
smí pro tato data používat, na základě smlouvy BAA, pokud se jedná o zdravotní
údaje, a uchovávejte pouze pole, která potřebujete.

<Note>
  ThunderPhone doručuje události metodou `POST` na **produkční
  adresu URL** spouštěče, takže vaše instance n8n musí být z internetu dostupná
  přes HTTPS a pracovní postup musí být aktivní. Spouštěč ověřuje HMAC
  `X-ThunderPhone-Signature` u každého požadavku a na cokoli nepodepsaného nebo neplatného
  odpoví `401`.
</Note>

Spouštěč vrací úplnou událost: `type`, `event_id` a `data`. Všechny
atributy najdete v dokumentaci k [`telephony.complete` / `web.complete`](/cs/webhooks/call-complete) a
[`call.graded`](/cs/webhooks/events). Doručení probíhá alespoň jednou
a `event_id` zůstává stejné při opakovaných pokusech o doručení jedné události, proto jej zkontrolujte před
krokem, který se nesmí opakovat.

## Bezpečně uskutečňujte odchozí hovory

**Uskutečnit odchozí hovor** (Zdroj **Odchozí hovor**, Operace **Uskutečnit**)
vyžaduje:

| Pole | Význam |
|---|---|
| Název nebo ID agenta | Uložený agent. Rozevírací seznam obsahuje vaše agenty. |
| Název nebo ID telefonního čísla | Číslo volajícího. Rozevírací seznam obsahuje pouze čísla povolená pro odchozí hovory. |
| Číslo příjemce | Cílové číslo ve formátu E.164, např. `+14155552671`. |
| Proměnné | Objekt JSON s hodnotami pro zástupné symboly ve výzvě agenta. |
| Klíč idempotence | Stabilní ID z nadřazeného záznamu nebo události. Povinné. |

Namapujte **Klíč idempotence** na ID z toho, co spuštění způsobilo, například
ID záznamu CRM nebo `event_id` spouštěče. Uzel odesílá
`n8n:<node ID>:<your value>`, takže:

- Automatický opakovaný pokus nebo **Opakovat spuštění** odešle stejný klíč a
  ThunderPhone vrátí původní hovor s `idempotent_replay: true`
  namísto opětovného vytáčení.
- Dva uzly ThunderPhone napájené stejným záznamem odešlou různé klíče.
- Prázdná hodnota selže před odesláním jakéhokoli požadavku.

Vyhněte se časovým razítkům, náhodným hodnotám a ID spuštění nebo workflow n8n. Nová
hodnota při opakovaném pokusu uskuteční druhý skutečný hovor. Celý klíč může mít
maximálně 128 znaků. Opětovné použití klíče s jiným agentem, číslem nebo proměnnými selže
s konfliktem.

**Kampaně.** **Přidat kontakty** (Zdroj **Kampaň**) přidá kontakty do
konceptu kampaně. Vyžaduje ID kampaně a pole kontaktů JSON. Každý kontakt potřebuje `phone_number`; ostatní klíče
se stanou proměnnými hovoru. Uzel selže, pokud jsou odmítnuty všechny kontakty, a nastaví
`partial_success: true`, pokud jsou odmítnuty jen některé. **Spustit** vyžaduje zaškrtávací políčko
potvrzující, že kampaň uskutečňuje skutečné hovory a spotřebovává kredity ThunderPhone.
Viz [Odchozí kampaně](/cs/guides/outbound-campaigns).

Předtím, než workflow začne uskutečňovat hovory:

- Pokud ThunderPhone požádá vaši organizaci o potvrzení, že její odchozí hovory
  dodržují TCPA a další zákony pro volání, musí správce toto
  potvrzení nejprve zaznamenat na řídicím panelu.
- Číslo volajícího musí být povoleno pro odchozí hovory. Čísla, která si přenesete
  od vlastního operátora, jsou způsobilá po ověření. Čísla ThunderPhone začínají
  pouze pro příchozí hovory a mohou být schválena pro odchozí použití: správce o to požádá
  na stránce Telefonní čísla. Viz
  [Získání telefonního čísla](/cs/guides/get-a-phone-number).
- Vaše organizace odpovídá za získání souhlasu k volání na každé číslo
  a za dodržování příslušných zákonů pro volání. Viz
  [Zákony pro odchozí volání](/cs/guides/outbound-calling-laws).

## Příklady workflow

- **Kontakty CRM do kampaně.** Přidejte kontakty CRM do konceptu kampaně
  ThunderPhone a poté kampaň spusťte, jakmile někdo schválí seznam.
- **Dokončený hovor do záznamu zákazníka.** Při dokončení hovoru spusťte Získat hovor
  a uložte přepis a odkaz na nahrávku do odpovídajícího záznamu zákazníka.
- **Nízké hodnocení ke kontrole.** Při vyhodnocení hovoru filtrujte podle
  `{{ $json.data.grade.score }}` a směrujte hovory s nízkým skóre do fronty ke kontrole
  s ID hovoru a podrobnostmi hodnocení. Hovor může být vyhodnocen vícekrát
  a každé dokončené vyhodnocení spustí spouštěč, proto uchovávejte pouze nejnovější
  `graded_at` pro každé ID hovoru.

Přepisy hovorů, shrnutí a nahrávky mohou obsahovat osobní nebo zdravotní
údaje. Odesílejte je pouze do aplikací, které vaše organizace smí pro
tato data používat, při zapojení zdravotních údajů na základě BAA, a uchovávejte pouze
pole, která potřebujete.

<Note>
  Odesíláte stejné události hovorů na vlastní server? Viz
  [Koncové body webhooků](/cs/webhooks/endpoints).
  [Uskutečnění odchozích hovorů](/cs/guides/place-outbound-calls) popisuje API pro
  Uskutečnit odchozí hovor.
</Note>
