Senaryo
Randevu yazılımınız, “Ayşe Yılmaz” adlı hastaya (+90 5xx xxx xx xx) kliniğin WhatsApp hattından bir hatırlatma gönderecek. Hasta yanıt verdiğinde yazılımınız yanıtı hemen görecek ve sohbeti okundu yapacak.
Gerekenler:
ViewAllConversations izni olmayan bir kullanıcı yalnızca lead’i kendisine atanmış kişilerin sohbetlerini görür. Bu kısıt hem API çağrılarını hem de dinleyebileceğiniz kanalı etkiler. Ayrıntı için İzinler ve görünürlük sayfasına bakın.Sohbeti bulma veya oluşturma
Sohbetinid değerine ihtiyacınız var. En kısa yol POST /conversations çağrısıdır: sohbet varsa aynısını döndürür, yoksa oluşturur. Çağrı her iki durumda da 201 verir.
Kişiyi üç yoldan biriyle belirtebilirsiniz: customer_id, lead_id veya channel_id ile address. Kişi henüz kayıtlı değilse channel_id ve address kullanın.
data.id sohbet kimliğidir. Bu yanıt kısa şekillidir: tags, lines, blacklist ve sayaçlar gelmez, unread_count 0’dır.
first_namevelast_namegönderirseniz kişinin mevcut adını değiştirir. Yalnızca yeni kişi için göndermek isterseniz önce sohbeti arayın.- Aynı kanal ve adres için tekrar çağrı aynı sohbeti ve aynı kişiyi döndürür. Numara normalize edilir;
+90 555 123 45 67ile905551234567aynı adrestir. - Adres başka bir hastanın sohbetine aitse
409 CONVERSATION_ADDRESS_TAKENdöner.
GET /conversations?search=Ayşe kullanın. Arama yalnızca kişi adı, soyadı ve adreste yapılır; mesaj metninde aramaz. Varsayılan olarak arşivdeki sohbetler listelenmez. Filtreler için Sohbetler sayfasına bakın.
Mesaj gönderme
Metin mesajı içinPOST /conversations/{id}/messages kullanın. message zorunludur ve en çok 5000 karakterdir; kanalın kendi sınırı daha düşükse o geçerlidir (WhatsApp 65536, Telegram 4096, Instagram 1000, web sitesi için sınır yok).
202 Accepted olur. Mesaj kuyruğa alınmıştır, henüz hastaya iletilmemiş olabilir:
message_id geçici bir kimliktir. Kanal mesajı kabul ettiğinde gerçek mesaj oluşur ve bir sonraki bölümde anlatılan olay yayınlanır.
Düz metin gönderimlerinde tekrar koruması yoktur. Ağ hatasında isteği hemen tekrarlamayın; önce
GET /conversations/{id}/messages ile mesajın oluşup oluşmadığına bakın. Aynı sohbete art arda gönderilen mesajlar en az 2 saniye arayla iletilir.202) sonra hat kapatılırsa mesaj iletilmez. Bu durumda mesaj yine de saklanır, metadata.delivery_status değeri failed olur ve ChatLogUpdated olayı yayınlanır.
Medya, sesli not ve Hızlı Yanıt göndermek için Mesajlar sayfasına bakın.
API ile mesaj gönderdiğinizde, çalışmakta olan AI asistan bu sohbet için 30 dakika durdurulur ve sohbete bir sistem mesajı yazılır. Bkz. AI asistan kontrolü rehberi.
Gelen mesajları dinleme
Hastanın yanıtı, abone olduğunuz kanala bir olay olarak düşer. Hangi kanala abone olacağınız yetkinize bağlıdır.
Tüm sohbetleri göremeyen kullanıcı
private-chat-log için /api/broadcasting/auth üzerinden 403 alır. Her yetki düzeyinde çalışan yol, private-chat-log-activity kanalına abone olmak ve olay gelince mesajı REST API’den okumaktır. Bağlantı kurma ve yetkilendirme kodu için Örnek istemci sayfasına bakın.
ChatLogChanged olayının yükü {conversation_id, chat_log_id} biçimindedir. chat_log_id null olabilir. Olay, sohbete bağlı her yeni mesajda ve her mesaj güncellemesinde gelir.
- Tüm sohbetleri görebiliyorsanız
private-chat-logkanalındakiModules\Chat\Events\ChatLogCreatedolayı mesajıchatLogalanında tam olarak taşır; ek istek gerekmez. - Olaylar tekrar gönderilmez. Bağlantı koptuğunda kaçan mesajları her abonelikte
GET /conversations/{id}/messagesile kapatın. - Olayların sırası garanti değildir ve kendi işleminizin olayı size de gelir. Mesajları
idile tekilleştirin. - Medya içeren mesajda
ChatLogCreateddosya hazır olmadan gelir. Dosya hazır oluncaChatLogUpdatedyayınlanır;ChatLogChangedikisinde de gelir. - Gönderdiğiniz mesajın teslim durumu (
delivery_status) değiştiğinde de olay gelir. Mesaj kuyruğa alındıktan sonra hat kapatılırsadelivery_statusfailedolur veChatLogUpdatedyayınlanır.
Okundu işaretleme
Hasta mesajlarını okuduktan sonra sohbeti okundu yapın. Okunmamış sayısı (unread_count) klinik ekibi için ortaktır: bir kullanıcı okuyunca herkes için okunmuş olur.
ConversationRead olayı yayınlar; bu olay kuyruktan geçtiği için daha sonra gelen bir mesaj olayından sonra ulaşabilir.
Hata durumları
Hata yanıtının biçimi için Hatalar ve Hata kodları sayfalarına bakın.
Sohbetler
Sohbet listeleme, filtreler, arşiv ve etiketler.
Mesajlar
Medya, sesli not, düzenleme, silme ve tepki.
Kanallar ve olaylar
Tüm kanalların ve olayların listesi.
Örnek istemci
Bağlanma, yetkilendirme ve yeniden bağlanma.