new Twilio.TaskRouter.Workspace() 给出 WebSocket 意外响应代码:403

new Twilio.TaskRouter.Workspace() gives WebSocket Unexpected response code: 403

所以我有以下代码:

<?php
// Get the PHP helper library from https://twilio.com/docs/libraries/php
require_once '../vendor/autoload.php'; // Loads the library
use Twilio\Jwt\TaskRouter\WorkerCapability;

// Your Account Sid and Auth Token from twilio.com/user/account
$accountSid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
$authToken = "your_auth_token";
$workspaceSid = "WSXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";

$capability = new WorkerCapability($accountSid, $authToken, $workspaceSid);
$capability->allowFetchSubresources();
$capability->allowActivityUpdates();
$capability->allowReservationUpdates();
$token = $capability->generateToken();
// By default, tokens are good for one hour.
// Override this default timeout by specifiying a new value (in seconds).
// For example, to generate a token good for 8 hours:
$token = $capability->generateToken(28800);  // 60 * 60 * 8
?>
<script type="text/javascript" src="//media.twiliocdn.com/taskrouter/js/v1.20/taskrouter.min.js"></script>
<script>
    var workspace = new Twilio.TaskRouter.Workspace("<?= $token ?>");
</script>

PHP 代码可以很好地生成令牌,但 JS 会生成以下错误:

WebSocket connection to '...' failed: Error during WebSocket handshake: Unexpected response code: 403

有什么想法吗?

谢谢!

您正在 JWT 中设置 WorkerCapability,但正试图将其与 SDK Workspace 对象一起使用。我相信如果你想从 SDK 中实例化一个 Workspace 对象,你需要使用一个 WorkspaceCapability 令牌。