Skip to main content
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.
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 sayfasına bakın.

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

Hasta daha önce size yazdıysa bir conversation mevcuttur:
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:
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
  }'
Telegram’da ilk mesajı siz atamazsınız. Hasta önce botunuzu /start ile başlatmalı. Detay için Telegram entegrasyonu sayfasına bakın.

2. Metin mesajı gönder

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

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

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 sayfasına bakın.

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

Hastanın cevabını anlık almak için chat-log.{tenantId} kanalına abone olun:
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:
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:
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 event’i yayar.

Yaygın hatalar

DurumSebepÇözüm
422 — “Channel is disconnected”WhatsApp bağlantısı koptu (QR session kapandı)Panel’den yeniden QR okutulmalı
404 — conversation not foundGörüşme başka tenant’taX-Tenant doğru mu?
413 / 422 — File too largeDosya 50 MB’tan büyükKüçü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” halistatus: 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.