Ses API

Ses modülünün tüm işlemleri (22) ve veri modelleri (3): adresler, izinler, girdiler, ön koşullar, olaylar ve örnekler.

Era’larınız telefonu ve web sitenizi sesle yanıtlar, randevu verir, mesaj alır ve her aramayı Gelen kutusuna kaydeder.

Modül kodu voice · 22 işlem · 3 veri modeli · 13 olay. Bir anahtar ya da token, arkasındaki kişinin bu modülde yapabildiğinden fazlasını asla yapamaz; satır düzeyindeki güvenlik uygulamadakiyle birebir aynıdır. Yetki kapsamları: voice (hepsi), voice:read (yalnız okuma) ya da voice:<yetenek>.

Kaynaklar

KaynakTabloListeleme ve okumaPOSTPATCHDELETE
voice_agentsvoice_agent/api/v1/voice_agentsvoice.update
voice_callsvoice_call/api/v1/voice_calls
voice_whatsapp_linesvoice_whatsapp_line/api/v1/voice_whatsapp_lines

Listeler limit (en çok 200), cursor, order (ör. -created_at), fields ve q alır; diğer her sorgu parametresi bir sütun süzgecidir: ?status=paid, ?total[gte]=100, ?id[in]=a,b, ?x=null.

İşlemler

İşlemGereken izinNe yapar
voice.answer_permissionvoice:handleMüşteri arama iznini yanıtladı
voice.await_permissionvoice:handleMüşterinin arama iznini bekle
voice.complete_callvoice:handleBiten aramayı kaydet
voice.connect_whatsappvoice:manageWhatsApp aramalarını yanıtla
voice.connect_whatsapp_callvoice:handleEra bir WhatsApp aramasını açtı
voice.decide_whatsapp_callvoice:writeÇalan WhatsApp aramasını Era açsın ya da çalsın
voice.enablevoice:manageBir Era’ya ses ver
voice.fail_callvoice:handleArama gerçekleşmedi
voice.mark_dialedvoice:handleArama yapıldı
voice.open_callvoice:handleBir arama başladı
voice.record_syncvoice:handleSes sağlayıcısının yanıtını kaydet
voice.record_turnvoice:handleEra’nın aramada yaptığını kaydet
voice.record_whatsappvoice:handleWhatsApp aramalarının durumunu kaydet
voice.removevoice:deleteEra’nın sesini kaldır
voice.set_enabledvoice:manageEra’nın sesini aç/kapat
voice.set_outcomevoice:writeAramanın sonucunu düzelt
voice.set_whatsapp_linevoice:manageWhatsApp aramalarını bilgisayarımda aç
voice.start_callvoice:writeAra (sesli ajanla)
voice.start_whatsapp_callvoice:writeWhatsApp’tan ara (sesli ajan ile)
voice.take_over_whatsapp_callvoice:writeWhatsApp aramasını Era’dan devral
voice.updatevoice:manageEra’nın sesini değiştir
voice.whatsapp_ringvoice:handleBilgisayarda bir WhatsApp araması çalıyor

voice.answer_permission

Müşteri arama iznini yanıtladı — İzin verdi: arama hemen yapılır. Vermedi: arama iptal olur, ücret alınmaz. Yalnız sistem.

Gereken izin voice:handle · veriyi değiştirir

Era’nın kendi çalıştırdığı bir işlem. Başvuru eksiksiz olsun diye listelenir; API anahtarı ya da token ile istek reddedilir (403 machine_only).
POSThttps://app.getera.io/api/v1/voice_calls/{id}/actions/answer_permission
API anahtarı ya da OAuth token · voice:handle
  • Asıl adres: POST /api/v1/actions/voice.answer_permission

Girdi

AlanTürZorunluAçıklama
iduuidevetDoldurulduğu yer: adresteki {id} · Arama · kimliği: voice_call
grantedbooleanevetİzin verildi

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
not_awaitingYanıtı yalnızca izin bekleyen bir arama alır.

Yayımladığı olaylar: voice.call_missed

Neye yazar: voice_call (update) — awaiting → queued (allowed) or cancelled (declined, released)

Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde voice:handle izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_awaiting · 429 çok sık istek

voice.await_permission

Müşterinin arama iznini bekle — WhatsApp, işletmenin yalnızca izin veren kişiyi aramasına izin verir: istek gitti, arama yanıtı bekliyor. Yalnız sistem.

Gereken izin voice:handle · veriyi değiştirir

Era’nın kendi çalıştırdığı bir işlem. Başvuru eksiksiz olsun diye listelenir; API anahtarı ya da token ile istek reddedilir (403 machine_only).
POSThttps://app.getera.io/api/v1/voice_calls/{id}/actions/await_permission
API anahtarı ya da OAuth token · voice:handle
  • Asıl adres: POST /api/v1/actions/voice.await_permission

Girdi

AlanTürZorunluAçıklama
iduuidevetDoldurulduğu yer: adresteki {id} · Arama · kimliği: voice_call
requestIdstringİzin isteği mesajı · en çok 200

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
not_queuedYalnızca sıradaki bir WhatsApp araması izin bekler.

Neye yazar: voice_call (update) — queued → awaiting permission

Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde voice:handle izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_queued · 429 çok sık istek

voice.complete_call

Biten aramayı kaydet — Döküm, özet, sonuç ve süreyi yazar, gerçek dakikaları kendi ses anahtarına ölçer ve iş akışlarına haber verir. Yalnızca sistem.

Gereken izin voice:handle · dışarıya ulaşır (gönderir, yayımlar ya da ücret alır)

Era’nın kendi çalıştırdığı bir işlem. Başvuru eksiksiz olsun diye listelenir; API anahtarı ya da token ile istek reddedilir (403 machine_only).
POSThttps://app.getera.io/api/v1/voice_calls/{id}/actions/complete_call
API anahtarı ya da OAuth token · voice:handle
  • Asıl adres: POST /api/v1/actions/voice.complete_call

Girdi

AlanTürZorunluAçıklama
iduuidevetDoldurulduğu yer: adresteki {id} · Arama · kimliği: voice_call
transcriptobject / arrayDöküm
summarystringÖzet · en çok 4000
durationSecnumberevetSüre (saniye) · en az 0 · en çok 14400
endReasonstringNasıl bitti · en çok 200
transferredbooleanBir kişiye aktarıldı
externalIdstringSağlayıcı araması · en çok 120
fromNumberstringNereden · en çok 40
toNumberstringBitiş · en çok 40
conversationIduuidGelen kutusu konuşması · kimliği: conversation
customerIduuidMüşteri · kimliği: customer
recordingbooleanKaydı var
recordingFileIduuidKayıt dosyası
languagestringDil · en çok 8
providerActionsobject / arraySağlayıcı işlemleri

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
call_not_foundBu arama bulunamadı.
call_finishedBu arama zaten kaydedilmiş.

Yayımladığı olaylar: voice.call_finished, voice.appointment_booked, voice.lead_captured, voice.message_taken, voice.transfer_requested, voice.whatsapp_call_finished

Neye yazar: voice_call (update) — → completed, with transcript, outcome and cost

Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde voice:handle izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 call_not_found, call_finished · 429 çok sık istek

voice.connect_whatsapp

WhatsApp aramalarını yanıtla — Era, WhatsApp Business numarana gelen sesli aramaları da yanıtlar ve her aramayı o müşterinin WhatsApp sohbetine kaydeder.

Gereken izin voice:manage · dışarıya ulaşır (gönderir, yayımlar ya da ücret alır)

POSThttps://app.getera.io/api/v1/voice_agents/{id}/actions/connect_whatsapp
API anahtarı ya da OAuth token · voice:manage
  • Asıl adres: POST /api/v1/actions/voice.connect_whatsapp

Girdi

AlanTürZorunluAçıklama
iduuidevetDoldurulduğu yer: adresteki {id} · Ses · kimliği: voice_agent
inboxIduuidWhatsApp numarası (Gelen Kutusu kanalı) · kimliği: inbox

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
voice_not_foundBu ses bulunamadı.
inbox_not_whatsappAramalar etkin bir WhatsApp Cloud API kanalına gelir.
whatsapp_takenBir WhatsApp numarasını tek bir Era yanıtlar.

Yayımladığı olaylar: voice.agent_changed

Neye yazar: voice_agent (update) — Points the WhatsApp line at the Era (pending until Meta and the voice provider take it)

curl -X POST https://app.getera.io/api/v1/voice_agents/VOICE_AGENT_ID/actions/connect_whatsapp \
  -H "Authorization: Bearer $ERA_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"inboxId":"INBOX_ID"}'
Yanıt
{
  "ok": true,
  "result": "…",
  "events": [
    "voice.agent_changed"
  ]
}
import { createEra } from "@getera/sdk"

const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.voiceAgents.connectWhatsapp("VOICE_AGENT_ID", {
  inboxId: "INBOX_ID"
})
era voice_agents connect_whatsapp VOICE_AGENT_ID \
  --inbox-id "INBOX_ID"
tools/call
{
  "name": "era__voice__connect_whatsapp",
  "arguments": {
    "id": "VOICE_AGENT_ID",
    "inboxId": "INBOX_ID"
  }
}

Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde voice:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 voice_not_found, inbox_not_whatsapp, whatsapp_taken · 429 çok sık istek

voice.connect_whatsapp_call

Era bir WhatsApp aramasını açtı — Bilgisayar WhatsApp aramasını açtı (ya da yaptı) ve ses bağlandı — dakikalar ve ödeme önce kontrol edilir. Yalnızca sistem.

Gereken izin voice:handle · dışarıya ulaşır (gönderir, yayımlar ya da ücret alır)

Era’nın kendi çalıştırdığı bir işlem. Başvuru eksiksiz olsun diye listelenir; API anahtarı ya da token ile istek reddedilir (403 machine_only).
POSThttps://app.getera.io/api/v1/voice_calls/{id}/actions/connect_whatsapp_call
API anahtarı ya da OAuth token · voice:handle
  • Asıl adres: POST /api/v1/actions/voice.connect_whatsapp_call

Girdi

AlanTürZorunluAçıklama
iduuidevetDoldurulduğu yer: adresteki {id} · Arama · kimliği: voice_call
deviceIduuidBilgisayar

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
not_ringingYalnızca bekleyen bir WhatsApp araması, bir kez bağlanır.
wrong_computerAramayı, arama kendisinde olan bilgisayar bağlar.
voice_not_foundKonuşan Era’nın bir sesi olmalı.
voice_offSes kapalı; önce açın.
minutes_used_upBu ayın arama dakikaları doldu.
no_sourceDakikaların ödenebileceği bir kaynak gerekiyor.
budget_exceededYapay zekâ bütçesi doldu.

Yayımladığı olaylar: voice.call_started

Neye yazar: voice_call (update) — queued → in progress, with its reservation

Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde voice:handle izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_ringing, wrong_computer, voice_not_found, voice_off, minutes_used_up, no_source, budget_exceeded · 429 çok sık istek

voice.decide_whatsapp_call

Çalan WhatsApp aramasını Era açsın ya da çalsın — Bilgisayarında bir WhatsApp araması çalarken: Era açar ya da senin için çalmaya devam eder. “WhatsApp araması çalıyor” iş akışları da bunu kullanır.

Gereken izin voice:write · dışarıya ulaşır (gönderir, yayımlar ya da ücret alır)

POSThttps://app.getera.io/api/v1/voice_calls/{id}/actions/decide_whatsapp_call
API anahtarı ya da OAuth token · voice:write
  • Asıl adres: POST /api/v1/actions/voice.decide_whatsapp_call

Girdi

AlanTürZorunluAçıklama
iduuidevetDoldurulduğu yer: adresteki {id} · Arama · kimliği: voice_call
answerbooleanevetEra yanıtlasın

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
not_ringingYalnızca çalmakta olan bir WhatsApp araması için karar verilir.

Neye yazar: voice_call (update) — Writes the decision; a call left to ring is closed without cost

curl -X POST https://app.getera.io/api/v1/voice_calls/VOICE_CALL_ID/actions/decide_whatsapp_call \
  -H "Authorization: Bearer $ERA_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"answer":true}'
Yanıt
{
  "ok": true,
  "result": "…",
  "events": []
}
import { createEra } from "@getera/sdk"

const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.voiceCalls.decideWhatsappCall("VOICE_CALL_ID", {
  answer: true
})
era voice_calls decide_whatsapp_call VOICE_CALL_ID \
  --answer true
tools/call
{
  "name": "era__voice__decide_whatsapp_call",
  "arguments": {
    "id": "VOICE_CALL_ID",
    "answer": true
  }
}

Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde voice:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_ringing · 429 çok sık istek

voice.enable

Bir Era’ya ses ver — Bir Era telefonunu, web sitesindeki ses butonunu ve uygulamada seni yanıtlar — seçtiğin ses, karşılama, saatler ve yeteneklerle.

Gereken izin voice:manage · veriyi değiştirir

POSThttps://app.getera.io/api/v1/voice_agents/actions/enable
API anahtarı ya da OAuth token · voice:manage
  • Asıl adres: POST /api/v1/actions/voice.enable

Girdi

AlanTürZorunluAçıklama
agentIduuidevetEra · kimliği: ai_agent
inboxIduuidevetTelefon hattı (Gelen kutusu kanalı) · kimliği: inbox
voiceIdstringSes · en çok 120
voiceNamestringSes adı · en çok 120
languagestringDil · en çok 8
greetingstringKarşılama · en çok 600
personastringÜslup · en çok 4000
afterHoursstring (enum)Çalışma saatleri dışında · İzin verilen değerler: answer, take_message, transfer, closed_message
afterHoursMessagestringKapalı mesajı · en çok 600
transferNumberstringAktarma numarası · en çok 32
toolsobject / arrayNeler yapabilir · check_availability, book_appointment, cancel_appointment, order_status, capture_lead, answer_question, take_message, transfer_to_human
approvalToolsobject / arrayÖnce bana sor
knowledgeBaseIdsobject / arrayBilgi alanları
maxCallMinutesnumberEn uzun görüşme (dakika) · en az 1 · en çok 60
widgetEnabledbooleanWeb sitemde ses butonu
widgetSiteIduuidWeb sitesi · kimliği: site
widgetLabelstringDüğme yazısı · en çok 60
appEnabledbooleanUygulamada onunla konuş
outboundEnabledbooleanArama yapabilir
disclosureEnabledbooleanYapay zekâ olduğunu ve görüşmenin kaydedildiğini söyle
confirmBookingbooleanRandevudan sonra WhatsApp/SMS ile teyit gönder

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
agent_not_foundBu Era bulunamadı.
already_has_voiceBu Era’nın zaten bir sesi var.
inbox_not_voiceAramalar etkin bir sesli kanala gelmeli.
inbox_takenBu hattı zaten başka bir Era yanıtlıyor.
unknown_toolHer yetenek, sesli Era’nın sahip olduğu bir yetenek olmalı.
bad_transfer_numberAktarım numarası, ülke koduyla birlikte tam bir telefon numarası olmalı.
transfer_needs_numberAramaları aktarmak için bir aktarma numarası gerekir.
unknown_languageDil, sesin konuşabildiği dillerden biri olmalı.
unknown_knowledge_baseBilgi bankaları kimlikleriyle seçilmeli.
site_not_foundWeb sitesi bu çalışma alanına ait olmalı.

Yayımladığı olaylar: voice.agent_changed

Neye yazar: voice_agent (insert) — Writes the voice, switched off until it is ready

curl -X POST https://app.getera.io/api/v1/voice_agents/actions/enable \
  -H "Authorization: Bearer $ERA_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"agentId":"AI_AGENT_ID","inboxId":"INBOX_ID"}'
Yanıt
{
  "ok": true,
  "result": "…",
  "events": [
    "voice.agent_changed"
  ]
}
import { createEra } from "@getera/sdk"

const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.voiceAgents.enable({
  agentId: "AI_AGENT_ID",
  inboxId: "INBOX_ID"
})
era voice_agents enable \
  --agent-id "AI_AGENT_ID" \
  --inbox-id "INBOX_ID"
tools/call
{
  "name": "era__voice__enable",
  "arguments": {
    "agentId": "AI_AGENT_ID",
    "inboxId": "INBOX_ID"
  }
}

Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde voice:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 agent_not_found, already_has_voice, inbox_not_voice, inbox_taken, unknown_tool, bad_transfer_number, transfer_needs_number, unknown_language, unknown_knowledge_base, site_not_found · 429 çok sık istek

voice.fail_call

Arama gerçekleşmedi — Meşgul, cevap yok ya da başarısız: hiçbir şey ölçülmez, cevapsız arama takip edilebilir. Yalnızca sistem.

Gereken izin voice:handle · dışarıya ulaşır (gönderir, yayımlar ya da ücret alır)

Era’nın kendi çalıştırdığı bir işlem. Başvuru eksiksiz olsun diye listelenir; API anahtarı ya da token ile istek reddedilir (403 machine_only).
POSThttps://app.getera.io/api/v1/voice_calls/{id}/actions/fail_call
API anahtarı ya da OAuth token · voice:handle
  • Asıl adres: POST /api/v1/actions/voice.fail_call

Girdi

AlanTürZorunluAçıklama
iduuidevetDoldurulduğu yer: adresteki {id} · Arama · kimliği: voice_call
statusstringevetNe oldu · en çok 12
reasonstringNeden · en çok 600

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
call_finishedBu arama zaten kaydedilmiş.
invalid_stateDurum cevapsız, başarısız ya da iptal olmalı.

Yayımladığı olaylar: voice.call_missed

Neye yazar: voice_call (update) — → missed / failed / cancelled, released

Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde voice:handle izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 call_finished, invalid_state · 429 çok sık istek

voice.mark_dialed

Arama yapıldı — Sağlayıcı numarayı çaldırıyor. Yalnızca sistem.

Gereken izin voice:handle · veriyi değiştirir

Era’nın kendi çalıştırdığı bir işlem. Başvuru eksiksiz olsun diye listelenir; API anahtarı ya da token ile istek reddedilir (403 machine_only).
POSThttps://app.getera.io/api/v1/voice_calls/{id}/actions/mark_dialed
API anahtarı ya da OAuth token · voice:handle
  • Asıl adres: POST /api/v1/actions/voice.mark_dialed

Girdi

AlanTürZorunluAçıklama
iduuidevetDoldurulduğu yer: adresteki {id} · Arama · kimliği: voice_call
externalIdstringevetSağlayıcı araması · en çok 120
callSidstringTelefon sistemi kimliği · en çok 120

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
not_queuedYalnızca sırada bekleyen bir arama, bir kez aranabilir.

Neye yazar: voice_call (update) — queued → in progress

Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde voice:handle izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_queued · 429 çok sık istek

voice.open_call

Bir arama başladı — Arama başladığı anda kaydedilir — telefon, web butonu ya da uygulama — dakika ve para kontrolünden sonra. Yalnızca sistem.

Gereken izin voice:handle · dışarıya ulaşır (gönderir, yayımlar ya da ücret alır)

Era’nın kendi çalıştırdığı bir işlem. Başvuru eksiksiz olsun diye listelenir; API anahtarı ya da token ile istek reddedilir (403 machine_only).
POSThttps://app.getera.io/api/v1/voice_calls/actions/open_call
API anahtarı ya da OAuth token · voice:handle
  • Asıl adres: POST /api/v1/actions/voice.open_call

Girdi

AlanTürZorunluAçıklama
voiceAgentIduuidevetSes · kimliği: voice_agent
channelstring (enum)evetKanal · İzin verilen değerler: phone, widget, app, whatsapp
bridgestringEra’ya nasıl ulaştı · en çok 20
waCallIdstringWhatsApp araması · en çok 200
directionstring (enum)Yön · İzin verilen değerler: inbound, outbound
fromNumberstringNereden · en çok 40
toNumberstringBitiş · en çok 40
externalIdstringSağlayıcı araması · en çok 120
callSidstringTelefon sistemi kimliği · en çok 120
principalUserIduuidKonuşan üye
practicebooleanDeneme araması

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
voice_not_foundBu ses bulunamadı.
voice_offSes kapalı; önce açın.
channel_offOrada arama için web sitesi düğmesi ya da uygulama içi ses açık olmalı.
unknown_bridgeAramanın Era’ya ulaştığı yol bilinen bir yol olmalı.
minutes_used_upBu ayın arama dakikaları doldu.
no_sourceÇalışma alanının kendi ses anahtarı bunu çalıştırabilmeli.
budget_exceededYapay zekâ bütçesi doldu.

Yayımladığı olaylar: voice.call_started

Neye yazar: voice_call (insert) — Opens the call

Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde voice:handle izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 voice_not_found, voice_off, channel_off, unknown_bridge, minutes_used_up, no_source, budget_exceeded · 429 çok sık istek

voice.record_sync

Ses sağlayıcısının yanıtını kaydet — Sağlayıcı Era’nın sesini ve numarasını aldı (ya da reddetti). Yalnızca sistem.

Gereken izin voice:handle · veriyi değiştirir

Era’nın kendi çalıştırdığı bir işlem. Başvuru eksiksiz olsun diye listelenir; API anahtarı ya da token ile istek reddedilir (403 machine_only).
POSThttps://app.getera.io/api/v1/voice_agents/{id}/actions/record_sync
API anahtarı ya da OAuth token · voice:handle
  • Asıl adres: POST /api/v1/actions/voice.record_sync

Girdi

AlanTürZorunluAçıklama
iduuidevetDoldurulduğu yer: adresteki {id} · Ses · kimliği: voice_agent
statusstringevetDurum · en çok 10
externalAgentIdstringSağlayıcı ajanı · en çok 120
externalPhoneIdstringSağlayıcı numarası · en çok 120
voiceIdstringSes · en çok 120
errorstringNeden · en çok 600

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
voice_not_foundBu ses bulunamadı.
invalid_stateEşitleme ya başarılı ya başarısızdır.

Yayımladığı olaylar: voice.sync_failed

Neye yazar: voice_agent (update) — Writes the provider ids and the sync state

Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde voice:handle izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 voice_not_found, invalid_state · 429 çok sık istek

voice.record_turn

Era’nın aramada yaptığını kaydet — Bir yanıtın işlemlerini arama günlüğüne ekler ve kısa hafızasını tutar. Yalnızca sistem.

Gereken izin voice:handle · veriyi değiştirir

Era’nın kendi çalıştırdığı bir işlem. Başvuru eksiksiz olsun diye listelenir; API anahtarı ya da token ile istek reddedilir (403 machine_only).
POSThttps://app.getera.io/api/v1/voice_calls/{id}/actions/record_turn
API anahtarı ya da OAuth token · voice:handle
  • Asıl adres: POST /api/v1/actions/voice.record_turn

Girdi

AlanTürZorunluAçıklama
iduuidevetDoldurulduğu yer: adresteki {id} · Arama · kimliği: voice_call
actionsobject / arrayEylemler
memoryobject / arrayÇalışma hafızası
externalIdstringSağlayıcı araması · en çok 120

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
call_not_openYalnızca süren bir aramaya yeni işlem eklenebilir.

Neye yazar: voice_call (update) — Appends actions, replaces memory

Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde voice:handle izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 call_not_open · 429 çok sık istek

voice.record_whatsapp

WhatsApp aramalarının durumunu kaydet — Meta ve ses sağlayıcısı kurulumu aldı ya da reddetti. Yalnız sistem.

Gereken izin voice:handle · veriyi değiştirir

Era’nın kendi çalıştırdığı bir işlem. Başvuru eksiksiz olsun diye listelenir; API anahtarı ya da token ile istek reddedilir (403 machine_only).
POSThttps://app.getera.io/api/v1/voice_agents/{id}/actions/record_whatsapp
API anahtarı ya da OAuth token · voice:handle
  • Asıl adres: POST /api/v1/actions/voice.record_whatsapp

Girdi

AlanTürZorunluAçıklama
iduuidevetDoldurulduğu yer: adresteki {id} · Ses · kimliği: voice_agent
statusstringevetDurum · en çok 10
externalPhoneIdstringSağlayıcı numarası · en çok 120
errorstringNeden · en çok 600

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
voice_not_foundBu ses bulunamadı.
invalid_stateAçık, kapalı ya da başarısız.

Yayımladığı olaylar: voice.sync_failed

Neye yazar: voice_agent (update) — Writes the WhatsApp line state and the provider number id

Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde voice:handle izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 voice_not_found, invalid_state · 429 çok sık istek

voice.remove

Era’nın sesini kaldır — Era aramaları yanıtlamayı bırakır. Arama geçmişi kalır.

Gereken izin voice:delete · siler ya da geri alınamaz · Era çalıştırırken bir kişiye onaylatır

POSThttps://app.getera.io/api/v1/voice_agents/{id}/actions/remove
API anahtarı ya da OAuth token · voice:delete
  • Asıl adres: POST /api/v1/actions/voice.remove

Girdi

AlanTürZorunluAçıklama
iduuidevetDoldurulduğu yer: adresteki {id} · Ses · kimliği: voice_agent

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
voice_not_foundBu ses bulunamadı.

Yayımladığı olaylar: voice.agent_changed

Neye yazar: voice_agent (delete) — Deletes the voice; calls keep their history

curl -X POST https://app.getera.io/api/v1/voice_agents/VOICE_AGENT_ID/actions/remove \
  -H "Authorization: Bearer $ERA_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{}'
Yanıt
{
  "ok": true,
  "result": "…",
  "events": [
    "voice.agent_changed"
  ]
}
import { createEra } from "@getera/sdk"

const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.voiceAgents.remove("VOICE_AGENT_ID")
era voice_agents remove VOICE_AGENT_ID
tools/call
{
  "name": "era__voice__remove",
  "arguments": {
    "id": "VOICE_AGENT_ID"
  }
}

Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde voice:delete izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 voice_not_found · 429 çok sık istek

voice.set_enabled

Era’nın sesini aç/kapat — Açık: aramaları yanıtlar. Kapalı: Era yanıtlamaz; hiçbir şey kaybolmaz.

Gereken izin voice:manage · veriyi değiştirir

POSThttps://app.getera.io/api/v1/voice_agents/{id}/actions/set_enabled
API anahtarı ya da OAuth token · voice:manage
  • Asıl adres: POST /api/v1/actions/voice.set_enabled

Girdi

AlanTürZorunluAçıklama
iduuidevetDoldurulduğu yer: adresteki {id} · Ses · kimliği: voice_agent
enabledbooleanevetAçık

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
voice_not_foundBu ses bulunamadı.
no_voiceAçmadan önce bir ses seçin.
inbox_not_voiceAçmadan önce bir hat seçin.

Yayımladığı olaylar: voice.agent_changed

Neye yazar: voice_agent (update) — Flips the switch

curl -X POST https://app.getera.io/api/v1/voice_agents/VOICE_AGENT_ID/actions/set_enabled \
  -H "Authorization: Bearer $ERA_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"enabled":true}'
Yanıt
{
  "ok": true,
  "result": "…",
  "events": [
    "voice.agent_changed"
  ]
}
import { createEra } from "@getera/sdk"

const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.voiceAgents.setEnabled("VOICE_AGENT_ID", {
  enabled: true
})
era voice_agents set_enabled VOICE_AGENT_ID \
  --enabled true
tools/call
{
  "name": "era__voice__set_enabled",
  "arguments": {
    "id": "VOICE_AGENT_ID",
    "enabled": true
  }
}

Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde voice:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 voice_not_found, no_voice, inbox_not_voice · 429 çok sık istek

voice.set_outcome

Aramanın sonucunu düzelt — Era aramayı yanlış okuduysa — aslında randevuydu, potansiyel müşteriydi, mesajdı.

Gereken izin voice:write · veriyi değiştirir

POSThttps://app.getera.io/api/v1/voice_calls/{id}/actions/set_outcome
API anahtarı ya da OAuth token · voice:write
  • Asıl adres: POST /api/v1/actions/voice.set_outcome

Girdi

AlanTürZorunluAçıklama
iduuidevetDoldurulduğu yer: adresteki {id} · Arama · kimliği: voice_call
outcomestring (enum)evetSonuç · İzin verilen değerler: booked, cancelled, lead, message, answered, transferred, no_action, failed

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
call_not_finishedYalnızca bitmiş bir arama düzeltilebilir.

Neye yazar: voice_call (update) — Writes the outcome

curl -X POST https://app.getera.io/api/v1/voice_calls/VOICE_CALL_ID/actions/set_outcome \
  -H "Authorization: Bearer $ERA_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"outcome":"booked"}'
Yanıt
{
  "ok": true,
  "result": "…",
  "events": []
}
import { createEra } from "@getera/sdk"

const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.voiceCalls.setOutcome("VOICE_CALL_ID", {
  outcome: "booked"
})
era voice_calls set_outcome VOICE_CALL_ID \
  --outcome "booked"
tools/call
{
  "name": "era__voice__set_outcome",
  "arguments": {
    "id": "VOICE_CALL_ID",
    "outcome": "booked"
  }
}

Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde voice:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 call_not_finished · 429 çok sık istek

voice.set_whatsapp_line

WhatsApp aramalarını bilgisayarımda aç — Era bilgisayarındaki WhatsApp’a gelen sesli aramaları açar — hangileri, kaç saniye sonra ve senin yerine arama yapıp yapamayacağı. Telefon numarası gerekmez.

Gereken izin voice:manage · veriyi değiştirir

POSThttps://app.getera.io/api/v1/voice_whatsapp_lines/actions/set_whatsapp_line
API anahtarı ya da OAuth token · voice:manage
  • Asıl adres: POST /api/v1/actions/voice.set_whatsapp_line

Girdi

AlanTürZorunluAçıklama
voiceAgentIduuidevetKonuşan Era · kimliği: voice_agent
deviceIduuidBilgisayar · WhatsApp’ını yanıtladığı Era Desktop; boş = senin herhangi biri.
enabledbooleanAçık
answerRulestring (enum)Hangi aramalar · İzin verilen değerler: all, unknown, contacts, in_hours, after_hours, workflow
ringSecondsnumberÖnce çalsın (saniye) · en az 0 · en çok 40
ownerNamestringEra kimin asistanı olduğunu söylesin · en çok 120
outboundEnabledbooleanBenim yerime insanları arayabilir
answerVideobooleanGörüntülü aramaları da aç (yalnız ses)

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
voice_not_foundKonuşan Era’nın burada bir sesi olmalı.

Neye yazar: voice_whatsapp_line (upsert) — Writes the workspace’s one WhatsApp-on-the-computer line

curl -X POST https://app.getera.io/api/v1/voice_whatsapp_lines/actions/set_whatsapp_line \
  -H "Authorization: Bearer $ERA_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"voiceAgentId":"VOICE_AGENT_ID"}'
Yanıt
{
  "ok": true,
  "result": "…",
  "events": []
}
import { createEra } from "@getera/sdk"

const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.voiceWhatsappLines.setWhatsappLine({
  voiceAgentId: "VOICE_AGENT_ID"
})
era voice_whatsapp_lines set_whatsapp_line \
  --voice-agent-id "VOICE_AGENT_ID"
tools/call
{
  "name": "era__voice__set_whatsapp_line",
  "arguments": {
    "voiceAgentId": "VOICE_AGENT_ID"
  }
}

Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde voice:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 voice_not_found · 429 çok sık istek

voice.start_call

Ara (sesli ajanla) — Era bir müşteriyi şimdi arar — telefonla ya da WhatsApp’tan (gerekirse önce müşteriden izin ister): randevu teyidi, potansiyel müşteri takibi, siparişin hazır olduğu. Dakikalar önce kontrol edilip ayrılır.

Gereken izin voice:write · dışarıya ulaşır (gönderir, yayımlar ya da ücret alır) · Era çalıştırırken bir kişiye onaylatır

POSThttps://app.getera.io/api/v1/voice_calls/actions/start_call
API anahtarı ya da OAuth token · voice:write
  • Asıl adres: POST /api/v1/actions/voice.start_call

Girdi

AlanTürZorunluAçıklama
voiceAgentIduuidevetEra · kimliği: voice_agent
tostringevetSayı · Nasıl yazılırsa yazılsın: 0532 123 45 67 veya +90… · en çok 40
purposestringArama ne için · en çok 1000
customerIduuidMüşteri · kimliği: customer
channelstring (enum)Nereden aransın · İzin verilen değerler: phone, whatsapp

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
voice_not_foundBu ses bulunamadı.
voice_offSes kapalı; önce açın.
outbound_offBu Era’nın arama yapmasına izin verilmemiş.
bad_numberBu numara aranamıyor.
no_phone_lineArama yapmak için bağlı bir numara gerekiyor.
whatsapp_calling_offWhatsApp araması için bu Era’da WhatsApp aramalarının açık olması gerekir.
minutes_used_upBu ayın arama dakikaları doldu.
outbound_limitGünlük giden arama sınırına ulaşıldı.
no_sourceÇalışma alanının kendi ses anahtarı bunu çalıştırabilmeli.
budget_exceededYapay zekâ bütçesi doldu.

Yayımladığı olaylar: voice.call_started

Neye yazar: voice_call (insert) — Queues the call

curl -X POST https://app.getera.io/api/v1/voice_calls/actions/start_call \
  -H "Authorization: Bearer $ERA_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"voiceAgentId":"VOICE_AGENT_ID","to":"Number"}'
Yanıt
{
  "ok": true,
  "result": "…",
  "events": [
    "voice.call_started"
  ]
}
import { createEra } from "@getera/sdk"

const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.voiceCalls.startCall({
  voiceAgentId: "VOICE_AGENT_ID",
  to: "Number"
})
era voice_calls start_call \
  --voice-agent-id "VOICE_AGENT_ID" \
  --to "Number"
tools/call
{
  "name": "era__voice__start_call",
  "arguments": {
    "voiceAgentId": "VOICE_AGENT_ID",
    "to": "Number"
  }
}

Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde voice:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 voice_not_found, voice_off, outbound_off, bad_number, no_phone_line, whatsapp_calling_off, minutes_used_up, outbound_limit, no_source, budget_exceeded · 429 çok sık istek

voice.start_whatsapp_call

WhatsApp’tan ara (sesli ajan ile) — Era bilgisayarındaki WhatsApp’tan birini arar, istediğin konuyu konuşur, kapatır ve nasıl geçtiğini anlatır — özet, sonuç, konuşma metni.

Gereken izin voice:write · dışarıya ulaşır (gönderir, yayımlar ya da ücret alır)

POSThttps://app.getera.io/api/v1/voice_calls/actions/start_whatsapp_call
API anahtarı ya da OAuth token · voice:write
  • Asıl adres: POST /api/v1/actions/voice.start_whatsapp_call

Girdi

AlanTürZorunluAçıklama
tostringSayı · Nasıl yazılırsa yazılsın: 0532 123 45 67 veya +90… · en çok 40
customerIduuidMüşteri · kimliği: customer
namestringAd · en çok 120
goalstringevetNe konuşulsun · ör. “Perşembe yerine cuma saat 3’te gelip gelemeyeceğini sor.” · en çok 1000
scriptstringDeğinilecek noktalar · en çok 2000
exactbooleanTam olarak bu WhatsApp sohbeti · Ad, kişinin Era’nın seçeneklerinden seçtiği sohbettir.
threadIdstringEra sohbeti · Arama bitince Era’nın sonucu bildireceği yer. · en çok 200

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
whatsapp_line_offEra bir bilgisayarda WhatsApp için kurulmuş olmalı.
whatsapp_outbound_offEra’nın WhatsApp araması yapmasına izin verilmiş olmalı.
no_one_to_callBir WhatsApp adı, numara ya da müşteri gerekir.
bad_numberBu numara aranamıyor.
voice_not_foundKonuşan Era’nın bir sesi olmalı.
voice_offSes kapalı; önce açın.
minutes_used_upBu ayın arama dakikaları doldu.
outbound_limitGünlük giden arama sınırına ulaşıldı.
no_sourceDakikaların ödenebileceği bir kaynak gerekiyor.
budget_exceededYapay zekâ bütçesi doldu.

Yayımladığı olaylar: voice.whatsapp_call_requested

Neye yazar: voice_call (insert) — Queues the call for the computer, with its reservation

curl -X POST https://app.getera.io/api/v1/voice_calls/actions/start_whatsapp_call \
  -H "Authorization: Bearer $ERA_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"goal":"What to talk about"}'
Yanıt
{
  "ok": true,
  "result": "…",
  "events": [
    "voice.whatsapp_call_requested"
  ]
}
import { createEra } from "@getera/sdk"

const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.voiceCalls.startWhatsappCall({
  goal: "What to talk about"
})
era voice_calls start_whatsapp_call \
  --goal "What to talk about"
tools/call
{
  "name": "era__voice__start_whatsapp_call",
  "arguments": {
    "goal": "What to talk about"
  }
}

Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde voice:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 whatsapp_line_off, whatsapp_outbound_off, no_one_to_call, bad_number, voice_not_found, voice_off, minutes_used_up, outbound_limit, no_source, budget_exceeded · 429 çok sık istek

voice.take_over_whatsapp_call

WhatsApp aramasını Era’dan devral — “Devral”: Era susar ve aramanın sesi bilgisayardaki kendi mikrofonuna ve hoparlörüne döner.

Gereken izin voice:write · dışarıya ulaşır (gönderir, yayımlar ya da ücret alır)

POSThttps://app.getera.io/api/v1/voice_calls/{id}/actions/take_over_whatsapp_call
API anahtarı ya da OAuth token · voice:write
  • Asıl adres: POST /api/v1/actions/voice.take_over_whatsapp_call

Girdi

AlanTürZorunluAçıklama
iduuidevetDoldurulduğu yer: adresteki {id} · Arama · kimliği: voice_call

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
call_not_liveYalnızca şu an süren bir WhatsApp araması, bir kez devralınır.

Yayımladığı olaylar: voice.whatsapp_takeover

Neye yazar: voice_call (update) — Marks the moment; the computer hands the sound back

curl -X POST https://app.getera.io/api/v1/voice_calls/VOICE_CALL_ID/actions/take_over_whatsapp_call \
  -H "Authorization: Bearer $ERA_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{}'
Yanıt
{
  "ok": true,
  "result": "…",
  "events": [
    "voice.whatsapp_takeover"
  ]
}
import { createEra } from "@getera/sdk"

const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.voiceCalls.takeOverWhatsappCall("VOICE_CALL_ID")
era voice_calls take_over_whatsapp_call VOICE_CALL_ID
tools/call
{
  "name": "era__voice__take_over_whatsapp_call",
  "arguments": {
    "id": "VOICE_CALL_ID"
  }
}

Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde voice:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 call_not_live · 429 çok sık istek

voice.update

Era’nın sesini değiştir — Ses, karşılama, dil, çalışma saatleri dışı davranış, aktarma numarası, yetenekler, bilgi ve nerede cevap verdiği.

Gereken izin voice:manage · veriyi değiştirir

POSThttps://app.getera.io/api/v1/voice_agents/{id}/actions/update
API anahtarı ya da OAuth token · voice:manage
  • REST kısayolu: PATCH /api/v1/voice_agents/{id}
  • Asıl adres: POST /api/v1/actions/voice.update

Girdi

AlanTürZorunluAçıklama
iduuidevetDoldurulduğu yer: adresteki {id} · Ses · kimliği: voice_agent
inboxIduuidTelefon hattı (Gelen kutusu kanalı) · kimliği: inbox
voiceIdstringSes · en çok 120
voiceNamestringSes adı · en çok 120
languagestringDil · en çok 8
greetingstringKarşılama · en çok 600
personastringÜslup · en çok 4000
afterHoursstring (enum)Çalışma saatleri dışında · İzin verilen değerler: answer, take_message, transfer, closed_message
afterHoursMessagestringKapalı mesajı · en çok 600
transferNumberstringAktarma numarası · en çok 32
toolsobject / arrayNeler yapabilir · check_availability, book_appointment, cancel_appointment, order_status, capture_lead, answer_question, take_message, transfer_to_human
approvalToolsobject / arrayÖnce bana sor
knowledgeBaseIdsobject / arrayBilgi alanları
maxCallMinutesnumberEn uzun görüşme (dakika) · en az 1 · en çok 60
widgetEnabledbooleanWeb sitemde ses butonu
widgetSiteIduuidWeb sitesi · kimliği: site
widgetLabelstringDüğme yazısı · en çok 60
appEnabledbooleanUygulamada onunla konuş
outboundEnabledbooleanArama yapabilir
disclosureEnabledbooleanYapay zekâ olduğunu ve görüşmenin kaydedildiğini söyle
confirmBookingbooleanRandevudan sonra WhatsApp/SMS ile teyit gönder

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
voice_not_foundBu ses bulunamadı.
inbox_not_voiceAramalar etkin bir sesli kanala gelmeli.
inbox_takenBu hattı zaten başka bir Era yanıtlıyor.
unknown_toolHer yetenek, sesli Era’nın sahip olduğu bir yetenek olmalı.
bad_transfer_numberAktarım numarası, ülke koduyla birlikte tam bir telefon numarası olmalı.
transfer_needs_numberAramaları aktarmak için bir aktarma numarası gerekir.
unknown_languageDil, sesin konuşabildiği dillerden biri olmalı.
unknown_knowledge_baseBilgi bankaları kimlikleriyle seçilmeli.
site_not_foundWeb sitesi bu çalışma alanına ait olmalı.

Yayımladığı olaylar: voice.agent_changed

Neye yazar: voice_agent (update) — Writes the settings and marks the provider copy for re-sync

curl -X POST https://app.getera.io/api/v1/voice_agents/VOICE_AGENT_ID/actions/update \
  -H "Authorization: Bearer $ERA_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"inboxId":"INBOX_ID"}'
Yanıt
{
  "ok": true,
  "result": "…",
  "events": [
    "voice.agent_changed"
  ]
}
import { createEra } from "@getera/sdk"

const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.voiceAgents.update("VOICE_AGENT_ID", {
  inboxId: "INBOX_ID"
})
era voice_agents update VOICE_AGENT_ID \
  --inbox-id "INBOX_ID"
tools/call
{
  "name": "era__voice__update",
  "arguments": {
    "id": "VOICE_AGENT_ID",
    "inboxId": "INBOX_ID"
  }
}

Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde voice:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 voice_not_found, inbox_not_voice, inbox_taken, unknown_tool, bad_transfer_number, transfer_needs_number, unknown_language, unknown_knowledge_base, site_not_found · 429 çok sık istek

voice.whatsapp_ring

Bilgisayarda bir WhatsApp araması çalıyor — Era Desktop çalan bir WhatsApp aramasını bildirir; kural Era’nın açacağını, sana bırakacağını ya da bir iş akışının karar vereceğini söyler. Yalnızca sistem.

Gereken izin voice:handle · dışarıya ulaşır (gönderir, yayımlar ya da ücret alır)

Era’nın kendi çalıştırdığı bir işlem. Başvuru eksiksiz olsun diye listelenir; API anahtarı ya da token ile istek reddedilir (403 machine_only).
POSThttps://app.getera.io/api/v1/voice_calls/actions/whatsapp_ring
API anahtarı ya da OAuth token · voice:handle
  • Asıl adres: POST /api/v1/actions/voice.whatsapp_ring

Girdi

AlanTürZorunluAçıklama
deviceIduuidBilgisayar
callerNamestringArayan · en çok 120
callerNumberstringSayı · en çok 40
knownbooleanBir müşteri
customerIduuidMüşteri · kimliği: customer
openNowbooleanAçık
videobooleanGörüntülü arama

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
whatsapp_line_offEra, WhatsApp aramalarını bir bilgisayarda yanıtlayacak şekilde ayarlanmış olmalı.
wrong_computerYalnızca seçilen bilgisayar yanıtlar.
voice_not_foundKonuşan Era’nın bir sesi olmalı.
voice_offKonuşan Era’nın sesi açık olmalı.

Yayımladığı olaylar: voice.whatsapp_ringing

Neye yazar: voice_call (insert) — A ringing WhatsApp call with Era’s decision

Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde voice:handle izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 whatsapp_line_off, wrong_computer, voice_not_found, voice_off · 429 çok sık istek

Veri modelleri

VoiceAgent

Tablo voice_agent · Kaynak voice_agents

  • GET /api/v1/voice_agents
  • GET /api/v1/voice_agents/{id}
  • PATCH /api/v1/voice_agents/{id} → voice.update
SütunTürBoş olabilirİzin verilen değerlerBağlı olduğu tablo
idstring (uuid) · uuid
organization_idstring (uuid) · uuidorganization
workspace_idstring (uuid) · uuidworkspace
agent_idstring (uuid) · uuidai_agent
inbox_idstring (uuid) · uuidevetinbox
is_enabledboolean · bool
providerstring · textelevenlabs, mock
payerstring · text
voice_idstring · textevet
voice_namestring · textevet
languagestring · text
greetingstring · text
personastring · text
after_hoursstring · textanswer, take_message, transfer, closed_message
after_hours_messagestring · textevet
transfer_numberstring · textevet
toolsstring[] · text[]
approval_toolsstring[] · text[]
knowledge_base_idsstring[] · uuid[]
max_call_minutesinteger · int4
widget_enabledboolean · bool
widget_site_idstring (uuid) · uuidevetsite
widget_labelstring · textevet
app_enabledboolean · bool
outbound_enabledboolean · bool
external_agent_idstring · textevet
external_phone_idstring · textevet
sync_statusstring · textpending, synced, failed
sync_errorstring · textevet
synced_atstring (date-time) · timestamptzevet
created_bystring (uuid) · uuidevetapp_user
created_atstring (date-time) · timestamptz
updated_atstring (date-time) · timestamptz
whatsapp_inbox_idstring (uuid) · uuidevetinbox
whatsapp_phone_idstring · textevet
whatsapp_statusstring · textoff, pending, on, failed
whatsapp_errorstring · textevet
disclosure_enabledboolean · bool
confirm_bookingboolean · bool

Birincil anahtar: id

Denetimler:

  • CHECK (((after_hours_message IS NULL) OR (length(after_hours_message) <= 600)))
  • CHECK ((approval_tools <@ tools))
  • CHECK ((length(greeting) <= 600))
  • CHECK ((language ~ '^[a-z]{2}(-[A-Z]{2})?$'::text))
  • CHECK (((max_call_minutes >= 1) AND (max_call_minutes <= 60)))
  • CHECK ((payer = 'own_key'::text))
  • CHECK ((length(persona) <= 4000))
  • CHECK (((sync_error IS NULL) OR (length(sync_error) <= 600)))
  • CHECK ((tools <@ ARRAY['check_availability'::text, 'book_appointment'::text, 'cancel_appointment'::text, 'order_status'::text, 'capture_lead'::text, 'answer_question'::text, 'take_message'::text, 'transfer_to_human'::text]))
  • CHECK (((transfer_number IS NULL) OR (transfer_number ~ '^\+[1-9][0-9]{6,14}$'::text)))
  • CHECK (((whatsapp_error IS NULL) OR (length(whatsapp_error) <= 600)))
  • CHECK (((widget_label IS NULL) OR (length(widget_label) <= 60)))

VoiceCall

Tablo voice_call · Kaynak voice_calls

  • GET /api/v1/voice_calls
  • GET /api/v1/voice_calls/{id}
SütunTürBoş olabilirİzin verilen değerlerBağlı olduğu tablo
idstring (uuid) · uuid
organization_idstring (uuid) · uuidorganization
workspace_idstring (uuid) · uuidworkspace
voice_agent_idstring (uuid) · uuidevetvoice_agent
agent_idstring (uuid) · uuidevetai_agent
inbox_idstring (uuid) · uuidevetinbox
conversation_idstring (uuid) · uuidevetconversation
customer_idstring (uuid) · uuidevetcustomer
channelstring · textphone, widget, app, whatsapp
directionstring · textinbound, outbound
statusstring · textqueued, awaiting_permission, in_progress, completed, missed, failed, cancelled
from_numberstring · textevet
to_numberstring · textevet
caller_namestring · textevet
purposestring · textevet
external_idstring · textevet
external_call_sidstring · textevet
started_atstring (date-time) · timestamptzevet
ended_atstring (date-time) · timestamptzevet
duration_secinteger · int4
transcriptobject · jsonb
summarystring · textevet
outcomestring · textevet
actionsobject · jsonb
memoryobject · jsonb
recordingboolean · bool
recording_file_idstring (uuid) · uuidevet
languagestring · textevet
end_reasonstring · textevet
principal_user_idstring (uuid) · uuidevetapp_user
payerstring · textevet
usage_idstring (uuid) · uuidevet
source_kindstring · textevet
cost_usdstring (decimal) · numeric
errorstring · textevet
created_bystring (uuid) · uuidevetapp_user
created_atstring (date-time) · timestamptz
updated_atstring (date-time) · timestamptz
bridgestring · textevet
wa_call_idstring · textevet
device_idstring (uuid) · uuidevet
ring_decisionstring · textevet
ring_reasonstring · textevet
handover_requested_atstring (date-time) · timestamptzevet
handover_bystring (uuid) · uuidevetapp_user

Birincil anahtar: id

Denetimler:

  • CHECK ((jsonb_typeof(actions) = 'array'::text))
  • CHECK (((bridge IS NULL) OR (bridge = ANY (ARRAY['twilio'::text, 'sip'::text, 'elevenlabs'::text, 'whatsapp_sip'::text, 'desktop'::text, 'web'::text]))))
  • CHECK ((duration_sec >= 0))
  • CHECK (((error IS NULL) OR (length(error) <= 600)))
  • CHECK ((jsonb_typeof(memory) = 'object'::text))
  • CHECK (((outcome IS NULL) OR (outcome = ANY (ARRAY['booked'::text, 'cancelled'::text, 'lead'::text, 'message'::text, 'answered'::text, 'transferred'::text, 'no_action'::text, 'failed'::text]))))
  • CHECK (((payer IS NULL) OR (payer = 'own_key'::text))) NOT VALID
  • CHECK (((purpose IS NULL) OR (length(purpose) <= 1000)))
  • CHECK (((ring_decision IS NULL) OR (ring_decision = ANY (ARRAY['answer'::text, 'ignore'::text, 'wait'::text]))))
  • CHECK (((ring_reason IS NULL) OR (length(ring_reason) <= 300)))
  • CHECK (((source_kind IS NULL) OR (source_kind = ANY (ARRAY['native'::text, 'byos'::text, 'byok'::text])))) NOT VALID
  • CHECK ((jsonb_typeof(transcript) = 'array'::text))

VoiceWhatsappLine

Tablo voice_whatsapp_line · Kaynak voice_whatsapp_lines

  • GET /api/v1/voice_whatsapp_lines
  • GET /api/v1/voice_whatsapp_lines/{id}
SütunTürBoş olabilirİzin verilen değerlerBağlı olduğu tablo
idstring (uuid) · uuid
organization_idstring (uuid) · uuidorganization
workspace_idstring (uuid) · uuidworkspace
voice_agent_idstring (uuid) · uuidvoice_agent
device_idstring (uuid) · uuidevet
is_enabledboolean · bool
answer_rulestring · textall, unknown, contacts, in_hours, after_hours, workflow
ring_secondsinteger · int4
owner_namestring · textevet
outbound_enabledboolean · bool
answer_videoboolean · bool
created_bystring (uuid) · uuidevetapp_user
created_atstring (date-time) · timestamptz
updated_atstring (date-time) · timestamptz

Birincil anahtar: id

Denetimler:

  • CHECK (((owner_name IS NULL) OR (length(owner_name) <= 120)))
  • CHECK (((ring_seconds >= 0) AND (ring_seconds <= 40)))

Olaylar

İş akışları ve webhook'lar bu olaylara tepki verir.

OlayNe olurTaşıdığı alanlar
voice.agent_changedBir Era’ya ses verildi ya da ses ayarları değişti.id, agentId, enabled
voice.appointment_bookedEra bir aramada (telefon, WhatsApp, web) randevu verdi.id, voiceAgentId, customerId, conversationId, appointmentId, channel, service, appointmentDate, startTime, callerName, callerNumber
voice.call_finishedBir arama bitti; özeti ve sonucuyla Gelen Kutusu’na kaydedildi.id, voiceAgentId, agentId, customerId, conversationId, outcome, channel, direction, durationSec, summary, fromNumber, recipientUserId
voice.call_missedBir arama bağlanmadı (meşgul, cevap yok, başarısız).id, voiceAgentId, customerId, number, direction, reason, recipientUserId
voice.call_startedTelefon/WhatsApp araması geldi — ya da web düğmesinden, uygulamadan bir görüşme başladı.id, voiceAgentId, channel, direction, customerId
voice.lead_capturedEra bir aramada yeni bir potansiyel müşteri aldı.id, voiceAgentId, customerId, conversationId, leadId
voice.message_takenEra bir aramada mesaj aldı.id, voiceAgentId, customerId, conversationId, taskId, summary, recipientUserId
voice.sync_failedSes sağlayıcısı bir Era’nın kurulumunu reddetti.id, error, recipientUserId
voice.transfer_requestedBir arayan bir kişiye aktarıldı.id, voiceAgentId, customerId, conversationId
voice.whatsapp_call_finishedEra’nın bilgisayarda yanıtladığı WhatsApp araması bitti — arayan, konuşma metni, özet, sonuç ve konu.id, voiceAgentId, direction, callerName, callerNumber, customerId, conversationId, transcript, summary, outcome, outcomeLabel, intent, goal, durationSec, recipientUserId
voice.whatsapp_call_requestedBiri Era’dan bilgisayardaki WhatsApp’tan birini aramasını istedi.id, voiceAgentId, deviceId, to, name, goal, customerId, recipientUserId
voice.whatsapp_ringingWhatsApp araması çalıyor (bilgisayar) — kimin aradığı ve Era’nın açıp açmayacağıyla.id, voiceAgentId, callerName, callerNumber, customerId, known, decision
voice.whatsapp_takeoverBir kişi WhatsApp aramasını Era’dan devraldı.id, byUserId
Bu sayfa yardımcı oldu mu?