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

时间:2017-09-13 02:48:00

标签: twilio twilio-api twilio-php

我正在尝试使用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在其示例中提供的代码: dynamic type

Peer-to-Peer Room的创作。

在测试生成的Web令牌的数据有效负载时: https://www.twilio.com/docs/api/video/rooms-resource

显示房间空白。

{
  "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例子。

请求帮助。

1 个答案:

答案 0 :(得分:1)

您似乎正在将房间对象传递给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();