Spraakassistent

Lees gesprekken, notities en afspraken van de assistent; start taakoproepen (offerte / incasso) vanuit het CRM; integreer het live gespreksscherm in uw eigen software. Integratiesleutel (bt_…, bereik voicebot of autocall).

Endpoint: https://api.buluthat.com/api/voicebot_api.php?action=<işlem> — lezen GET, die wijzigt POST. Parameters kunnen via query, formulier of JSON-body worden verzonden.

GETping · bots

GET https://api.buluthat.com/api/voicebot_api.php?action=bots
{ "ok": true, "data": [ { "id": 3, "name": "Teknik Servis Asistanı", "status": "active", "language": "tr" } ] }

GETsessions · session

Gesprekslijst en samenvatting van één gesprek.

ParameterOmschrijving
bot_idAssistentfilter
from, toDatumbereik (Y-m-d)
outcomeResultaatfilter (resolved, transferred, note, appointment, failed …)
callerNummer van de beller
limit, offsetPaginering (maximaal 200)
{ "ok": true, "data": [ {
  "id": 8812, "bot_id": 3, "direction": "inbound", "caller_number": "05321234567",
  "started_at": "2026-09-18 10:12:03", "duration_seconds": 84, "status": "ended",
  "summary": "Arayan robot süpürgesinin servis durumunu sordu; parça bekleniyor bilgisi verildi.",
  "intent": "servis_durumu", "sentiment_label": "notr", "outcome": "resolved"
} ] }

action=session&id=8812 geeft één record met tool-aanroepen en resultaatvelden terug; action=session_messages&id=8812 geeft het volledige transcript (rol, tekst, tijd).

GETnotes · POST note_done

Notities en terugbelverzoeken van de assistent.

GET  https://api.buluthat.com/api/voicebot_api.php?action=notes&status=new
POST https://api.buluthat.com/api/voicebot_api.php?action=note_done   { "id": 512 }

Notitietypen: note, callback, approval (prijsgoedkeuring). note_done sluit de notitie.

GETappointments · POST appointment_status

GET  ?action=appointments&from=2026-09-18
POST ?action=appointment_status   { "id": 77, "status": "done" }     // booked | cancelled | done

GEThistory · memory

history de eerdere gesprekken van een nummer bij alle assistenten (geheugenbron), memory geeft de geheugentekst terug die voor dat nummer aan de assistent is gegeven — voor de diagnose "waarom zei de assistent dit".

GET ?action=history&phone=05321234567&limit=20
GET ?action=memory&phone=05321234567

POSTtask_start — taakoproep

Laat de assistent de klant direct bellen: reparatieofferte (quote) of vrije taak (brief). Bij een offerte blijft de minimumprijs behouden; als de klant lager wil, vraagt de assistent toestemming aan de bevoegde ("ik raadpleeg mijn leidinggevende en bel u terug").

curl -X POST "https://api.buluthat.com/api/voicebot_api.php?action=task_start" \
  -H "Authorization: Bearer bt_xxx" -H "Content-Type: application/json" \
  -d '{
    "bot_id": 3, "phone": "05321234567", "caller_id": "02124119610",
    "kind": "quote", "customer_name": "Ayşe Yılmaz", "external_ref": "SERVIS-48211",
    "title": "Robot süpürge onarım teklifi",
    "brief": "Batarya değişimi gerekiyor. Cihaz garanti dışı. Teslim 3 iş günü.",
    "offer_price": 3500, "floor_price": 2900, "currency": "TRY",
    "payment_options": "online,havale",
    "fields": { "cihaz": "Roborock S7", "takip_no": "7K2M9QX4AB" }
  }'
VeldVerplichtOmschrijving
bot_idjaAssistent die belt
phonejaTe bellen nummer
kindjaquote (offerte) of brief (vrije taak)
briefjaContext die de assistent moet kennen (diagnose, voorwaarden)
offer_price, floor_pricevoor quoteOpeningsofferte en de ondergrens waar naartoe mag worden gegaan; de ondergrens wordt de klant niet genoemd en ook aan de serverzijde afgedwongen
payment_optionsneeonline,havale → bij acceptatie wordt naar de betaalwijze gevraagd
caller_id, trunk_slugneeNummerweergave en lijn (caller_ids / trunks wordt weergegeven met)
external_refneeDe ID van uw eigen opname (tasks om te vinden met)
followup_of, decision, decision_noteneeTerugbeloproep na besluit van de bevoegde: approved / counter / rejected

Antwoord: { "ok": true, "data": { "id": 91, "status": "calling", … }, "embed_url": "https://…/api/voicebot_embed.php?t=…" }

GETtask · tasks

GET ?action=task&id=91
GET ?action=tasks&external_ref=SERVIS-48211

Taakstatussen: calling → active → ended; failed (onbereikbaar). Resultaatvelden: outcome (accepted, rejected, manager_approval, callback, not_reached), agreed_price, requested_price, payment_method, summary, callback_time.

GETembed_url — het live scherm insluiten

Genereert een tijdelijk, ondertekend adres om het live/historische messengerscherm van het gesprek via iframe in uw software in te sluiten; geen paneelsessie nodig.

GET ?action=embed_url&phone=05321234567&label=crm&ttl=43200
ParameterOmschrijving
phoneHet scherm toont alleen de gesprekken van dit nummer (en geeft opdrachten)
task_id / session_idSpecifieke taak of gesprek
listener_extensionToestel dat wordt gebruikt voor "Meeluisteren"
ttlSeconden (standaard 12 uur)

naar de iframe allow="microphone" geef; de fluisterfunctie voor de bevoegde gebruikt de eigen spraakherkenning van de browser (Chrome/Edge).

GETfaq_suggestions

Uit gesprekken gewonnen suggesties voor vraag-en-antwoord (in afwachting van goedkeuring). Goedkeuring gebeurt in het paneel.

De assistent koppelen aan uw CRM

Om de assistent een dossier in uw systeem te laten vinden/openen, definieert u REST-tools in het assistentformulier (URL, methode, headers, parameters). Voor het Byfix CRM bestaat een kant-en-klare brug; voor uw eigen CRM volstaan endpoints voor klantopvraag via nummer en dossieraanmaak. Details: CRM-integratie.

Webhook

Na afloop van het gesprek session_ended wordt de gebeurtenis verzonden (samenvatting, resultaat, aangeroepen tools). Zie Webhooks.