Gerçek zamanlı bağlantı yalnızca “bir şey değişti” bilgisini taşır. Olaylar yeniden gönderilmez; kaçırdığınız değişiklikleri REST API’den okuyarak tamamlayın.
Kanal kataloğu
Her kanal için abonelik,POST /api/broadcasting/auth ile imzalanır. Yetkisi olmayan kullanıcı bu uç noktadan 403 FORBIDDEN alır (Bu işlem için yetkiniz yok.). Kimlik doğrulaması eksikse yanıt 401 UNAUTHENTICATED olur.
private-chat-log kanalı mesaj metnini taşıdığı için kısıtlıdır. Tüm sohbetleri görme izniniz yoksa private-chat-log-activity kanalına abone olun ve gelen kimliklerle /conversations uç noktalarını çağırın. Hangi sohbetleri görebileceğiniz İzinler ve görünürlük sayfasında anlatılır.private-App.Models.User.{userId} kanalı klinik bazlı değildir. Kullanıcı birden fazla kliniğe üye olabilir; bu yüzden her olay tenant_id taşır. Etkin kliniğinizin dışındaki olayları yok sayın.
Olay adlandırma
Özel adı olmayan olaylar, ad alanı dahil tam adlarıyla yayınlanır. Tek ters eğik çizgiyle yazılır, örneğinModules\Chat\Events\ChatLogCreated.
Özel adlı olaylar şunlardır:
notification.created, notifications.updated, MessageSent, PresenceUpdated.
Sohbet olayları
Sohbet olayları iki kanala dağılır. Aşağıdaki tabloda İçerikprivate-chat-log kanalını, Aktivite private-chat-log-activity kanalını gösterir.
İki kanala giden olayların içeriği aynıdır. Yalnızca aktivite kanalına abone olan bir istemci
ChatLogCreated ve ChatLogUpdated olaylarını almaz; bunların yerine ChatLogChanged alır. WhatsApp geçmiş aktarımı ilerlemesi de yalnızca içerik kanalındadır.
İçerik taşıyan olaylar
status değerleri pending, running, completed, failed, cancelled olarak gelir. skipped nesnesi unknown_contact, deleted_contact, lid_unresolved, group ve failed sayaçlarını taşır.
Mesaj gönderimi kabul edildikten (202) sonra sohbetin kanalı kapatılırsa mesaj saklanır, metadata.delivery_status değeri failed olur ve mesaj için yeni bir ChatLogUpdated olayı iletilir. Kanal baştan pasifse gönderim uç noktası mesajı kabul etmez ve 422 CHANNEL_INACTIVE döner; bu durumda olay oluşmaz.
Mesaj nesnesinin (chatLog) başlıca alanları:
Yalnızca kimlik taşıyan olaylar
Bu olaylar “yeniden oku” sinyalidir. Ayrıntıyı REST API’den alın.ConversationCreated olayı yalnızca personelin POST /conversations ile başlattığı yeni sohbetlerde gelir. Müşterinin yazdığı yeni bir sohbeti, bilinmeyen bir conversation_id taşıyan ilk ChatLogCreated veya ChatLogChanged olayından öğrenirsiniz.
Yazıyor göstergesi
ConversationPresenceUpdated olayının içeriği { conversation_id, presence, source } biçimindedir. source değeri customer veya bot olur.
Göstergeyi
expires_at zamanında kendiniz kapatın. Bot yazmayı bitirince veya hata alınca da paused durumu gönderilir.
Web sitesi widget’ı olayları
presence-conversation.{conversationId} kanalı yalnızca web sitesi widget’ı sohbetlerinde kullanılır. Ayrıntılar için Web sitesi widget’ı sayfasına bakın.
AI önerisi olayları
AI önerisi olayları yalnızcaprivate-ai-suggestion.{conversationId} kanalına gider. Sohbet kanallarına gönderilmez.
Öneri değiştirildiğinde, eski öneri için
AiSuggestionUpdated (superseded), ardından yenisi için AiSuggestionCreated gelir.
Normal içerik { suggestion_id, tenant_id, requires_hydration: false, ...öneri alanları } biçimindedir. İçerik 9000 bayttan büyükse kısaltılmış bir içerik gelir.
requires_hydration değeri true ise GET /api/v1/conversations/{id}/ai-suggestion ile öneriyi okuyun.
Öneri alanları:
AI asistanın sohbette açılıp kapanması bir öneri olayı değildir. Bu değişiklik
ConversationAgentStatusChanged olayıyla gelir. Bot yazarken ConversationPresenceUpdated (source: bot) gelir.
Kullanıcı bildirimleri
Bildirim olayları yalnızcaprivate-App.Models.User.{userId} kanalına gider.
notification nesnesi:
Bildirim türü, kategori ve kaynak değerleri
Bildirim türü, kategori ve kaynak değerleri
type değerleri: appointment_created, appointment_assignment, appointment_status_changed, appointment_rescheduled, appointment_bulk_reschedule, appointment_reschedule_no_alternative, chat_new_message, ticket_created, ticket_assigned, ticket_status_changed, lead_unassigned, lead_task_assigned, lead_task_due, lead_bulk_operation, inventory_low_stock, storage_file_uploaded, storage_overage, sales_export, customer_balance_export, announcement_updated, panel_ticket_created, panel_ticket_status_updated, ai_report_ready, ai_report_failed.category değerleri: appointment, message, ticket, lead, inventory, sales, finance, announcement, panel_ticket, report.resource değerleri: task, appointment, ticket, panel_ticket, lead, ai_report, proforma_invoice, announcement, product, file, conversation.type: chat_new_message, resource: conversation), sohbet bildirimi alacak şekilde ayarlanmış rollerdeki ve o sohbeti görebilen kullanıcılara gider. Bir Satış Temsilcisi, kendisine atanmamış kişilerin mesaj bildirimini almaz.
Bildirim listesi, okundu işaretleme ve temizleme uç noktaları için Bildirimler sayfasına bakın.
Sıralama ve boyut sınırları
Gerçek zamanlı bağlantı REST API’nin yerini almaz. İstemcinizi aşağıdaki davranışlara göre tasarlayın.1
Abone olun
İlgili kanala abone olun. Başarılı abonelik
pusher:subscription_succeeded olayıyla bildirilir.2
Durumu REST'ten okuyun
Her başarılı abonelikten sonra, yeniden bağlanma sonrası dahil, ilgili listeyi ve açık sohbetin mesajlarını REST ile yeniden okuyun.
3
Olayları uygulayın
Gelen olayları kimliğe göre tekilleştirerek uygulayın. Kimlik taşıyan olaylarda yalnızca etkilenen kaydı yeniden okuyun.
İlgili sayfalar
Gerçek zamanlı genel bakış
Bağlantı kurma ve kanal yetkilendirme.
Örnek istemci
Abonelik ve olay dinleme örneği.
Sohbetler
Olaylardan sonra çağıracağınız sohbet uç noktaları.
AI asistan
AI önerisi ve asistan kontrolü uç noktaları.