#概要
agora.ioではSDKの他に、ユーザーの入室制限や、チャネルの利用状況を確認できるDashboard RESTful APIがあります。
公式ドキュメント(英文)
システム組み込みにおいて利用頻度の高い機能をピックアップします。
#ソースコード
Githubに公開しています
#認証について
APIの認証はBasic認証で行います。ユーザー名,パスワードはダッシュボード上から取得できます。
#実装例
##基本設定
config.php
<?php
$baseUrl = "https://api.agora.io/dev/v1";
$userName = "USERNAME";
$password = "PASSWORD";
##ユーザーの入室制限
・Method:POST
・Path:BaseUrl/kicking-rule/
・Parameter:
{
"appid":"", // 必須, project App ID
"cname":"", // オプション, チャネル名。
"uid":"", // オプション, JoinChannel時のuid。
"ip":"", // オプション, 接続元IPアドレス。
"time": 60 // オプション, 制限期間。デフォルト60分で、設定可能時間は1〜1440分。
"privileges":["join_channel"]
}
実装例
banUsers.php
<?php
require 'config.php';
$url = sprintf("%s/%s/",$baseUrl,"kicking-rule");
$data['appid'] = '';
$data['cname'] = 'demo';
$data['uid'] = '1000';
$data['time'] = '1440';
$jsonData = json_encode($data);
$ch = curl_init();
curl_setopt($ch,CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_USERPWD, $userName . ":" . $password);
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonData);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, false);
$result = curl_exec($ch);
curl_close($ch);
var_dump($result);
結果
{"status":"success","id":2177083}
チャネルに参加中であれば、APIをコールした時点で追い出しが発生します。
##チャネル利用状況
・Method: GET
・Path: BaseUrl/channel/user/
・Parameters: appid, cname
実装例
getUserInChannel.php
<?php
require 'config.php';
$appId = "";
$cname = "demo";
$url = sprintf("%s/%s/%s/%s/%s",$baseUrl,"channel","user",$appId,$cname);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERPWD, $userName . ":" . $password);
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
$result = curl_exec($ch);
curl_close($ch);
var_dump($result);
結果
{"success":true,"data":{"channel_exist":true,"mode":2,"broadcasters":[2461386049,3430352033],"audience":[],"audience_total":0}}