# వర్క్‌ఫ్లో బిల్డర్


# వర్క్‌ఫ్లో బిల్డర్

**Workflow Builder** అనేది **స్క్రిప్టెడ్ కాల్ ఫ్లోల** కోసం ఒక విజువల్, నోడ్-ఆధారిత ఎడిటర్. ఓపెన్-ఎండెడ్ ఏజెంట్ తదుపరి ఏమి చెప్పాలో మోడల్ నిర్ణయించనిచ్చే చోట, ఒక వర్క్‌ఫ్లో ఏజెంట్‌కు ఒక నిర్ధారిత మార్గాన్ని ఇస్తుంది — మాట్లాడే, అడిగే, బ్రాంచ్ అయ్యే, టూల్స్‌ను పిలిచే మరియు సంభాషణను రూట్ చేసే స్టెప్‌ల క్రమం. ఒక కాల్ ఒక నిర్వచించిన స్క్రిప్ట్‌ను అనుసరించాల్సిన అవసరం ఉన్నప్పుడు దీన్ని ఉపయోగించండి: ఒక లీడ్‌ను అర్హత చేయడం, ఒక అపాయింట్‌మెంట్ బుక్ చేయడం, ఒక సపోర్ట్ సమస్యను ట్రయాజ్ చేయడం లేదా ఒక సర్వేను సేకరించడం. **/agent/setup**లోని ఏజెంట్ బిల్డర్‌లో **Tools** టాబ్ నుండి, **Open Workflow Builder** బటన్‌ను ఉపయోగించి దీన్ని తెరుస్తారు.

ఒక వర్క్‌ఫ్లో ఒకే ఏజెంట్‌కు చెందుతుంది. కాల్ సమయంలో ఒక **supervisor** సంభాషణను గమనిస్తుంది, కాలర్ ఏ **intent**ను వ్యక్తం చేస్తున్నారో నిర్ణయిస్తుంది, మరియు ఆ intent యొక్క **steps**ను క్రమంలో నడుపుతుంది. స్టెప్‌ల లోపల ఏజెంట్ ఉపయోగించగల ఫంక్షన్‌లు ఖచ్చితంగా మీరు [Tools టాబ్‌లో](./tools-mcp) బైండ్ చేసినవే — మీరు మంజూరు చేయని టూల్‌ను వర్క్‌ఫ్లో చేరుకోలేదు.

## ఒక వర్క్‌ఫ్లో ఎలా నిర్మించబడింది

![Workflow Builder](/img/screenshots/portal/workflow-builder.png)
*Workflow Builder: ఐచ్ఛిక సూపర్‌వైజర్ ప్రాంప్ట్‌తో, n8n-శైలి నోడ్ క్యాన్‌వాస్‌పై నిర్ధారిత కాల్ ఫ్లోలను రూపొందించండి.*

ఒక వర్క్‌ఫ్లోకు మూడు నెస్టెడ్ స్థాయిలు ఉంటాయి:

- **Graph** — ఒక ఏజెంట్‌కు ఒక వర్క్‌ఫ్లో. ఇది ఒక ఐచ్ఛిక **supervisor prompt**ను (intentలను రూట్ చేసే AI supervisor కోసం అనుకూల సూచనలు) కలిగి ఉంటుంది. మీరు graphను సృష్టించే వరకు, supervisor-prompt ఫీల్డ్‌తో ఒకసారి మాత్రమే కనిపించే **Create Workflow Graph** స్క్రీన్‌ను బిల్డర్ చూపుతుంది.
- **Intents** — సంభాషణ యొక్క బ్రాంచ్‌లు. ప్రతి intentకు ఒక **display name**, ఒక **internal name**, ఒక **description** (intentను సరిపోల్చగలిగేలా supervisor మోడల్‌కు చూపబడుతుంది), **trigger phrases** జాబితా, ఒక **default intent** టోగుల్, మరియు దాని అన్ని స్టెప్‌లు విఫలమైతే ఉపయోగించే ఒక ఐచ్ఛిక **fallback response** ఉంటాయి. కాలర్ చెప్పిన దానికి ఏ intent యొక్క description మరియు trigger phrases ఉత్తమంగా సరిపోతాయో supervisor ఎంచుకుంటుంది.
- **Steps** — ఒక intent లోపల క్రమబద్ధీకరించబడిన చర్యలు. స్టెప్‌లు డిఫాల్ట్‌గా పై నుండి కిందికి నడుస్తాయి, మరియు ప్రతి స్టెప్‌కు అది ఏమి చేస్తుందో నిర్ణయించే ఒక రకం ఉంటుంది.

కాన్వాస్‌పై ఇది ఒక ఆకుపచ్చ **Start** నోడ్‌గా కనిపించి, ప్రతి బ్రాంచ్‌కు ఒక **Intent** నోడ్‌లోకి ప్రవహిస్తుంది, ఆ intent యొక్క **Step** నోడ్‌లు దాని కింద పేర్చబడి ఉంటాయి. ఒక మినీమ్యాప్, జూమ్ కంట్రోల్స్ మరియు ఒక చుక్కల నేపథ్యం పెద్ద ఫ్లోలను నావిగేట్ చేయడంలో సహాయపడతాయి.

:::info[supervisor ఎలా రూట్ చేస్తుందో intentల ద్వారానే]

supervisor కాలర్ యొక్క ఉచ్చారణను ప్రతి intent యొక్క **description** మరియు **trigger phrases**తో సరిపోలుస్తుంది, కాబట్టి ఒక సహోద్యోగికి వివరించినట్లు descriptionలను రాయండి ("User wants to book or schedule an appointment") మరియు కొన్ని సహజమైన trigger phrasesను జోడించండి. మరి దేనితోనూ స్పష్టంగా సరిపోని సంభాషణలను పట్టుకోవడానికి ఒక intentను **default**గా గుర్తించండి.

:::

## స్టెప్ రకాలు

(ఒక intent లేదా దాని స్టెప్‌లలో ఒకదాన్ని ఎంచుకున్న తర్వాత) **Add Step**తో ఒక స్టెప్‌ను జోడించండి, ఇది నోడ్ పికర్‌ను తెరుస్తుంది. పికర్ స్టెప్ రకాలను **Conversation**, **Logic**, **Integrations** మరియు **Call Control**గా సమూహపరుస్తుంది. పదమూడు రకాలు ఉన్నాయి:

- **Message** — బాట్ కాలర్‌కు ఒక లైన్ మాట్లాడుతుంది.
- **Question** — బాట్ ఏదైనా అడిగి సమాధానాన్ని ఒక **variable**లో నిల్వ చేస్తుంది. మీరు ఒక **validation type** (Any, Number, Email, Date, Yes / No లేదా Phone) మరియు సమాధానం వాలిడేషన్‌లో విఫలమైనప్పుడు ఉపయోగించే ఒక **re-ask message**ను ఎంచుకుంటారు.
- **Condition** — ఫ్లోను బ్రాంచ్ చేస్తుంది. మీరు ఒక **field** (ఒక సెషన్ variable), ఒక **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** ఫంక్షన్‌ను పిలుస్తుంది. మీరు టూల్ రకం, ఫంక్షన్, మరియు స్టెప్ ఇన్‌పుట్‌లను సెషన్ variableలకు మ్యాప్ చేసే ఒక ఐచ్ఛిక **input mapping** (JSON)ను ఎంచుకుంటారు.
- **Appointment** — దాని స్వంత input mappingతో, ఒక బుకింగ్ ఫంక్షన్‌కు వ్యతిరేకంగా ఒక అపాయింట్‌మెంట్-బుకింగ్ సబ్-ఫ్లోను నడుపుతుంది.
- **Webhook** — ఒక బాహ్య URLకు ఒక HTTP అభ్యర్థన చేస్తుంది. మీరు **method** (GET, POST, PUT, PATCH, DELETE), **URL**, ఐచ్ఛిక **headers** (JSON), ఒక **body template**, మరియు **save the response** చేయడానికి ఒక variableను సెట్ చేస్తారు.
- **Transfer** — బదిలీకి ముందు ప్రకటించే ఒక ఐచ్ఛిక సందేశంతో, కాల్‌ను మరొక **phone number or queue**కు అప్పగిస్తుంది. కాల్ బదిలీలు ఎండ్ టు ఎండ్ ఎలా ప్రవర్తిస్తాయో తెలుసుకోవడానికి [కాలింగ్ & టెలిఫోనీ](./calling-telephony) చూడండి.
- **End Call** — ఐచ్ఛికంగా ముందుగా ఒక **goodbye message** మాట్లాడి, కాల్‌ను కట్ చేస్తుంది.
- **Delay** — కొనసాగడానికి ముందు నిర్ణీత సంఖ్యలో సెకన్లు (1–60) నిశ్శబ్దంగా వేచి ఉంటుంది.
- **Set Variable** — ఒక విలువను (స్థిర టెక్స్ట్ లేదా మరొక variableకు ఒక రిఫరెన్స్) ఒక సెషన్ variableలో నిల్వ చేస్తుంది.
- **Send Notification** — పేరున్న ఒక టెంప్లేట్ మరియు ఒక variable mapping (JSON) ఉపయోగించి ఒక **SMS**, **email** లేదా **WhatsApp** సందేశాన్ని పంపుతుంది.
- **Static Response** — ఒక స్థిర టెక్స్ట్ బ్లాక్‌ను మాట్లాడుతుంది. ఇది ఒక లెగసీ నోడ్; కొత్త ఫ్లోల కోసం **Message**ను ఇష్టపడండి.
- **Play Audio** — కాలర్‌కు ఒక ఆడియో ఫైల్‌ను (ఒక పబ్లిక్ WAV లేదా MP3 URL) ప్లే చేస్తుంది.

మీరు ఒక నోడ్‌ను ఎంచుకున్నప్పుడు తెరిచే **right-hand panel**లో ప్రతి స్టెప్ కాన్ఫిగర్ చేయబడుతుంది. ఆ స్టెప్ రకానికి సంబంధించిన ఫీల్డ్‌లను మాత్రమే, అలాగే స్టెప్ పేరు మరియు ఒక రకం సెలెక్టర్‌ను ప్యానెల్ చూపుతుంది.

:::tip[Variables మీ స్టెప్‌లను కలిపి కలుపుతాయి]

ఒక **Question** లేదా **Set Variable** స్టెప్ దాని ఫలితాన్ని మీరు ఎంచుకున్న పేరు కింద నిల్వ చేస్తుంది. తర్వాత — ఒక Messageలో, ఒక Condition యొక్క ఫీల్డ్‌లో, ఒక Webhook bodyలో లేదా ఒక notification mappingలో — `{variable_name}` వంటి కర్లీ-బ్రేస్ సింటాక్స్‌తో దాన్ని రిఫరెన్స్ చేయండి. కాలర్ చెప్పిన దాన్ని ఒక ఫ్లో ఎలా గుర్తుంచుకుని స్టెప్‌ల అంతటా ముందుకు తీసుకువెళుతుందో ఇదే.

:::

## బ్రాంచింగ్ మరియు రూటింగ్

స్టెప్‌లు ఒక సరళ రేఖలో నడవాల్సిన అవసరం లేదు:

- ఒక **Condition** స్టెప్ **True** మరియు **False** అవుట్‌పుట్‌లను బహిర్గతం చేస్తుంది. ఒక variable యొక్క విలువపై బ్రాంచ్ చేయడానికి, ప్రతిదాన్ని ఒక లక్ష్య స్టెప్‌కు వైర్ చేయండి (లేదా దాన్ని **Continue in order**పై వదిలేయండి).
- ప్రతి ఇతర స్టెప్ రకానికి **On Success** మరియు **On Failure** రూటింగ్ ఉంటుంది. డిఫాల్ట్‌గా ఒక స్టెప్ క్రమంలో తదుపరిదానికి కొనసాగుతుంది; మరెక్కడికైనా దూకడానికి వీటిని సెట్ చేయండి — ఉదాహరణకు, విఫలమైన ఒక Tool Callను ఒక రికవరీ సందేశానికి రూట్ చేయండి.

మీరు రూటింగ్‌ను రెండు విధాలుగా సెట్ చేయవచ్చు: కాన్ఫిగ్ ప్యానెల్‌లో లక్ష్య స్టెప్‌ను ఎంచుకోండి, లేదా కాన్వాస్‌పై ఒక స్టెప్ యొక్క అవుట్‌పుట్ హ్యాండిల్ నుండి (ఆకుపచ్చ **OK** / **TRUE** హ్యాండిల్ లేదా ఎరుపు **FAIL** / **FALSE** హ్యాండిల్) మరొక స్టెప్‌కు ఒక **కనెక్షన్‌ను లాగండి**. కాన్వాస్‌పై గీసిన కనెక్షన్‌లు వెంటనే వర్క్‌ఫ్లోలో సేవ్ చేయబడతాయి.

## నిర్మించడం మరియు సేవ్ చేయడం

బిల్డర్ మార్పులను ఒకే పెద్ద సేవ్‌గా కాకుండా, మీరు చేస్తున్నప్పుడే నిలుపుకుంటుంది:

- **Add Intent** ఒక కొత్త బ్రాంచ్‌ను సృష్టిస్తుంది; దాని పేరు, description మరియు trigger phrasesను పూరించడానికి దాన్ని క్లిక్ చేసి, ఆపై ప్యానెల్‌లో **Save Changes** చేయండి.
- **Add Step** మీరు ఎంచుకున్న రకం యొక్క ఒక స్టెప్‌ను చొప్పిస్తుంది; దాన్ని ప్యానెల్‌లో కాన్ఫిగర్ చేసి **Save Changes** చేయండి.
- ఒక నోడ్‌పై పైకి / కిందికి షెవ్రాన్‌లు intentలను మరియు stepలను **పునఃక్రమం** చేస్తాయి; ఒక నోడ్‌ను తొలగించడం (దాని ట్రాష్ ఐకాన్ లేదా Delete కీ ద్వారా) ముందుగా నిర్ధారణను అడుగుతుంది.
- టూల్‌బార్ **Save** బటన్ **supervisor prompt**ను నిల్వ చేస్తుంది; సేవ్ చేయని prompt మార్పులను ఒక అంబర్ చుక్క గుర్తిస్తుంది.

## ఒక టెంప్లేట్ నుండి ప్రారంభించండి

మొదటి నుండి నిర్మించడానికి బదులుగా, **Templates** బటన్ మీరు లోడ్ చేసి ఆపై ఎడిట్ చేయగల సిద్ధంగా ఉన్న ఫ్లోలను అందిస్తుంది: **Lead Qualification**, **Appointment Booking**, **Customer Support**, **NPS Survey**, **Payment Reminder** మరియు **Customer Onboarding**. ప్రతి ఒక్కటి ప్రశ్నలు, షరతులు మరియు goodbye సందేశాలతో సహా దాని స్టెప్‌లతో ఒక పూర్తి intentను చేరుస్తుంది. ఒక టెంప్లేట్‌ను వర్తింపజేయడం మీ ప్రస్తుత వర్క్‌ఫ్లోను భర్తీ చేయడానికి బదులుగా దానికి **జోడిస్తుంది**, కాబట్టి మీరు అనేకాన్ని కలపవచ్చు లేదా అవసరం లేనిదాన్ని కత్తిరించవచ్చు.

## ఒక 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 స్టెప్ ఏజెంట్‌కు ఇప్పటికే అందుబాటులో ఉన్న ఫంక్షన్‌లను మాత్రమే ఉపయోగించగలదు — built-in ఫంక్షన్‌లు మరియు [Tools టాబ్‌లో](./tools-mcp) బైండ్ చేయబడిన ఏవైనా custom functionలు, OpenAPI దిగుమతిదారు రూపొందించినవాటితో సహా. మీకు కావలసిన ఫంక్షన్ జాబితాలో లేకపోతే, ముందుగా దాన్ని Tools టాబ్‌లో జోడించండి.

:::

## తదుపరి దశలు

- [ఫంక్షన్‌లను బైండ్ చేసి MCP సర్వర్‌లను కనెక్ట్ చేయండి (Tools టాబ్)](./tools-mcp)
- [కాల్ బదిలీలు మరియు టెలిఫోనీని కాన్ఫిగర్ చేయండి](./calling-telephony)
- [మీ మొదటి ఏజెంట్‌ను సృష్టించండి](./create-agent)
- [ఏజెంట్ల అవలోకనానికి తిరిగి వెళ్లండి](./overview)
