チャンネルメッセージをサブスクライブするためのコールバックを作成します。
操作説明
チャンネルメッセージをサブスクライブするためのコールバックを作成します。たとえば、コールバックの作成時に、コールバック URL やイベントタイプなどのパラメーターを設定できます。
QPS 制限
この操作の単一ユーザー QPS 制限は、1 秒あたり 100 回の呼び出しです。制限を超えると、API 呼び出しがスロットリングされ、ビジネスに影響が出る可能性があります。この操作は適切に呼び出してください。
今すぐお試しください
テスト
RAM 認証
|
アクション |
アクセスレベル |
リソースタイプ |
条件キー |
依存アクション |
|
live:CreateEventSub |
none |
*Rtc
|
なし | なし |
リクエストパラメーター
|
パラメーター |
型 |
必須 / 任意 |
説明 |
例 |
| AppId |
string |
必須 |
サブスクライブするアプリケーションの ID です。ApsaraVideo Live > Live+ > ApsaraVideo Real-time Communication > アプリケーション管理 に移動して、アプリケーション ID を確認できます。アプリケーションが存在しない場合は、[アプリケーションの作成] をクリックして作成してください。 |
9qb1**** |
| ChannelId |
string |
任意 |
サブスクライブするチャンネルの ID です。 ListEventSub 操作を呼び出して、サブスクライブ済みのチャンネル ID をクエリできます。 説明
|
123333 |
| Users |
array |
任意 |
メッセージをサブスクライブするユーザーです。このパラメーターが空の場合、チャンネル内のすべてのユーザー(配信者と視聴者を含む)がサブスクライブされます。フォーマット: |
|
|
string |
任意 |
ユーザー ID。 |
user1 |
|
| Events |
array |
必須 |
サブスクリプションイベント。 |
|
|
string |
必須 |
サブスクリプションイベント。有効な値:
|
ChannelEvent |
|
| CallbackUrl |
string |
必須 |
コールバック URL です。コールバックの内容については、以下のコールバック内容の例を参照してください。 |
http://****.com/callback |
コールバック
次の例は、指定された CallbackUrl を通じてユーザーにコールバックされる内容を示しています。
Request:
POST /callbackURL
Body
application/json
{
"MsgId": "Message ID",
"MsgTimestamp": 12312324, // メッセージ送信時の Unix 時間スタンプ
"SubscribeID": "Subscription ID",
"AppId":"", // このメッセージを生成した AppId
"ChannelID":"", // このメッセージを生成したチャンネル
"Contents": [
{
"Event": "UserEvent",// サブスクリプションイベント: チャンネル内のユーザーイベント
"UserEvent": {
"UserId": "80331631628*****", // ユーザー ID
"EventTag": "Publish", // イベント (Join, Leave, Publish, Unpublish, Roleupdate など)
"SessionId": "0dr15rrnhkz0jnvz6o8sxo0*****", // このイベントを生成した SessionID
"Timestamp": 1609854786, // イベント発生時の Unix 時間スタンプ
"Reason": 1, // 参加または退出の理由。Join イベントでのみ利用可能。
"Role": 1, // ロールタイプ: 配信者または視聴者
"CurrentMedias":"1,2,3"// ストリームタイプ: ユーザーによって公開されたストリーム
}
},
{
"Event": "ChannelEvent",// サブスクリプションイベント: チャンネルイベント
"ChannelEvent": {
"ChannelId": "88888****",
"EventTag": "Open", // チャンネルイベント (Open, Close など)
"Timestamp": 1609854530 // イベント発生時の Unix 時間スタンプ
}
}
]
}
Response
HTTP STATUS 200
UserEvent
| パラメーター | タイプ | 必須 | 説明 |
| UserId | string | はい | ユーザー ID。 |
| SessionId | string | はい | ユーザーセッション ID。 |
| EventTag | string | はい | イベントタイプ。有効な値: Join: チャンネルに参加。 Leave: チャンネルから退出。 PublishVideo: ビデオストリームの公開を開始。 PublishAudio: オーディオストリームの公開を開始。 PublishScreen: 画面共有を開始。 UnpublishVideo: ビデオストリームの公開を停止。 UnpublishAudio: オーディオストリームの公開を停止。 UnpublishScreen: 画面共有を停止。 Roleupdate: ロールを切り替え。 |
| Timestamp | number | はい | イベントが発生した時間スタンプ。 |
| Reason | integer | はい | 参加または退出の理由(Join イベントでのみ利用可能)。有効な値: 1: 通常の参加または退出。 2: 再接続による参加(ユーザーはすでにチャンネルに存在し、再度参加)。 3: クロスチャンネルリレー。 4: タイムアウトによる退出。 5: ユーザーが新しいセッションを開始し、現在のセッションが強制的にオフラインになった。 6: キックアウト。 7: チャンネル解散。 |
| Role | integer | はい | ロールタイプ。有効な値: 1: 配信者。 2: 視聴者。 |
| CurrentMedias | integer | はい | ストリームタイプ。有効な値: 1: オーディオ。 2: ビデオ。 3: 画面共有。 |
ChannelEvent
| パラメーター | タイプ | 必須 | 説明 |
| EventTag | string | はい | イベントタイプ。有効な値: Open: 会議開始。 Close: 会議終了。 |
| Timestamp | number | はい | イベントが発生した時間スタンプ。 |
コールバック認証
イベントコールバック認証機能はデフォルトで有効になっています。認証ロジックは以下の通りです。
ApsaraVideo Live がコールバックリクエストを呼び出すと、HTTP(S) リクエストヘッダーに Ali-Rtc-Timestamp フィールドと Ali-Rtc-Signature フィールドが含まれ、コールバックメッセージ受信サーバーが署名認証を実行します。Ali-Rtc-Timestamp の値は、Ali-Rtc-Signature=MD5SUM(MD5CONTENT) として計算されます。ここで MD5CONTENT=コールバックドメイン名|Ali-Rtc-Timestamp 値|認証キー です。コールバックドメイン名はコールバック URL で設定されたドメイン名であり、認証キーは AppId 作成時に生成された AppKey です。
コールバックメッセージ受信サーバーはコールバックメッセージを受信すると、コールバックドメイン名、Ali-Rtc-Timestamp 値、および認証キーを連結し、MD5 値を計算して暗号化文字列を取得します。その後、計算された暗号化文字列と、ApsaraVideo Real-time Communication によって呼び出された HTTP(S) リクエストヘッダー内の Ali-Rtc-Signature フィールド値を比較します。一致しない場合、リクエストは無効です。
コールバック例外のリトライ
Alibaba Cloud がコールバックリクエストを呼び出した際、ビジネスサーバーが HTTP ステータスコード 200 で応答した場合にのみ、コールバックは成功とみなされます。コールバックが失敗した場合、Alibaba Cloud は 1 秒、2 秒、5 秒、10 秒、1 分、2 分、5 分の間隔で 7 回リトライします。各リトライでは対応するコールバックレコードが生成されます。
例外処理
チャンネルに参加している、またはストリームを公開しているクライアントは、Alibaba Cloud サーバーとの間でハートビートキープアライブメカニズムを維持します。クライアントがネットワーク接続を失ったか、アプリが異常終了したためにハートビートキープアライブが失敗した場合(クライアントから 90 秒間ハートビートが受信されない場合に失敗と判断)、サーバーはクライアントがタイムアウトして異常退出したと判断し、ユーザーのストリーム公開停止およびチャンネル退出のイベントコールバックを生成します。
レスポンスフィールド
|
フィールド |
型 |
説明 |
例 |
|
object |
レスポンスのスキーマ。 |
||
| RequestId |
string |
リクエスト ID。 |
760bad53276431c499e30dc36f6b**** |
| SubscribeId |
string |
作成されたサブスクリプションの ID。 |
ad53276431c**** |
例
成功レスポンス
JSONJSON
{
"RequestId": "760bad53276431c499e30dc36f6b****",
"SubscribeId": "ad53276431c****"
}
エラーコード
|
HTTP ステータスコード |
エラーコード |
エラーメッセージ |
説明 |
|---|---|---|---|
| 400 | InputInvalid | %s. | 入力パラメーターが無効です。 |
| 400 | QuotaLimitError | %s. | 各 AppId では最大 20 の同時サブスクリプションが許可されており、フルチャンネルサブスクリプションは 1 つのみ許可されています。 |
| 400 | ErrorInvalidCallBackUrl | %s. | CallBackURL が無効です。値を確認して再試行してください。 |
| 500 | ServerError | %s. | 不明なエラーが発生しました。後でもう一度お試しいただくか、チケットを送信してください。 |
| 403 | NoAuth | %s. | 必須の権限がありません。 |
| 404 | ResourceNotExist | %s. | リクエストされたリソースが存在しません。リクエストを確認して再試行してください。 |
完全なリストについては、「エラーコード」をご参照ください。
変更履歴
完全なリストについては、「変更履歴」をご参照ください。