Nasıl çalışır
Flextell olayları yayınlar, siz Pusher üzerinden abone olursunuz. Abonelik yönü tek taraflıdır: gerçek zamanlı bağlantı yalnızca bildirim taşır, işlem yapmak için REST API’yi kullanırsınız. Flextell yalnızca özel (private-) kanalları ve bir adet presence- kanalını kullanır. Herkese açık kanal yoktur. Her aboneliği Flextell sunucusu imzalar. İmzayı almak için kendi access token’ınızla /api/broadcasting/auth endpoint’ini çağırırsınız.
Gerçek zamanlı olaylar yalnızca “bir şey değişti” bilgisini verir. REST API gerçeğin kaynağı olarak kalır. Bağlantı kopup yeniden kurulduğunda kaçan olaylar tekrar gönderilmez, bu yüzden aboneliğin kurulduğu anda REST’ten güncel durumu yeniden okuyun. Ayrıntı için Teslim garantileri bölümüne bakın.
Bağlantı bilgileri
Pusher istemcisini yapılandırmak için şu bilgilere ihtiyacınız var.
Anahtarı almak için Destek sayfasındaki yolları kullanın.
Kanal yetkilendirmesi
Özel veyapresence- bir kanala abone olurken Pusher istemciniz socket_id ve channel_name ile Flextell’e yetkilendirme isteği gönderir. Flextell isteği doğrularsa imza döner, istemciniz bu imzayla aboneliği tamamlar.
İstek
İstek gövdesini form (
application/x-www-form-urlencoded) veya JSON olarak gönderebilirsiniz. JSON gövdesi bozuksa 400 ve MALFORMED_JSON hata kodu döner.
Gerekenler:
Authorization: Bearer <access_token>başlığı.- Herhangi bir scope gerekmez.
X-Tenantbaşlığı gerekmez. Gönderseniz de Flextell yok sayar, çünkü klinik bilgisi kanal adından alınır.
Yanıtlar
Hata yanıtı standart zarfı kullanır:
403 aldığınızda Pusher istemciniz kanalda pusher:subscription_error olayını üretir.
Klinik ve izin kontrolleri
Yetkilendirme isteği klinik bağlamı taşımaz. Kontrol, kanal adındaki kimliğe göre ve token’ın ait olduğu kullanıcı için yapılır. Önce kullanıcının o klinikte üye olup olmadığına bakılır. Üye değilse ya da klinik yoksa abonelik reddedilir. Üyelik varsa kanala özgü izin kuralı uygulanır.Bir kullanıcının sohbeti görebilmesi için ya tüm sohbetleri görme iznine sahip olması ya da sohbetteki kişinin Lead’inin kendisine atanmış olması gerekir. Kişisi veya Lead’i olmayan sohbetleri bu izne sahip olmayan kullanıcılar göremez. Görünürlük kuralları için İzinler ve görünürlük sayfasına bakın.
- Tüm sohbetleri görme izni olmayan kullanıcı
private-chat-log.{tenantId}kanalına abone olamaz ve403alır. Bu kullanıcılar içinprivate-chat-log-activity.{tenantId}kanalını kullanın. private-App.Models.User.{userId}kanalı kliniğe bağlı değildir. Bir kullanıcı birden fazla kliniğe üye olabileceğinden bu kanaldaki olaylartenant_idalanı taşır. Aktif kliniğinize ait olmayanları istemcinizde atın.userId,GET /api/v1/accountyanıtındaki Flextell kullanıcı kimliğidir.- Kanal adındaki
tenantIdveconversationIdsayısal kimliklerdir. Klinik kimliği için Klinikler ve X-Tenant sayfasına bakın. presence-conversation.{conversationId}kanalını yalnızca web sitesi widget’ı kullanır. Ziyaretçi yetkilendirmesi ayrı bir endpoint üzerinden yapılır; bkz. Web sitesi widget’ı.
Teslim garantileri
Gerçek zamanlı kanalı güvenilir bir olay kuyruğu gibi kullanmayın. Aşağıdaki davranışları göz önünde bulundurun.1
Abone olun
Kanala abone olun ve
pusher:subscription_succeeded olayını bekleyin.2
Durumu yeniden okuyun
Bu olayda REST’ten güncel durumu çekin, örneğin sohbet listesini ve açık sohbetin mesajlarını. Olay, ilk abonelikte ve her yeniden bağlanmadan sonra gelir.
3
Olayları uygulayın
Bundan sonra gelen olayları ekrandaki duruma uygulayın. Eksik yükte REST’e dönün.
İlgili sayfalar
Kanallar ve olaylar
Her kanalın olayları ve yük alanları.
Örnek istemci
Abonelik ve yeniden bağlanma için çalışan örnek.
Token'lar
Access token alma ve yenileme.
Bildirimler
Kişisel kanalda gelen bildirimlerin REST karşılığı.