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¶
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 |
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.