Skip to main content
Flextell’in AI asistanı, sohbet kanallarında gelen mesajlara otomatik yanıt verir. Ancak bir hasta hassas bir konuyu konuşmaya başladığında veya karmaşık bir durumda asistanı kapatmak ve insana devretmek gerekir. Bu rehber, bu akışı API tarafından nasıl yönetebileceğinizi anlatır.
Gerekli scope: conversations:write (asistanı aç/kapa), conversations:read (durum okuma).

Asistan durumunu oku

curl --request GET \
  --url "https://dev.flextell.ai/api/v1/conversations/58/agent" \
  --header "Authorization: Bearer $TOKEN" \
  --header "X-Tenant: 12"

Yanıt

{
  "success": true,
  "data": {
    "conversation_id": 58,
    "enabled": true,
    "last_disabled_at": null,
    "last_disabled_by": null
  }
}
enabled
boolean
Asistan bu görüşmede aktif mi? true ise gelen mesajlara otomatik yanıt verir.
last_disabled_at
datetime | null
Asistanın son kapatıldığı zaman. Hiç kapatılmadıysa null.
last_disabled_by
object | null
Asistanı son kapatan kullanıcı bilgisi (id, name).

Asistanı kapat (insana devir)

curl --request POST \
  --url "https://dev.flextell.ai/api/v1/conversations/58/agent/disable" \
  --header "Authorization: Bearer $TOKEN" \
  --header "X-Tenant: 12"
Bu çağrıdan sonra:
  • Hastadan gelen mesajlara asistan yanıt vermez.
  • Görüşme panelde “insan yönetiminde” olarak işaretlenir.
  • Panel kullanıcınız veya siz API üzerinden manuel mesaj atarak konuşmayı sürdürürsünüz.

Asistanı tekrar aç

curl --request POST \
  --url "https://dev.flextell.ai/api/v1/conversations/58/agent/enable" \
  --header "Authorization: Bearer $TOKEN" \
  --header "X-Tenant: 12"
Konuşma tekrar asistanın yönetimine geçer.

Tipik senaryolar

Otomatik devir tetikleyici

Bir anahtar kelime geçtiğinde (örn. “şikayet”, “hata”, “müdürle konuşmak”), asistanı otomatik kapatan bir worker yazabilirsiniz:
pusher.subscribe(`private-chat-log.${tenantId}`)
  .bind("App\\Events\\ChatLogCreated", async (message) => {
    if (message.sender_type !== "customer") return;

    if (/\b(şikayet|müdür|avukat)\b/i.test(message.body ?? "")) {
      await api.post(`/v1/conversations/${message.conversation_id}/agent/disable`);
      await notifyOnCallStaff(message.conversation_id);
    }
  });

İş saatleri dışında asistan

Bir cron veya scheduler ile akşam 18:00’de tüm görüşmeleri asistana, sabah 9:00’da geri insana alabilirsiniz. Ancak bu, çok sayıda görüşme için pratik değildir; yerine kanal bazlı varsayılan kullanmak daha iyidir. Şu an bu özelligi API’den değil, panel üzerinden “Asistan ayarları”ndan yönetirsiniz.

Asistan yanıtını loglama

Asistan bir yanıt ürettiğinde bu da bir chat_log’tur ve ChatLogCreated event’i yayar. sender_type: "assistant" olarak gelir; kendi loglama aracınızda ayırt etmek için bu alanı kullanın.

Önemli notlar

Asistan kapalıyken bir mesaj unutulursa hasta yanıtsız kalır. Kapatma aksiyonundan sonra insan operatöre bildirim gitme mekanizmanız olsun — aksi hâlde hastalar saatlerce bekleyebilir.
  • Asistan durumu görüşme bazındadır. Aynı hastanın başka bir kanaldaki ayrı görüşmesinde asistan hâlâ aktif olabilir.
  • Asistan durumu realtime event’i yaymaz — bu durumu UI’da göstermek istiyorsanız GET /conversations/{id}/agent ile polling yapın veya durumu değiştiren kullanıcıya özel güncelleme sinyali kurun.
  • Asistanı kapatmak, geçmiş yanıtları silmez; yalnızca ileride otomatik yanıt üretilmesini durdurur.

Sonraki adımlar

Realtime events

Görüşmelerdeki otomatik + insan aksiyonlarını izleyin.

Mesaj gönderme

Asistanı kapattıktan sonra hastaya manuel yanıt verin.