Токен Twilio и одноранговые комнаты с использованием REST API

Я пытаюсь создать одноранговую комнату в Twilio с помощью REST Api (php). Код выглядит следующим образом:

<?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/

Отображается пустая комната.

{
  "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 требует слишком много времени, чтобы ответить, и поддержка не так хороша. Они также не предоставили простых примеров, только пример node js, который сбивает с толку.

Требуется помощь.


person Pamela    schedule 13.09.2017    source источник


Ответы (1)


Кажется, что вы передаете объект комнаты в setRoom, но setRoom ожидает только строку (имя комнаты).

Вы, вероятно, захотите что-то вроде этого (обратите внимание на использование $roomName vs. $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();
person user94559    schedule 13.09.2017