---
title: "ThunderPhone'u n8n ile kullanın"
description: "n8n için ThunderPhone düğümünü yükleyin, bir sunucu API anahtarı bağlayın ve her arama sona erdiğinde çalışan bir iş akışı oluşturun."
---

[n8n](https://n8n.io), bir iş akışı otomasyon aracıdır. n8n için ThunderPhone paketi
iki düğüm ekler:

- **ThunderPhone Trigger**, bir çağrı sona erdiğinde (**Çağrı Tamamlandı**) veya bir çağrı değerlendirme çalıştırması tamamlandığında (**Çağrı Değerlendirildi**) iş akışını başlatır.
- **ThunderPhone**, giden çağrılar yapar, kişileri kampanyalara ekler ve kampanyaları
  başlatır, çağrıları transkriptleri ve kayıtlarıyla getirir, yapay zeka ajanlarınızı ve telefon numaralarınızı listeler.

Bu, doğrulanmış bir topluluk düğümüdür ve
[n8n'de ThunderPhone](https://n8n.io/integrations/thunderphone/) sayfasında listelenir.

## Düğümü yükleyin

n8n düzenleyicisinde, düğümler panelini açmak için **+** seçeneğine tıklayın ve
**ThunderPhone** arayın. Diğer kullanıcılar ekleyebilmeden önce bir örnek sahibi
doğrulanmış düğümleri ayarlamak zorunda kalabilir.

Kendi barındırdığınız n8n'de paket adına göre de yükleyebilirsiniz:
**Ayarlar > Topluluk Düğümleri** bölümünü açın ve `n8n-nodes-thunderphone` paketini yükleyin. Yüklemeden önce topluluk düğümü risklerini ve örnek politikanızı
kontrol edin.

## Sunucu API anahtarı oluşturun

<Steps>
  <Step title="Anahtarlar sekmesini açın">
    ThunderPhone'da **Kuruluş → Anahtarlar** bölümüne gidin ve **Anahtar oluştur** seçeneğine tıklayın.
  </Step>
  <Step title="Ad verin">
    Anahtarın nerede kullanıldığını belirten, örneğin "n8n" gibi bir ad kullanın.
  </Step>
  <Step title="Hemen kopyalayın">
    Tam `sk_live_...` gizli anahtarı bir kez gösterilir. İletişim kutusunu kapatmadan önce
    kopyalayın.
  </Step>
</Steps>

Anahtarı yalnızca bir yönetici veya sahip oluşturabilir ve ThunderPhone, bu anahtarla
yapılan istekleri o kişiden gelmiş sayar. Tetikleyici ve kampanya
işlemleri, o kişinin yönetici veya sahip rolünü korumasını gerektirir.
[Sunucu API anahtarı oluşturma](/tr/guides/api-keys), döndürme ve iptal işlemlerini açıklar.

## Kimlik bilgisini n8n'e ekleyin

1. n8n'de **ThunderPhone API** türünde bir kimlik bilgisi oluşturun.
2. Anahtarı **API Anahtarı** alanına yapıştırın.
3. Kaydedin ve kimlik bilgisi testini çalıştırın. Test, kuruluşunuzdan bir çağrıyı
   `GET /v1/calls?limit=1` ile okur.

## İlk iş akışını oluşturun

Bu iş akışı, her çağrı sona erdiğinde bir Google Sheet'e satır ekler.

<Steps>
  <Step title="Tetikleyiciyi ekleyin">
    **ThunderPhone Trigger** ekleyin, ThunderPhone API kimlik bilginizi seçin
    ve **Event** değerini **Call Completed** olarak ayarlayın.
  </Step>
  <Step title="Çağrıyı alın">
    Bir **ThunderPhone** düğümü ekleyin. **Resource** değerini **Call**,
    **Operation** değerini **Get** olarak ayarlayın ve **Call ID** alanına
    `{{ $json.data.call_id }}` ifadesini girin. Çıktı, [çağrı kaydına](/api-reference/calls)
    ek olarak `transcripts` ile, çağrının kaydı olmadığında `null` olan kısa
    ömürlü bir bağlantı olan `recording_url` değerini içerir.
  </Step>
  <Step title="Satır ekleyin">
    Satır ekleyen bir Google Sheets düğümü ekleyin ve istediğiniz sütunları
    Get Call çıktısından eşleyin (aşağıdaki tabloya bakın).
  </Step>
  <Step title="İş akışını etkinleştirin">
    Kaydedin ve etkinleştirin. Tetikleyici, Production URL'sini ThunderPhone
    kuruluşunuzda bir webhook uç noktası olarak kaydeder. İş akışını devre dışı
    bırakmak bu uç noktayı siler.
  </Step>
  <Step title="Test edin">
    Oluşturucuda bir ajan açın, **Talk** seçeneğine tıklayın ve çağrıyı
    sonlandırın. Oluşturucu test çağrıları, Call Completed'in arkasındaki iki
    olaydan biri olan `web.complete` olarak teslim edilir; böylece iş akışı
    çalışır ve bir satır görünür.
  </Step>
</Steps>

Yararlı sütunlar:

| Sütun | İfade |
|---|---|
| Çağrı kimliği | `{{ $json.call_id }}` |
| Yön | `{{ $json.direction }}` |
| Kimden | `{{ $json.from_number }}` |
| Kime | `{{ $json.to_number }}` |
| Başlangıç | `{{ $json.start_time }}` |
| Süre (sn) | `{{ $json.duration_seconds }}` |
| Durum | `{{ $json.status }}` |
| Bitiş nedeni | `{{ $json.end_reason }}` |
| Çağrı bağlantısı | `https://app.thunderphone.com/dashboard/call-history/{{ $json.call_id }}` |

Çağrı bağlantısı, kuruluşunuzun üyeleri için çağrıyı ThunderPhone panosunda
transkripti ve kaydıyla birlikte açar; bu nedenle sayfanın ikisini de
saklaması gerekmez.

Yine de transkripti eklemek için
`{{ $json.transcripts.filter(t => typeof t.content === 'string').map(t => t.role + ': ' + t.content).join('\n') }}` ifadesini eşleyin.
Kayıt URL'sinin süresi dolar; bu nedenle çağrı kimliğini saklayın ve yeni bir
bağlantıya ihtiyaç duyduğunuzda Get Call işlemini yeniden çalıştırın. Çağrı
transkriptleri, özetleri ve kayıtları kişisel veya sağlık bilgileri içerebilir.
Bunları yalnızca kuruluşunuzun bu veriler için kullanmasına izin verilen
uygulamalara, sağlık bilgileri söz konusu olduğunda BAA kapsamında gönderin ve
yalnızca ihtiyacınız olan alanları saklayın.

<Note>
  ThunderPhone, olayları tetikleyicinin **Production
  URL** adresine `POST` ile teslim eder; bu nedenle n8n örneğiniz internete
  HTTPS üzerinden erişilebilir olmalı ve iş akışı etkin olmalıdır. Tetikleyici,
  her istekte `X-ThunderPhone-Signature` HMAC değerini doğrular ve imzasız veya
  geçersiz her isteğe `401` yanıtını verir.
</Note>

Tetikleyici tam olayı çıktılar: `type`, `event_id` ve `data`. Tüm alanlar için
[`telephony.complete` / `web.complete`](/tr/webhooks/call-complete) ve
[`call.graded`](/tr/webhooks/events) belgelerine bakın. Teslimat en az bir kez
gerçekleşir ve `event_id`, tek bir olayın yeniden denemelerinde aynı kalır;
bu nedenle tekrarlanmaması gereken bir adımdan önce bunu kontrol edin.

## Giden aramaları güvenle başlatın

**Giden Arama Başlat** (Kaynak **Giden Arama**, İşlem **Başlat**)
şunları alır:

| Alan | Anlamı |
|---|---|
| Ajan Adı veya Kimliği | Kaydedilmiş bir ajan. Açılır listede ajanlarınız yer alır. |
| Telefon Numarası Adı veya Kimliği | Aramanın yapılacağı numara. Açılır listede yalnızca giden aramalar için etkinleştirilmiş numaralar yer alır. |
| Hedef Numara | E.164 biçimindeki hedef numara, ör. `+14155552671`. |
| Değişkenler | Ajan istemindeki yer tutucular için değerlerden oluşan JSON nesnesi. |
| İdempotentlik Anahtarı | Yukarı akış kaydından veya olaydan gelen sabit bir kimlik. Zorunludur. |

**İdempotentlik Anahtarı** alanını, CRM kayıt kimliği veya tetikleyicinin
`event_id` değeri gibi çalıştırmayı başlatan kaynaktan gelen bir kimlikle eşleyin. Düğüm
`n8n:<node ID>:<your value>` gönderir; bu nedenle:

- Otomatik yeniden deneme veya **Yürütmeyi yeniden dene** aynı anahtarı gönderir ve
  ThunderPhone yeniden arama yapmak yerine `idempotent_replay: true` ile özgün aramayı döndürür.
- Aynı kayıttan beslenen iki ThunderPhone düğümü farklı anahtarlar gönderir.
- Boş bir değer, herhangi bir istek gönderilmeden önce başarısız olur.

Zaman damgalarından, rastgele değerlerden ve n8n yürütme veya iş akışı kimliklerinden kaçının. Yeniden denemede yeni bir
değer, ikinci bir gerçek arama başlatır. Anahtarın tamamı en fazla 128
karakter olabilir. Farklı bir ajan, numara veya değişkenle bir anahtarı yeniden kullanmak
çakışma hatasıyla başarısız olur.

**Kampanyalar.** **Kişi Ekle** (Kaynak **Kampanya**) kişileri
taslak bir kampanyaya ekler. Bir Kampanya Kimliği ve kişilerden oluşan bir JSON dizisi alır. Her kişi için `phone_number` gereklidir; diğer anahtarlar
arama değişkenlerine dönüşür. Düğüm, tüm kişiler reddedildiğinde başarısız olur ve
yalnızca bazıları reddedildiğinde `partial_success: true` ayarlar. **Başlat**, kampanyanın gerçek aramalar başlattığını ve ThunderPhone
kredilerini harcadığını onaylayan onay kutusunu gerektirir. Bkz.
[Giden arama kampanyaları](/tr/guides/outbound-campaigns).

Bir iş akışı arama başlatmadan önce:

- ThunderPhone kuruluşunuzdan giden aramalarının TCPA ve diğer arama yasalarına
  uyduğunu onaylamasını isterse, bir yönetici önce bu onayı
  panoda kaydetmelidir.
- Aramanın yapılacağı numara giden aramalar için etkinleştirilmiş olmalıdır. Kendi operatörünüzden
  getirdiğiniz numaralar doğrulandıktan sonra uygun olur. ThunderPhone numaraları başlangıçta
  yalnızca gelen aramalara açıktır ve giden kullanım için onaylanabilir: bir yönetici bunu
  Telefon Numaraları sayfasından talep eder. Bkz.
  [Telefon numarası alın](/tr/guides/get-a-phone-number).
- Kuruluşunuz, her numarayı aramak için onaya sahip olmaktan
  ve geçerli arama yasalarına uymaktan sorumludur. Bkz.
  [Giden arama yasaları](/tr/guides/outbound-calling-laws).

## Örnek iş akışları

- **CRM kişilerini kampanyaya ekleme.** CRM kişilerini taslak bir ThunderPhone
  kampanyasına ekleyin, ardından biri listeyi onayladığında kampanyayı başlatın.
- **Tamamlanan aramayı müşteri kaydına ekleme.** Arama Tamamlandığında, Aramayı Getir işlemini
  çalıştırın ve transkripti ile kayıt bağlantısını eşleşen müşteri kaydına kaydedin.
- **Düşük puanları incelemeye gönderme.** Arama Puanlandığında,
  `{{ $json.data.grade.score }}` üzerinde filtre uygulayın ve düşük puanlı aramaları arama kimliği ve puanlama ayrıntılarıyla birlikte
  inceleme kuyruğuna yönlendirin. Bir arama birden fazla kez puanlanabilir
  ve tamamlanan her puanlama çalıştırması tetikleyiciyi çalıştırır; bu nedenle her arama kimliği için yalnızca en son
  `graded_at` değerini saklayın.

Arama transkriptleri, özetler ve kayıtlar kişisel veya sağlık
bilgileri içerebilir. Bunları yalnızca kuruluşunuzun bu veriler için kullanmasına izin verilen uygulamalara,
sağlık bilgileri söz konusu olduğunda bir BAA kapsamında gönderin ve yalnızca ihtiyaç duyduğunuz
alanları saklayın.

<Note>
  Aynı arama olaylarını kendi sunucunuza mı gönderiyorsunuz? Bkz.
  [Webhook uç noktaları](/tr/webhooks/endpoints).
  [Giden aramalar başlatma](/tr/guides/place-outbound-calls), Giden Arama Başlat işleminin arkasındaki API'yi
  açıklar.
</Note>
