使用 REST API 的 Twilio 令牌和点对点房间

Twilio token and peer-to-peer rooms using REST API

我正在尝试使用 REST Api (php) 在 Twilio 中创建一个点对点房间。代码如下:

<?php
require_once 'Twilio/autoload.php';
use Twilio\Rest\Client;
use Twilio\Jwt\AccessToken;
use Twilio\Jwt\Grants\VideoGrant;
include_once  'config.inc.php';
$identity = "alice";
$client = new Client($TWILIO_API_KEY, $TWILIO_API_SECRET);
$roomName = $client->video->rooms->create([
    'uniqueName' => 'TestRoom2',
    'type' => 'peer-to-peer',
    'enableTurn' => false,
    'Duration'   => 300,
    'MaxParticipants'  => 2,
    'statusCallback' => 'http://example.org'
]);
//echo $roomName->status;
//token
$token= new AccessToken($TWILIO_ACCOUNT_SID, $TWILIO_API_KEY, $TWILIO_API_SECRET, 300, $identity);
// Create Video grant
$videoGrant = new VideoGrant();
$videoGrant->setRoom($roomName);
// Add grant to token
$token->addGrant($videoGrant);
// return serialized token
 echo $token->toJWT();
?>

我只使用 Twilio 在他们的示例中提供的代码: https://www.twilio.com/docs/api/video/rooms-resource

点对点房间创建。

在测试生成的网络令牌的数据负载时: https://jwt.io/

正在显示 Room Blank。

{
  "jti": "SK1ddcfb6782fa358cb5e2306f8875ac1d-1505266888",
  "iss": "SK1ddcfb6782fa358cb5e2306f8875ac1d",
  "sub": "AC6c23ea48bd7d6bd681d21301f35c22b6",
  "exp": 1505267188,
  "grants": {
    "identity": "alice",
    "video": {
      "room": {}
    }
  }
}

如果我使用以下方法创建房间,效果很好。

$roomName = "TestRoom";

问题出在代码上:

$client = new Client($TWILIO_API_KEY, $TWILIO_API_SECRET);
$roomName = $client->video->rooms->create([
    'uniqueName' => 'TestRoom2',
    'type' => 'peer-to-peer',
    'enableTurn' => false,
    'Duration'   => 300,
    'MaxParticipants'  => 2,
    'statusCallback' => 'http://example.org'
]);

我的 Twilio 点对点房间代码有什么问题?? Twilio 需要太多时间来响应,而且支持也不是很好。他们也没有提供简单的示例,只有一个令人困惑的节点 js 示例。

请求帮助。

您似乎正在将房间对象传递给 setRoom,但 setRoom 需要的只是一个字符串(房间的名称)。

您可能想要这样的东西(注意 $roomName$room 的用法):

$roomName = 'TestRoom2';
$room = $client->video->rooms->create([
    'uniqueName' => $roomName,
    'type' => 'peer-to-peer',
    'enableTurn' => false,
    'Duration'   => 300,
    'MaxParticipants'  => 2,
    'statusCallback' => 'http://example.org'
]);
$token = new AccessToken($TWILIO_ACCOUNT_SID, $TWILIO_API_KEY, $TWILIO_API_SECRET, 300, $identity);
$videoGrant = new VideoGrant();
$videoGrant->setRoom($roomName);
$token->addGrant($videoGrant);
echo $token->toJWT();