/api/v1/conversations/{id} altındadır. Gönderim kanalları için Kanallar sayfasına bakın.
Endpoint özeti
Tüm isteklerAuthorization: Bearer <access_token> ve X-Tenant: <tenant_id> başlıklarını gerektirir. Ortak başlıklar için İstek başlıkları sayfasına bakın.
İzinlerin rol editöründeki karşılıkları Mesajlar → Gönder, Mesajlar → Güncelle ve Mesajlar → Sil etiketleridir. Hızlı Yanıt gönderimi için bkz. Hızlı Yanıtlar.
Görünmeyen veya başka kliniğe ait bir sohbet
404 RESOURCE_NOT_FOUND döner. Satış temsilcisi rolünde ViewAllConversations izni olmayan bir kullanıcı yalnızca kendisine atanmış lead’lerin sohbetlerini görür. Ayrıntı için İzinler ve görünürlük sayfasına bakın.Mesaj nesnesi
Liste ve düzenleme/tepki yanıtları aynı nesneyi döner.GET /messages için per_page (1–100, varsayılan 50), page, search (en çok 255 karakter; mesaj metninde ve sesli not yazıya çevirisinde arar), message_type[] ve all_lines parametreleri vardır. Sonuçlar created_at azalan sırayla gelir.
Metin mesajı gönderme
POST /conversations/{id}/messages isteğinin gövdesi:
Kanal başına en çok uzunluk: WhatsApp 65536, Telegram 4096, Instagram 1000, web sitesi için sınır yok. Aşılırsa
422 MESSAGE_TOO_LONG döner.
markdown metni olduğu gibi saklanır ve kanala göre dönüştürülür: WhatsApp’ta *kalın*, _italik_, ~üstü çizili~; Telegram’da HTML; Instagram ve web sitesinde düz metin.
202 Accepted olur. Mesaj kuyruğa alınmıştır, henüz kanala iletilmemiş olabilir:
message_id geçici bir kimliktir. Kanal mesajı kabul ettiğinde gerçek mesaj oluşur ve channel_message_id sağlayıcının kimliğini taşır. Gönderim yanıtı mesajın iletildiğini garanti etmez; durumu GET /messages ile veya gerçek zamanlı olaylarla izleyin.CHANNEL_INACTIVE, kanalı sizin kapattığınız durumdur; kanalı yeniden etkinleştirmeden gönderim yapılamaz. Yanıtın message metni Bu sohbetin kanalı pasif. Mesaj göndermek için kanalı yeniden etkinleştirin. olur. Sağlayıcı bağlantısının kopuk olduğu durum bundan farklıdır ve CHANNEL_NOT_CONNECTED koduyla ayrılır. Kontrol, istek kuyruğa alınmadan önce yapılır; metin, medya, sesli not, Hızlı Yanıt, tepki ve AI önerisi gönderimi için geçerlidir.
İstek kabul edildikten (
202) sonra hat kapatılırsa mesaj saklanır, ancak kanala iletilmez: mesajın delivery_status değeri failed olur ve güncel mesajla bir ChatLogUpdated olayı yayınlanır. 202 yanıtına güvenmeyin; durumu GET /messages veya gerçek zamanlı olaylarla doğrulayın.Medya gönderme
POST /conversations/{id}/messages/media isteği multipart/form-data olmalıdır.
Mesaj türü dosyanın MIME önekinden belirlenir:
image/ görsel, audio/ ses, video/ video, diğerleri belge. Yükleme kliniğin depolama alanından düşer; üst sınır aşılırsa 422 STORAGE_HARD_LIMIT_EXCEEDED döner. Dosya yükleme kuralları için Dosya yükleme sayfasına bakın.
Kanalların gönderim için desteklediği dosya türleri:
Desteklenmeyen tür
422 UNSUPPORTED_FILE_TYPE döner.
Sesli not
POST /conversations/{id}/messages/voice yalnızca file alanını (audio/*, en çok 50 MB) alır ve dosyayı sesli not olarak gönderir. Açıklama metni yoktur. Instagram sesli notu desteklemez; 422 UNSUPPORTED_FILE_TYPE döner.
Albüm gönderme
Bir albüm için her görseli ayrı bir istekle, aynımedia_group_id ve kendi media_group_index değeriyle gönderin. media_group_id değerini istemcinizde üretin.
Düzenleme, silme ve tepki
Üç işlem de yalnızca kliniğin gönderdiği (giden) mesajlarda çalışır. Hastanın mesajı hiçbir kanalda düzenlenemez veya silinemez. Kanal önce güncellenir; sağlayıcı reddederse kayıt değişmez.Düzenleme
PUT /conversations/{id}/messages/{messageId} gövdesinde message (zorunlu, en çok 5000 karakter) ve isteğe bağlı message_format alır; biçim verilmezse mesajın mevcut biçimi korunur. Yanıt, is_edited: true olan güncel mesaj nesnesidir. Update:Message izni olan her kullanıcı, AI tarafından gönderilenler dahil, giden bir metni düzenleyebilir.
Silme
DELETE /conversations/{id}/messages/{messageId} mesajı kanalda herkesten siler ve kayıtta gizler. Mesaj kaydı kalır; is_deleted true olur, message, quoted_text ve transcript alanları null döner. Sohbet listesindeki önizleme Bu mesaj silindi yazar. Sağlayıcı kimliği olmayan bir mesaj yalnızca Flextell’de gizlenir.
Tepki
POST /conversations/{id}/messages/{messageId}/reactions gövdesinde emoji alanı bulunmalıdır. Değer 👍, ❤️, 😂, 😮, 😢, 🙏 emojilerinden biridir; tepkiyi kaldırmak için null gönderin. Boş gövde reddedilir.
Bir mesajda klinik tarafından en fazla bir tepki bulunur. Başka bir personelin tepkisi öncekinin yerine geçer. Hastanın tepkisi ayrı tutulur.
MESSAGE_EDIT_BLOCKED ve MESSAGE_EDIT_FAILED yanıtlarındaki message metni İngilizce gelebilir. Kodu esas alın, metni kullanıcıya olduğu gibi göstermeyin.Sıralama ve tekrar deneme
Gönderim uçları asenkrondur ve yanıt202 döner. Sıra ve tekrar için şunları bilin:
- Aynı sohbete art arda yapılan gönderimler en az 2 saniye arayla iletilir; mesajlar istek sırasıyla gider.
- Albümde teslim sırası
media_group_indexdeğerini izler. Bir öğe, düşük indeksli öğeleri bekler: kuyrukta veya gönderimde olanlar için en çok 120 saniye, hiç ulaşmayan bir indeks için en çok 15 saniye. - Albüm öğesini aynı
media_group_idvemedia_group_indexile yeniden gönderirseniz yeni mesaj oluşmaz; ilk isteğinmessage_iddeğeri döner ve dosya yeniden yüklenmez. - Önceki deneme başarısız olduysa veya 10 dakikadan uzun süredir kuyrukta ya da gönderimde takılı kaldıysa, yeniden deneme mesajı tekrar gönderir.
- Bu tekrar koruması 7 gün geçerlidir.
- Düz metin, albümsüz tek medya ve sesli not gönderimlerinde tekrar koruması yoktur. Ağ hatasında isteği hemen tekrarlamayın; önce
GET /messagesile mesajın oluşup oluşmadığına bakın. - Her yeni mesaj (hasta, personel, AI veya sistem) sohbeti listede yukarı taşır. İçe aktarılan eski mesajlar sohbeti geriye almaz.