Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Select an option

  • Save erichsu/c3dcda323aee3569d6afe8a12b68fba0 to your computer and use it in GitHub Desktop.

Select an option

Save erichsu/c3dcda323aee3569d6afe8a12b68fba0 to your computer and use it in GitHub Desktop.
// Helper function to create Policy
function buildWorkspacePolicy(options) {
options = options || {};
var resources = options.resources || [];
const workspaceSid = process.env.WORKSPACE_SID
const version = 'v1';
var urlComponents = [TASKROUTER_BASE_URL, version, 'Workspaces', workspaceSid]
return new Policy({
url: urlComponents.concat(resources).join('/'),
method: options.method || 'GET',
allow: true
});
}
function workerCapability(request, response) {
const accountSid = process.env.ACCOUNT_SID
const authToken = process.env.AUTH_TOKEN
const workspaceSid = process.env.WORKSPACE_SID
const workerSid = request.query.workerSid
const capability = new TaskRouterCapability({
accountSid: accountSid,
authToken: authToken,
workspaceSid: workspaceSid,
channelId: workerSid
});
// Event Bridge Policies
var eventBridgePolicies = util.defaultEventBridgePolicies(accountSid, workerSid);
var workspacePolicies = [
// Workspace fetch Policy
buildWorkspacePolicy(),
// Workspace Activities Update Policy
buildWorkspacePolicy({ resources: ['Activities'], method: 'POST' }),
// Workspace Activities Worker Reserations Policy
buildWorkspacePolicy({ resources: ['Workers', workerSid, 'Reservations', '**'], method: 'POST' }),
];
eventBridgePolicies.concat(workspacePolicies).forEach(function (policy) {
capability.addPolicy(policy);
});
var token = capability.toJwt();
return response.send({ token: token })
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment