> ## Documentation Index
> Fetch the complete documentation index at: https://docs.flextell.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Rehber: AI asistan kontrolü

> Görüşme bazında AI asistanını açıp kapatmak ve insan devredevrinin akışı.

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.

<Note>
  Gerekli scope: `conversations:write` (asistanı aç/kapa), `conversations:read` (durum okuma).
</Note>

## Asistan durumunu oku

```bash theme={null}
curl --request GET \
  --url "https://dev.flextell.ai/api/v1/conversations/58/agent" \
  --header "Authorization: Bearer $TOKEN" \
  --header "X-Tenant: 12"
```

### Yanıt

```json theme={null}
{
  "success": true,
  "data": {
    "conversation_id": 58,
    "enabled": true,
    "last_disabled_at": null,
    "last_disabled_by": null
  }
}
```

<ResponseField name="enabled" type="boolean">
  Asistan bu görüşmede aktif mi? `true` ise gelen mesajlara otomatik yanıt verir.
</ResponseField>

<ResponseField name="last_disabled_at" type="datetime | null">
  Asistanın son kapatıldığı zaman. Hiç kapatılmadıysa `null`.
</ResponseField>

<ResponseField name="last_disabled_by" type="object | null">
  Asistanı son kapatan kullanıcı bilgisi (id, name).
</ResponseField>

## Asistanı kapat (insana devir)

```bash theme={null}
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ç

```bash theme={null}
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:

```js theme={null}
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

<Warning>
  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.
</Warning>

* 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

<CardGroup cols={2}>
  <Card title="Realtime events" icon="bolt" href="/realtime/events">
    Görüşmelerdeki otomatik + insan aksiyonlarını izleyin.
  </Card>

  <Card title="Mesaj gönderme" icon="paper-plane" href="/guides/send-message">
    Asistanı kapattıktan sonra hastaya manuel yanıt verin.
  </Card>
</CardGroup>
