全部产品
Search
文档中心

ApsaraVideo Live:CreateEventSub

更新时间:Dec 13, 2025

Membuat callback untuk berlangganan event channel atau pengguna.

Deskripsi operasi

Anda dapat memanggil operasi ini untuk membuat callback guna berlangganan event channel atau pengguna. Saat membuat callback, Anda dapat mengonfigurasi parameter seperti URL callback dan tipe event.

Batas QPS

Anda dapat memanggil operasi ini hingga 100 kali per detik per akun. Permintaan yang melebihi batas ini akan dibuang dan dapat menyebabkan gangguan layanan. Pastikan Anda mematuhi batas tersebut saat memanggil operasi ini.

Coba sekarang

Coba API ini di OpenAPI Explorer tanpa perlu penandatanganan manual. Panggilan yang berhasil akan secara otomatis menghasilkan contoh kode SDK sesuai dengan parameter Anda. Unduh kode tersebut dengan kredensial bawaan yang aman untuk penggunaan lokal.

Test

RAM authorization

Tabel berikut menjelaskan otorisasi yang diperlukan untuk memanggil API ini. Anda dapat menentukannya dalam kebijakan Resource Access Management (RAM). Kolom pada tabel dijelaskan sebagai berikut:

  • Action: Aksi yang dapat digunakan dalam elemen Action pada pernyataan kebijakan izin RAM untuk memberikan izin guna melakukan operasi tersebut.

  • API: API yang dapat Anda panggil untuk melakukan aksi tersebut.

  • Access level: Tingkat akses yang telah ditentukan untuk setiap API. Nilai yang valid: create, list, get, update, dan delete.

  • Resource type: Jenis resource yang mendukung otorisasi untuk melakukan aksi tersebut. Ini menunjukkan apakah aksi tersebut mendukung izin tingkat resource. Resource yang ditentukan harus kompatibel dengan aksi tersebut. Jika tidak, kebijakan tersebut tidak akan berlaku.

    • Untuk API dengan izin tingkat resource, jenis resource yang diperlukan ditandai dengan tanda bintang (*). Tentukan Nama Sumber Daya Alibaba Cloud (ARN) yang sesuai dalam elemen Resource pada kebijakan.

    • Untuk API tanpa izin tingkat resource, ditampilkan sebagai All Resources. Gunakan tanda bintang (*) dalam elemen Resource pada kebijakan.

  • Condition key: Kunci kondisi yang didefinisikan oleh layanan. Kunci ini memungkinkan kontrol granular, berlaku baik hanya untuk aksi maupun untuk aksi yang terkait dengan resource tertentu. Selain kunci kondisi spesifik layanan, Alibaba Cloud menyediakan serangkaian common condition keys yang berlaku di semua layanan yang didukung RAM.

  • Dependent action: Aksi dependen yang diperlukan untuk menjalankan aksi tersebut. Untuk menyelesaikan aksi tersebut, pengguna RAM atau role RAM harus memiliki izin untuk melakukan semua aksi dependen.

Action

Access level

Resource type

Condition key

Dependent action

live:CreateEventSub

*Rtc

acs:live::{#accountId}:rtc/{#AppId}

None None

Parameter permintaan

Parameter

Type

Required

Description

Example

AppId

string

Yes

ID aplikasi.

9qb1****

ChannelId

string

No

ID channel. Anda dapat memanggil operasi ListEventSub untuk mengkueri ID channel tersebut.

Catatan
  • Parameter ini wajib jika Anda menentukan parameter Users.N.

  • Jika Anda mengatur parameter ini ke * atau tidak menentukan parameter ini, semua channel akan di-subscribe.

  • Setiap ID aplikasi hanya mengizinkan satu langganan untuk semua channel.

123333

Users

array

No

Pengguna yang event-nya ingin Anda subscribe. Jika Anda membiarkan parameter ini kosong, event semua pengguna dalam channel akan di-subscribe, termasuk event streamer dan penonton. Tentukan parameter ini dengan format berikut:

Users.1=****
Users.2=****
......

string

No

ID pengguna.

user1

Events

array

Yes

Berlangganan event.

string

Yes

Tipe event. Nilai yang valid:

  • ChannelEvent: event channel.

  • UserEvent: event pengguna dalam channel.

ChannelEvent

CallbackUrl

string

Yes

URL callback. Untuk informasi lebih lanjut tentang konten pesan yang dikirim ke URL callback, lihat bagian Callback dalam topik ini.

http://****.com/callback

CallBack

Pesan callback dikirim ke URL callback yang ditentukan oleh parameter CallbackUrl. Contoh kode berikut memberikan ilustrasi:

Request:

POST /callbackURL

Body
application/json

{
    "MsgId": "Message ID",
    "MsgTimestamp": 12312324, // Stempel waktu UNIX saat pesan dikirim.
    "SubscribeID": "Subscription ID",
    "AppId":"",     // ID aplikasi tempat pesan dihasilkan.
    "ChannelID":"", // ID channel tempat pesan dihasilkan.
    "Contents": [
      {
        "Event": "UserEvent",// Tipe event yang di-subscribe. Dalam kasus ini, tipe event adalah event pengguna.
        "UserEvent": {
          "UserId": "80331631628*****",    // ID pengguna.
          "EventTag": "Publish",    // Event. Nilai yang valid: Join, Leave, Publish, Unpublish, dan Roleupdate.
          "SessionId": "0dr15rrnhkz0jnvz6o8sxo0*****", // ID sesi tempat event dihasilkan.
          "Timestamp": 1609854786,    // Stempel waktu UNIX saat event terjadi.
          "Reason": 1, // Alasan bergabung atau meninggalkan channel. Parameter ini hanya tersedia jika event adalah event Join.
          "Role": 1, // Peran pengguna. Peran meliputi streamer dan viewer.
          "CurrentMedias":"1,2,3"// Jenis aliran yang diambil oleh pengguna.
        }
      },
      {
        "Event": "ChannelEvent",// Tipe event yang di-subscribe. Dalam kasus ini, tipe event adalah event channel.
        "ChannelEvent": {
          "ChannelId": "88888****",
          "EventTag": "Open",   // Event. Nilai yang valid: Open dan Close.
          "Timestamp": 1609854530 // Stempel waktu UNIX saat event terjadi.
        }
      }
   ]
}

Response 
HTTP STATUS 200

Parameter event pengguna

ParameterTipeWajibDeskripsi
UserIdstringYaID pengguna.
SessionIdstringYaID sesi.
EventTagstringYaEvent. Nilai yang valid:Join: Pengguna bergabung ke channel.Leave: Pengguna meninggalkan channel.PublishVideo: Pengguna melakukan pengambilan aliran video.PublishAudio: Pengguna melakukan pengambilan aliran audio.PublishScreen: Pengguna melakukan pengambilan aliran untuk berbagi layar.UnpublishVideo: Pengguna menghentikan pengambilan aliran video.UnpublishAudio: Pengguna menghentikan pengambilan aliran audio.UnpublishScreen: Pengguna menghentikan pengambilan aliran untuk berbagi layar.Roleupdate: Peran pengguna diubah.
TimestampnumberYaStempel waktu saat event terjadi.
ReasonintegerYaAlasan bergabung atau meninggalkan channel. Parameter ini hanya tersedia jika event adalah event Join. Nilai yang valid:1: Pengguna bergabung atau meninggalkan channel sesuai kebutuhan.2: Pengguna terhubung ulang untuk bergabung kembali ke channel meskipun sudah berada di dalam channel.3: Pengguna melakukan relay aliran lintas channel.4: Pengguna meninggalkan channel karena timeout.5: Pengguna memulai sesi baru dan dipaksa offline pada sesi saat ini.6: Pengguna dikeluarkan dari channel.7: Channel ditutup.
RoleintegerYaPeran pengguna. Nilai yang valid:1: streamer2: viewer
CurrentMediasintegerYaJenis aliran. Nilai yang valid:1: audio2: video3: berbagi layar

Parameter event channel

ParameterTipeWajibDeskripsi
EventTagstringYaEvent. Nilai yang valid:Open: Channel dibuka.Close: Channel ditutup.
TimestampnumberYaStempel waktu saat event terjadi.

Otentikasi callback

Otentikasi callback diaktifkan secara default. Logika otentikasi berikut berlaku:

  • Saat ApsaraVideo Live memulai permintaan callback, header Ali-Rtc-Timestamp dan Ali-Rtc-Signature disertakan dalam permintaan HTTP atau HTTPS sehingga server penerima pesan callback dapat mengotentikasi signature. Nilai Ali-Rtc-Timestamp dihitung berdasarkan rumus berikut: Ali-Rtc-Signature=MD5SUM(MD5CONTENT). Dalam rumus tersebut, MD5CONTENT adalah string dengan format berikut: Nama domain callback|Nilai Ali-Rtc-Timestamp|Kunci otentikasi. Nama domain callback adalah nama domain dalam URL callback. Kunci otentikasi adalah AppKey aplikasi.

  • Setelah menerima pesan callback, server penerima pesan callback menggabungkan nama domain callback, nilai header Ali-Rtc-Timestamp, dan kunci otentikasi dalam format di atas. Server menghitung nilai MD5 dari string tersebut untuk mendapatkan string terenkripsi. Kemudian, server membandingkan string terenkripsi tersebut dengan nilai header Ali-Rtc-Signature dalam permintaan HTTP atau HTTPS yang dikirim oleh Real-Time Communication (RTC). Jika kedua nilai berbeda, permintaan tersebut tidak valid.

Retry callback

Setelah Alibaba Cloud memulai permintaan callback, callback dianggap berhasil hanya jika server bisnis Anda mengembalikan kode status HTTP 200. Jika callback gagal, ApsaraVideo Live mengirim ulang permintaan callback sebanyak 7 kali dengan interval 1 detik, 2 detik, 5 detik, 10 detik, 60 detik, 120 detik, dan 300 detik. Catatan callback dibuat setiap kali permintaan callback dikirim ulang.

Penanganan eksepsi

Mekanisme keep-alive diterapkan antara klien yang telah bergabung ke channel atau memulai pengambilan aliran dan server Alibaba Cloud. Jika server tidak menerima informasi heartbeat dari klien selama 90 detik, server menganggap klien mengalami timeout dan pengguna meninggalkan channel, lalu memicu callback. Heartbeat gagal terdeteksi jika terjadi pemutusan jaringan atau aplikasi keluar secara tidak sengaja.

Elemen respons

Element

Type

Description

Example

object

Skema Respons

RequestId

string

ID permintaan.

760bad53276431c499e30dc36f6b****

SubscribeId

string

ID langganan.

ad53276431c****

Contoh

Respons sukses

JSONformat

{
  "RequestId": "760bad53276431c499e30dc36f6b****",
  "SubscribeId": "ad53276431c****"
}

Kode kesalahan

HTTP status code

Error code

Error message

Description

400 InputInvalid %s. Illegal input parameters
400 QuotaLimitError %s. For each AppId, a maximum of 20 subscriptions are allowed at the same time, and only one full channel subscription is allowed.
400 ErrorInvalidCallBackUrl %s. The CallBackURL is invalid, please check and try again.
500 ServerError %s. Unknown error, please try again later or submit a ticket for consultation.
403 NoAuth %s. No permission
404 ResourceNotExist %s. The requested resource does not exist, please check and try again

Lihat Error Codes untuk daftar lengkap.

Catatan rilis

Lihat Release Notes untuk daftar lengkap.