bigbluebutton-Github/bigbluebutton-html5/imports/api/audio-captions/server/methods/updateTranscript.js
Arthurk12 3b871e5ca2 fix(captions): "not supported" in chrome
Fixes a case where the locale selector don't show up in Chrome when using
'webspeech' provider.
And adds missing fields to the webspeech transcription messages, after the
addition of some new parameters to those messages with the open
transcription server.
2023-04-25 10:25:20 -03:00

42 lines
1.2 KiB
JavaScript

import { check } from 'meteor/check';
import RedisPubSub from '/imports/startup/server/redis';
import { extractCredentials } from '/imports/api/common/server/helpers';
import Logger from '/imports/startup/server/logger';
export default function updateTranscript(transcriptId, start, end, text, transcript, locale, isFinal) {
try {
const REDIS_CONFIG = Meteor.settings.private.redis;
const CHANNEL = REDIS_CONFIG.channels.toAkkaApps;
const EVENT_NAME = 'UpdateTranscriptPubMsg';
const { meetingId, requesterUserId } = extractCredentials(this.userId);
check(meetingId, String);
check(requesterUserId, String);
check(transcriptId, String);
check(start, Number);
check(end, Number);
check(text, String);
check(transcript, String);
check(locale, String);
check(isFinal, Boolean);
// Ignore irrelevant updates
if (start !== -1 && end !== -1) {
const payload = {
transcriptId,
start,
end,
text,
transcript,
locale,
result: isFinal,
};
RedisPubSub.publishUserMessage(CHANNEL, EVENT_NAME, meetingId, requesterUserId, payload);
}
} catch (err) {
Logger.error(`Exception while invoking method upadteTranscript ${err.stack}`);
}
}