---
title: "ThunderPhone को n8n के साथ उपयोग करें"
description: "n8n के लिए ThunderPhone नोड इंस्टॉल करें, सर्वर API key कनेक्ट करें, और ऐसा वर्कफ़्लो बनाएं जो हर कॉल समाप्त होने पर चले।"
---

[n8n](https://n8n.io) एक वर्कफ़्लो ऑटोमेशन टूल है। n8n के लिए ThunderPhone पैकेज
दो नोड जोड़ता है:

- **ThunderPhone Trigger** कॉल समाप्त होने पर (**Call
  Completed**) या कॉल ग्रेडिंग रन पूरा होने पर (**Call Graded**) वर्कफ़्लो शुरू करता है।
- **ThunderPhone** आउटबाउंड कॉल करता है, कैंपेन में कॉन्टैक्ट जोड़ता है और उन्हें
  शुरू करता है, ट्रांसक्रिप्ट और रिकॉर्डिंग के साथ कॉल प्राप्त करता है, और आपके
  एजेंट और फ़ोन नंबर सूचीबद्ध करता है।

यह एक सत्यापित कम्युनिटी नोड है, जो
[n8n पर ThunderPhone](https://n8n.io/integrations/thunderphone/) में सूचीबद्ध है।

## नोड इंस्टॉल करें

n8n एडिटर में, नोड्स पैनल खोलने के लिए **+** पर क्लिक करें और
**ThunderPhone** खोजें। अन्य उपयोगकर्ता इसे जोड़ सकें, इसके लिए इंस्टेंस ओनर को
पहले सत्यापित नोड्स सेट अप करने पड़ सकते हैं।

सेल्फ-होस्टेड n8n पर, आप पैकेज नाम से भी इंस्टॉल कर सकते हैं:
**Settings > Community Nodes** खोलें और `n8n-nodes-thunderphone` इंस्टॉल करें। इंस्टॉल करने से
पहले कम्युनिटी-नोड जोखिमों और अपनी इंस्टेंस पॉलिसी की जाँच करें।

## सर्वर API key बनाएँ

<Steps>
  <Step title="Keys टैब खोलें">
    ThunderPhone में, **Organization → Keys** पर जाएँ और **Create key** पर क्लिक करें।
  </Step>
  <Step title="इसका नाम रखें">
    ऐसा नाम इस्तेमाल करें जो बताए कि key कहाँ उपयोग होती है, जैसे "n8n"।
  </Step>
  <Step title="इसे अभी कॉपी करें">
    पूरा `sk_live_...` सीक्रेट केवल एक बार दिखाया जाता है। डायलॉग बंद करने से पहले
    इसे कॉपी करें।
  </Step>
</Steps>

केवल एडमिन या ओनर ही key बना सकता है, और ThunderPhone इसके साथ किए गए अनुरोधों को
उस व्यक्ति की ओर से किया गया मानता है। ट्रिगर और कैंपेन ऑपरेशंस के लिए उस व्यक्ति का
एडमिन या ओनर रोल बनाए रखना आवश्यक है।
[सर्वर API key बनाएँ](/hi/guides/api-keys) में रोटेशन और रिवोकेशन की जानकारी है।

## n8n में क्रेडेंशियल जोड़ें

1. n8n में, **ThunderPhone API** प्रकार का क्रेडेंशियल बनाएँ।
2. key को **API Key** में पेस्ट करें।
3. इसे सेव करें और क्रेडेंशियल टेस्ट चलाएँ। टेस्ट आपके संगठन से एक कॉल पढ़ता है
   `GET /v1/calls?limit=1` के साथ।

## पहला वर्कफ़्लो बनाएं

यह वर्कफ़्लो हर बार कॉल समाप्त होने पर Google Sheets में एक पंक्ति जोड़ता है।

<Steps>
  <Step title="ट्रिगर जोड़ें">
    **ThunderPhone ट्रिगर** जोड़ें, अपना ThunderPhone API क्रेडेंशियल चुनें, और
    **इवेंट** को **कॉल पूर्ण हुई** पर सेट करें।
  </Step>
  <Step title="कॉल प्राप्त करें">
    एक **ThunderPhone** नोड जोड़ें। **रिसोर्स** को **कॉल**, **ऑपरेशन**
    को **प्राप्त करें**, और **कॉल ID** को एक्सप्रेशन `{{ $json.data.call_id }}` पर सेट करें।
    आउटपुट में [कॉल रिकॉर्ड](/api-reference/calls) के साथ `transcripts`
    और `recording_url` शामिल होते हैं। यह एक अल्पकालिक लिंक है, जो कॉल की
    कोई रिकॉर्डिंग न होने पर `null` होता है।
  </Step>
  <Step title="एक पंक्ति जोड़ें">
    एक Google Sheets नोड जोड़ें जो एक पंक्ति जोड़ता है, और जिन कॉलम की आपको आवश्यकता है
    उन्हें Get Call आउटपुट से मैप करें (नीचे दी गई तालिका देखें)।
  </Step>
  <Step title="वर्कफ़्लो सक्रिय करें">
    सेव करें और सक्रिय करें। ट्रिगर आपके ThunderPhone संगठन में अपने प्रोडक्शन URL को
    वेबहुक एंडपॉइंट के रूप में रजिस्टर करता है। वर्कफ़्लो को निष्क्रिय करने पर
    वह एंडपॉइंट हट जाता है।
  </Step>
  <Step title="इसका परीक्षण करें">
    बिल्डर में एक एजेंट खोलें, **बात करें** पर क्लिक करें, और कॉल समाप्त करें। बिल्डर
    टेस्ट कॉल `web.complete` के रूप में डिलीवर होते हैं, जो कॉल पूर्ण हुई के पीछे मौजूद
    दो इवेंट में से एक है, इसलिए वर्कफ़्लो चलता है और एक पंक्ति दिखाई देती है।
  </Step>
</Steps>

उपयोगी कॉलम:

| कॉलम | एक्सप्रेशन |
|---|---|
| कॉल ID | `{{ $json.call_id }}` |
| दिशा | `{{ $json.direction }}` |
| से | `{{ $json.from_number }}` |
| तक | `{{ $json.to_number }}` |
| शुरू होने का समय | `{{ $json.start_time }}` |
| अवधि (सेकंड) | `{{ $json.duration_seconds }}` |
| स्टेटस | `{{ $json.status }}` |
| समाप्ति कारण | `{{ $json.end_reason }}` |
| कॉल लिंक | `https://app.thunderphone.com/dashboard/call-history/{{ $json.call_id }}` |

कॉल लिंक आपके संगठन के सदस्यों के लिए ThunderPhone डैशबोर्ड में कॉल को उसके
ट्रांसक्रिप्ट और रिकॉर्डिंग के साथ खोलता है, इसलिए शीट में इनमें से किसी को
रखने की आवश्यकता नहीं होती।

फिर भी ट्रांसक्रिप्ट जोड़ने के लिए,
`{{ $json.transcripts.filter(t => typeof t.content === 'string').map(t => t.role + ': ' + t.content).join('\n') }}` मैप करें।
रिकॉर्डिंग URL समाप्त हो जाता है, इसलिए कॉल ID स्टोर करें और नया लिंक चाहिए होने पर
Get Call फिर से चलाएं। कॉल ट्रांसक्रिप्ट, सारांश और रिकॉर्डिंग में व्यक्तिगत या
स्वास्थ्य संबंधी जानकारी हो सकती है। इन्हें केवल उन ऐप्स को भेजें जिन्हें आपका संगठन
उस डेटा के लिए उपयोग करने की अनुमति रखता है, स्वास्थ्य जानकारी शामिल होने पर BAA के
तहत, और केवल उन्हीं फ़ील्ड को रखें जिनकी आपको आवश्यकता है।

<Note>
  ThunderPhone ट्रिगर के **प्रोडक्शन
  URL** पर `POST` के साथ इवेंट डिलीवर करता है, इसलिए आपका n8n इंस्टेंस इंटरनेट से
  HTTPS के माध्यम से पहुंच योग्य होना चाहिए, और वर्कफ़्लो सक्रिय होना चाहिए। ट्रिगर
  हर अनुरोध पर `X-ThunderPhone-Signature` HMAC सत्यापित करता है और
  साइन न किए गए या अमान्य किसी भी अनुरोध को `401` के साथ उत्तर देता है।
</Note>

ट्रिगर पूरा इवेंट आउटपुट करता है: `type`, `event_id` और `data`। सभी फ़ील्ड के लिए
[`telephony.complete` / `web.complete`](/hi/webhooks/call-complete) और
[`call.graded`](/hi/webhooks/events) देखें। डिलीवरी कम-से-कम एक बार होती है,
और एक इवेंट के रीट्राई में `event_id` समान रहता है, इसलिए ऐसे चरण से पहले इसकी जांच करें
जिसे दोहराया नहीं जाना चाहिए।

## आउटबाउंड कॉल सुरक्षित रूप से करें

**आउटबाउंड कॉल करें** (रिसोर्स **आउटबाउंड कॉल**, ऑपरेशन **करें**)
के लिए आवश्यक हैं:

| फ़ील्ड | अर्थ |
|---|---|
| एजेंट नाम या ID | एक सेव किया हुआ एजेंट। ड्रॉपडाउन आपके एजेंट दिखाता है। |
| फ़ोन नंबर नाम या ID | जिससे कॉल की जाती है वह नंबर। ड्रॉपडाउन केवल आउटबाउंड कॉल के लिए सक्षम नंबर दिखाता है। |
| नंबर पर | E.164 फ़ॉर्मेट में डेस्टिनेशन, जैसे `+14155552671`। |
| वेरिएबल्स | एजेंट प्रॉम्प्ट में प्लेसहोल्डर्स के लिए वैल्यू का JSON ऑब्जेक्ट। |
| आइडेम्पोटेंसी की | अपस्ट्रीम रिकॉर्ड या इवेंट से एक स्थिर ID। आवश्यक। |

**आइडेम्पोटेंसी की** को उस ID से मैप करें जिससे रन शुरू हुआ है, जैसे
CRM रिकॉर्ड ID या ट्रिगर का `event_id`। नोड
`n8n:<node ID>:<your value>` भेजता है, इसलिए:

- ऑटोमैटिक रीट्राई या **एग्जीक्यूशन रीट्राई करें** वही की भेजता है, और
  ThunderPhone दोबारा डायल करने के बजाय `idempotent_replay: true` के साथ
  मूल कॉल लौटाता है।
- एक ही रिकॉर्ड से फीड किए गए दो ThunderPhone नोड अलग-अलग की भेजते हैं।
- कोई अनुरोध भेजने से पहले खाली वैल्यू विफल हो जाती है।

टाइमस्टैम्प, रैंडम वैल्यू और n8n एग्जीक्यूशन या वर्कफ़्लो ID से बचें। रीट्राई पर
नई वैल्यू दूसरी वास्तविक कॉल करती है। पूरी की अधिकतम 128 कैरेक्टर की हो सकती
है। किसी अलग एजेंट, नंबर या वेरिएबल्स के साथ की का पुन: उपयोग कॉन्फ्लिक्ट के
साथ विफल होता है।

**कैंपेन।** **कॉन्टैक्ट जोड़ें** (रिसोर्स **कैंपेन**) ड्राफ़्ट कैंपेन में
कॉन्टैक्ट जोड़ता है। इसके लिए एक कैंपेन ID और कॉन्टैक्ट की JSON ऐरे चाहिए। हर
कॉन्टैक्ट में `phone_number` होना चाहिए; अन्य की कॉल वेरिएबल्स बनती हैं। जब हर
कॉन्टैक्ट अस्वीकार हो जाता है, तो नोड विफल होता है और केवल कुछ के होने पर
`partial_success: true` सेट करता है। **शुरू करें** के लिए उस चेकबॉक्स की पुष्टि
ज़रूरी है कि कैंपेन वास्तविक कॉल करता है और ThunderPhone क्रेडिट खर्च करता है।
[आउटबाउंड कैंपेन](/hi/guides/outbound-campaigns) देखें।

वर्कफ़्लो द्वारा कॉल शुरू करने से पहले:

- अगर ThunderPhone आपके संगठन से यह पुष्टि करने के लिए कहता है कि उसकी
  आउटबाउंड कॉल TCPA और अन्य कॉलिंग कानूनों का पालन करती हैं, तो एडमिन को
  पहले डैशबोर्ड में वह पुष्टि दर्ज करनी होगी।
- जिससे कॉल की जाती है वह नंबर आउटबाउंड कॉल के लिए सक्षम होना चाहिए। अपने
  कैरियर से लाए गए नंबर सत्यापित होने के बाद योग्य होते हैं। ThunderPhone नंबर
  इनबाउंड-ओनली से शुरू होते हैं और इन्हें आउटबाउंड उपयोग के लिए अनुमोदित किया
  जा सकता है: एडमिन फ़ोन नंबर पेज से इसका अनुरोध करता है। 
  [फ़ोन नंबर प्राप्त करें](/hi/guides/get-a-phone-number) देखें।
- आपके संगठन की ज़िम्मेदारी है कि उसके पास हर नंबर पर कॉल करने की सहमति हो
  और लागू कॉलिंग कानूनों का पालन किया जाए। 
  [आउटबाउंड कॉलिंग कानून](/hi/guides/outbound-calling-laws) देखें।

## उदाहरण वर्कफ़्लो

- **CRM कॉन्टैक्ट को कैंपेन में जोड़ें।** CRM कॉन्टैक्ट को ड्राफ़्ट ThunderPhone
  कैंपेन में जोड़ें, फिर किसी के सूची को मंज़ूरी देने पर कैंपेन शुरू करें।
- **पूर्ण कॉल को ग्राहक रिकॉर्ड में जोड़ें।** कॉल पूर्ण होने पर, कॉल प्राप्त करें
  चलाएँ और ट्रांसक्रिप्ट तथा रिकॉर्डिंग लिंक को मिलते-जुलते ग्राहक रिकॉर्ड में सेव करें।
- **कम ग्रेड को रिव्यू में भेजें।** कॉल ग्रेड होने पर,
  `{{ $json.data.grade.score }}` पर फ़िल्टर करें और कम स्कोर वाली कॉल को कॉल ID
  और ग्रेड विवरण के साथ रिव्यू क्यू में रूट करें। एक कॉल को एक से अधिक बार ग्रेड
  किया जा सकता है, और हर पूर्ण ग्रेडिंग रन ट्रिगर चलाता है, इसलिए हर कॉल ID के
  लिए केवल नवीनतम `graded_at` रखें।

कॉल ट्रांसक्रिप्ट, सारांश और रिकॉर्डिंग में व्यक्तिगत या स्वास्थ्य जानकारी हो
सकती है। इन्हें केवल उन ऐप्स पर भेजें जिनका उपयोग आपका संगठन उस डेटा के लिए
कर सकता है, जहाँ स्वास्थ्य जानकारी शामिल हो वहाँ BAA के अंतर्गत भेजें, और केवल
वे फ़ील्ड रखें जिनकी आपको आवश्यकता है।

<Note>
  इसके बजाय वही कॉल इवेंट अपने सर्वर पर भेज रहे हैं? 
  [वेबहुक एंडपॉइंट्स](/hi/webhooks/endpoints) देखें।
  [आउटबाउंड कॉल करें](/hi/guides/place-outbound-calls) में
  आउटबाउंड कॉल करें के पीछे का API शामिल है।
</Note>
