# Workflow Builder


# Workflow Builder

**Workflow Builder** हा **स्क्रिप्टेड कॉल फ्लो** साठी एक दृश्य, नोड-आधारित संपादक आहे. जिथे खुल्या-टोकाचा एजंट मॉडेलला पुढे काय बोलायचे ते ठरवू देतो, तिथे एक वर्कफ्लो एजंटला एक निर्धारक मार्ग देतो — पायऱ्यांचा एक क्रम जो बोलतो, विचारतो, ब्रांच करतो, साधन कॉल करतो आणि संभाषण रूट करतो. एखाद्या कॉलला एक परिभाषित स्क्रिप्ट पाळायची असेल तेव्हा हे वापरा: एका लीडला पात्र ठरवणे, अपॉइंटमेंट बुक करणे, एका सपोर्ट समस्येचे ट्रायएज करणे किंवा एक सर्वेक्षण संकलित करणे. तुम्ही हे एजंट बिल्डरमध्ये **/agent/setup** वर **Tools** टॅबमधून, **Open Workflow Builder** बटण वापरून उघडता.

एक वर्कफ्लो एकाच एजंटचा असतो. कॉलच्या वेळी एक **सुपरवायझर** संभाषण पाहतो, कॉलर कोणता **इंटेंट** व्यक्त करत आहे ते ठरवतो, आणि त्या इंटेंटच्या **पायऱ्या** क्रमाने चालवतो. पायऱ्यांच्या आत एजंट ज्या कार्यांचा वापर करू शकतो ती नेमकी तीच आहेत जी तुम्ही [Tools टॅबवर](./tools-mcp) बांधली आहेत — वर्कफ्लो तुम्ही परवानगी न दिलेल्या कोणत्याही साधनापर्यंत पोहोचू शकत नाही.

## वर्कफ्लोची रचना कशी असते

![Workflow Builder](/img/screenshots/portal/workflow-builder.png)
*Workflow Builder: n8n-शैलीच्या नोड कॅनव्हासवर निश्चित कॉल फ्लो डिझाइन करा, सोबत वैकल्पिक सुपरवायझर प्रॉम्प्ट.*

एका वर्कफ्लोचे तीन नेस्टेड स्तर असतात:

- **Graph** — प्रति एजंट एक वर्कफ्लो. तो एक वैकल्पिक **सुपरवायझर प्रॉम्प्ट** बाळगतो (इंटेंट रूट करणाऱ्या AI सुपरवायझरसाठी सानुकूल सूचना). तुम्ही ग्राफ तयार करेपर्यंत, बिल्डर एकदाच दिसणारी **Create Workflow Graph** स्क्रीन सुपरवायझर-प्रॉम्प्ट फील्डसह दाखवतो.
- **Intents** — संभाषणाच्या शाखा. प्रत्येक इंटेंटला एक **display name**, एक **internal name**, एक **description** (सुपरवायझर मॉडेलला दाखवले जाते जेणेकरून तो इंटेंट जुळवू शकेल), **trigger phrases** ची एक सूची, एक **default intent** टॉगल, आणि एक वैकल्पिक **fallback response** असतो जो त्याच्या सर्व पायऱ्या अयशस्वी झाल्यास वापरला जातो. सुपरवायझर तो इंटेंट निवडतो ज्याचे वर्णन आणि ट्रिगर वाक्यांश कॉलरने जे म्हटले त्याला सर्वात चांगले जुळतात.
- **Steps** — एका इंटेंटमधील क्रमबद्ध क्रिया. पायऱ्या डिफॉल्टपणे वरून खाली चालतात, आणि प्रत्येक पायरीचा एक प्रकार असतो जो ती काय करते ते ठरवतो.

कॅनव्हासवर हे एका हिरव्या **Start** नोडच्या रूपात वाचले जाते जो प्रति शाखा एका **Intent** नोडमध्ये वाहतो, त्या इंटेंटच्या **Step** नोड त्याखाली रचलेल्या असतात. एक मिनीमॅप, झूम नियंत्रणे आणि एक ठिपकेदार पार्श्वभूमी मोठ्या फ्लोमध्ये नेव्हिगेट करण्यास मदत करतात.

:::info[सुपरवायझर ज्या प्रकारे रूट करतो ते इंटेंट आहेत]

सुपरवायझर कॉलरचे कथन प्रत्येक इंटेंटच्या **description** आणि **trigger phrases** शी जुळवतो, म्हणून तुम्ही एखाद्या सहकाऱ्याला थोडक्यात सांगाल तसे वर्णन लिहा ("User wants to book or schedule an appointment") आणि काही नैसर्गिक ट्रिगर वाक्यांश जोडा. एका इंटेंटला **default** म्हणून चिन्हांकित करा जेणेकरून स्पष्टपणे इतर कशाशीही न जुळणारी संभाषणे पकडली जातील.

:::

## पायरी प्रकार

**Add Step** सह एक पायरी जोडा (एक इंटेंट किंवा त्याची एखादी पायरी निवडल्यानंतर), जे नोड पिकर उघडते. पिकर पायरी प्रकारांना **Conversation**, **Logic**, **Integrations** आणि **Call Control** मध्ये गटबद्ध करतो. तेरा प्रकार आहेत:

- **Message** — बॉट कॉलरला एक ओळ बोलतो.
- **Question** — बॉट काहीतरी विचारतो आणि उत्तर एका **variable** मध्ये साठवतो. तुम्ही एक **validation type** (Any, Number, Email, Date, Yes / No किंवा Phone) आणि उत्तर सत्यापनात अयशस्वी झाल्यावर वापरला जाणारा एक **re-ask message** निवडता.
- **Condition** — फ्लो ब्रांच करतो. तुम्ही एक **field** (एक सत्र व्हेरिएबल), एक **operator** (equals, not equals, contains, does not contain, greater than, less than, matches regex, is empty, is not empty) आणि एक **value** निवडता, मग **If True** आणि **If False** विशिष्ट पायऱ्यांकडे रूट करता.
- **Tool Call** — एजंटला बांधलेले एक **built-in** किंवा **custom** कार्य कॉल करते. तुम्ही साधन प्रकार, कार्य, आणि एक वैकल्पिक **input mapping** (JSON) निवडता जे पायरी इनपुट सत्र व्हेरिएबलशी मॅप करते.
- **Appointment** — त्याच्या स्वतःच्या इनपुट मॅपिंगसह, एका बुकिंग कार्याविरुद्ध एक अपॉइंटमेंट-बुकिंग उप-फ्लो चालवते.
- **Webhook** — एका बाह्य URL ला एक HTTP विनंती करते. तुम्ही **method** (GET, POST, PUT, PATCH, DELETE), **URL**, वैकल्पिक **headers** (JSON), एक **body template**, आणि प्रतिसाद **save the response** करण्यासाठी एक व्हेरिएबल सेट करता.
- **Transfer** — कॉल दुसऱ्या एका **phone number or queue** कडे सोपवतो, ट्रान्सफरपूर्वी घोषित केलेल्या एका वैकल्पिक संदेशासह. कॉल ट्रान्सफर एंड-टू-एंड कसे वागतात यासाठी [कॉलिंग आणि टेलिफोनी](./calling-telephony) पहा.
- **End Call** — कॉल बंद करते, वैकल्पिकरित्या प्रथम एक **goodbye message** बोलून.
- **Delay** — पुढे चालू ठेवण्यापूर्वी एका ठरलेल्या सेकंदांच्या संख्येपर्यंत (1–60) शांतपणे प्रतीक्षा करते.
- **Set Variable** — एक मूल्य (स्थिर मजकूर किंवा दुसऱ्या व्हेरिएबलचा संदर्भ) एका सत्र व्हेरिएबलमध्ये साठवते.
- **Send Notification** — एक नामित टेम्पलेट आणि एक व्हेरिएबल मॅपिंग (JSON) वापरून एक **SMS**, **email** किंवा **WhatsApp** संदेश पाठवते.
- **Static Response** — मजकुराचा एक निश्चित भाग बोलते. हा एक लेगसी नोड आहे; नवीन फ्लोसाठी **Message** ला प्राधान्य द्या.
- **Play Audio** — कॉलरला एक ऑडिओ फाइल (एक सार्वजनिक WAV किंवा MP3 URL) वाजवते.

प्रत्येक पायरी **उजव्या-हाताच्या पॅनेलमध्ये** कॉन्फिगर केली जाते जे एक नोड निवडल्यावर उघडते. पॅनेल फक्त त्या पायरीच्या प्रकाराशी संबंधित फील्ड दाखवते, तसेच पायरीचे नाव आणि एक प्रकार निवडक.

:::tip[व्हेरिएबल तुमच्या पायऱ्या एकमेकांशी जोडतात]

एक **Question** किंवा **Set Variable** पायरी तिचा निकाल तुम्ही निवडलेल्या नावाखाली साठवते. त्याचा नंतर संदर्भ घ्या — एका Message मध्ये, एका Condition च्या field मध्ये, एका Webhook body मध्ये किंवा एका notification mapping मध्ये — `{variable_name}` सारख्या कर्ली-ब्रेस सिंटॅक्ससह. अशा प्रकारे एक फ्लो कॉलरने काय म्हटले ते लक्षात ठेवतो आणि ते पायऱ्यांमध्ये पुढे नेतो.

:::

## ब्रांचिंग आणि रूटिंग

पायऱ्यांना एका सरळ रेषेत चालण्याची गरज नाही:

- एक **Condition** पायरी **True** आणि **False** आउटपुट उघड करते. एका व्हेरिएबलच्या मूल्यावर ब्रांच करण्यासाठी प्रत्येक एका लक्ष्य पायरीशी वायर करा (किंवा ते **Continue in order** वर ठेवा).
- इतर प्रत्येक पायरी प्रकाराला **On Success** आणि **On Failure** रूटिंग असते. डिफॉल्टपणे एक पायरी क्रमातील पुढच्याकडे चालू राहते; इतरत्र उडी मारण्यासाठी ही सेट करा — उदाहरणार्थ, एका अयशस्वी Tool Call ला एका रिकव्हरी संदेशाकडे रूट करा.

तुम्ही रूटिंग दोन प्रकारे सेट करू शकता: कॉन्फिग पॅनेलमध्ये लक्ष्य पायरी निवडा, किंवा कॅनव्हासवर एका पायरीच्या आउटपुट हँडलवरून (हिरवा **OK** / **TRUE** हँडल किंवा लाल **FAIL** / **FALSE** हँडल) दुसऱ्या पायरीकडे एक **कनेक्शन ओढा**. कॅनव्हासवर काढलेली कनेक्शन्स लगेच वर्कफ्लोमध्ये जतन होतात.

## तयार करणे आणि जतन करणे

बिल्डर बदल एका मोठ्या जतनाऐवजी तुम्ही करताच टिकवतो:

- **Add Intent** एक नवीन शाखा तयार करते; तिचे नाव, वर्णन आणि ट्रिगर वाक्यांश भरण्यासाठी त्यावर क्लिक करा, मग पॅनेलमध्ये **Save Changes** करा.
- **Add Step** तुम्ही निवडलेल्या प्रकाराची एक पायरी घालते; ती पॅनेलमध्ये कॉन्फिगर करा आणि **Save Changes** करा.
- एका नोडवरील वर / खाली शेव्हरॉन इंटेंट आणि पायऱ्या **पुनर्क्रमित** करतात; एक नोड हटवणे (त्याच्या ट्रॅश चिन्हाद्वारे किंवा Delete की द्वारे) प्रथम पुष्टी मागते.
- टूलबारचे **Save** बटण **सुपरवायझर प्रॉम्प्ट** साठवते; एक अंबर ठिपका न जतन केलेले प्रॉम्प्ट संपादन चिन्हांकित करतो.

## एका टेम्पलेटमधून सुरुवात करा

सुरवातीपासून तयार करण्याऐवजी, **Templates** बटण तयार फ्लो देते जे तुम्ही लोड करून मग संपादित करू शकता: **Lead Qualification**, **Appointment Booking**, **Customer Support**, **NPS Survey**, **Payment Reminder** आणि **Customer Onboarding**. प्रत्येक त्याच्या पायऱ्यांसह एक पूर्ण इंटेंट टाकते, ज्यात प्रश्न, अटी आणि गुडबाय संदेश समाविष्ट आहेत. एक टेम्पलेट लागू करणे तुमच्या विद्यमान वर्कफ्लोला बदलण्याऐवजी त्यात **जोडते**, त्यामुळे तुम्ही अनेक एकत्र करू शकता किंवा तुम्हाला नको असलेले छाटू शकता.

## OpenAPI स्पेकमधून कार्ये आयात करा

**Import API** बटण एका विद्यमान API ला एजंट कार्यांत बदलते जी तुम्ही **Tool Call** पायऱ्यांमधून कॉल करू शकता. एक **OpenAPI / Swagger** स्पेक पुरवा — URL द्वारे किंवा ते पेस्ट करून (OpenAPI 2.0 किंवा 3.x, JSON किंवा YAML) — आणि आयातक ऑपरेशन्स पार्स करतो. तुम्हाला हवी असलेली ऑपरेशन्स निवडा, बेस URL ची पुष्टी करा, आणि ते त्यांच्यासाठी **custom functions** तयार करते. ती कार्ये नंतर Tool Call पायऱ्यांसाठी कार्य सूचीत आणि Tools टॅबवर दिसतात.

:::info[कार्यांचे कॅटलॉग इतरत्र व्यवस्थापित केले जाते]

एक Tool Call पायरी फक्त एजंटला आधीच उपलब्ध असलेली कार्येच वापरू शकते — अंगभूत कार्ये आणि [Tools टॅबवर](./tools-mcp) बांधलेली कोणतीही सानुकूल कार्ये, ज्यात OpenAPI आयातकाने तयार केलेली समाविष्ट आहेत. तुम्हाला हवे असलेले कार्य सूचीत नसेल, तर प्रथम ते Tools टॅबवर जोडा.

:::

## पुढील पावले

- [कार्ये बांधा आणि MCP सर्व्हर जोडा (Tools टॅब)](./tools-mcp)
- [कॉल ट्रान्सफर आणि टेलिफोनी कॉन्फिगर करा](./calling-telephony)
- [तुमचा पहिला एजंट तयार करा](./create-agent)
- [एजंट आढाव्याकडे परत](./overview)
