Your AI Connector Docs

Funcții personalizate

Funcțiile personalizate permit botului tău AI să se conecteze la alte sisteme în timpul conversațiilor live. În loc să spună „Voi verifica și revin către tine”, botul poate căuta starea unei comenzi, poate verifica stocul sau poate crea o înregistrare în CRM-ul tău (sistemul de gestionare a relațiilor cu clienții - software-ul pe care îl folosești pentru a urmări clienții potențiali și clienții actuali, cum ar fi HubSpot sau Salesforce) - totul în timp real, în timp ce clientul așteaptă.


Funcții personalizate vs. Webhook-uri

Acesta este cel mai frecvent punct de confuzie, așa că merită să clarificăm acest aspect înainte de a construi ceva.

Webhook-uri Funcții personalizate
Direcție Unidirecțional (trimite și uită) Bidirecțional (apelează și așteaptă)
Ce face botul Trimite o notificare când se întâmplă ceva, apoi își continuă activitatea. Apelează, se întrerupe, așteaptă răspunsul și folosește rezultatul primit pentru a continua conversația.
Vizibilitate în conversație Rezultatul final este invizibil pentru bot — acesta nu vede niciodată ce s-a întâmplat. Răspunsul este transmis direct înapoi către AI, astfel încât botul îl poate cita, poate analiza informația și poate răspunde clientului pe baza acesteia.
Ideal pentru Înregistrarea evenimentelor, sincronizarea datelor cu un CRM, declanșarea automatizărilor externe (Zapier, Make, n8n). Orice situație în care botul are nevoie de un răspuns înainte de a putea replica — căutări live, prețuri în timp real, generare de conținut pe loc.

Când să alegi ce: Dacă trebuie doar să anunți un alt sistem că s-a întâmplat ceva, folosește un webhook - un mesaj automat unidirecțional trimis către un alt sistem (vezi Setări → Integrări → Webhook-uri). Dacă botul trebuie să afle ceva de la un alt sistem înainte de a continua conversația, folosește o funcție personalizată.


Exemple de ce pot debloca funcțiile personalizate

Deoarece răspunsul este transmis înapoi în conversație, funcțiile personalizate deschid posibilități pe care webhook-urile pur și simplu nu le pot oferi:

  • Verificarea stocului în timp real în Shopify sau WooCommerce — Înainte de a oferi o ofertă unui client, botul verifică stocul în timp real și răspunde „Da, avem 12 bucăți mărimea M” în loc de „lăsați-mă să verific și revin”.
  • Prețuri dinamice dintr-un Google Sheet — Echipa ta de vânzări actualizează prețurile într-un tabel; botul citește cel mai recent rând în timpul conversației și oferă prețul actual fără ca cineva să modifice configurația AI-ului.
  • Agent de apelare Voice-AI — Când botul califică un lead, acesta declanșează un agent vocal (de exemplu, un apelant bazat pe ElevenLabs) pentru a suna lead-ul în câteva minute și confirmă clientului „grozav, așteptați-vă la un apel în următoarele 5 minute”.
  • PDF cu ofertă personalizată, generat și trimis prin e-mail în timpul chat-ului — Botul colectează cerințele, apelează generatorul de oferte, primește un URL către PDF și îi spune clientului „Tocmai v-am trimis oferta prin e-mail — verificați căsuța poștală”.

Ce pot face funcțiile personalizate?

Gândește-te la funcțiile personalizate ca la niște superputeri oferite botului tău, dincolo de simpla conversație. Iată exemple din lumea reală:

  • Urmărirea comenzilor - Un client întreabă „Unde este comanda mea?”, iar botul verifică sistemul tău de e-commerce și răspunde cu starea livrării și link-ul de urmărire.
  • Verificarea inventarului - „Aveți acest produs pe mărimea 10?” Botul verifică sistemul de stocuri și oferă un răspuns în timp real.
  • Actualizări CRM - Când botul califică un lead, acesta creează sau actualizează automat o înregistrare în HubSpot, Salesforce sau orice alt CRM.
  • Generarea de oferte - Botul colectează cerințele clientului și generează o ofertă personalizată din sistemul tău de prețuri.
  • Programări - Botul creează o programare în sistemul tău extern de rezervări.
  • Verificarea reducerilor - „Este valid acest cod de cupon?” Botul verifică și confirmă.
  • Căutarea contului - Un client care revine este recunoscut automat, iar detaliile contului său sunt extrase.

Clientul nu vede niciodată ce se întâmplă în culise. El experimentează pur și simplu un bot capabil să răspundă la întrebări cu informații reale și actualizate.


Cum funcționează funcțiile personalizate (Versiunea simplă)

Iată ce se întâmplă atunci când o funcție personalizată este declanșată în timpul unei conversații:

  1. Clientul întreabă ceva care necesită date în timp real (de ex., „Unde este comanda mea?”)
  2. Botul recunoaște că trebuie să utilizeze o funcție personalizată pentru a răspunde
  3. Botul colectează orice informație lipsă de la client (de ex., „Care este numărul comenzii tale?”)
  4. Platforma trimite o cerere către sistemul tău (site-ul tău, CRM sau orice alt instrument) cu detaliile relevante
  5. Sistemul tău răspunde cu datele (de ex., starea comenzii, numărul de urmărire, data livrării)
  6. Botul citește răspunsul și formulează un răspuns natural: „Comanda ta ORD-4582 a fost expediată și ar trebui să ajungă până vineri!”

Cât costă un apel de funcție personalizat

Fiecare apel de funcție personalizat este facturat în funcție de nivelul de Calitate AI al Agentului tău:

Nivel de Calitate AI Credite per apel de funcție personalizat Cu propria cheie Anthropic (BYOK) conectată
Pro 1 credit 0 credite — rulează pe cheia ta
Economy (depreciat) 0,5 credite 0 credite — rulează pe cheia ta
Max 0,25 credite tot 0,25 credite, facturat chiar și cu propria cheie conectată, deoarece Max rulează pe propriul nostru model
Mini 0,15 credite tot 0,15 credite, facturat chiar și cu propria cheie conectată, deoarece Mini rulează pe propriul nostru model

Configurarea unei funcții personalizate (pas cu pas)

  1. În bara laterală principală, sub AI Studio, faceți clic pe Custom Functions.
  1. Faceți clic pe butonul verde + Add Function (sau New function) din partea dreaptă sus.

Lista de funcții personalizate afișează un tabel cu următoarele coloane:

Coloană Ce afișează
Name Numele funcției (de ex., check_order_status)
Description Un scurt rezumat al funcției (trunchiat la 50 de caractere în tabel)
Method Metoda HTTP utilizată, afișată ca o etichetă colorată: GET (albastru), POST (verde), PUT (portocaliu), DELETE (roșu)
Created Data la care a fost creată funcția

Acest lucru facilitează scanarea rapidă a funcțiilor și găsirea celei de care ai nevoie.

Pasul 1: Oferă-i un nume și o descriere

Câmp Ce trebuie introdus Exemplu
Name Un nume scurt folosind litere, cifre și caractere de subliniere check_order_status
Description Explică ce face această funcție (AI-ul citește acest lucru pentru a decide când să o folosească) „Caută starea curentă a comenzii unui client folosind numărul comenzii”
Purpose (AI Action) Spune AI-ului exact când și cum să folosească această funcție „Folosește acest lucru când un client întreabă despre starea comenzii, expediere sau livrare. Cere mai întâi numărul comenzii.”

Sfat: Fii foarte specific în descriere și scop. Cu cât ești mai clar cu privire la momentul în care ar trebui utilizată funcția, cu atât mai fiabil o va folosi botul la momentul potrivit.

Pasul 2: Configurează conexiunea

Trebuie să spui aplicației unde să trimită cererea:

Câmp Ce să introduci Exemplu
URL Adresa web a endpoint-ului sistemului tău (adresa specifică din sistemul tău care primește cererea și trimite datele înapoi) https://api.yourstore.com/v1/orders/status
Metodă Tipul de cerere care trebuie trimisă Vezi opțiunile de mai jos

Ce metodă să alegi:

Metodă Când să o folosești
GET Căutarea de informații (starea comenzii, inventar, detalii cont)
POST Crearea de înregistrări noi (tichete de asistență, clienți potențiali, rezervări) sau căutări complexe
PUT Actualizarea completă a unei înregistrări existente
PATCH Actualizarea unei părți dintr-o înregistrare existentă
DELETE Eliminarea unei înregistrări

Dacă nu ești sigur pe care să o folosești, verifică cu dezvoltatorul tău sau consultă documentația sistemului la care te conectezi. GET (pentru căutări) și POST (pentru crearea de înregistrări) sunt cele mai comune.

Pasul 3: Adaugă antetele de autentificare

Majoritatea sistemelor necesită autentificare pentru a accepta cereri. Adaugă orice antete necesare:

Antet Valoare exemplu
Authorization Bearer your-api-key-here
Content-Type application/json

Sfat de securitate: Folosește o cheie API dedicată cu permisiuni limitate. Nu utiliza credențiale de nivel admin.

Unde găsești cheile API: Verifică setările sau secțiunea pentru dezvoltatori a sistemului la care te conectezi (de exemplu, CRM-ul tău, platforma de e-commerce sau instrumentul de rezervări).

Pasul 4: Definește datele de intrare (ce trimite botul)

Parametrii de intrare sunt informațiile pe care botul le colectează din conversație și le trimite către sistemul tău.

Pentru fiecare parametru, specifici:

Proprietate Ce înseamnă
Nume Numele parametrului (trebuie să corespundă cu ceea ce așteaptă sistemul tău)
Tip Ce fel de date sunt (text, număr, adevărat/fals etc.)
Descriere Spune AI-ului ce reprezintă această informație și unde să o găsească în conversație
Obligatoriu Dacă este setat pe Da, botul va cere clientului această informație înainte de a continua

Tipuri de parametri disponibili:

Tip Ce înseamnă
string Text (nume, numere de comandă, adrese)
number O valoare numerică (cantitate, preț)
boolean Adevărat sau fals (valori da/nu)
array O listă de elemente. Trimisă ca o listă JSON reală — în Run Test o poți introduce ca [8624], ["a", "b"] sau pur și simplu separată prin virgulă (8624, 8625) și este convertită automat pentru tine. Dacă API-ul tău este strict cu privire la conținutul listei — de exemplu, doar numere — setează opțiunea Item type lângă tip și fiecare valoare din listă va fi convertită la acesta.
query_param Text care este trimis ca parametru URL în loc de corpul cererii. Folosește acest lucru atunci când API-ul tău așteaptă date în URL (de exemplu, ?order_id=123).

Fiecare parametru are, de asemenea, un câmp opțional Cale corp cerere (Request body path). În mod normal, un parametru este trimis ca un câmp de nivel superior în corpul cererii (sau ca o valoare în șirul de interogare, pentru tipul query_param). Dacă endpoint-ul tău se așteaptă ca acesta să fie imbricat — de exemplu {"order": {"id": "ORD-123"}} — setează calea la order.id, iar platforma va imbrica valoarea acolo pentru tine.

Exemplu: Pentru o căutare a stării comenzii, ai putea defini:

  • order_number (string, obligatoriu): „Numărul comenzii clientului. De obicei începe cu ORD- urmat de cifre. Cere clientului acest număr dacă nu l-a menționat deja.”
  • email (string, opțional): „Adresa de e-mail a clientului pentru verificare suplimentară. Necesară doar dacă numărul comenzii singur nu găsește o potrivire.”

Ce primește sistemul tău automat

Pe lângă parametrii de intrare pe care îi definiți, platforma include automat date de sistem cu fiecare solicitare. Endpoint-ul dumneavoastră primește acest lucru într-un câmp system:

Câmp de sistem Ce conține
system.contactId ID-ul de platformă al contactului din conversație
system.campaignId ID-ul campaniei de care aparține conversația
system.userId ID-ul tău de utilizator
system.channel Canalul de mesagerie (de ex., "whatsapp", "instagram")
system.contact Înregistrarea completă a contactului (nume, telefon, e-mail, etichete etc.)
system.campaign Configurația campaniei
system.test true dacă acesta este un test de tip „Încearcă”, false pentru conversații live

Acest lucru este util dacă sistemul dumneavoastră trebuie să identifice contactul, să verifice ce campanie a declanșat funcția sau să se comporte diferit în timpul testării.

Nu aveți nevoie de datele de sistem? Activați comutatorul Omite datele de sistem (Skip System Data) în constructorul de funcții. Botul va trimite apoi doar parametrii de intrare pe care i-ați definit — fără date despre contact sau campanie. Utilizați această opțiune dacă endpoint-ul dumneavoastră respinge câmpurile neașteptate sau dacă pur și simplu doriți un payload mai simplu.

Pasul 5: Testează-l, apoi lasă botul să citească răspunsul

În mod normal, nu trebuie să mapezi deloc câmpurile de răspuns. Odată ce endpoint-ul tău răspunde, botul citește întregul răspuns JSON și folosește Descrierea și Scopul (Acțiune AI) ale funcției tale — plus descrierea fiecărui parametru — pentru a determina ce este important și a prezenta informația în mod natural. O descriere clară a funcției în sine („Recuperează starea curentă a unei comenzi a clientului, incluzând informațiile de livrare și urmărirea”) face mai multă treabă aici decât ar face maparea câmp cu câmp.

Dacă endpoint-ul tău returnează un răspuns mare și vrei ca botul să vadă doar câteva valori specifice, deschide secțiunea Mapare răspuns (restrânsă implicit, chiar deasupra butonului Test). Fiecare rând alege un câmp de nivel superior din răspuns: Câmp răspuns este numele câmpului din răspunsul JSON al API-ului tău, iar Câmp ieșire este numele sub care îl primește botul. Cu cel puțin un rând completat, botul primește doar valorile mapate de tine în loc de întregul corp al răspunsului. Lasă secțiunea goală pentru a păstra comportamentul implicit de răspuns complet.

Înainte de a salva, folosește secțiunea Test din partea de jos a generatorului pentru a lansa cererea exact așa cum a fost configurată și pentru a vedea răspunsul real, fără a părăsi aplicația:

Răspunsul pe care îl vedeți aici este răspunsul brut al endpoint-ului. Dacă ați configurat Maparea răspunsului mai sus, botul într-un chat real primește doar acele câmpuri mapate — testul arată întotdeauna răspunsul brut complet, astfel încât să puteți vedea ce este disponibil pentru mapare. Dacă ceva pare în neregulă (nume de câmpuri neașteptate, imbricare suplimentară), remediați acest lucru la nivelul endpoint-ului sau ajustați maparea.

Atribuirea funcțiilor unui Agent

După crearea unei funcții personalizate, trebuie să spui fiecărui Agent ce funcții poate folosi:

  1. Deschide Agentul din AI Studio → AI Agents.
  2. Mergi la fila AI Abilities (Abilități AI). (Pentru o campanie care își păstrează propriile setări AI direct, în loc să le gestioneze printr-un Agent separat, aceeași listă apare în schimb la pasul AI Abilities al acelei campanii.)
  3. Vei vedea o listă cu fiecare funcție personalizată pe care ai creat-o. Activează fiecare funcție pe care vrei ca botul acestui Agent să o poată apela.
  4. Fă clic pe Save changes (Salvează modificările) în partea de jos. Selecțiile se aplică doar după salvare.

Doar funcțiile atribuite sunt disponibile botului pentru acel Agent. Acest lucru previne utilizarea accidentală a unor funcții care nu sunt relevante.


Testarea funcțiilor personalizate

Înainte de a trece la varianta live, testați temeinic:

  1. Rulează testul încorporat - Folosește secțiunea Test din interiorul generatorului de funcții (vezi mai sus) pentru o verificare rapidă fără a părăsi aplicația — introdu valori realiste și fă clic pe Run test.
  2. Testează direct endpoint-ul sistemului tău - Pentru lista de verificare completă de mai jos, un instrument dedicat precum Postman (sau dezvoltatorul tău) analizează mai în profunzime decât un singur Run test.
  3. Testează în Try Out - Simulează o conversație în care clientul întreabă ceva ce ar trebui să declanșeze funcția.
  4. Verifică răspunsul - Asigură-te că botul citește și prezintă corect datele.
  5. Testează scenariile de eroare - Ce se întâmplă dacă clientul oferă un număr de comandă invalid? Ce se întâmplă dacă sistemul tău este temporar indisponibil?

Când testul returnează 401 sau 403

O eroare 401 sau 403 înseamnă că punctul final (endpoint) a primit cererea, dar a refuzat-o. Indiciul este că nu apare nimic în propriile jurnale — majoritatea instrumentelor resping un apel neautorizat înainte de a începe fluxul de lucru, deci nu există nimic de văzut din partea ta și pare că cererea nu a ajuns niciodată.

Aproape întotdeauna este vorba despre o nepotrivire de autentificare: punctul tău final dorește un anumit tip de acreditări, iar funcția trimite unul diferit. Verifică dacă antetul pe care l-ai adăugat la Pasul 3 este exact cel așteptat de sistemul tău.

Cea mai comună variantă a acestei probleme este un webhook protejat cu Basic Auth (n8n, Make și majoritatea instrumentelor găzduite local oferă acest lucru ca o bifă pe webhook-ul în sine), în timp ce funcția trimite un antet secret personalizat precum X-My-Secret. Basic Auth acceptă doar un antet Authorization, deci un antet personalizat este ignorat și apelul este respins. Ai două opțiuni:

  • Dezactivează Basic Auth pe webhook și verifică antetul personalizat în interiorul fluxului de lucru.
  • Păstrează Basic Auth activat și adaugă un antet Authorization la funcție, a cărui valoare să fie cuvântul Basic urmat de username:password codificat în base64.

Oricare dintre variante funcționează — asigură-te doar că ambele părți sunt de acord.

Când testul returnează 404

URL-ul punctului final este greșit sau fluxul de lucru nu este publicat. În n8n, în mod specific, fiecare webhook are un URL de Test și un URL de Producție separat, iar cel de Test ascultă doar cât timp ai editorul deschis. Copiază URL-ul de Producție și asigură-te că fluxul de lucru este activ.

Vizualizarea erorilor în Try Out și Chats

Atunci când AI-ul apelează o funcție personalizată în timpul unei conversații și apelul eșuează — credențiale incorecte, endpoint indisponibil, timeout — conversația afișează acum acest lucru: un indicator roșu „(nume funcție) a eșuat” apare în firul de discuție, atât în fila Try Out a agentului, cât și în conversațiile reale din Chats. Faceți clic pe indicator pentru a extinde detaliile: codul de stare returnat de endpoint-ul dumneavoastră și corpul răspunsului, care sunt de obicei suficiente pentru a vă spune exact ce trebuie remediat (un 401 cu un mesaj „unauthorized” înseamnă o problemă cu antetul de autentificare, un timeout înseamnă că endpoint-ul a durat mai mult de 30 de secunde).

Apelurile reușite afișează, de asemenea, un indicator — faceți clic pe el pentru a vedea ce a trimis efectiv înapoi endpoint-ul dumneavoastră. Aceasta este cea mai rapidă modalitate de a depana o integrare cap-la-cap: purtați conversația de test în Try Out, apoi faceți clic pe indicatorul funcției pentru a vedea rezultatul real al cererii fără a părăsi pagina.


Exemplu complet: Căutare stare comandă

Iată un exemplu complet configurat pe care îl poți folosi ca șablon:

Informații de bază:

  • Nume: check_order_status
  • Descriere: “Recuperează starea curentă a unei comenzi a clientului, inclusiv informațiile de livrare și urmărire”
  • Acțiune AI: “Apelează această funcție atunci când un client întreabă despre starea comenzii sale, unde se află coletul sau când va sosi. Întreabă întotdeauna mai întâi numărul comenzii.”

Conexiune:

  • URL: https://api.mystore.com/orders/lookup
  • Metodă: POST

Antete:

  • Authorization: Bearer sk_live_abc123
  • Content-Type: application/json

Parametri de intrare:

  • order_number (text, obligatoriu): “Numărul comenzii furnizat de client”
  • customer_email (text, opțional): “Adresa de e-mail a clientului pentru verificare suplimentară”

Nu este necesară maparea răspunsului — cu o Descriere și o Acțiune AI clar setate mai sus, botul citește orice JSON returnează endpoint-ul tău (stare, număr de urmărire, dată de livrare, articole) și determină cum să comunice despre acesta.

Cum arată conversația:

Client: Hei, unde este comanda mea?

Bot: Bună! Mă bucur să verific starea comenzii tale. Îmi poți comunica numărul comenzii?

Client: Este ORD-78234

Bot: Lasă-mă să verific pentru tine…

Comanda ta ORD-78234 a fost expediată și este pe drum! Data estimată a livrării este 10 martie. Poți urmări coletul aici: https://tracking.example.com/1Z999AA1

Te mai pot ajuta cu altceva?


Exemplu complet: Starea comenzii Shopify

Dacă magazinul rulează pe Shopify, nu ai nevoie de un dezvoltator pentru a crea un endpoint de căutare — sistemul propriu Shopify poate răspunde direct la întrebările despre comenzi. (Pentru întrebări despre produse și stocuri într-un magazin Shopify, nu ai nevoie deloc de o funcție personalizată: conectează serverul integrat al magazinului — vezi Conectarea unui magazin Shopify.)

Mai întâi, creați un jeton de acces în Shopify. Shopify a modificat acest lucru în cursul anului 2026: aplicațiile nu mai pot fi create în interiorul panoului de administrare Shopify, iar noul ecran pentru aplicații vă oferă un ID de client și un Secret de client în loc de un jeton gata pregătit. Pașii de mai jos transformă aceste date într-un jeton permanent. Alocați aproximativ zece minute, o singură dată per magazin. (Dacă magazinul are deja o aplicație mai veche creată prin metoda veche, jetonul existent va continua să funcționeze — treceți direct la funcția personalizată de mai jos.)

  1. Accesați Shopify Dev Dashboard la dev.shopify.com, deschideți organizația dvs. și faceți clic pe Apps → Create app. Denumiți-o ceva de genul Order lookup.
  2. Acordați aplicației permisiunea read_orders, lansați o versiune și instalați aplicația pe magazin.
  3. Deschideți Setările aplicației și adăugați adresa web a magazinului (de exemplu https://www.yourstore.com/) la URL-urile de redirecționare permise. Salvați.
  4. Tot în Setări, copiați Client ID și Client secret.
  5. Într-un browser în care sunteți conectat la Shopify admin al acelui magazin, deschideți adresa de mai jos, înlocuind numele magazinului, ID-ul clientului și adresa de redirecționare cu ale dvs.: https://YOUR-STORE.myshopify.com/admin/oauth/authorize?client_id=YOUR-CLIENT-ID&scope=read_orders&redirect_uri=https://www.yourstore.com/&state=12345 Aprobați ecranul care apare. Browserul va ajunge la adresa dvs. de redirecționare, iar bara de adrese va conține acum code= urmat de o valoare lungă — copiați acea valoare. Este validă doar pentru câteva minute, așa că treceți direct la pasul următor.
  6. Schimbați acel cod cu token-ul, ceea ce puteți face în Your AI Connector. În constructorul de funcții personalizate, setați Metoda la POST și URL la https://YOUR-STORE.myshopify.com/admin/oauth/access_token, adăugați trei parametri de intrare text numiți client_id, client_secret și code, apoi faceți clic pe Test, completați cele trei valori și rulați-l. Răspunsul conține access_token — acesta este token-ul dvs. permanent. Copiați-l într-un loc sigur, apoi goliți constructorul și configurați funcția reală mai jos.

Apoi configurează funcția personalizată:

Informații de bază:

  • Nume: check_shopify_order
  • Descriere: “Caută o comandă în sistemul Shopify al magazinului și returnează starea, urmărirea și articolele acesteia”
  • Acțiune AI: “Apelează această funcție atunci când un client întreabă despre starea comenzii sau livrarea sa. Întreabă întotdeauna mai întâi numărul comenzii.”

Conexiune:

  • URL: https://YOUR-STORE.myshopify.com/admin/api/2026-01/orders.json?status=any — înlocuiește YOUR-STORE cu numele .myshopify.com al magazinului (această adresă folosește domeniul tehnic Shopify, nu domeniul personalizat al magazinului)
  • Metodă: GET

Antete:

  • X-Shopify-Access-Token: shpat_... (tokenul de mai sus)

Parametri de intrare:

  • name (query_param, obligatoriu): “Numărul comenzii clientului exact așa cum apare în confirmarea comenzii, inclusiv semnul # — de exemplu #1001. Cere clientului acest număr dacă nu l-a menționat deja.”

Nu este necesară maparea răspunsului — botul citește comanda returnată (starea plății, starea livrării, urmărirea, articolele) și răspunde în mod natural.

Bine de știut: un token creat în acest mod poate vedea comenzile din ultimele 60 de zile — suficient pentru întrebările de asistență zilnice, dar nu pentru un istoric complet al comenzilor.


Exemplu complet: Programare

Informații de bază:

  • Nume: create_booking
  • Descriere: “Creează o programare nouă în sistemul nostru de rezervări”
  • Acțiune AI: “Folosește această funcție după confirmarea datei, orei și a detaliilor de contact cu clientul. Nu apela funcția până când clientul nu confirmă explicit că dorește să facă programarea.”

Conexiune:

  • URL: https://booking.mycompany.com/api/appointments
  • Metodă: POST

Parametri de intrare:

  • date (text, obligatoriu): “Data programării în format AAAA-LL-ZZ”
  • time (text, obligatoriu): “Ora programării în format HH:MM”
  • name (text, obligatoriu): “Numele complet al clientului”
  • phone (text, obligatoriu): “Numărul de telefon al clientului”
  • service_type (text, obligatoriu): “Tipul serviciului rezervat”

Exemplu complet: Adăugarea unui abonat la newsletter în CRM-ul tău

Un tipar foarte comun: botul termină de răspuns, oferă newsletter-ul tău, contactul răspunde cu adresa de e-mail, iar acea adresă ar trebui să ajungă direct în instrumentul tău de e-mail. Majoritatea sistemelor CRM (FluentCRM, ActiveCampaign, MailerLite, Brevo și altele) acceptă un simplu POST exact pentru acest lucru, deci nu este nevoie de o platformă de automatizare intermediară.

Acest exemplu utilizează FluentCRM pe WordPress. Structura este aceeași pentru orice alt instrument care îți oferă un „webhook de intrare” sau un endpoint de „creare abonat”.

Mai întâi, obține URL-ul din CRM-ul tău. În WordPress, deschide FluentCRM → Settings → Incoming Webhooks și creează un webhook. Alege lista, etichetele și starea abonamentului pe care ar trebui să le primească noile contacte, apoi copiază URL-ul webhook-ului generat. Tot ce setezi aici este aplicat automat, astfel încât botul trebuie doar să trimită adresa de e-mail.

Apoi configurează funcția personalizată:

Informații de bază:

  • Nume: add_newsletter_subscriber
  • Descriere: „Adaugă o persoană în lista noastră de newsletter folosind adresa de e-mail oferită în chat”
  • Acțiune AI: „Folosește acest lucru în momentul în care contactul este de acord să se aboneze la newsletter și oferă adresa de e-mail. Nu apela funcția înainte ca aceștia să fi furnizat efectiv o adresă și nu o apela de două ori pentru aceeași persoană.”

Conexiune:

  • URL: URL-ul webhook-ului pe care l-ai copiat din CRM-ul tău
  • Metodă: POST

Parametri de intrare:

  • email (șir, obligatoriu): „Adresa de e-mail pe care contactul a oferit-o în conversație”
  • first_name (șir, opțional): „Prenumele contactului, dacă a fost menționat”

Omite datele de sistem: activează această opțiune (on). CRM-ul tău are nevoie doar de câmpurile de mai sus, iar un payload mai simplu evită erorile din partea instrumentelor care resping câmpurile neașteptate.

Maparea răspunsului: nu este necesară aici. Nu trebuie să se întoarcă nimic pentru ca botul să își continue activitatea.

Nu uitați să activați funcția pentru Agentul care rulează conversația (consultați Atribuirea funcțiilor unui agent). Acesta este cel mai frecvent motiv pentru care o funcție construită corect nu se declanșează niciodată.

Sfat: botul are, de asemenea, un instrument încorporat de Actualizare e-mail contact (Update Contact Email), care salvează adresa în fișa de contact din cadrul platformei. Aceasta este separată de această funcție și utilă în paralel — instrumentul încorporat păstrează fișa ta de contact completă, iar funcția personalizată trimite adresa către CRM-ul tău.


Sfaturi pentru funcții personalizate fiabile

  1. Asigură-te că cererile repetate sunt sigure. Dacă aceeași cerere este trimisă accidental de două ori, aceasta nu ar trebui să creeze înregistrări duplicate. Problemele de rețea pot cauza ocazional acest lucru.

  2. Returnează mesaje de eroare clare. Dacă ceva nu merge bine din partea sistemului tău, returnează o eroare ușor de înțeles pentru utilizatori. Botul o va transmite clientului într-o manieră elegantă.

  3. Menține timpii de răspuns sub 10 secunde. Dacă sistemul tău are nevoie de mai mult timp, ia în considerare returnarea unei confirmări rapide mai întâi.

  4. Gestionează credențialele expirate sau invalide. Dacă cheia ta API expiră, asigură-te că mesajul de eroare este clar, astfel încât botul să știe să alerteze un om în loc să reîncerce.

  5. Scrie descrieri detaliate. AI-ul folosește descrierile tale pentru a determina când să apeleze funcția și cum să extragă informațiile corecte din conversație. Descrierile vagi duc la greșeli.

  6. Testează cu conversații reale. „Încearcă” este excelent pentru testarea inițială, dar monitorizează primele conversații live pentru a te asigura că totul funcționează cu întrebări reale ale clienților.

  7. Păstrează jurnale (logs) de partea ta. Cere dezvoltatorului tău să înregistreze cererile care vin din aplicație, astfel încât să poți depana rapid orice problemă.

  8. Folosește un URL final public. URL-ul funcției tale trebuie să fie o adresă web publică (HTTP/HTTPS). Adresele interne, localhost și cele din rețele private sunt respinse din motive de securitate, iar platforma nu urmărește redirecționările — direcționează funcția direct către URL-ul final, nu către unul care redirecționează către acesta.


Limite de execuție

Fiecare funcție personalizată are o secțiune opțională Limite de execuție în partea de jos a editorului. Aceasta controlează cât de des poate rula AI-ul funcția și dacă un rezultat anterior poate fi refolosit. Totul aici este opțional — lăsați totul gol și funcția se va comporta exact ca înainte.

Funcție doar în citire. Activați această opțiune dacă funcția dvs. doar citește date — o căutare de stoc, o verificare de preț, o căutare a stării unei comenzi — și nu creează sau modifică niciodată nimic. Atunci când o problemă temporară de rețea întrerupe AI-ul în timpul răspunsului, platforma poate reîncerca în siguranță pasul conversației în loc să lase clientul fără un răspuns. Activați-o doar dacă funcția nu scrie niciodată nimic: o funcție care creează înregistrări trebuie să rămână dezactivată, astfel încât o reîncercare să nu o poată rula accidental de două ori.

Servește rezultatul din cache la apeluri repetate. Când AI-ul apelează funcția din nou cu aceleași date de intrare (de exemplu, clientul pune aceeași întrebare de două ori), rezultatul anterior este refolosit în loc să apeleze din nou punctul final (endpoint). Rezultatele din cache sunt păstrate timp de până la 24 de ore, iar un apel cu date de intrare diferite va accesa întotdeauna punctul final pentru o interogare nouă.

Număr maxim de rulări per conversație. O limită strictă privind numărul de ori în care funcția poate rula în cadrul unei conversații. Setați-o la 1 pentru funcțiile care ar trebui să fie declanșate o singură dată per chat — generarea unei oferte, declanșarea unui apel înapoi, pornirea unei automatizări. Când limita este atinsă, AI-ul este informat că funcția a rulat deja și primește cel mai recent rezultat, astfel încât să poată răspunde în continuare clientului în loc să rămână tăcut.

Număr maxim de rulări per interval de timp. O limită de rată în timp: de exemplu, cel mult 5 rulări în 60 de minute. Util pentru funcțiile care apelează servicii terțe plătite sau declanșează automatizări mai complexe. Ambele căsuțe trebuie completate împreună (un număr de rulări și un interval în minute, până la 7 zile).

Câteva lucruri de știut:

  • Limitele contorizează doar rulările reușite. Un apel care a eșuat din partea punctului dvs. final nu consumă din buget.
  • Atunci când o rulare este blocată de o limită, clientul nu este lăsat niciodată în așteptare — AI-ul este informat despre motiv și lucrează cu informațiile pe care le are deja.
  • Limitele se aplică peste tot unde rulează funcția: chat-uri obișnuite pe fiecare canal și funcții gestionate de o automatizare. Conversațiile de test din „Încearcă” (Try Out) nu sunt contorizate și nu sunt limitate.

Instrumente integrate pentru boți

Pe lângă funcțiile personalizate pe care le construiești singur, platforma vine cu o bibliotecă de instrumente predefinite pe care botul AI le poate folosi în timpul unei conversații. Acestea acoperă cele mai comune acțiuni pe care trebuie să le facă un bot — alertarea unui coleg, programarea unei întâlniri, etichetarea unui contact, căutarea pe site-ul tău, programarea unei urmăriri și multe altele — astfel încât să nu fii nevoit să le configurezi de la zero.

Botul decide când să folosească fiecare instrument în funcție de ceea ce se întâmplă în conversație și de modul în care este configurat Agentul tău (și campania atașată acestuia). Majoritatea acestor instrumente se activează automat când funcția aferentă este activată (de exemplu, instrumentele de rezervare devin disponibile doar după ce conectezi un calendar și activezi rezervările).

Cost în credite: Fiecare apel de instrument este facturat în funcție de nivelul de Calitate AI al Agentului tău, iar funcțiile personalizate pe care le creezi singur sunt facturate în același mod:

Nivel de Calitate AI Credite per apel de instrument Cu propria cheie Anthropic (BYOK) conectată
Pro 1 credit 0 credite — rulează pe cheia ta
Economy (depreciat) 0,5 credite 0 credite — rulează pe cheia ta
Max 0,25 credite tot 0,25 credite, facturat chiar și cu propria cheie conectată, deoarece Max rulează pe propriul nostru model
Mini 0,15 credite tot 0,15 credite, facturat chiar și cu propria cheie conectată, deoarece Mini rulează pe propriul nostru model

Instrumente pentru echipă și sarcini

Instrument Ce face Când îl folosește botul
Alertă membru echipă Oprește botul pentru acest contact și trimite un e-mail echipei tale că este nevoie de un om. Chat-ul este marcat pentru a fi preluat de un coleg. Când clientul cere un om, este frustrat sau întreabă ceva ce botul nu are voie sau nu poate să răspundă.
Creare sarcină Creează o sarcină nouă pe panoul tău de sarcini, opțional legată de contact și conversație. Botul continuă să răspundă normal — sarcina este doar o notă pentru echipa ta de a reveni ulterior. Pentru elemente non-urgente, cum ar fi o cerere de funcționalitate, o oportunitate de vânzare suplimentară sau un apel pe care echipa ar trebui să îl gestioneze mai târziu.
Sugerează actualizare FAQ Când botul întâlnește o întrebare la care nu poate răspunde bine, creează o sarcină prin care cere echipei tale să adauge un răspuns în baza de cunoștințe. Când un contact întreabă ceva ce nu este acoperit de FAQ-urile existente — astfel încât lacuna să fie remediată pentru data viitoare.
Adaugă context la o sugestie FAQ Dacă un alt contact întreabă ulterior ceva similar dintr-o altă perspectivă, botul adaugă acel context la sugestia FAQ existentă în loc să creeze o sarcină duplicat. Automat — îți menține lista de sarcini curată când mai multe persoane ridică aceeași problemă de cunoștințe.

Instrumente pentru contacte

Instrument Ce face Când îl folosește botul
Etichetare Rulează automat după fiecare răspuns al botului — nu este un instrument pe care botul care interacționează cu clientul decide să îl apeleze. Sistemul analizează conversația recentă și aplică etichete relevante, refolosind etichetele tale existente acolo unde este posibil (și creând una nouă doar când este necesar). Automat — ori de câte ori conversația dezvăluie ceva ce merită segmentat, cum ar fi interesul, intenția, calitatea lead-ului sau limba.
Actualizează numele contactului Salvează prenumele și/sau numele de familie al contactului atunci când acesta le partajează. Când clientul se prezintă sau își corectează numele.
Actualizează e-mailul contactului Salvează adresa de e-mail a contactului atunci când acesta o partajează. Când clientul furnizează un e-mail — pentru buletine informative, chitanțe, căutări în cont etc.

Instrumente pentru programări și rezervări

Aceste instrumente sunt disponibile doar atunci când rezervările sunt activate în campania legată de Agentul tău și este configurat un tip de eveniment de calendar.

Instrument Ce face Când îl folosește botul
Verifică intervalele orare disponibile Caută ce intervale sunt libere în calendarul tău conectat pentru o anumită dată sau perioadă. Când clientul dorește să facă o programare și botul trebuie să ofere disponibilitate reală.
Programează o întâlnire Creează programarea în calendarul tău și confirmă rezervarea către client. După ce clientul confirmă o dată și o oră specifică.
Mută o întâlnire Reprogrammează o întâlnire existentă la o nouă dată și oră. Când clientul solicită reprogramarea.
Anulează o întâlnire Anulează o întâlnire existentă. Când clientul solicită anularea.
Caută întâlniri Extrage programările existente ale unui contact, astfel încât botul să știe ce este deja stabilit. Când clientul întreabă „când este programarea mea?” sau înainte de a oferi reprogramarea.

Instrumente pentru cunoștințe și web

Instrument Ce face Când îl folosește botul
Căutare pe site-ul tău Scanează URL-urile pe care le-ai adăugat în lista de URL-uri dinamice a campaniei pentru a găsi pagini de produse, articole sau alt conținut care răspunde la întrebarea clientului. Disponibil doar când Căutare web AI este activată și ai adăugat cel puțin un URL dinamic. Dacă Căutarea web AI este dezactivată, botul nu poate citi pagini sau linkuri — nici măcar pe cele pe care clientul le lipește în chat. Când clientul întreabă despre ceva ce se află probabil pe site-ul tău — produse, prețuri, locații, politici.
Verifică un link Citește conținutul unui anumit URL, astfel încât botul să poată răspunde la întrebări despre acea pagină. Disponibil doar când Căutare web AI este activată și ai adăugat cel puțin un URL dinamic. Dacă Căutarea web AI este dezactivată, botul nu poate citi pagini sau linkuri — nici măcar pe cele pe care clientul le lipește în chat. Când clientul distribuie un link sau întreabă despre o anumită pagină de pe site-ul tău.
Căutare pe web Rulează o căutare publică pe Google și returnează primele rezultate, astfel încât botul să poată răspunde la întrebări din afara propriului tău conținut. Când clientul întreabă despre ceva general (de ex., direcții, informații publice) care nu se află în baza ta de cunoștințe. Utilizat doar dacă căutarea web este activată.

Instrumente de follow-up

Aceste instrumente necesită activarea urmăririlor (follow-ups) în campania conectată la Agentul tău.

Instrument Ce face Când îl folosește botul
Programează o continuare inteligentă Programează un mesaj de continuare inteligent folosind secvența ta de continuare — alege șablonul și momentul potrivit în funcție de conversație. Când clientul nu mai răspunde sau cere botului să „revină mai târziu”.
Programează o continuare Programează o continuare de bază la un moment specific. Când botul trebuie să impulsioneze conversația într-un moment definit.

Executor de funcții personalizate

Instrument Ce face Când îl folosește botul
Rulează o funcție personalizată Execută una dintre funcțiile personalizate pe care le-ai creat și atribuit Agentului (vezi restul acestei pagini). Când solicitarea clientului corespunde scopului uneia dintre funcțiile tale personalizate.

Instrumente pentru rezervări la restaurant (Zenchef și Formitable)

Aceste instrumente sunt disponibile doar atunci când este conectată o integrare Zenchef sau Formitable. Acestea permit botului să gestioneze rezervările la restaurant cap-la-cap.

Instrument Ce face Când îl folosește botul
Verifică disponibilitatea restaurantului Caută intervale de rezervare libere pentru o anumită dată, număr de persoane și (opțional) zonă de așezare. Când un oaspete dorește să rezerve o masă.
Creează o rezervare la restaurant Creează o rezervare nouă. După ce oaspetele confirmă un interval specific.
Actualizează o rezervare la restaurant Modifică data, ora, numărul de persoane sau notele unei rezervări existente. Când oaspetele solicită modificarea rezervării.
Anulează sau schimbă starea rezervării Anulează o rezervare sau îi actualizează starea (de ex., confirmată, neprezentare). Când oaspetele anulează sau când botul trebuie să marcheze o schimbare de stare.
Caută rezervări Găsește rezervările existente care corespund unor criterii precum nume, e-mail sau dată. Când un oaspete care revine întreabă despre o rezervare existentă.
Actualizează profilul oaspetelui Actualizează profilul oaspetelui în sistemul restaurantului (preferințe, note, informații de contact). Când oaspetele împărtășește preferințe alimentare, un număr de telefon nou sau alte informații la nivel de profil.
Listează produsele restaurantului Extrage lista de meniuri, meniuri fixe sau opțiuni suplimentare disponibile pentru rezervare. Când oaspetele întreabă „ce meniuri fixe aveți?” sau botul trebuie să atașeze un meniu unei rezervări.

Activarea și dezactivarea instrumentelor

Majoritatea instrumentelor sunt controlate în fila Abilități AI a Agentului (sau în pasul Abilități AI al campaniei, dacă lucrezi dintr-o campanie încă clasică):

  • Instrumentele de rezervare se activează când activezi rezervările și conectezi un calendar — aceasta rămâne o setare per campanie pentru moment, cu un link direct către pasul acelei campanii din fila Abilități AI a Agentului
  • Instrumentele de urmărire se activează când activezi urmăririle
  • Instrumentele pentru restaurante se activează când conectezi un cont Zenchef sau Formitable
  • Căutarea web are propriul comutator în fila Întrebări frecvente și cunoștințe
  • Instrumentele pentru sarcini pot fi dezactivate per Agent cu comutatorul Permite AI să creeze sarcini (sunt activate implicit; comutatorul pentru sarcini la nivel de cont din Setări → Profil → Caracteristici dezactivează întregul sistem de sarcini peste tot)
  • Instrumentele de actualizare a contactelor sunt controlate în aceeași filă Abilități AI — dacă AI-ul poate redenumi contactele sau salva informații suplimentare colectate despre acestea
  • Instrumentele de alertă sunt întotdeauna disponibile; etichetarea rulează automat după fiecare răspuns al botului (nu este un instrument pe care botul alege să îl apeleze)

Dacă dorești ca botul să nu mai folosească un anumit instrument încorporat, cea mai simplă metodă este să dezactivezi funcția subiacentă (de exemplu, dezactivează rezervările pentru a dezactiva toate instrumentele de rezervare).


Funcții gestionate de o automatizare

Unele intrări din pagina Funcții personalizate pot purta insigna Gestionat de automatizare. Acestea nu au fost create aici — ele provin dintr-o automatizare cu un declanșator de tip Funcție Agent AI, care oferă agentului tău o abilitate ai cărei pași îi construiești vizual pe pânza de automatizare, în loc să indici o adresă web externă.

O funcție gestionată este administrată pentru tine: numele, descrierea și câmpurile sale respectă întotdeauna ceea ce este setat în declanșatorul automatizării, așa că nu poate fi editată sau ștearsă din această pagină — folosește linkul Deschide automatizarea și modifică automatizarea în sine. Poți alege în continuare ce agenți o au în mod obișnuit: în fila Capacități AI a unui agent, aceasta apare alături de celelalte capacități ale agentului cu un comutator obișnuit pornit/oprit (dacă automatizarea sa este întreruptă, rândul va specifica acest lucru — capacitatea devine activă când automatizarea este pornită). Tot restul se comportă ca orice altă funcție personalizată: AI-ul decide când să o apeleze, colectează detaliile pe care le-ai definit și poate folosi răspunsul automatizării în aceeași conversație.

Dacă alegi între cele două: direcționează o funcție personalizată obișnuită către un sistem care are deja o adresă de apelat; construiește o automatizare cu un declanșator de Funcție Agent AI atunci când munca este ceva ce ai prefera să asamblezi din pași — caută ceva într-o foaie de calcul sau bază de date, ramifică pe baza unei condiții, creează înregistrări — fără a rula propriul tău server. Vezi Automatizări.


Cerințele planului

Funcțiile personalizate sunt disponibile în planurile care includ funcționalitatea de funcții personalizate. Verificați abonamentul pentru a confirma disponibilitatea.


Pașii următori

  • Conectează servere MCP la botul tău — un pachet gata pregătit de instrumente în loc de o singură funcție pe rând.
  • Agenți AI — pagina principală a grupului AI Studio în care se află Funcțiile Personalizate și unde funcțiile personalizate sunt atribuite unui bot.