Assistente de Voz

Leia as conversas, notas e marcações do assistente; inicie chamadas de tarefa a partir do CRM (proposta / cobrança); incorpore o ecrã de conversa em direto no seu próprio software. Chave de integração (bt_…, âmbito voicebot ou autocall).

Endpoint: https://api.buluthat.com/api/voicebot_api.php?action=<işlem> — leitura GET, que altera POST. Os parâmetros podem ser enviados por query, formulário ou corpo JSON.

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

Lista de conversas e resumo de uma conversa.

ParâmetroDescrição
bot_idFiltro de assistente
from, toIntervalo de datas (Y-m-d)
outcomeFiltro de resultado (resolved, transferred, note, appointment, failed …)
callerNúmero de origem
limit, offsetPaginação (no máximo 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 devolve um único registo com as ferramentas invocadas e os campos de resultado; action=session_messages&id=8812 devolve a transcrição completa (função, texto, hora).

GETnotes · POST note_done

Notas e pedidos de chamada de retorno registados pelo assistente.

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 }

Tipos de nota: note, callback, approval (aprovação de preço). note_done fecha a nota.

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 o historial de conversas de um número em todos os assistentes (fonte da memória), memory devolve o texto de memória dado ao assistente para esse número — para o diagnóstico "porque disse isto o assistente".

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

POSTtask_start — chamada de tarefa

Faz o assistente ligar imediatamente ao cliente: proposta de reparação (quote) ou tarefa livre (brief). Na proposta, o preço mínimo é preservado; se o cliente pedir abaixo do mínimo, o assistente obtém a aprovação de um responsável ("vou consultar o responsável e volto a contactá-lo").

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" }
  }'
CampoObrigatórioDescrição
bot_idsimAssistente que fará a chamada
phonesimNúmero a chamar
kindsimquote (proposta) ou brief (tarefa livre)
briefsimContexto que o assistente deve conhecer (diagnóstico, condições)
offer_price, floor_pricepara quoteProposta inicial e preço mínimo até onde se pode descer; o mínimo não é revelado ao cliente e é também aplicado no servidor
payment_optionsnãoonline,havale → na aceitação, pergunta-se a forma de pagamento
caller_id, trunk_slugnãoNúmero de origem e linha (caller_ids / trunks é listado com)
external_refnãoIdentificador do seu próprio áudio (tasks para encontrar com)
followup_of, decision, decision_notenãoChamada de retorno após a decisão do responsável: approved / counter / rejected

Resposta: { "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

Estados da tarefa: calling → active → ended; failed (inatingível). Campos do resultado: outcome (accepted, rejected, manager_approval, callback, not_reached), agreed_price, requested_price, payment_method, summary, callback_time.

GETembed_url — incorporar o ecrã em direto

Gera um endereço assinado e com prazo para incorporar no seu software, por iframe, o ecrã de messenger em direto/histórico da conversa; não é necessária sessão no painel.

GET ?action=embed_url&phone=05321234567&label=crm&ttl=43200
ParâmetroDescrição
phoneO ecrã mostra apenas as conversas deste número (e dá comandos)
task_id / session_idTarefa ou conversa específica
listener_extensionExtensão a utilizar para "Ouvir"
ttlSegundos (por defeito 12 horas)

para o iframe allow="microphone" indique; a funcionalidade de segredar do responsável utiliza o reconhecimento de voz do próprio navegador (Chrome/Edge).

GETfaq_suggestions

Sugestões de pergunta-resposta extraídas das conversas (a aguardar aprovação). A aprovação é dada no painel.

Ligar o assistente ao seu CRM

Para o assistente encontrar/abrir registos no seu sistema, as ferramentas REST são definidas no formulário do assistente (URL, método, cabeçalhos, parâmetros). Existe uma ponte pronta para o Byfix CRM; para o seu próprio CRM bastam endpoints de consulta de cliente por número e de abertura de registo. Detalhes: Integração com CRM.

Webhook

Quando a conversa termina session_ended é enviado o evento (resumo, resultado, ferramentas invocadas). Ver Webhooks.