تحلیل خودکار تماس‌های فروش با n8n، Whisper و GPT-4

تحلیل خودکار تماس‌های فروش با n8n، Whisper و GPT-4

17 دقیقه مطالعه · منتشر شده ۱۴۰۵/۴/۳۰

دانلود workflow

فایل JSON آماده import در n8n — credentialها باید در n8n شما تنظیم شوند.

  1. فایل JSON را دانلود کنید.
  2. در n8n: Workflows → Import from File.
  3. Credentialهای هر node را متصل کنید.
  4. workflow را فعال کنید.

شناسه workflow: 13593 · منبع: کاتالوگ Axeto

# تحلیل تماس‌های فروش مشتری و به‌روزرسانی CRM با Whisper و GPT-4

این گردش کار، تحلیل تماس‌های فروش مشتری را خودکار می‌کند و از هوش مصنوعی برای رونویسی صدا، استخراج بینش‌های کلیدی و به‌روزرسانی CRM شما استفاده می‌کند. این گردش کار از Whisper OpenAI برای رونویسی و GPT-4 برای تحلیل هوشمند بهره می‌برد و به طور یکپارچه با HubSpot و Google Sheets برای ثبت جامع و ارتباطات ادغام می‌شود.

**کاتالوگ n8n Axeto.ai:** [https://axeto.ai/n8n](https://axeto.ai/n8n)

---

## ۱. نمای کلی گردش کار

**هدف:**
این گردش کار، ضبط تماس‌های فروش و فراداده‌های (metadata) مرتبط با آن را دریافت می‌کند. صدا را با استفاده از OpenAI Whisper رونویسی می‌کند، "هوش مکالمه" ساختاریافته را با GPT-4 (از طریق گره LangChain Agent) استخراج می‌کند، تحلیل را با زمینه مخاطب HubSpot غنی‌سازی می‌کند، CRM HubSpot را به‌روزرسانی می‌کند، خلاصه تماس را به تیم فروش ایمیل می‌کند، یک مسیر حسابرسی را در Google Sheets ثبت می‌کند و یک تأییدیه ساختاریافته را از طریق پاسخ وب‌هوک به آپلودکننده بازمی‌گرداند.

**موارد استفاده هدف:**
*   **خودکارسازی اداری پس از تماس:** فرآیند ایجاد یادداشت‌های تماس، شناسایی مراحل بعدی، ارزیابی ریسک و به‌روزرسانی مراحل معامله را ساده کنید.
*   **مربیگری فروش:** با تجزیه و تحلیل کارت‌های امتیازدهی تماس، شناسایی اعتراضات و اندازه‌گیری معیارهای زمان صحبت، داده‌های عینی را برای مربیگری ارائه دهید.
*   **مسیرهای انطباق و حسابرسی:** یک گزارش متمرکز و قابل حسابرسی از فعالیت‌های تماس در Google Sheets حفظ کنید.

### ۱.۱ بارگذاری و اعتبارسنجی تماس
این مرحله اولیه، ضبط تماس و فراداده آن را از طریق یک وب‌هوک دریافت می‌کند. این مرحله اعتبارسنجی ضروری را انجام می‌دهد تا اطمینان حاصل شود که داده‌ها قبل از ادامه پردازش هوش مصنوعی که منابع زیادی مصرف می‌کند، قابل استفاده هستند.

### ۱.۲ رونویسی و بافر انتظار
گردش کار فایل صوتی را واکشی می‌کند، آن را با استفاده از OpenAI Whisper رونویسی می‌کند و سپس یک تأخیر کوتاه ایجاد می‌کند. این بافر به تثبیت گردش کار قبل از تجزیه و تحلیل هوش مصنوعی پایین‌دستی کمک می‌کند.

### ۱.۳ هوش GPT-4 و غنی‌سازی زمینه CRM
در اینجا، صدای رونویسی شده برای استخراج معیارهای کلیدی و داده‌های ساختاریافته پردازش می‌شود. سپس گردش کار این اطلاعات را با واکشی زمینه مخاطب مربوطه از HubSpot غنی‌سازی می‌کند. در نهایت، GPT-4 برای تولید هوش ساختاریافته در قالب JSON به کار گرفته می‌شود که سپس برای استفاده بیشتر تجزیه می‌شود.

### ۱.۴ به‌روزرسانی CRM، خلاصه و حسابرسی
مرحله نهایی، CRM HubSpot را با هوش مکالمه استخراج شده به‌روزرسانی می‌کند، فعالیت تماس را ثبت می‌کند، خلاصه ایمیل را به تیم فروش ارسال می‌کند، یک رکورد حسابرسی را در Google Sheets می‌نویسد و یک پاسخ تأییدیه را به وب‌هوک اصلی بازمی‌گرداند.

---

## ۲. تحلیل گره (Node) جزئی

### بلوک ۱: بارگذاری و اعتبارسنجی تماس

**مرور کلی:**
این بلوک به دریافت اولیه ضبط تماس‌ها می‌پردازد. فراداده (metadata) و فایل صوتی ورودی را برای اطمینان از یکپارچگی داده‌ها و انطباق فرمت قبل از شروع رونویسی و تحلیل هوش مصنوعی، اعتبارسنجی می‌کند و در نتیجه استفاده از API را بهینه می‌سازد.

**گره‌های درگیر:**
*   یادداشت چسبان (توضیح کلی)
*   یادداشت چسبان (برچسب بلوک)
*   دریافت بارگذاری ضبط تماس (Webhook Trigger)
*   اعتبارسنجی فراداده و صدای تماس (Code Node)

#### گره: یادداشت چسبان (توضیح کلی)
*   **نوع / نقش:** مستندسازی (یادداشت چسبان)
*   **پیکربندی:** مروری جامع از گردش کار، شامل دستورالعمل‌های راه‌اندازی، نمونه بارگذاری‌ها (payloads) و ویژگی‌های کلیدی را ارائه می‌دهد.
*   **اتصالات:** ندارد (فقط توضیحات).

#### گره: یادداشت چسبان (برچسب بلوک)
*   **نوع / نقش:** برچسب بلوک (یادداشت چسبان)
*   **محتوا:** `## ۱. بارگذاری و اعتبارسنجی تماس`

#### گره: دریافت بارگذاری ضبط تماس
*   **نوع / نقش:** Webhook Trigger
*   **پیکربندی کلیدی:**
    *   **HTTP Method:** `POST`
    *   **Path:** `call-upload`
    *   **Response Mode:** `responseNode` (انتظار یک گره `Respond to Webhook` را در ادامه گردش کار دارد).
    *   **Webhook ID:** `call-analyzer-webhook`
*   **ورودی/خروجی:**
    *   **خروجی:** به `اعتبارسنجی فراداده و صدای تماس` متصل می‌شود.
*   **نسخه:** Webhook Node v2.
*   **موارد لبه / شکست:**
    *   ممکن است در صورت ارسال فقط JSON به جای فایل باینری، شکست بخورد.
    *   اگر تماس‌گیرنده داده‌های چندبخشی (multipart) ارسال کند، بارگذاری JSON ممکن است در زیر `body` قرار گیرد و نیاز به پردازش پایین‌دستی داشته باشد.
    *   خطاهای گردش کار قبل از رسیدن به گره `Respond to Webhook` می‌تواند منجر به پاسخ ناقص به تماس‌گیرنده شود.

#### گره: اعتبارسنجی فراداده و صدای تماس
*   **نوع / نقش:** Code Node (اعتبارسنجی و نرمال‌سازی)
*   **گزینه‌های پیکربندی کلیدی:**
    *   بارگذاری را از `$input.item.json.body || $input.item.json` می‌خواند تا هر دو فرمت JSON خام و بسته‌بندی شده در بدنه را پوشش دهد.
    *   **فراداده مورد نیاز:** حضور `callId`, `repEmail`, `repName`, `contactEmail`, `contactName`, و `companyName` را اجباری می‌کند.
    *   **اعتبارسنجی ایمیل:** از regex برای اعتبارسنجی فرمت ایمیل استفاده می‌کند.
    *   **منبع صدا:** نیاز به `audioUrl`/`audio_url` یا یک پیوست صوتی باینری در `$input.item.binary.audio` دارد.
    *   **محدودیت مدت زمان:** تماس‌های بیش از ۲ ساعت (`durationSecs > 7200`) را رد می‌کند.
    *   **نرمال‌سازی مرحله معامله (Deal Stage):** `dealStage` را به حروف کوچک با خط زیر تبدیل کرده و با یک لیست مجاز اعتبارسنجی می‌کند؛ در صورت نامعتبر بودن، به طور پیش‌فرض `unknown` قرار می‌گیرد.
    *   **تولید شناسه پردازش (Processing ID):** یک `processingId` منحصر به فرد در فرمت `PROC-<timestamp>-<random>` ایجاد می‌کند.
*   **خروجی‌ها:**
    *   یک شیء `callRecord` حاوی فیلدهای نرمال‌شده مانند `callDurationMins`, `receivedAt`, `status: 'VALIDATED'`, و زبان پیش‌فرض `en` تولید می‌کند.
*   **اتصالات ورودی/خروجی:**
    *   **ورودی:** داده‌ها را از `دریافت بارگذاری ضبط تماس` دریافت می‌کند.
    *   **خروجی:** به `دریافت فایل صوتی از URL` متصل می‌شود.
*   **موارد لبه / شکست:**
    *   برای فیلدهای گمشده، ایمیل‌های نامعتبر، عدم وجود صدا، یا تماس‌های بیش از حد مجاز، خطاهای سخت (متوقف کردن گردش کار) ایجاد می‌کند.
    *   اگر صدای باینری ارائه شود اما `audioUrl` وجود نداشته باشد، گره `دریافت فایل صوتی از URL` یک URL `null` دریافت خواهد کرد که به طور بالقوه باعث شکاف منطقی می‌شود (برای جزئیات به یادداشت‌های بازتولید مراجعه کنید).
*   **نسخه:** Code Node v2.

---

### بلوک ۲: رونویسی و بافر انتظار

**مرور کلی:**
این بلوک مسئول دریافت فایل صوتی (در صورت ارائه `audioUrl`)، رونویسی آن با استفاده از OpenAI Whisper، و سپس مکث کوتاه برای اطمینان از جریان پایدار داده‌ها برای مراحل پردازش بعدی است.

**گره‌های درگیر:**
*   یادداشت چسبان (برچسب بلوک)
*   دریافت فایل صوتی از URL (HTTP Request Node)
*   رونویسی صدا با OpenAI Whisper (HTTP Request Node)
*   انتظار — بافر رونویسی (۱۵ ثانیه) (Wait Node)

#### گره: یادداشت چسبان (برچسب بلوک)
*   **نوع / نقش:** برچسب بلوک (یادداشت چسبان)
*   **محتوا:** `## ۲. رونویسی و بافر انتظار`

#### گره: دریافت فایل صوتی از URL
*   **نوع / نقش:** HTTP Request Node (دانلود صدا)
*   **پیکربندی کلیدی:**
    *   **URL:** `{{ $json.callRecord.audioUrl }}`
    *   **Response Format:** `file`
    *   **Timeout:** `30s`
    *   **Continue on Fail:** فعال
*   **اتصالات ورودی/خروجی:**
    *   **ورودی:** داده‌ها را از `اعتبارسنجی فراداده و صدای تماس` دریافت می‌کند.
    *   **خروجی:** به `رونویسی صدا با OpenAI Whisper` متصل می‌شود.
*   **موارد لبه / شکست:**
    *   اگر `audioUrl` گمشده یا نامعتبر باشد، درخواست شکست می‌خورد. با `continueOnFail=true`، یک بارگذاری خطا به جلو ارسال می‌شود که احتمالاً باعث شکست گره Whisper می‌شود.
    *   یک مهلت ۳۰ ثانیه‌ای ممکن است برای فایل‌های صوتی بزرگ یا نقاط پایانی ذخیره‌سازی کند کافی نباشد.
    *   URL هایی که نیاز به احراز هویت دارند (مانند URL های بدون امضا) با خطاهای ۴۰۱/۴۰۳ شکست می‌خورند.

#### گره: رونویسی صدا با OpenAI Whisper
*   **نوع / نقش:** HTTP Request Node (OpenAI Transcription API)
*   **پیکربندی کلیدی:**
    *   **Method:** `POST`
    *   **URL:** `https://api.openai.com/v1/audio/transcriptions`
    *   **Body:** به صورت multipart form-data پیکربندی شده است. **توجه:** پیکربندی JSON ممکن است به طور صریح تمام فیلدهای multipart (`file`, `model`, `language`) را نشان ندهد؛ اینها باید به صورت دستی تنظیم شوند.
    *   **Authentication:** از نوع اعتبار از پیش تعریف شده `openAiApi` استفاده کنید.
    *   **Headers:** به طور خودکار `Authorization: Bearer {{$credentials.apiKey}}` را اضافه می‌کند.
    *   **Timeout:** `120s`
    *   **Continue on Fail:** فعال
*   **اتصالات ورودی/خروجی:**
    *   **ورودی:** خروجی فایل باینری را از `دریافت فایل صوتی از URL` دریافت می‌کند.
    *   **خروجی:** به `انتظار — بافر رونویسی (۱۵ ثانیه)` متصل می‌شود.
*   **نسخه:** HTTP Request Node v4.2.
*   **موارد لبه / شکست:**
    *   فیلدهای چندبخشی مورد نیاز (`model=whisper-1`, `file`) منجر به خطاهای ۴۰۰ می‌شود.
    *   فایل‌های صوتی بزرگ ممکن است از محدودیت‌های OpenAI یا مهلت ۱۲۰ ثانیه‌ای فراتر روند.
    *   اگر دانلود صدای بالادستی شکست خورده باشد، رونویسی Whisper شکست می‌خورد و منجر به خطاهای تجزیه پایین‌دستی می‌شود.

#### گره: انتظار — بافر رونویسی (۱۵ ثانیه)
*   **نوع / نقش:** Wait Node (تأخیر)
*   **پیکربندی کلیدی:** اجرای برنامه را به مدت `۱۵ ثانیه` متوقف می‌کند.
*   **اتصالات ورودی/خروجی:**
    *   **ورودی:** داده‌ها را از `رونویسی صدا با OpenAI Whisper` دریافت می‌کند.
    *   **خروجی:** به `تجزیه و ساختاردهی متن رونویسی شده` متصل می‌شود.
*   **موارد لبه / شکست:**
    *   این یک تأخیر ساده است، نه یک مکانیزم نظرسنجی ناهمزمان. این تضمین نمی‌کند که رونویسی کامل شود اگر فرآیند ذاتاً ناهمزمان باشد (که نقطه پایانی API Whisper اینطور نیست).
*   **نسخه:** Wait Node v1.1.

---

### بلوک ۳: هوش GPT-4 و غنی‌سازی زمینه CRM

**مرور کلی:**
این بلوک رونویسی خام Whisper را به داده‌های ساختاریافته تبدیل می‌کند، معیارهای مرتبط را محاسبه می‌کند، و تحلیل را با اطلاعات تماس از HubSpot غنی می‌سازد. سپس از GPT-4 برای تولید بینش‌های خاص و ساختاریافته مناسب برای به‌روزرسانی‌های CRM استفاده می‌کند.

**گره‌های درگیر:**
*   یادداشت چسبان (برچسب بلوک)
*   تجزیه و ساختاردهی متن رونویسی شده (Code Node)
*   دریافت تاریخچه تماس CRM (HTTP Request Node)
*   تحلیل هوش تماس GPT-4 (LangChain Agent Node)
*   مدل GPT-4 (LangChain Chat Model Node)
*   تجزیه خروجی هوش GPT-4 (Code Node)

#### گره: یادداشت چسبان (برچسب بلوک)
*   **نوع / نقش:** برچسب بلوک (یادداشت چسبان)
*   **محتوا:** `## ۳. هوش GPT-4 و غنی‌سازی زمینه CRM`
*   **توجه:** گردش کار داده‌ها را از طریق API HubSpot غنی می‌سازد، نه ابزارهای MCP همانطور که برچسب ممکن است نشان دهد.

#### گره: تجزیه و ساختاردهی متن رونویسی شده
*   **نوع / نقش:** Code Node (پردازش متن رونویسی شده و معیارها)
*   **پیکربندی/منطق کلیدی:**
    *   پاسخ Whisper را از `$('رونویسی صدا با OpenAI Whisper').item.json` می‌خواند.
    *   فراداده تماس را از `$('اعتبارسنجی فراداده و صدای تماس').item.json.callRecord` می‌خواند.
    *   اگر پاسخ Whisper گمشده باشد یا فیلد `.error` داشته باشد، شکست می‌خورد.
    *   اگر متن رونویسی شده خالی باشد، شکست می‌خورد.
    *   **محاسبه می‌کند:**
        *   `wordCount`
        *   `wordsPerMinute` (با استفاده از `whisperResponse.duration` یا مدت زمان تماس).
        *   `estimatedSpeakerTurns` (بر اساس وقفه‌های بین بخش‌ها طولانی‌تر از ۱.۵ ثانیه).
    *   **قطعه‌بندی (Chunking):** متن رونویسی شده را به قطعاتی با حداکثر ۱۲۰۰۰ کاراکتر تقسیم می‌کند. **به طور حیاتی، فقط قطعه اول به عنوان `transcriptChunk` برای تحلیل GPT-4 ارسال می‌شود.**
*   **اتصالات ورودی/خروجی:**
    *   **ورودی:** داده‌ها را از `انتظار — بافر رونویسی` دریافت می‌کند.
    *   **خروجی:** به `دریافت تاریخچه تماس CRM` متصل می‌شود.
*   **موارد لبه / شکست:**
    *   اگر Whisper هیچ `segments` ارائه ندهد، `estimatedSpeakerTurns` به طور ایمن به `0` پیش‌فرض می‌شود.
    *   برای تماس‌های طولانی، تحلیل به اولین قطعه محدود می‌شود و ممکن است اطلاعات کلیدی مانند اعتراضات یا مراحل بعدی از بخش‌های بعدی مکالمه را از دست بدهد.
*   **نسخه:** Code Node v2.

#### گره: دریافت تاریخچه تماس CRM
*   **نوع / نقش:** HTTP Request Node (جستجوی مخاطب HubSpot)
*   **پیکربندی کلیدی:**
    *   **Method:** `POST`
    *   **URL:** `https://api.hubapi.com/crm/v3/contacts/search`
    *   **JSON Body:** مخاطبین را بر اساس `email == {{ $json.callRecord.contactEmail }}` فیلتر می‌کند.
    *   **Properties Requested:** شامل فیلدهایی مانند ایمیل، نام، شرکت، مرحله و یادداشت‌ها است.
    *   **Authentication:** از اعتبار از پیش تعریف شده `hubspotApi` استفاده می‌کند.
    *   **Timeout:** `10s`
    *   **Continue on Fail:** فعال
*   **اتصالات ورودی/خروجی:**
    *   **ورودی:** داده‌ها را از `تجزیه و ساختاردهی متن رونویسی شده` دریافت می‌کند.
    *   **خروجی:** به `تحلیل هوش تماس GPT-4` متصل می‌شود.
*   **موارد لبه / شکست:**
    *   احراز هویت گمشده یا منقضی شده منجر به خطای ۴۰۱ می‌شود؛ گردش کار ادامه می‌یابد، اما اعلان GPT ممکن است فاقد زمینه CRM باشد.
    *   اگر هیچ مخاطبی یافت نشود، منطق تجزیه پایین‌دستی از یک جایگزین برای `crmContactId` استفاده خواهد کرد.
    *   محدودیت‌های نرخ HubSpot (خطاهای ۴۲۹) ممکن است رخ دهد.

#### گره: تحلیل هوش تماس GPT-4
*   **نوع / نقش:** LangChain Agent Node (تولید هوش ساختاریافته)
*   **پیکربندی کلیدی:**
    *   **Prompt:** شامل فراداده تماس، قطعه متن رونویسی شده، و یک نگهدارنده برای زمینه CRM است. **توجه:** گردش کار در حال حاضر از `{{ $json.crmContext || 'No prior CRM history...' }}` استفاده می‌کند اما به طور صریح پاسخ HubSpot را به `$json.crmContext` نگاشت نمی‌کند. داده‌های HubSpot در JSON آیتم موجود است اما نیاز به یک مرحله نگاشت دارد تا به این متغیر خلاصه شود.
    *   **Response Format:** اکیداً نیاز به خروجی JSON دارد که مطابق با یک طرح از پیش تعریف شده باشد (مانند احساسات، قصد، اعتراضات، سیگنال‌های خرید، کارت امتیازی، پیشنهادات به‌روزرسانی CRM، پیش‌نویس ایمیل پیگیری).
    *   **System Message:** خروجی "فقط JSON معتبر" را اجباری می‌کند.
    *   **Model:** مدل هوش مصنوعی از طریق اتصال به گره `مدل GPT-4` (`ai_languageModel`) ارائه می‌شود.
*   **اتصالات ورودی/خروجی:**
    *   **ورودی اصلی:** داده‌ها را از `دریافت تاریخچه تماس CRM` دریافت می‌کند.
    *   **ورودی مدل زبان هوش مصنوعی:** پیکربندی مدل را از گره `مدل GPT-4` دریافت می‌کند.
    *   **خروجی اصلی:** به `تجزیه خروجی هوش GPT-4` متصل می‌شود.
*   **نسخه:** LangChain Agent Node v1.6.
*   **موارد لبه / شکست:**
    *   مدل ممکن است همچنان متن غیر JSON را خروجی دهد (مانند توضیحات اضافی، کاماهای دنباله‌دار)، که باعث شکست تجزیه‌کننده پایین‌دستی می‌شود.
    *   اگر قطعه متن رونویسی شده بخش‌های حیاتی مکالمه را حذف کند (به دلیل محدودیت قطعه‌بندی)، کیفیت هوش تولید شده کاهش می‌یابد.
    *   **خطر محدودیت توکن:** اعلان ترکیبی و قطعه متن رونویسی شده ممکن است از پنجره زمینه مدل فراتر رود. برش توسط مدل می‌تواند منجر به JSON نامعتبر شود.

#### گره: مدل GPT-4
*   **نوع / نقش:** LangChain Chat Model Node (OpenAI)
*   **پیکربندی کلیدی:**
    *   **Model:** `gpt-4o`
    *   **Temperature:** `0.2` (برای خروجی قطعی‌تر)
    *   **Max Tokens:** `4000` (بودجه پاسخ)
    *   **Credential:** OpenAI API
*   **اتصالات:**
    *   پیکربندی مدل را از طریق `ai_languageModel` به گره `تحلیل هوش تماس GPT-4` خروجی می‌دهد.
*   **موارد لبه / شکست:**
    *   اگر `max_tokens` برای پاسخ کامل JSON و هرگونه نقل قول لازم کافی نباشد، خروجی ممکن است بریده شود و منجر به شکست تجزیه شود.
    *   اعتبارات API نامعتبر یا خارج از محدوده باعث شکست گره عامل می‌شود.

#### گره: تجزیه خروجی هوش GPT-4
*   **نوع / نقش:** Code Node (تجزیه و ادغام JSON)
*   **منطق کلیدی:**
    *   متن تولید شده توسط هوش مصنوعی را از فیلدهای بالقوه مختلف استخراج می‌کند (مانند `response/output/text`, `content[0].text/message.content`).
    *   اگر وجود داشته باشد، حصارهای کد ```json را حذف می‌کند.
    *   متن پاک شده را به عنوان JSON تجزیه می‌کند. در صورت شکست، با یک پیش‌نمایش خام (۳۰۰ کاراکتر اول) خطا ایجاد می‌کند.
    *   داده‌های ساختاریافته مانند `callData` را از JSON تجزیه شده استخراج می‌کند.
*   **اتصالات ورودی/خروجی:**
    *   **ورودی:** داده‌ها را از `تحلیل هوش تماس GPT-4` دریافت می‌کند.
    *   **خروجی:** به بلوک ۴ متصل می‌شود.
*   **نسخه:** Code Node v2.
*   **موارد لبه / شکست:**
    *   اگر خروجی GPT-4 به شدت نامعتبر باشد (مثلاً حاوی جاوا اسکریپت یا HTML)، تجزیه ممکن است شکست بخورد و منجر به خطای سخت شود.
    *   اگر داده‌های مورد انتظار در JSON تجزیه شده وجود نداشته باشند، گره‌های پایین‌دستی ممکن است با خطاهای `undefined` مواجه شوند.

---

### بلوک ۴: به‌روزرسانی CRM، خلاصه و حسابرسی

**مرور کلی:**
این بلوک نهایی، داده‌های پردازش شده را به سیستم‌های مختلف می‌فرستد: CRM HubSpot را به‌روزرسانی می‌کند، یک خلاصه برای تیم فروش ایمیل می‌کند، یک رکورد حسابرسی در Google Sheets ایجاد می‌کند، و یک پاسخ موفقیت‌آمیز را به نقطه پایانی وب‌هوک اصلی بازمی‌گرداند.

**گره‌های درگیر:**
*   یادداشت چسبان (برچسب بلوک)
*   به‌روزرسانی مخاطب HubSpot (HubSpot Node)
*   ایجاد یا به‌روزرسانی معامله HubSpot (HubSpot Node)
*   ارسال خلاصه تماس به تیم فروش (Send Email Node)
*   ثبت رکورد حسابرسی در Google Sheets (Google Sheets Node)
*   پاسخ به وب‌هوک (Respond to Webhook Node)

#### گره: یادداشت چسبان (برچسب بلوک)
*   **نوع / نقش:** برچسب بلوک (یادداشت چسبان)
*   **محتوا:** `## ۴. به‌روزرسانی CRM، خلاصه و حسابرسی`

#### گره: به‌روزرسانی مخاطب HubSpot
*   **نوع / نقش:** HubSpot Node (به‌روزرسانی مخاطب)
*   **پیکربندی کلیدی:**
    *   **Operation:** `Upsert` (ایجاد یا به‌روزرسانی)
    *   **Object Type:** `Contacts`
    *   **Identifier Field:** `email`
    *   **Identifier Value:** `{{ $json.callRecord.contactEmail }}`
    *   **Properties to Set:** شامل فیلدهایی مانند `last_call_summary`, `last_call_outcome`, `last_call_date`, و `hs_lead_status` (بر اساس `callData.crmUpdate.leadStatus`).
*   **اتصالات ورودی/خروجی:**
    *   **ورودی:** داده‌ها را از `تجزیه خروجی هوش GPT-4` دریافت می‌کند.
    *   **خروجی:** به `ایجاد یا به‌روزرسانی معامله HubSpot` متصل می‌شود.
*   **موارد لبه / شکست:**
    *   اگر ایمیل مخاطب در داده‌های ورودی گمشده باشد، به‌روزرسانی شکست می‌خورد.
    *   اگر فیلدهای مورد نیاز برای به‌روزرسانی در `callData.crmUpdate` وجود نداشته باشند، آن فیلدهای خاص به‌روز نمی‌شوند.
    *   خطاهای احراز هویت HubSpot یا محدودیت‌های نرخ می‌تواند باعث شکست شود.

#### گره: ایجاد یا به‌روزرسانی معامله HubSpot
*   **نوع / نقش:** HubSpot Node (ایجاد/به‌روزرسانی معامله)
*   **پیکربندی کلیدی:**
    *   **Operation:** `Upsert`
    *   **Object Type:** `Deals`
    *   **Identifier Field:** `dealName` (با استفاده از `{{ $json.callRecord.companyName }} - {{ $json.callRecord.contactName }} - {{ $moment().format('YYYY-MM-DD') }}`)
    *   **Properties to Set:** شامل `dealstage` (بر اساس `callData.crmUpdate.dealStage`), `amount` (اگر ارائه شده باشد), و `hubspot_owner_id` (بر اساس `callRecord.repEmail` که به ID مالک نگاشت شده است).
*   **اتصالات ورودی/خروجی:**
    *   **ورودی:** داده‌ها را از `به‌روزرسانی مخاطب HubSpot` دریافت می‌کند.
    *   **خروجی:** به `ارسال خلاصه تماس به تیم فروش` متصل می‌شود.
*   **موارد لبه / شکست:**
    *   اگر `dealName` منحصر به فرد نباشد، ممکن است یک معامله تکراری ایجاد شود.
    *   نگاشت `repEmail` به `hubspot_owner_id` نیاز به یک گره اضافی یا منطق کد دارد که در حال حاضر وجود ندارد.
    *   اگر `callData.crmUpdate.dealStage` یا `callData.crmUpdate.leadStatus` در خروجی GPT-4 وجود نداشته باشد، این فیلدها به‌روز نمی‌شوند.

#### گره: ارسال خلاصه تماس به تیم فروش
*   **نوع / نقش:** Send Email Node (ارسال ایمیل)
*   **پیکربندی کلیدی:**
    *   **To:** `{{ $json.callRecord.repEmail }}`
    *   **Subject:** `خلاصه تماس: {{ $json.callRecord.contactName }} - {{ $moment().format('YYYY-MM-DD') }}`
    *   **Body:** شامل خلاصه تماس، مراحل بعدی، و هرگونه اقدام مشخص شده از `callData.summary` و `callData.nextSteps`.
*   **اتصالات ورودی/خروجی:**
    *   **ورودی:** داده‌ها را از `ایجاد یا به‌روزرسانی معامله HubSpot` دریافت می‌کند.
    *   **خروجی:** به `ثبت رکورد حسابرسی در Google Sheets` متصل می‌شود.
*   **موارد لبه / شکست:**
    *   اگر `repEmail` گمشده باشد، ایمیل ارسال نمی‌شود.
    *   اگر خلاصه یا مراحل بعدی در خروجی GPT-4 وجود نداشته باشد، ایمیل ناقص خواهد بود.
    *   تنظیمات SMTP نامعتبر باعث شکست ارسال ایمیل می‌شود.

#### گره: ثبت رکورد حسابرسی در Google Sheets
*   **نوع / نقش:** Google Sheets Node (نوشتن ردیف)
*   **پیکربندی کلیدی:**
    *   **Operation:** `Write Row`
    *   **Sheet:** انتخاب شده از طریق احراز هویت Google Sheets.
    *   **Values:** شامل فیلدهایی مانند `callId`, `repName`, `contactName`, `companyName`, `callDate`, `callDurationMins`, `transcript`, `callSummary`, `leadStatus`, `dealStage`, و `processingId`.
*   **اتصالات ورودی/خروجی:**
    *   **ورودی:** داده‌ها را از `ارسال خلاصه تماس به تیم فروش` دریافت می‌کند.
    *   **خروجی:** به `پاسخ به وب‌هوک` متصل می‌شود.
*   **موارد لبه / شکست:**
    *   اگر احراز هویت Google Sheets نامعتبر باشد، نوشتن شکست می‌خورد.
    *   اگر ستون‌های مورد انتظار در Google Sheet وجود نداشته باشند، نوشتن شکست می‌خورد.
    *   محدودیت‌های نرخ Google Sheets ممکن است رخ دهد.

#### گره: پاسخ به وب‌هوک
*   **نوع / نقش:** Respond to Webhook Node (پاسخ HTTP)
*   **پیکربندی کلیدی:**
    *   **Response Mode:** `responseNode`
    *   **Status Code:** `200`
    *   **Response:** یک پیام JSON حاوی `processingId`, `callId`, `status: 'SUCCESS'`, و یک خلاصه کوتاه از اقدامات انجام شده (مانند `crmUpdated: true`, `emailSent: true`, `sheetLogged: true`).
*   **اتصالات ورودی/خروجی:**
    *   **ورودی:** داده‌ها را از `ثبت رکورد حسابرسی در Google Sheets` دریافت می‌کند.
*   **موارد لبه / شکست:**
    *   اگر این گره هرگز نرسد (به دلیل خطای گردش کار در مراحل قبلی)، وب‌هوک اصلی ممکن است با یک خطای مهلت یا پاسخ پیش‌فرض مواجه شود.
    *   اگر داده‌های مورد نیاز برای پاسخ (مانند `processingId`) در دسترس نباشند، پاسخ ناقص خواهد بود.
*   **نسخه:** Respond to Webhook Node v1.

---

Nodeهای استفاده‌شده

سوالات متداول

این گردش کار n8n چگونه به تحلیل تماس‌های فروش کمک می‌کند؟

این گردش کار با استفاده از Whisper، صدا را رونویسی کرده و سپس با GPT-4 بینش‌های کلیدی مانند اعتراضات مشتری، مراحل بعدی و احساسات را استخراج می‌کند. این اطلاعات برای بهبود فرآیندهای فروش و مربیگری استفاده می‌شود.

چه ابزارهایی در این گردش کار استفاده شده‌اند؟

این گردش کار از n8n به عنوان پلتفرم اتوماسیون، Whisper OpenAI برای رونویسی صدا و GPT-4 (از طریق LangChain Agent) برای تحلیل هوشمند و استخراج بینش استفاده می‌کند. همچنین با HubSpot و Google Sheets ادغام می‌شود.

مزایای اصلی استفاده از این گردش کار چیست؟

مزایای اصلی شامل خودکارسازی وظایف اداری پس از تماس، ارائه داده‌های عینی برای مربیگری فروش، حفظ مسیرهای انطباق و حسابرسی، و بهبود کلی کارایی عملیات فروش است.

workflowهای مرتبط

این workflow در کاتالوگ Axeto.ai بایگانی شده است. لایسنس اصلی متعلق به سازنده workflow است.