Ana içeriğe geç

Aramalar

Arama, bir DM'nin veya grup DM'nin canlı ses oturumudur. Kanalın kendisi ve alıcı kümesi Kanallar sayfasında tanımlanır.

Bir aramaya katılmak ve aramadan ayrılmak bir Gateway işlemidir. İstemci, guild_id değeri null olan bir Voice State Update göndererek katılır veya ayrılır; ortaya çıkan arama durumu Call Create, Call Update ve Call Delete ile yayımlanır. Aramanın çalma zamanlayıcıları ve katılımcı listesi Gateway'e aittir. Model Ses sayfasında açıklanır.

Bu sayfadaki her yol yalnızca kullanıcılara açıktır. Bir bot token'ı 403 ACCESS_DENIED ile reddedilir.

Erişim kuralları

Her yol, alıcıları arasında çağıranın da bulunduğu bir DM veya grup DM gerektirir.

Koşul Yanıt
Kanal mevcut değil 404 NOT_FOUND
Kanal mevcut ama DM veya grup DM değil 403 FORBIDDEN
Çağıran kanalın alıcısı değil 403 FORBIDDEN

Özel aramada ses moderasyonu

Özel bir aramada moderatör ve izin geçersiz kılmaları yoktur. Katılımcının kendisi dışında hiçbir hesap o katılımcının ses durumunu değiştiremez; grup DM'nin sahibi de bunun istisnası değildir. Bu nedenle bir arama ses durumunun mute, deaf ve suppress alanları her zaman false'tur. self_mute, self_deaf, self_video veya self_stream alanlarını yalnızca katılımcının kendi Voice State Update isteği değiştirir.

Başka bir katılımcıyı susturmak istemcide gerçekleşir. İstemci bir katılımcıyı susturABİLİR veya katılımcı başına ses düzeyini değiştirEBİLİR; her ayarı dinleyen cihazda yerel olarak tutmak ZORUNDADIR.

Arama uygunluğu nesnesi

TEBHOS uygunluğu, okuma anında tek bir çağıran için tek bir özel kanala göre hesaplar.

Yapı

Alan Tür Açıklama
ringable boolean Kimliği doğrulanmış kullanıcının bu kanalın karşı tarafını arayıp arayamayacağı
silent boolean Yeni başlatılan bir aramanın diğer alıcıyı sesli çalma olmadan bildirip bildirmeyeceği. Yalnızca DM için anlamlıdır ve ringable false olduğunda her zaman false olur
reason? string ringable false olduğunda bulunan, insanın okuyabileceği açıklama. Yalnızca görüntüleme içindir; ayrıştırmayın

Örnek

{
  "ringable": true,
  "silent": false
}

Arama uygunluğunu alma

GET /channels/{channel_id}/call

Bir DM veya grup DM için arama uygunluğu nesnesini döndürür. Çağıran erişim kurallarını karşılamalıdır.

Yol parametreleri

Alan Tür Açıklama
channel_id snowflake DM veya grup DM kanalının kimliği

Gateway'in bildirdiğine göre çağıran kanalın aramasına zaten bağlıysa ringable false olur. Gateway'e ulaşılamıyorsa bu denetim atlanır.

Grup DM'de, bunun dışında ringable true ve silent false olur.

DM'de karar diğer alıcının gelen arama politikasına aittir. Herhangi bir yönde engelleme varsa hiçbir zaman aranamaz. Aksi halde TEBHOS, alıcının gelen arama bayraklarını kullanıcı ayarlarından şu sırayla okur: "hiç kimse" bayrağı her çağıranı reddeder; "yalnızca arkadaşlar" bayrağı yalnızca arkadaşı kabul eder; arkadaş diğer tüm politikalarda her zaman kabul edilir; alıcıyla ortak bir arkadaşı olan çağıran, "arkadaşların arkadaşları" bayrağı ayarlıysa kabul edilir; ortak bir sunucusu olan çağıran, "sunucu üyeleri" bayrağı ayarlıysa kabul edilir; "herkes" bayrağı kalan her çağıranı kabul eder; diğer tüm çağıranlar reddedilir. "Herkes için sessiz" bayrağı, "arkadaşların arkadaşları", "sunucu üyeleri" veya "herkes" dalıyla kabul edilen bir çağıran için silent değerini true olarak bildirir. Ayarlar okunamıyorsa çağıran aranabilir kabul edilir.

Arama alıcılarını çaldırma aynı politikayı yeniden değerlendirir.

Yanıt

Durum Gövde Koşul
200 arama uygunluğu nesnesi Uygunluk döndürüldü
403 hata yanıtı Kanal özel kanal değil veya çağıran alıcı değil
404 hata yanıtı Kanal mevcut değil

Hız sınırı

channel:call:get kovasında her kullanıcı ve kanal için 10 saniyede 60 istek.

Arama alıcılarını çaldırma

POST /channels/{channel_id}/call/ring

Bir DM veya grup DM'de arama başlatır ya da mevcut bir aramanın daha fazla alıcısını çaldırır. Çağıran erişim kurallarını karşılamalıdır. Çağıranın henüz aramaya bağlı olması gerekmez.

Yol parametreleri

Alan Tür Açıklama
channel_id snowflake DM veya grup DM kanalının kimliği

JSON gövdesi

Alan Tür Açıklama
recipients? array[snowflake] Çaldırılacak alıcıların kimlikleri. Alan gönderilmezse diğer tüm alıcılar hedeflenir. Boş dizi aramayı oluşturur ve kimseyi çaldırmaz

Her giriş bir snowflake string'i veya sayısıdır. Çağıran dışındaki mevcut bir alıcı olmayan kimlik, recipients yolunda USER_NOT_IN_CHANNEL doğrulama koduyla 400 INVALID_FORM_BODY döndürür.

Hedeflenen bir alıcı yalnızca Arama uygunluğunu alma bölümünde anlatılan gelen arama politikası çağıranı sesli olarak kabul ediyorsa çaldırılır. Politikanın dışladığı bir alıcı ve yalnızca sessiz olarak kabul ettiği bir alıcı çalma kümesinin dışında bırakılır; istek yine de başarılı olur.

Yanıt gövdesi

Alan Tür Açıklama
ringing array[snowflake] Bu isteğin çaldırdığı alıcılar
{
  "ringing": ["1189375284394692611"]
}

Yanıt

Durum Gövde Koşul
200 yanıt gövdesi Çaldırma işlemi tamamlandı
400 hata yanıtı Belirtilen bir kimlik alıcı değil ve istek USER_NOT_IN_CHANNEL ile INVALID_FORM_BODY döndürür
403 hata yanıtı Kanal özel kanal değil veya çağıran alıcı değil
404 hata yanıtı Kanal mevcut değil

Yan etkiler

Özel kanal, çağıran ve kanalı kapatmış olan hedeflenen her alıcı için yeniden açılır ve bu hesaplar Channel Create alır.

Etkin bir arama yoksa TEBHOS bir tane oluşturur: kanala bir arama sistem mesajı yazar (Message Create olarak iletilir), her alıcıya Call Create olayının API biçimini gönderir ve kendi Call Create olayını gönderen Gateway arama sürecini başlatır.

Çaldırılan her alıcı channel_id, call_id ve initiator (id, name, image_url) içeren bir CALL_RING Dispatch alır; Gateway arama süreci alıcıları çalma kümesine ekler ve Call Update gönderir.

Çalma alıcı başına 30 saniye sürer ve süresinin dolması Call Update yayar. Bağlı katılımcısı olmayan ve kimsenin çalmadığı bir arama, Gateway'in 120 saniyelik boşta kalma zamanlayıcısıyla Call Delete yayarak sona erer. Bir arama sona erdiğinde arama mesajı bitiş zamanı ve katılımcılarıyla güncellenir.

Hız sınırı

channel:call:ring kovasında her kullanıcı ve kanal için 10 saniyede 5 istek.

Arama alıcılarının çalmasını durdurma

POST /channels/{channel_id}/call/stop-ringing

Alıcıları etkin aramanın çalma kümesinden çıkarır. Çağıran erişim kurallarını karşılamalıdır.

Yol parametreleri

Alan Tür Açıklama
channel_id snowflake DM veya grup DM kanalının kimliği

JSON gövdesi

Alan Tür Açıklama
recipients? array[snowflake] Çalması durdurulacak alıcıların kimlikleri. Alan gönderilmezse yalnızca çağıran hedeflenir; istemci kendisine gelen aramayı bu şekilde reddeder

Yanıt gövdesi

Alan Tür Açıklama
stopped array[snowflake] İsteğin hedeflediği alıcılar

Yanıt

Durum Gövde Koşul
200 yanıt gövdesi Çalmayı durdurma işlemi tamamlandı
403 hata yanıtı Kanal özel kanal değil veya çağıran alıcı değil
404 hata yanıtı Kanal mevcut değil veya içinde etkin bir arama yok

Yan etkiler

Hedeflenen her alıcı channel_id, call_id, stopped_by ve recipients içeren bir CALL_STOP_RING Dispatch alır; böylece alıcının diğer cihazları da çalmayı durdurur. Gateway arama süreci onları çalma kümesinden çıkarır ve Call Update gönderir.

Bu durum aramayı katılımcısız ve kimsenin çalmadığı halde bırakırsa arama sona erer: her alıcı Call Delete alır (reason: "empty" içeren bir API biçimi dahil) ve arama mesajı sona ermiş olarak işaretlenir. Aksi halde arama devam eder; böylece çağıran tek başına beklemeyi sürdürebilir.

Hız sınırı

channel:call:stop_ringing kovasında her kullanıcı ve kanal için 10 saniyede 20 istek.

Arama bölgesini değiştirme

PATCH /channels/{channel_id}/call

Etkin aramanın ses bölgesini değiştirir. Çağıran erişim kurallarını karşılamalıdır; aramaya bağlı olması gerekmez.

Yol parametreleri

Alan Tür Açıklama
channel_id snowflake DM veya grup DM kanalının kimliği

JSON gövdesi

Alan Tür Açıklama
region? ?string Seçilecek RTC bölgesinin kimliği. Boş string, automatic ve auto otomatik yönlendirmeyi seçer. Alanı göndermemek veya null göndermek hiçbir şeyi değiştirmez

Çağıranın kullanamayacağı bir bölge 400 INVALID_OR_RESTRICTED_RTC_REGION döndürür.

Yanıt gövdesi

Alan Tür Açıklama
id string API'nin arama kimliği
channel_id snowflake Kanal
initiator_id snowflake Aramayı başlatan kullanıcı
livekit_room_name string Medya odası, dm_{channel_id}
started_at ISO8601 zaman damgası Aramanın başladığı an
region? string Seçilen bölge; otomatik yönlendirme için automatic
voice_states array[object] Her zaman boş; canlı katılımcı listesi Gateway'dedir
ringing array[snowflake] API'nin çalıyor olarak kaydettiği alıcılar

Yanıt

Durum Gövde Koşul
200 yanıt gövdesi Bölge güncellendi veya değişiklik istenmedi
400 hata yanıtı Bölge bilinmiyor veya kısıtlı: INVALID_OR_RESTRICTED_RTC_REGION
403 hata yanıtı Kanal özel kanal değil veya çağıran alıcı değil
404 hata yanıtı Kanal mevcut değil veya içinde etkin bir arama yok

Yan etkiler

region göndermek yeni bölgeyi kaydeder, aramanın sabitlenmiş medya sunucusunu serbest bırakır ve bölgeyi Gateway arama sürecine iletir; süreç, bağlı her katılımcıya yeni bölge için taze bir Voice Server Update verir. Her alıcı Call Update olayının API biçimini alır.

Hız sınırı

channel:call:update kovasında her kullanıcı ve kanal için 10 saniyede 10 istek; Aramayı sonlandırma ile paylaşılır.

Aramayı sonlandırma

POST /channels/{channel_id}/call/end

DELETE /channels/{channel_id}/call

Her iki yol da aynı işlemi çalıştırır ve boş gövdeyle 204 döndürür. Etkin aramayı API'de sona ermiş olarak işaretler. Çağıran erişim kurallarını karşılamalı ve aramayı başlatan kullanıcı olmalıdır.

Yol parametreleri

Alan Tür Açıklama
channel_id snowflake DM veya grup DM kanalının kimliği

Yanıt

Durum Gövde Koşul
204 boş Arama sonlandırıldı
403 hata yanıtı Kanal özel kanal değil, çağıran alıcı değil veya aramayı çağıran başlatmadı
404 hata yanıtı Kanal mevcut değil veya içinde etkin bir arama yok

Yan etkiler

Arama kaydı ve çalma kümesi temizlenir, arama mesajı sona ermiş olarak işaretlenir ve her alıcı channel_id, call_id ve ended_by ile Call Delete olayının API biçimini alır.

Ayrılmak bir Gateway işlemidir

Aramayı HTTP üzerinden sonlandırmak kimsenin ses bağlantısını kesmez. Bir katılımcı, null kanal ve bırakılacak connection_id ile Voice State Update göndererek ayrılır. Son katılımcı ayrıldığında ve kimse çalmıyorsa Gateway aramayı kendiliğinden sonlandırır.

Hız sınırı

channel:call:update kovasında her kullanıcı ve kanal için 10 saniyede 10 istek.

Arama başlatma (eski)

POST /channels/{channel_id}/call

Bir arama başlatır ve Gateway olmadan doğrudan bir medya kimlik bilgisi döndürür. Eski TEBHOS istemcileri için tutulur. Yeni istemciler Voice State Update ile katılır ve Arama alıcılarını çaldırma ile çalmayı başlatır.

Çağıran erişim kurallarını karşılamalıdır. Gizlilik ayarları çağırandan gelen aramaları kabul etmeyen bir DM alıcısı 403 MISSING_ACCESS döndürür. Zaten etkin bir arama varsa yol o aramayı taze bir kimlik bilgisiyle döndürür.

Yanıt gövdesi

Alan Tür Açıklama
call_id string API'nin arama kimliği
channel_id snowflake Kanal
livekit_room_name string Medya odası, dm_{channel_id}
livekit_url string LiveKit sunucu URL'si
access_token string Çağıran için bir LiveKit erişim token'ı
started_at ISO8601 zaman damgası Aramanın başladığı an
message_id? snowflake Arama sistem mesajı
unavailable? boolean Diğer tüm alıcılar şu anda müsait değilse bulunur ve true olur
unavailable_recipients? array[snowflake] Şu anda müsait olmayan alıcılar

Yeni bir arama, arama sistem mesajını yazar ve her alıcıya Call Create olayının API biçimini gönderir. Bu yol kimseyi çaldırmaz.