diff --git a/CHANGELOG.md b/CHANGELOG.md index 6d0c65b..67e57db 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,19 @@ # Changelog +## 0.10.0 + +### Enhancement + +- Added transcription support. When requesting a token from `/token` endpoint, specify `enable_transcription=true` to create a room with transcription enabled using these default settings: + +```json +{ + "languageCode": "en-US", + "profanityFilter": true, + "partialResults": true +} +``` + ## 0.9.0 ### Enhancement diff --git a/package-lock.json b/package-lock.json index 2a7592b..4504721 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@twilio-labs/plugin-rtc", - "version": "0.9.0", + "version": "0.10.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@twilio-labs/plugin-rtc", - "version": "0.9.0", + "version": "0.10.0", "license": "Apache-2.0", "dependencies": { "@oclif/command": "^1.5.19", diff --git a/package.json b/package.json index 43d612d..0118d29 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@twilio-labs/plugin-rtc", - "version": "0.9.0", + "version": "0.10.0", "description": "A Twilio-CLI plugin for real-time communication apps", "main": "index.js", "publishConfig": { diff --git a/src/serverless/functions/token.js b/src/serverless/functions/token.js index 00935b1..71896e0 100644 --- a/src/serverless/functions/token.js +++ b/src/serverless/functions/token.js @@ -12,31 +12,29 @@ module.exports.handler = async (context, event, callback) => { const authHandler = require(Runtime.getAssets()['/auth-handler.js'].path); authHandler(context, event, callback); - const { user_identity, room_name, create_room = true, create_conversation = false } = event; + const { + user_identity, + room_name, + create_room = true, + create_conversation = false, + enable_transcription = false, + } = event; let response = new Twilio.Response(); response.appendHeader('Content-Type', 'application/json'); - if (typeof create_room !== 'boolean') { - response.setStatusCode(400); - response.setBody({ - error: { - message: 'invalid parameter', - explanation: 'A boolean value must be provided for the create_room parameter', - }, - }); - return callback(null, response); - } - - if (typeof create_conversation !== 'boolean') { - response.setStatusCode(400); - response.setBody({ - error: { - message: 'invalid parameter', - explanation: 'A boolean value must be provided for the create_conversation parameter', - }, - }); - return callback(null, response); + const booleanParams = ['create_room', 'create_conversation', 'enable_transcription']; + for (const param of booleanParams) { + if (typeof event[param] !== 'boolean') { + response.setStatusCode(400); + response.setBody({ + error: { + message: 'invalid parameter', + explanation: `A boolean value must be provided for the ${param} parameter.`, + }, + }); + return callback(null, response); + } } if (!user_identity) { @@ -71,7 +69,16 @@ module.exports.handler = async (context, event, callback) => { } catch (e) { try { // If room doesn't exist, create it - room = await client.video.rooms.create({ uniqueName: room_name, type: ROOM_TYPE }); + const roomOptions = { uniqueName: room_name, type: ROOM_TYPE }; + if (enable_transcription) { + roomOptions.TranscribeParticipantsOnConnect = true; + roomOptions.TranscriptionsConfiguration = { + languageCode: 'en-US', + profanityFilter: true, + partialResults: true, + }; + } + room = await client.video.rooms.create(roomOptions); } catch (e) { console.error('Error creating room:'); console.error(e);