> ## 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: Hastaya mesaj gönderme

> WhatsApp veya Telegram kanalı üzerinden bir görüşmeye metin veya medya gönderme adımları.

Bu rehber, belirli bir hastaya bir mesaj göndermek için izlenecek yolu anlatır. Akış hem WhatsApp hem Telegram için aynıdır — kanal türünü Flextell `conversation`'a göre seçer.

<Note>
  Gerekli scope: `conversations:write` (medya için ek olarak `files:write` gerekebilir). Hastaya yeni bir görüşme açmak için bir kanal oluşturulmuş olmalıdır — [Entegrasyonlar](/integrations/overview) sayfasına bakın.
</Note>

## 1. Hastanın görüşmesini bul veya oluştur

Hasta daha önce size yazdıysa bir `conversation` mevcuttur:

```bash theme={null}
curl --get "https://dev.flextell.ai/api/v1/conversations" \
  --header "Authorization: Bearer $TOKEN" \
  --header "X-Tenant: 12" \
  --data-urlencode "search=+905551234567"
```

Eşleşme yoksa ve ilk mesajı siz atacaksanız:

```bash theme={null}
curl --request POST \
  --url "https://dev.flextell.ai/api/v1/conversations" \
  --header "Authorization: Bearer $TOKEN" \
  --header "X-Tenant: 12" \
  --header "Content-Type: application/json" \
  --data '{
    "customer_id": 391,
    "channel_id": 4
  }'
```

<Warning>
  **Telegram'da ilk mesajı siz atamazsınız.** Hasta önce botunuzu `/start` ile başlatmalı. Detay için [Telegram entegrasyonu](/integrations/telegram) sayfasına bakın.
</Warning>

## 2. Metin mesajı gönder

```bash theme={null}
curl --request POST \
  --url "https://dev.flextell.ai/api/v1/conversations/58/messages" \
  --header "Authorization: Bearer $TOKEN" \
  --header "X-Tenant: 12" \
  --header "Content-Type: application/json" \
  --data '{
    "body": "Merhaba Ayşe Hanım, yarın saat 10:00 randevunuzu hatırlatırız."
  }'
```

### Yanıt

```json theme={null}
{
  "success": true,
  "data": {
    "id": 1043,
    "conversation_id": 58,
    "sender_type": "user",
    "body": "Merhaba Ayşe Hanım, yarın saat 10:00 randevunuzu hatırlatırız.",
    "status": "queued",
    "created_at": "2026-04-19T10:45:00+03:00"
  }
}
```

Mesajın son teslim durumu için `GET /v1/conversations/58/messages/{id}` ile tekrar sorgulayabilirsiniz.

## 3. Medya gönder

```bash theme={null}
curl --request POST \
  --url "https://dev.flextell.ai/api/v1/conversations/58/messages/media" \
  --header "Authorization: Bearer $TOKEN" \
  --header "X-Tenant: 12" \
  --form "file=@/path/to/rapor.pdf" \
  --form "caption=Laboratuvar sonuçlarınız"
```

Multipart istek ve dosya sınırları için [Dosya Yükleme](/requests/file-uploads) sayfasına bakın.

## 4. Hastanın yanıtını bekle

Hastanın cevabını anlık almak için [`chat-log.{tenantId}`](/realtime/channels) kanalına abone olun:

```js theme={null}
pusher.subscribe(`private-chat-log.${tenantId}`)
  .bind("App\\Events\\ChatLogCreated", (message) => {
    if (message.conversation_id === 58 && message.sender_type === "customer") {
      renderIncoming(message);
    }
  });
```

Realtime yerine polling tercih ederseniz:

```bash theme={null}
curl --get "https://dev.flextell.ai/api/v1/conversations/58/messages" \
  --header "Authorization: Bearer $TOKEN" \
  --header "X-Tenant: 12" \
  --data-urlencode "per_page=20"
```

## 5. Okundu olarak işaretle

Hasta yazdığı mesajı okuyan kullanıcı (panel veya otomasyon) tarafında okundu işaretlemek için:

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

Bu, diğer dinleyen istemcilere [`ConversationRead`](/realtime/events#conversationread) event'i yayar.

## Yaygın hatalar

| Durum                             | Sebep                                          | Çözüm                           |
| --------------------------------- | ---------------------------------------------- | ------------------------------- |
| `422` — "Channel is disconnected" | WhatsApp bağlantısı koptu (QR session kapandı) | Panel'den yeniden QR okutulmalı |
| `404` — conversation not found    | Görüşme başka tenant'ta                        | `X-Tenant` doğru mu?            |
| `413` / `422` — File too large    | Dosya 50 MB'tan büyük                          | Küçültün veya bölün             |

## İpuçları

* **Çok kanallı bildirim** — Bir hasta iki kanaldan da size yazdıysa iki ayrı `conversation` olur. Bildirimi hastanın son aktif kanalına göndermek iyi bir varsayılandır.
* **Mesajın "gönderim başarısız" hali** — `status: failed` geldi ise kanal sağlayıcısı (WhatsApp/Telegram) tarafından reddedildi demektir. Paneldeki konuşmada detay not olarak görünebilir.
* **Çift gönderim engelleme** — Butona birden fazla tıklanmasını engelleyin; detay için [Idempotency](/requests/idempotency).
