我正在尝试使用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例子。
请求帮助。
答案 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();