Pamācības
Uzdevumi
Uzdevums ar vienu aģentu sazvana adresātu sarakstu pēc noteikumiem, ko iestatāt iepriekš - budžets, zvanu logs, mēģinājumu skaits. Nekas netiek zvanīts, kamēr uzdevumu paši nepalaižat.
Kas ir uzdevums
Uzdevums (task_...) ir izejoša kampaņa: viens aģents uz volai dzinēja, adresātu saraksts ar tālruņa numuru un neobligātiem mainīgajiem sistēmas uzvednei, un noteikumi (budžets, zvanu logs, maksimālais mēģinājumu skaits un zvana garums). Trīs veidi pēc nolūka - invoice (maksājuma atgādinājums), appointment (laika apstiprinājums) un custom (jebkas cits) - pirmajiem diviem papildus, ja source ir integration, katram adresātam ir atsauce uz dokumentu vai notikumu (externalRefs), ko aģents zvana laikā piemin.
Aģentam jābūt uz volai paša dzinēja (useForOutboundTasks: true izveides brīdī, skatiet POST /v1/agents), nevis uz ElevenLabs - dzinējs prot mainīgos sistēmas uzvednei, zvana garuma robežas un pārbaudi, ka kampaņas laikā nav mainījusies tā konfigurācija. Aģenta melnrakstam jābūt PUBLICĒTAM (PATCH /v1/agents/{id} vai POST /v1/agents/{id}/draft/publish) UN publicētajai versijai jābūt IZMĒĢINĀTAI (POST /v1/agents/{id}/simulate) - ja trūkst kāda soļa, starts atgriež agent_not_ready.
Statusi un pārejas
Praksē uzdevums vienmēr iet no `draft` uzreiz uz `running` (`start`); dzēst (`DELETE`) var tikai atzīmētajos statusos.
draftstart vēl nekad nav noticis. Labojams (PATCH), dzēšams.readydraft un running, ko start pieņem kā sākumpunktu - taču neviens publisks galapunkts (ne REST, ne MCP) šodien uzdevumu uz to nepārvieto, tāpēc praksē ar to nesastapsities. Ja tas tomēr iestātos, tas ir labojams un dzēšams tāpat kā draft.runningPATCH bez izņēmuma atgriež task_not_editable. Kam jāmaina mainīgie, tam uzdevums vispirms jāaptur (POST .../pause) un jālabo tikai statusā paused - un tikai tik ilgi, kamēr vēl neviens adresāts nav zvanīts; pēc pirmā mēģinājuma recipients (un līdz ar to mainīgos) vairs nomainīt nevar (items_immutable) un atliek izveidot jaunu uzdevumu. Dzēst nevar. Ja uzdevums sasniedz zvanu limitu (rate_limited - paša dzinēja izejošo minūšu limits, vienlaicīgo izejošo zvanu griesti, noklusējumā 10 zvani minūtē vai 1000 dienā), tas paliek running: iestata lastError: "rate_limited", mēģinājums netiek ieskaitīts un gaidošajiem kontaktiem tiek iestatīts items[].nextAttemptAt uz limita beigām (pēc Retry-After, citādi pēc 5 minūtēm; vienlaicīgo zvanu griestu gadījumā dzinējs sūta Retry-After: 30). Pēc tā beigām turpina pats. Tāpat tas gaida, ja ir pilna aģenta vienlaicīgo zvanu kvota kontam (relay_lease_limit, noklusējumā 2 notiekoši zvani): lastError: "relay_lease_limit", nākamais mēģinājums pēc minūtes, mēģinājums netiek ieskaitīts. Aizņemts numurs (destination_busy - uz to pašu numuru tobrīd notiek cits zvans, piemēram, no cita uzdevuma vai manuāla zvana, vai arī pēc nenoteikta sazvana tas ir bloķēts 15 minūtes) gaida tikai attiecīgais kontakts, nevis viss uzdevums: items[].lastError: "destination_busy", items[].nextAttemptAt pēc atlikušā numura bloķēšanas laika (vismaz 30 s, ne vairāk kā 16 min, bez bloķēšanas 90 s), mēģinājums netiek ieskaitīts (countsAsAttempt: false) un pārējie kontakti tiek zvanīti tālāk. Pēc 6. aizņemtības pēc kārtas (tātad pēc 5 gaidīšanām) kontakts nonāk review ar reviewReason: "dial:destination_busy". Pastāvīgs šķērslis numuram (on_dnc, destination_auto_blocked, cannot_call_own_number, cannot_call_volai_number, invalid_number, unsupported_country, blocked_destination) uzdevumu arī neaptur: kontakts nonāk review ar reviewReason: "dial:<code>" (zvans neradās, tāpēc mēģinājumam ir countsAsAttempt: false un tas netērē maxAttempts), uzdevums paliek running, zvana pārējiem kontaktiem un uz needs_attention pāriet tikai tad, kad cita darba vairs nav. Ja volai operators aģentu uzdevumam pauzē manuāli, uzdevums paliek running un neko nezvana; pēc atjaunošanas turpina pats. Pauzētu aģentu atpazīsiet pēc suspended: true atbildē GET /v1/agents/{id}.pausedPOST .../pause); jau sāktais zvans tiek pabeigts. Labojams, dzēšams, start to atjauno. Pauze zvana vidū atstāj reviewReason: "dispatch_in_flight", līdz reconcile (plānotājs to palaiž pēc dažām minūtēm) šo zvanu norēķina, un līdz tam start noraida ar task_needs_attention; pēc tam uzdevums ar darbu paliek paused, pat ja citi kontakti gaida review. Pauze, kas iestājas tieši pirms paša zvana (zvans vēl nav radies), dispatch_in_flight neatstāj: plānotājs kontaktu atgriež gaidošo vidū un uzdevums uzreiz ir paused bez iemesla. Kontaktu, kura apstrādi pārtrauca avārija, pirms radās zvans, reconcile atbrīvo ne agrāk kā 15 minūtes pēc sazvana sākuma (claim 10 minūtes plus 5 minūšu rezerve) un atgriež gaidošo vidū; uzdevums, ko pa to laiku apturēja izbeidzies claim (dispatch_claim_expired), tad pāriet uz paused. Ja sāktais zvans beidzas bez zināmas cenas, uzdevums vispirms pāriet uz needs_attention ar reviewReason: "billing_unknown" un uz paused atgriežas, kad cena pienāk (reconcile to papildina). Ja pa to laiku samazināt maxAttempts tā, ka nevienam kontaktam, kas gaida nākamo mēģinājumu, vairs nav brīva mēģinājuma, uzdevums paliek paused (šāds kontakts tiek skaitīts kā darbs), taču start to noraida ar task_not_startable, kamēr maxAttempts nepalielināt.completedneeds_attentionagent_version_changed), dzinējs īslaicīgi nebija pieejams (engine_contract_unavailable) vai vēl nav zināma jau notikuša zvana cena (billing_unknown). POST .../reconcile saskaņo stāvokli; dzēšams, kamēr neviena pozīcija nav palikusi in_progress. Kontaktu statusā review atrisinat ar POST .../items/{itemId}/resolve (retry/skip); kontakts ar pastāvīgu šķērsli numuram (dial:on_dnc, dial:destination_auto_blocked, dial:cannot_call_own_number, dial:cannot_call_volai_number, dial:invalid_number, dial:unsupported_country, dial:blocked_destination vai dial:destination_busy pēc 6. aizņemtības pēc kārtas) uzdevumu aptur tikai tad, kad pārējie kontakti ir pabeigti. Nenoteikts sazvana rezultāts (piem., dial:engine_unavailable) uzdevumu nosūta uz needs_attention uzreiz un pārējie kontakti netiek zvanīti. Kad zvans pēc šāda pārtraukuma (vai nezināmas cenas) tiek norēķināts ar reconcile, uzdevums pāriet uz paused, kamēr kāds kontakts gaida nākamo mēģinājumu, pat ja citi ir review; uz needs_attention tikai tad, ja nekas vairs nav jāzvana, izņemot kontaktu review, un uz completed, ja nav atlicis nekas. Sazvans, kura rezultāts paliek nenoteikts (zvanu neizdodas atrast), notur uzdevumu needs_attention, kamēr par kontaktu nenolemjat. Parasta iemesla gadījumā pēc pēdējā lēmuma uzdevums pāriet uz paused, ja darbs vēl ir atlicis, vai uz completed, ja visi kontakti ir pabeigti vai izlaisti. Iemesls visa uzdevuma līmenī paliek needs_attention, līdz tiek atrisināts; izņēmums ir budget_exceeded, kad visu nākamo mēģinājumu gaidošo kontaktu izlaišana uzdevumu pabeidz, ja vairs negaida neviens nodrošinātāja statuss. Īpašā procedūra billing_unknown ir aprakstīta tālāk.Precīzs dzēšanas nosacījums: statuss ir viens no iepriekš atzīmētajiem UN NEVIENAI pozīcijai nav status: "in_progress" (sāktais zvans, kas vēl nav beidzies) - citādi task_not_deletable.
Adresātu imports (CSV)
POST /v1/tasks/csv-preview izanalizē CSV un atgriež to atpakaļ ar kļūdām pie atsevišķām rindām - NEKAS netiek saglabāts, tas ir tikai priekšskatījums pirms uzdevuma izveides vai labošanas. To pašu funkciju izsauc arī jaunā uzdevuma veidlapa portālā.
- Atdalītājs tiek atpazīts automātiski (komats vai semikols) pēc pirmās rindas.
- Jābūt kolonnai
phone- burtu reģistrs, atstarpes ap nosaukumu un kols aiz tā nav svarīgi, un derēs arītelefon,telvaimobil; priekšskatījumā kolonna vienmēr tiek atgriezta kāphone. Derēs arī tīrs numuru saraksts bez galvenes (viens rindā, viena kolonna). Citādi viss CSV neiztur ar vienu kļūduphonepie galvenes. - Katra nākamā kolonna ir mainīgais aģenta sistēmas uzvednei (
{{column_name}}) - ne vairāk kā 20 kolonnas, nosaukums līdz 64 rakstzīmēm, vērtība līdz 512 rakstzīmēm. - Tālruņa numurs tiek normalizēts tāpat kā visur API (
normalizePhone) - nederīgs vai tukšs numurs ir kļūda tikai UZ ŠĪS rindas, pārējais CSV tiek apstrādāts tālāk. - Šūna, kas izskatās pēc izklājlapas formulas (sākas ar
=,+,-vai@), tiek noraidīta - aizsardzība pret CSV injekciju atverot Excel. - Ne vairāk kā 1000 rindu uz vienu CSV (tādi paši griesti kā uzdevuma adresātu skaitam) un 1 MB neapstrādāta teksta; viss uzdevums kopā ar pielikumiem jāiegulda 2 MB, citādi izveide atgriež
validation.
Atbilde satur headers, delimiter, rows (katra rinda ar savām kļūdām), validRows (tikai nevainojamās, tieši tādā formā, kādu recipients gaida POST /v1/tasks) un kopsavilkuma errors. Sūtiet validRows uzreiz kā recipients uzdevuma izveides vai labošanas laikā.
Budžets un zvanu logs
Budžets
budgetHal ir izdevumu GRIESTI haléros par visu uzdevumu. Izveides brīdī tam jāsedz vismaz viens mēģinājums maksimālajā garumā (budget_too_low, citādi); startā pirms KATRA sazvana tiek rezervēta augstākā iespējamā mēģinājuma cena (reservedBudgetHal), un tikai pacelts zvans to pārnes uz spentHal. Rezervācija ir zvana cena tieši maxDurationSecs garumā (zvana kājas un aģenta kājas, katra noapaļota uz augšu līdz halérim tāpat kā rēķinot) un zvans, ko pārtrauc garuma griesti, tiek rēķināts ne vairāk kā par maxDurationSecs, pat ja beidzas sekundes daļu vēlāk. Uzdevums nekad neiztērēs vairāk, nekā budgetHal norādāt.
Zvanu logs
callingWindow ir {timezone: "Europe/Prague", start, end, days} - šodien vienīgā atbalstītā josla ir Prāgas, start/end formātā HH:MM (beigas ieskaitot visu minūti: logs 09:00-18:00 ielaiž pēdējo zvanu 18:00:59, logs līdz 23:59 aptver visu dienu) un days ir skaitļi 0-6 (0 = svētdiena). Bez norādes spēkā ir darbdienas 9:00-18:00. Ārpus loga start atgriež window_closed - vai nu gaidiet atvēršanos, vai logu izlabojiet ar PATCH. Neobligātais expiresAt ir kampaņas beigas kā pozitīvs drošs vesels skaitlis Unix milisekundēs. Tas tiek pārbaudīts startā un pirms katra sazvana, ieskaitot pirmo. Kopš šī brīža jauns zvans nesākas un mēģinājums netiek izlietots; notiekošais zvans tiek pabeigts. Politikas lorela_enterprise atkārtošanas horizonts (retryMaxAgeDays, noklusējumā 5), gluži otrādi, tiek skaitīts kā N × 24 stundas no pirmā ieskaitītā mēģinājuma, nevis no uzdevuma izveides.
Mēģinājumi un zvana garums
maxAttempts bez politikas ir 1-3 (noklusējumā 1), ar retryPolicy: "lorela_enterprise" 1-4 (izveidojot noklusējumā 4). Tas nosaka augstāko automātisko sazvanu skaitu vienam kontaktam, ieskaitot pirmo (1 = bez atkārtojumiem). Tiek skaitīts katrs mēģinājums, kurā zvans varēja notikt, tātad arī nepacelts vai zvanītā noraidīts, un mēģinājums ar nenoteiktu rezultātu. Netiek skaitīts mēģinājums, ko volai noraidīja jau pirms sazvana (piemēram, bloķēts, paša vai nederīgs numurs, nezvanīšanas saraksts, numurs, uz kuru tobrīd notiek cits zvans, zvanu limiti); šādam mēģinājumam ir items[].attempts[].countsAsAttempt: false. Netiek skaitīts arī zvans, kam operators laikus nesaņēma mērķi, tāpēc zvanītā tālrunis vispār nezvanīja (mēģinājumam ir errorCode: "relay_not_routed", zvanam endReason: "rejected"): kontakts saņem jaunu mēģinājumu ne agrāk kā pēc minūtes (ar politiku lorela_enterprise pēc tās grafika) un pēc trešā šāda mēģinājuma pēc kārtas nonāk pārbaudē ar reviewReason: "call:relay_not_routed". Netiek skaitīts arī zvans, par kuru mūsu balss dzinējs nekad nedeva ziņu un kuru pēc divām stundām bez ziņojuma slēdzām kā nesazvanītu un bez cenas (mēģinājumam ir errorCode: "no_provider_report"): kontakts atgriežas gaidošo vidū un saņem jaunu mēģinājumu ne agrāk kā pēc minūtes (ar politiku lorela_enterprise pēc tās grafika). Trīs neskaitīti mēģinājumi pēc kārtas, arī sajaukti ar relay_not_routed mēģinājumiem, nosūta kontaktu pārbaudē ar reviewReason pēc pēdējā no tiem, tātad call:no_provider_report; kontakti, kurus šāds zvans pārbaudē nosūtīja agrāk (call:failed, ar politiku call:unknown), paši neatjaunojas. Bez politikas griesti attiecas tikai uz automātiskajiem sazvaniem: kontaktam, kuram pēc mēģinājumu izsmelšanas piemērojat resolve ar action: "retry", tiek dots vēl viens papildu sazvans. maxDurationSecs (30-300) ir VIENA zvana garuma griesti, pēc kuriem tas tiek automātiski pārtraukts - noklusējuma garums ir 120 sekundes. Neobligāto politiku lorela_enterprise ieslēdz ar API vai MCP pirms pirmā mēģinājuma; esošie uzdevumi paši nemainās. Otrais mēģinājums ir ne agrāk kā 8 minūtes no pirmā faktiskā mēģinājuma sākuma laikā 08:00-22:00 Europe/Prague. Trešais iet nākamajā citā logā 08:00-09:00 vai 17:00-19:00, ceturtais pretējā logā nākamajā kalendārajā dienā. Vienmēr ir spēkā arī callingWindow un tā dienas; pēc atkārtošanas horizonta politika vairs nezvana: neobligātais retryMaxAgeDays ir vesels dienu skaitlis 1-30 (bez norādes 5) un darbojas tikai ar politiku. Horizonts beidzas N × 24 stundas pēc kontakta pirmā ieskaitītā mēģinājuma (fiksētas 24 stundu dienas, tāpēc laika maiņas gadījumā beigu vietējais laiks nobīdās par stundu). To var mainīt ar PATCH arī pēc mēģinājumu sākuma (ne uzdevumam running vai completed, to labot nevar): palielinājums pauzētam uzdevumam atgriež kontaktus, kas izkrita tikai horizonta dēļ (reviewReason: "retry_age_expired"), atpakaļ statusā failed (gaida nākamo mēģinājumu) ar jaunu nextAttemptAt, ja tiem vēl ir brīvs mēģinājums un tuvākais grafika slots iekrīt jaunajā horizontā un pirms expiresAt; samazinājums neko neatver. Atkal atver tikai PATCH, kas horizontu palielina, tāpēc retryMaxAgeDays un pagarināto expiresAt sūtiet vienā pieprasījumā. Atkārto tikai no_answer, missed, busy, pabeigtu balss pastu un pacelta zvana, kurā zvanītais neko neteica (viss bez kontakta ar cilvēku). Kontakts ar cilvēku, noraidījums un dzinēja kļūda automātisko atkārtošanu aptur; neskaidrs rezultāts iet pārbaudē. Pēdējais atļautais mēģinājums (maxAttempts), kas beidzas ar šādu atkārtojamu rezultātu (nepacelts, aizņemts, balss pasts vai pacelts zvans, kurā zvanītais neko neteica), kontaktu slēdz kā skipped ar reviewReason: "retry_policy_exhausted" (kā retry_age_expired pēc horizonta beigām): nav ko pārbaudīt vai atkārtot. Neskaidrs pēdējā mēģinājuma rezultāts paliek review ar to pašu iemeslu. Bez politikas nekas nemainās: pēdējais nepacelts mēģinājums joprojām ir review. Apstiprināts cilvēka atzvans pēc mēģinājumu izsmelšanas kontaktu pārslēdz uz completed. DNC, budžets un limiti paliek spēkā: automātiska bloķēšana pēc 3 neveiksmēm 24 stundās var apturēt pat ceturto mēģinājumu. PATCH bez maxAttempts līdzšinējais limits saglabājas. Ar politiku manuāls resolve ar action: "retry" atgriež kļūdu validation; atļauti ir tikai tās automātiski ieplānotie mēģinājumi. Izņēmums ir pierādāmi nesazvanīta izbeigta claim atjaunošana pirms pirmā faktiskā mēģinājuma: bez aktīva darbinieka, dispatch nodoma, nodrošinātāja zvana ID, rezervācijas, cenas vai callback un tikai ar pierādītiem noraidījumiem pirms sazvana vēsturē. Atjaunošana saglabā vēsturi un griestus un atgriež kontaktu gaidošo vidū pauzētā uzdevumā; pati nezvana. Atgādinājumus šādi atkārtoti atvērt nevar. Manuāls atkārtojums tātad neapiet četrus mēģinājumus, atkārtošanas horizontu vai pārtraukšanu pēc kontakta ar cilvēku.
Globālā caurlaidspēja
Visu uzdevumu zvani VISĀ platformā (ne tikai jūsu kontā) iet caur vienu cron, kas darbojas ik pēc 2 minūtēm un vienā palaišanā apstrādā ne vairāk kā 20 pozīciju - BET šie griesti tiek dalīti starp vienlaikus notiekošiem uzdevumiem, nevis tos drīkst izsmelt viens uzdevums: no KATRA aktīvā uzdevuma vienā palaišanā tiek sazvanīts tieši VIENS adresāts. Arī pilnīgi tukšā platformā viens uzdevums tāpēc nekad nesazvana vairāk kā vienu adresātu ik pēc 2 minūtēm - simts adresātu tā netiek apzvanīti ~20 minūtēs, bet aptuveni 200 minūtēs (100 x 2 minūtes). Zvanu logu laikam jutīgām kampaņām (piem., appointment dienu pirms laika) plānojiet atbilstoši.
Darbību secība aģentam
Tipiska norise šādā secībā:
- Uzdevuma aģentam jābūt PUBLICĒTAM un publicētajai versijai IZMĒĢINĀTAI (
POST /v1/agents/{id}/draft/publish, tadPOST /v1/agents/{id}/simulate) - citādi vēlāksstartatgriežagent_not_ready. - Pēc izvēles
POST /v1/tasks/csv-preview- pārbauda adresātu CSV, pirms tiek izveidots uzdevums. POST /v1/tasks- izveido uzdevumu statusādraft. Nekas netiek zvanīts.GET /v1/tasks/{id}- izlasietissues(dry-run validācija) un pārliecinieties, ka uzdevums ir gatavs startam.- Pēc vajadzības
PATCH /v1/tasks/{id}- labojiet noteikumus, VIENMĒR arrevisionno pēdējās nolasīšanas. POST /v1/tasks/{id}/start- sāk zvanīšanu. Katrs pacelts zvans tiek rēķināts uzreiz.POST /v1/tasks/{id}/pausejebkurā brīdī darbības laikā,POST /v1/tasks/{id}/startatkal atjauno.- Pēc pārtraukuma (pauze zvana vidū, izbeidzies claim, zvans ar vēl nezināmu cenu vai nenoteikts sazvans, pie kura zvans tika atrasts)
POST /v1/tasks/{id}/reconcilesaskaņo stāvokli ar faktiskajiem zvaniem; šāds uzdevums ar darbu beidzaspaused, pat ja daži kontakti gaidareview, un to var atkal palaist arstart. Notiekošu uzdevumu vai citu iemeslu (variables_limit, rēķina vai kalendāra pārbaudes neveiksme, nenoteikts sazvans, pie kura zvanu neizdevās atrast)reconcilenemaina; kontaktus pārbaudei atrisiniet arresolve. - Kontaktu, kas nonāca pārbaudē (
items[].status: "review"), atrisiniet arPOST /v1/tasks/{id}/items/{itemId}/resolvearaction: "retry"vai"skip". Parasta iemesla gadījumāretryatgriež kontaktu gaidošo vidū un uzdevumu uzpaused;skipto slēdz un uzdevums pāriet uzpaused, ja darbs vēl ir atlicis, vai uzcompleted, ja visi kontakti ir pabeigti vai izlaisti. Uzdevumupausedpēc tam atjaunojiet arPOST /v1/tasks/{id}/start. - Ja kontaktam ir
reviewReason: "dial:destination_auto_blocked", numurs ir automātiski bloķēts uz 30 dienām pēc atkārtoti nepacelta zvana un patsretryto neatbloķē - kontakts uzreiz atgrieztosreview. Vispirms atceliet bloķēšanu (POST /v1/dnc/{e164}/unblock, MCPunblock_destination, numuru ņemiet noitems[].phone), pēc tamresolvearaction: "retry". Piedial:on_dncvispirms izņemiet numuru no nezvanīšanas saraksta (DELETE /v1/dnc/{e164}), citādi kontaktu izlaidiet. Konta paša numuram, cita volai konta numuram, nederīgam numuram, numuram ārpus Čehijas un Slovākijas un maksas līnijai (dial:cannot_call_own_number,dial:cannot_call_volai_number,dial:invalid_number,dial:unsupported_country,dial:blocked_destination) nākamais mēģinājums nelīdz: izmantojiet tikaiskip. - Ja kontaktam ir
reviewReason: "billing_unknown", sākotnējais zvans jau varēja notikt, tikai tā cena vēl nav zināma. Vispirms izsaucietreconcileun pārbaudiet saistīto zvanu.retryiegaumē, ka kontaktu jāmēģina vēlreiz, bet jaunu zvanu neatļauj, kamēr sākotnējā cena nav nostabilizējusies; pēc tam uzdevums pāriet uzpausedun prasa jaunustart.skipnovērš nākamo zvanu; sākotnējais zvans paliek saistīts un tā rezervācija turpina ieskaitīties budžetā, līdz cena nostabilizējas. Ja darbs ir atlicis, uzdevums pēcskippāriet uzreiz uzpausedun to var palaist; bez cita darba tas gaidīsneeds_attentionun pēc cenas nostabilizēšanās beigsiescompleted. Zvans, kas vispār netika sazvanīts (dzinējs to noraidīja), nekad netiek rēķināts un nostabilizējas uzreiz uz 0. - Kontaktu, kas pa to laiku nopirka vai atrakstījās, izlaidiet bez zvana ar
resolvearaction: "skip",reason: "customer_purchased"vai"unsubscribed",revision, stabiluoperationIdunevidenceRef, kas norāda uz pirkuma vai atrakstīšanās dokumentu (nekad uz tālruni vai e-pastu). To var darīt arpendingkontaktudraftuzdevumā un arpending/failedpauseduzdevumā bez neizskaidrota zvana; mēģinājumi, cenas un nezvanīšanas saraksts paliek.GET /v1/tasks/{id}pēc tam parāda dokumentuitems[].resolution(reason,operationId,evidenceRef,resolvedAt); to pašu pieprasījuma pamattekstu var droši atkārtot, citsreasonvaievidenceReftam pašam kontaktam ir409 revision_conflict. Izlaišana numuru nezvanīšanas sarakstā neieraksta: ja kontaktu vairs nekad nedrīkst zvanīt, pievienojiet to arPOST /v1/dnc. DELETE /v1/tasks/{id}beigās, ja uzdevums nekad nav norisinājies vai jau ir beidzies un ierakstu vēlaties izdzēst.
Gandrīz katrs rakstošais izsaukums (PATCH, start, pause, DELETE) ņem revision no uzdevuma pēdējās nolasīšanas - tāda pati optimistiskā vienlaicība kā aģenta melnrakstiem. Neatbilstība atgriež revision_conflict: ielādējiet uzdevumu vēlreiz (GET) un atkārtojiet ar aktuālo revision. reconcile ir izņēmums - revision tur nav obligāts.
MCP
Tie paši rīki kā REST (list_tasks, get_task, create_task, update_task, pause_task, resolve_task_item, reconcile_task, start_task) - izņemot vienu atšķirību startā.
start_task apstiprina skaitļus
MCP start_task papildus ņem confirmedRecipients un confirmedBudgetHal - tiem precīzi jāatbilst uzdevuma faktiskajam adresātu skaitam un budžetam, citādi tas atgriež validation ar izrakstītajām faktiskajām vērtībām un NEKO nepalaiž. Svešs AI aģents uz viena neskaidri saprasta norādījuma tādējādi nevar kļūdaini palaist maksas kampaņu ar izdomātiem skaitļiem - REST POST .../start šādas mehānikas nav, jo tur tieši ar savu atslēgu zvana konta īpašnieks.
delete_task un CSV priekšskatījuma MCP nav - dzēšana paliek REST un portālā (neatgriezeniska darbība ar nosaukuma pārrakstīšanu), CSV priekšskatījums ir tikai veidlapas solis.
Kļūdas
task_not_found- Kontā nav uzdevuma ar šāduid.task_not_editable- Uzdevums darbojas vai ir pabeigts (running/completed), vai irneeds_attentionbez atjaunošanas iespējas - noteikumus tagad mainīt nevar. To pašu kodu atgriež arīPOST .../items/{itemId}/resolvedarbojošam uzdevumam: kontaktsreviewparādās jau tad, kad uzdevums zvana pārējiem kontaktiem un vēl irrunning- uzgaidiet, līdz tas pāriet uzneeds_attention, vai to apturiet (POST .../pause).items_immutable- Adresātu sarakstu nevar aizstāt pēc tam, kad ir noticis vismaz viens sazvana mēģinājums vai kontakts ir izlaists arreason(pirkums vai atrakstīšanās).budget_too_low- Budžets nesedz pat vienu mēģinājumu maksimālajā zvana garumā - palielinietbudgetHalvai samazinietmaxDurationSecs.task_not_startable- Uzdevums nav statusādraft/ready/pausedvai tam nav neviena gaidoša adresāta.task_needs_attention- Pirms nākamā starta nepieciešamsPOST .../reconcile- kaut kas (aģenta versija, dzinējs) darbības laikā ir mainījies.agent_not_ready- Aģenta melnraksts vai nav publicēts, vai publicētā versija nav izmēģināta - publicējiet to (POST /v1/agents/{id}/draft/publish) un pēc tam izmēģiniet publicēto versiju (POST /v1/agents/{id}/simulate) pirms starta.agent_version_changed- Aģenta konfigurācija mainījās UZDEVUMA DARBĪBAS LAIKĀ - izmēģiniet un restartējiet arreconcile.engine_required- Uzdevuma aģents nav uz volai dzinēja (useForOutboundTasks: true) - izejošās kampaņas šodien prasa dzinēju, nevis ElevenLabs.engine_contract_unavailable- Dzinējs pašlaik nepiedāvā atbalstu mainīgajiem un izejošo uzdevumu griestiem - mēģiniet startu vēlāk vēlreiz.window_closed- Ārpus iestatītā zvanu loga - uzgaidiet atvēršanos vai labojietcallingWindow.task_not_running- Pauze iespējama tikai darbojošam uzdevumam.item_not_resolvable- Kontakts nav statusāreview- izlemt (retry/skip) var tikai par kontaktu, kas gaida pārbaudi, un tikai uzdevumā, kas nedarbojas. Izņēmums ir izlaišana arreason(customer_purchased,unsubscribed): tai nepieciešams neaktīvspendingkontaktsdraftuzdevumā vaipending/failedpauseduzdevumā bez neizskaidrota zvana.task_not_deletable- Dzēst var tikai uzdevumu bez pozīcijasin_progressstatusādraft/ready/paused/completed/needs_attention.revision_conflict- Uzdevums pa to laiku ir mainījies - ielādējiet to vēlreiz (GET) un atkārtojiet ar aktuālorevision.
Pilnu kļūdu tabulu katram galapunktam atradīsiet sadaļā Uzdevumi REST API atsaucē.
Saistītais
MCP serveris
Pievienojiet Claude Code, Codex CLI, Codex desktop, Cursor un citus AI redaktorus.
REST API
Pilna atsauce uz visiem galapunktiem: numuri, zvani, SMS, mobilie numuri SMS sūtīšanai, aģenti un to melnraksti, rīki, ieraksti, tīmekļa āķi, nezvanīšanas saraksts, relejs, konts, uzdevumi, kredīts, dokumenti, kalendāri un integrācijas.
Balss aģents
Sistēmas uzvedne, rīki, nodošana cilvēkam, ieraksti un strukturēti zvana dati.