1 |
- {"ast":null,"code":"\"use strict\";\n\n// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT license.\nvar _asyncToGenerator = require(\"F:/workspace/202226701027/huinongbao-app/node_modules/@babel/runtime/helpers/asyncToGenerator.js\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ConversationServiceAdapter = void 0;\nconst Exports_js_1 = require(\"../../common/Exports.js\");\nconst Exports_js_2 = require(\"../../sdk/Exports.js\");\nconst Exports_js_3 = require(\"../Exports.js\");\nconst ConversationConnectionMessage_js_1 = require(\"./ConversationConnectionMessage.js\");\nconst ConversationRequestSession_js_1 = require(\"./ConversationRequestSession.js\");\nconst ConversationTranslatorEventArgs_js_1 = require(\"./ConversationTranslatorEventArgs.js\");\nconst ConversationTranslatorInterfaces_js_1 = require(\"./ConversationTranslatorInterfaces.js\");\nconst Exports_js_4 = require(\"./ServiceMessages/Exports.js\");\n/**\n * The service adapter handles sending and receiving messages to the Conversation Translator websocket.\n */\nclass ConversationServiceAdapter extends Exports_js_3.ServiceRecognizerBase {\n constructor(authentication, connectionFactory, audioSource, recognizerConfig, conversationServiceConnector) {\n super(authentication, connectionFactory, audioSource, recognizerConfig, conversationServiceConnector);\n this.privConnectionConfigPromise = undefined;\n this.privLastPartialUtteranceId = \"\";\n this.privConversationServiceConnector = conversationServiceConnector;\n this.privConversationAuthentication = authentication;\n this.receiveMessageOverride = () => this.receiveConversationMessageOverride();\n this.recognizeOverride = () => this.noOp();\n this.postConnectImplOverride = connection => this.conversationConnectImpl(connection);\n this.configConnectionOverride = () => this.configConnection();\n this.disconnectOverride = () => this.privDisconnect();\n this.privConversationRequestSession = new ConversationRequestSession_js_1.ConversationRequestSession(Exports_js_1.createNoDashGuid());\n this.privConversationConnectionFactory = connectionFactory;\n this.privConversationIsDisposed = false;\n }\n isDisposed() {\n return super.isDisposed() || this.privConversationIsDisposed;\n }\n dispose(reason) {\n var _superprop_getDispose = () => super.dispose,\n _this = this;\n return _asyncToGenerator(function* () {\n _this.privConversationIsDisposed = true;\n if (_this.privConnectionConfigPromise !== undefined) {\n const connection = yield _this.privConnectionConfigPromise;\n yield connection.dispose(reason);\n }\n yield _superprop_getDispose().call(_this, reason);\n })();\n }\n sendMessage(message) {\n var _this2 = this;\n return _asyncToGenerator(function* () {\n const connection = yield _this2.fetchConnection();\n return connection.send(new ConversationConnectionMessage_js_1.ConversationConnectionMessage(Exports_js_1.MessageType.Text, message));\n })();\n }\n sendMessageAsync(message) {\n var _this3 = this;\n return _asyncToGenerator(function* () {\n const connection = yield _this3.fetchConnection();\n yield connection.send(new ConversationConnectionMessage_js_1.ConversationConnectionMessage(Exports_js_1.MessageType.Text, message));\n })();\n }\n privDisconnect() {\n if (this.terminateMessageLoop) {\n return;\n }\n this.cancelRecognition(this.privConversationRequestSession.sessionId, this.privConversationRequestSession.requestId, Exports_js_2.CancellationReason.Error, Exports_js_2.CancellationErrorCode.NoError, \"Disconnecting\");\n this.terminateMessageLoop = true;\n return Promise.resolve();\n }\n // eslint-disable-next-line @typescript-eslint/require-await\n processTypeSpecificMessages() {\n return _asyncToGenerator(function* () {\n return true;\n })();\n }\n // Cancels recognition.\n cancelRecognition(sessionId, requestId, cancellationReason, errorCode, error) {\n this.terminateMessageLoop = true;\n const cancelEvent = new Exports_js_2.ConversationTranslationCanceledEventArgs(cancellationReason, error, errorCode, undefined, sessionId);\n try {\n if (!!this.privConversationServiceConnector.canceled) {\n this.privConversationServiceConnector.canceled(this.privConversationServiceConnector, cancelEvent);\n }\n } catch {\n // continue on error\n }\n }\n /**\n * Establishes a websocket connection to the end point.\n */\n conversationConnectImpl(connection) {\n var _this4 = this;\n return _asyncToGenerator(function* () {\n _this4.privConnectionLoop = _this4.startMessageLoop();\n return connection;\n })();\n }\n /**\n * Process incoming websocket messages\n */\n receiveConversationMessageOverride() {\n var _this5 = this;\n return _asyncToGenerator(function* () {\n if (_this5.isDisposed() || _this5.terminateMessageLoop) {\n return Promise.resolve();\n }\n // we won't rely on the cascading promises of the connection since we want to continually be available to receive messages\n const communicationCustodian = new Exports_js_1.Deferred();\n try {\n const connection = yield _this5.fetchConnection();\n const message = yield connection.read();\n if (_this5.isDisposed() || _this5.terminateMessageLoop) {\n // We're done.\n communicationCustodian.resolve();\n return Promise.resolve();\n }\n if (!message) {\n return _this5.receiveConversationMessageOverride();\n }\n const sessionId = _this5.privConversationRequestSession.sessionId;\n const conversationMessageType = message.conversationMessageType.toLowerCase();\n let sendFinal = false;\n try {\n switch (conversationMessageType) {\n case \"info\":\n case \"participant_command\":\n case \"command\":\n const commandPayload = Exports_js_4.CommandResponsePayload.fromJSON(message.textBody);\n switch (commandPayload.command.toLowerCase()) {\n /**\n * 'ParticpantList' is the first message sent to the user after the websocket connection has opened.\n * The consuming client must wait for this message to arrive\n * before starting to send their own data.\n */\n case \"participantlist\":\n const participantsPayload = Exports_js_4.ParticipantsListPayloadResponse.fromJSON(message.textBody);\n const participantsResult = participantsPayload.participants.map(p => {\n const participant = {\n avatar: p.avatar,\n displayName: p.nickname,\n id: p.participantId,\n isHost: p.ishost,\n isMuted: p.ismuted,\n isUsingTts: p.usetts,\n preferredLanguage: p.locale\n };\n return participant;\n });\n if (!!_this5.privConversationServiceConnector.participantsListReceived) {\n _this5.privConversationServiceConnector.participantsListReceived(_this5.privConversationServiceConnector, new ConversationTranslatorEventArgs_js_1.ParticipantsListEventArgs(participantsPayload.roomid, participantsPayload.token, participantsPayload.translateTo, participantsPayload.profanityFilter, participantsPayload.roomProfanityFilter, participantsPayload.roomLocked, participantsPayload.muteAll, participantsResult, sessionId));\n }\n break;\n /**\n * 'SetTranslateToLanguages' represents the list of languages being used in the Conversation by all users(?).\n * This is sent at the start of the Conversation\n */\n case \"settranslatetolanguages\":\n if (!!_this5.privConversationServiceConnector.participantUpdateCommandReceived) {\n _this5.privConversationServiceConnector.participantUpdateCommandReceived(_this5.privConversationServiceConnector, new ConversationTranslatorEventArgs_js_1.ParticipantAttributeEventArgs(commandPayload.participantId, ConversationTranslatorInterfaces_js_1.ConversationTranslatorCommandTypes.setTranslateToLanguages, commandPayload.value, sessionId));\n }\n break;\n /**\n * 'SetProfanityFiltering' lets the client set the level of profanity filtering.\n * If sent by the participant the setting will effect only their own profanity level.\n * If sent by the host, the setting will effect all participants including the host.\n * Note: the profanity filters differ from Speech Service (?): 'marked', 'raw', 'removed', 'tagged'\n */\n case \"setprofanityfiltering\":\n if (!!_this5.privConversationServiceConnector.participantUpdateCommandReceived) {\n _this5.privConversationServiceConnector.participantUpdateCommandReceived(_this5.privConversationServiceConnector, new ConversationTranslatorEventArgs_js_1.ParticipantAttributeEventArgs(commandPayload.participantId, ConversationTranslatorInterfaces_js_1.ConversationTranslatorCommandTypes.setProfanityFiltering, commandPayload.value, sessionId));\n }\n break;\n /**\n * 'SetMute' is sent if the participant has been muted by the host.\n * Check the 'participantId' to determine if the current user has been muted.\n */\n case \"setmute\":\n if (!!_this5.privConversationServiceConnector.participantUpdateCommandReceived) {\n _this5.privConversationServiceConnector.participantUpdateCommandReceived(_this5.privConversationServiceConnector, new ConversationTranslatorEventArgs_js_1.ParticipantAttributeEventArgs(commandPayload.participantId, ConversationTranslatorInterfaces_js_1.ConversationTranslatorCommandTypes.setMute, commandPayload.value, sessionId));\n }\n break;\n /**\n * 'SetMuteAll' is sent if the Conversation has been muted by the host.\n */\n case \"setmuteall\":\n if (!!_this5.privConversationServiceConnector.muteAllCommandReceived) {\n _this5.privConversationServiceConnector.muteAllCommandReceived(_this5.privConversationServiceConnector, new ConversationTranslatorEventArgs_js_1.MuteAllEventArgs(commandPayload.value, sessionId));\n }\n break;\n /**\n * 'RoomExpirationWarning' is sent towards the end of the Conversation session to give a timeout warning.\n */\n case \"roomexpirationwarning\":\n if (!!_this5.privConversationServiceConnector.conversationExpiration) {\n _this5.privConversationServiceConnector.conversationExpiration(_this5.privConversationServiceConnector, new Exports_js_2.ConversationExpirationEventArgs(commandPayload.value, _this5.privConversationRequestSession.sessionId));\n }\n break;\n /**\n * 'SetUseTts' is sent as a confirmation if the user requests TTS to be turned on or off.\n */\n case \"setusetts\":\n if (!!_this5.privConversationServiceConnector.participantUpdateCommandReceived) {\n _this5.privConversationServiceConnector.participantUpdateCommandReceived(_this5.privConversationServiceConnector, new ConversationTranslatorEventArgs_js_1.ParticipantAttributeEventArgs(commandPayload.participantId, ConversationTranslatorInterfaces_js_1.ConversationTranslatorCommandTypes.setUseTTS, commandPayload.value, sessionId));\n }\n break;\n /**\n * 'SetLockState' is set if the host has locked or unlocked the Conversation.\n */\n case \"setlockstate\":\n if (!!_this5.privConversationServiceConnector.lockRoomCommandReceived) {\n _this5.privConversationServiceConnector.lockRoomCommandReceived(_this5.privConversationServiceConnector, new ConversationTranslatorEventArgs_js_1.LockRoomEventArgs(commandPayload.value, sessionId));\n }\n break;\n /**\n * 'ChangeNickname' is received if a user changes their display name.\n * Any cached particpiants list should be updated to reflect the display name.\n */\n case \"changenickname\":\n if (!!_this5.privConversationServiceConnector.participantUpdateCommandReceived) {\n _this5.privConversationServiceConnector.participantUpdateCommandReceived(_this5.privConversationServiceConnector, new ConversationTranslatorEventArgs_js_1.ParticipantAttributeEventArgs(commandPayload.participantId, ConversationTranslatorInterfaces_js_1.ConversationTranslatorCommandTypes.changeNickname, commandPayload.value, sessionId));\n }\n break;\n /**\n * 'JoinSession' is sent when a user joins the Conversation.\n */\n case \"joinsession\":\n const joinParticipantPayload = Exports_js_4.ParticipantPayloadResponse.fromJSON(message.textBody);\n const joiningParticipant = {\n avatar: joinParticipantPayload.avatar,\n displayName: joinParticipantPayload.nickname,\n id: joinParticipantPayload.participantId,\n isHost: joinParticipantPayload.ishost,\n isMuted: joinParticipantPayload.ismuted,\n isUsingTts: joinParticipantPayload.usetts,\n preferredLanguage: joinParticipantPayload.locale\n };\n if (!!_this5.privConversationServiceConnector.participantJoinCommandReceived) {\n _this5.privConversationServiceConnector.participantJoinCommandReceived(_this5.privConversationServiceConnector, new ConversationTranslatorEventArgs_js_1.ParticipantEventArgs(joiningParticipant, sessionId));\n }\n break;\n /**\n * 'LeaveSession' is sent when a user leaves the Conversation'.\n */\n case \"leavesession\":\n const leavingParticipant = {\n id: commandPayload.participantId\n };\n if (!!_this5.privConversationServiceConnector.participantLeaveCommandReceived) {\n _this5.privConversationServiceConnector.participantLeaveCommandReceived(_this5.privConversationServiceConnector, new ConversationTranslatorEventArgs_js_1.ParticipantEventArgs(leavingParticipant, sessionId));\n }\n break;\n /**\n * 'DisconnectSession' is sent when a user is disconnected from the session (e.g. network problem).\n * Check the 'ParticipantId' to check whether the message is for the current user.\n */\n case \"disconnectsession\":\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const disconnectParticipant = {\n id: commandPayload.participantId\n };\n break;\n case \"token\":\n const token = new Exports_js_3.CognitiveTokenAuthentication(() => {\n const authorizationToken = commandPayload.token;\n return Promise.resolve(authorizationToken);\n }, () => {\n const authorizationToken = commandPayload.token;\n return Promise.resolve(authorizationToken);\n });\n _this5.authentication = token;\n _this5.privConversationServiceConnector.onToken(token);\n break;\n /**\n * Message not recognized.\n */\n default:\n break;\n }\n break;\n /**\n * 'partial' (or 'hypothesis') represents a unfinalized speech message.\n */\n case \"partial\":\n /**\n * 'final' (or 'phrase') represents a finalized speech message.\n */\n case \"final\":\n const speechPayload = Exports_js_4.SpeechResponsePayload.fromJSON(message.textBody);\n const conversationResultReason = conversationMessageType === \"final\" ? Exports_js_2.ResultReason.TranslatedParticipantSpeech : Exports_js_2.ResultReason.TranslatingParticipantSpeech;\n const speechResult = new Exports_js_2.ConversationTranslationResult(speechPayload.participantId, _this5.getTranslations(speechPayload.translations), speechPayload.language, speechPayload.id, conversationResultReason, speechPayload.recognition, undefined, undefined, message.textBody, undefined);\n if (speechPayload.isFinal) {\n // check the length, sometimes empty finals are returned\n if (speechResult.text !== undefined && speechResult.text.length > 0) {\n sendFinal = true;\n } else if (speechPayload.id === _this5.privLastPartialUtteranceId) {\n // send final as normal. We had a non-empty partial for this same utterance\n // so sending the empty final is important\n sendFinal = true;\n } else {\n // suppress unneeded final\n }\n if (sendFinal) {\n if (!!_this5.privConversationServiceConnector.translationReceived) {\n _this5.privConversationServiceConnector.translationReceived(_this5.privConversationServiceConnector, new ConversationTranslatorEventArgs_js_1.ConversationReceivedTranslationEventArgs(ConversationTranslatorInterfaces_js_1.ConversationTranslatorMessageTypes.final, speechResult, sessionId));\n }\n }\n } else if (speechResult.text !== undefined) {\n _this5.privLastPartialUtteranceId = speechPayload.id;\n if (!!_this5.privConversationServiceConnector.translationReceived) {\n _this5.privConversationServiceConnector.translationReceived(_this5.privConversationServiceConnector, new ConversationTranslatorEventArgs_js_1.ConversationReceivedTranslationEventArgs(ConversationTranslatorInterfaces_js_1.ConversationTranslatorMessageTypes.partial, speechResult, sessionId));\n }\n }\n break;\n /**\n * \"translated_message\" is a text message or instant message (IM).\n */\n case \"translated_message\":\n const textPayload = Exports_js_4.TextResponsePayload.fromJSON(message.textBody);\n // TODO: (Native parity) a result reason should be set based whether the participantId is ours or not\n const textResult = new Exports_js_2.ConversationTranslationResult(textPayload.participantId, _this5.getTranslations(textPayload.translations), textPayload.language, undefined, undefined, textPayload.originalText, undefined, undefined, undefined, message.textBody, undefined);\n if (!!_this5.privConversationServiceConnector.translationReceived) {\n _this5.privConversationServiceConnector.translationReceived(_this5.privConversationServiceConnector, new ConversationTranslatorEventArgs_js_1.ConversationReceivedTranslationEventArgs(ConversationTranslatorInterfaces_js_1.ConversationTranslatorMessageTypes.instantMessage, textResult, sessionId));\n }\n break;\n default:\n // ignore any unsupported message types\n break;\n }\n } catch (e) {\n // continue\n }\n return _this5.receiveConversationMessageOverride();\n } catch (e) {\n _this5.terminateMessageLoop = true;\n }\n return communicationCustodian.promise;\n })();\n }\n startMessageLoop() {\n var _this6 = this;\n return _asyncToGenerator(function* () {\n if (_this6.isDisposed()) {\n return Promise.resolve();\n }\n _this6.terminateMessageLoop = false;\n const messageRetrievalPromise = _this6.receiveConversationMessageOverride();\n try {\n const r = yield messageRetrievalPromise;\n return r;\n } catch (error) {\n _this6.cancelRecognition(_this6.privRequestSession ? _this6.privRequestSession.sessionId : \"\", _this6.privRequestSession ? _this6.privRequestSession.requestId : \"\", Exports_js_2.CancellationReason.Error, Exports_js_2.CancellationErrorCode.RuntimeError, error);\n return null;\n }\n })();\n }\n // Takes an established websocket connection to the endpoint\n configConnection() {\n if (this.isDisposed()) {\n return Promise.resolve(undefined);\n }\n if (this.privConnectionConfigPromise !== undefined) {\n return this.privConnectionConfigPromise.then(connection => {\n if (connection.state() === Exports_js_1.ConnectionState.Disconnected) {\n this.privConnectionId = null;\n this.privConnectionConfigPromise = undefined;\n return this.configConnection();\n }\n return this.privConnectionConfigPromise;\n }, () => {\n this.privConnectionId = null;\n this.privConnectionConfigPromise = undefined;\n return this.configConnection();\n });\n }\n if (this.terminateMessageLoop) {\n return Promise.resolve(undefined);\n }\n this.privConnectionConfigPromise = this.connectImpl().then(connection => connection);\n return this.privConnectionConfigPromise;\n }\n getTranslations(serviceResultTranslations) {\n let translations;\n if (undefined !== serviceResultTranslations) {\n translations = new Exports_js_2.Translations();\n for (const translation of serviceResultTranslations) {\n translations.set(translation.lang, translation.translation);\n }\n }\n return translations;\n }\n}\nexports.ConversationServiceAdapter = ConversationServiceAdapter;","map":{"version":3,"names":["_asyncToGenerator","require","default","Object","defineProperty","exports","value","ConversationServiceAdapter","Exports_js_1","Exports_js_2","Exports_js_3","ConversationConnectionMessage_js_1","ConversationRequestSession_js_1","ConversationTranslatorEventArgs_js_1","ConversationTranslatorInterfaces_js_1","Exports_js_4","ServiceRecognizerBase","constructor","authentication","connectionFactory","audioSource","recognizerConfig","conversationServiceConnector","privConnectionConfigPromise","undefined","privLastPartialUtteranceId","privConversationServiceConnector","privConversationAuthentication","receiveMessageOverride","receiveConversationMessageOverride","recognizeOverride","noOp","postConnectImplOverride","connection","conversationConnectImpl","configConnectionOverride","configConnection","disconnectOverride","privDisconnect","privConversationRequestSession","ConversationRequestSession","createNoDashGuid","privConversationConnectionFactory","privConversationIsDisposed","isDisposed","dispose","reason","_superprop_getDispose","_this","call","sendMessage","message","_this2","fetchConnection","send","ConversationConnectionMessage","MessageType","Text","sendMessageAsync","_this3","terminateMessageLoop","cancelRecognition","sessionId","requestId","CancellationReason","Error","CancellationErrorCode","NoError","Promise","resolve","processTypeSpecificMessages","cancellationReason","errorCode","error","cancelEvent","ConversationTranslationCanceledEventArgs","canceled","_this4","privConnectionLoop","startMessageLoop","_this5","communicationCustodian","Deferred","read","conversationMessageType","toLowerCase","sendFinal","commandPayload","CommandResponsePayload","fromJSON","textBody","command","participantsPayload","ParticipantsListPayloadResponse","participantsResult","participants","map","p","participant","avatar","displayName","nickname","id","participantId","isHost","ishost","isMuted","ismuted","isUsingTts","usetts","preferredLanguage","locale","participantsListReceived","ParticipantsListEventArgs","roomid","token","translateTo","profanityFilter","roomProfanityFilter","roomLocked","muteAll","participantUpdateCommandReceived","ParticipantAttributeEventArgs","ConversationTranslatorCommandTypes","setTranslateToLanguages","setProfanityFiltering","setMute","muteAllCommandReceived","MuteAllEventArgs","conversationExpiration","ConversationExpirationEventArgs","setUseTTS","lockRoomCommandReceived","LockRoomEventArgs","changeNickname","joinParticipantPayload","ParticipantPayloadResponse","joiningParticipant","participantJoinCommandReceived","ParticipantEventArgs","leavingParticipant","participantLeaveCommandReceived","disconnectParticipant","CognitiveTokenAuthentication","authorizationToken","onToken","speechPayload","SpeechResponsePayload","conversationResultReason","ResultReason","TranslatedParticipantSpeech","TranslatingParticipantSpeech","speechResult","ConversationTranslationResult","getTranslations","translations","language","recognition","isFinal","text","length","translationReceived","ConversationReceivedTranslationEventArgs","ConversationTranslatorMessageTypes","final","partial","textPayload","TextResponsePayload","textResult","originalText","instantMessage","e","promise","_this6","messageRetrievalPromise","r","privRequestSession","RuntimeError","then","state","ConnectionState","Disconnected","privConnectionId","connectImpl","serviceResultTranslations","Translations","translation","set","lang"],"sources":["F:/workspace/202226701027/huinongbao-app/node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/Transcription/ConversationServiceAdapter.js"],"sourcesContent":["\"use strict\";\n// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT license.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ConversationServiceAdapter = void 0;\nconst Exports_js_1 = require(\"../../common/Exports.js\");\nconst Exports_js_2 = require(\"../../sdk/Exports.js\");\nconst Exports_js_3 = require(\"../Exports.js\");\nconst ConversationConnectionMessage_js_1 = require(\"./ConversationConnectionMessage.js\");\nconst ConversationRequestSession_js_1 = require(\"./ConversationRequestSession.js\");\nconst ConversationTranslatorEventArgs_js_1 = require(\"./ConversationTranslatorEventArgs.js\");\nconst ConversationTranslatorInterfaces_js_1 = require(\"./ConversationTranslatorInterfaces.js\");\nconst Exports_js_4 = require(\"./ServiceMessages/Exports.js\");\n/**\n * The service adapter handles sending and receiving messages to the Conversation Translator websocket.\n */\nclass ConversationServiceAdapter extends Exports_js_3.ServiceRecognizerBase {\n constructor(authentication, connectionFactory, audioSource, recognizerConfig, conversationServiceConnector) {\n super(authentication, connectionFactory, audioSource, recognizerConfig, conversationServiceConnector);\n this.privConnectionConfigPromise = undefined;\n this.privLastPartialUtteranceId = \"\";\n this.privConversationServiceConnector = conversationServiceConnector;\n this.privConversationAuthentication = authentication;\n this.receiveMessageOverride = () => this.receiveConversationMessageOverride();\n this.recognizeOverride = () => this.noOp();\n this.postConnectImplOverride = (connection) => this.conversationConnectImpl(connection);\n this.configConnectionOverride = () => this.configConnection();\n this.disconnectOverride = () => this.privDisconnect();\n this.privConversationRequestSession = new ConversationRequestSession_js_1.ConversationRequestSession(Exports_js_1.createNoDashGuid());\n this.privConversationConnectionFactory = connectionFactory;\n this.privConversationIsDisposed = false;\n }\n isDisposed() {\n return super.isDisposed() || this.privConversationIsDisposed;\n }\n async dispose(reason) {\n this.privConversationIsDisposed = true;\n if (this.privConnectionConfigPromise !== undefined) {\n const connection = await this.privConnectionConfigPromise;\n await connection.dispose(reason);\n }\n await super.dispose(reason);\n }\n async sendMessage(message) {\n const connection = await this.fetchConnection();\n return connection.send(new ConversationConnectionMessage_js_1.ConversationConnectionMessage(Exports_js_1.MessageType.Text, message));\n }\n async sendMessageAsync(message) {\n const connection = await this.fetchConnection();\n await connection.send(new ConversationConnectionMessage_js_1.ConversationConnectionMessage(Exports_js_1.MessageType.Text, message));\n }\n privDisconnect() {\n if (this.terminateMessageLoop) {\n return;\n }\n this.cancelRecognition(this.privConversationRequestSession.sessionId, this.privConversationRequestSession.requestId, Exports_js_2.CancellationReason.Error, Exports_js_2.CancellationErrorCode.NoError, \"Disconnecting\");\n this.terminateMessageLoop = true;\n return Promise.resolve();\n }\n // eslint-disable-next-line @typescript-eslint/require-await\n async processTypeSpecificMessages() {\n return true;\n }\n // Cancels recognition.\n cancelRecognition(sessionId, requestId, cancellationReason, errorCode, error) {\n this.terminateMessageLoop = true;\n const cancelEvent = new Exports_js_2.ConversationTranslationCanceledEventArgs(cancellationReason, error, errorCode, undefined, sessionId);\n try {\n if (!!this.privConversationServiceConnector.canceled) {\n this.privConversationServiceConnector.canceled(this.privConversationServiceConnector, cancelEvent);\n }\n }\n catch {\n // continue on error\n }\n }\n /**\n * Establishes a websocket connection to the end point.\n */\n async conversationConnectImpl(connection) {\n this.privConnectionLoop = this.startMessageLoop();\n return connection;\n }\n /**\n * Process incoming websocket messages\n */\n async receiveConversationMessageOverride() {\n if (this.isDisposed() || this.terminateMessageLoop) {\n return Promise.resolve();\n }\n // we won't rely on the cascading promises of the connection since we want to continually be available to receive messages\n const communicationCustodian = new Exports_js_1.Deferred();\n try {\n const connection = await this.fetchConnection();\n const message = await connection.read();\n if (this.isDisposed() || this.terminateMessageLoop) {\n // We're done.\n communicationCustodian.resolve();\n return Promise.resolve();\n }\n if (!message) {\n return this.receiveConversationMessageOverride();\n }\n const sessionId = this.privConversationRequestSession.sessionId;\n const conversationMessageType = message.conversationMessageType.toLowerCase();\n let sendFinal = false;\n try {\n switch (conversationMessageType) {\n case \"info\":\n case \"participant_command\":\n case \"command\":\n const commandPayload = Exports_js_4.CommandResponsePayload.fromJSON(message.textBody);\n switch (commandPayload.command.toLowerCase()) {\n /**\n * 'ParticpantList' is the first message sent to the user after the websocket connection has opened.\n * The consuming client must wait for this message to arrive\n * before starting to send their own data.\n */\n case \"participantlist\":\n const participantsPayload = Exports_js_4.ParticipantsListPayloadResponse.fromJSON(message.textBody);\n const participantsResult = participantsPayload.participants.map((p) => {\n const participant = {\n avatar: p.avatar,\n displayName: p.nickname,\n id: p.participantId,\n isHost: p.ishost,\n isMuted: p.ismuted,\n isUsingTts: p.usetts,\n preferredLanguage: p.locale\n };\n return participant;\n });\n if (!!this.privConversationServiceConnector.participantsListReceived) {\n this.privConversationServiceConnector.participantsListReceived(this.privConversationServiceConnector, new ConversationTranslatorEventArgs_js_1.ParticipantsListEventArgs(participantsPayload.roomid, participantsPayload.token, participantsPayload.translateTo, participantsPayload.profanityFilter, participantsPayload.roomProfanityFilter, participantsPayload.roomLocked, participantsPayload.muteAll, participantsResult, sessionId));\n }\n break;\n /**\n * 'SetTranslateToLanguages' represents the list of languages being used in the Conversation by all users(?).\n * This is sent at the start of the Conversation\n */\n case \"settranslatetolanguages\":\n if (!!this.privConversationServiceConnector.participantUpdateCommandReceived) {\n this.privConversationServiceConnector.participantUpdateCommandReceived(this.privConversationServiceConnector, new ConversationTranslatorEventArgs_js_1.ParticipantAttributeEventArgs(commandPayload.participantId, ConversationTranslatorInterfaces_js_1.ConversationTranslatorCommandTypes.setTranslateToLanguages, commandPayload.value, sessionId));\n }\n break;\n /**\n * 'SetProfanityFiltering' lets the client set the level of profanity filtering.\n * If sent by the participant the setting will effect only their own profanity level.\n * If sent by the host, the setting will effect all participants including the host.\n * Note: the profanity filters differ from Speech Service (?): 'marked', 'raw', 'removed', 'tagged'\n */\n case \"setprofanityfiltering\":\n if (!!this.privConversationServiceConnector.participantUpdateCommandReceived) {\n this.privConversationServiceConnector.participantUpdateCommandReceived(this.privConversationServiceConnector, new ConversationTranslatorEventArgs_js_1.ParticipantAttributeEventArgs(commandPayload.participantId, ConversationTranslatorInterfaces_js_1.ConversationTranslatorCommandTypes.setProfanityFiltering, commandPayload.value, sessionId));\n }\n break;\n /**\n * 'SetMute' is sent if the participant has been muted by the host.\n * Check the 'participantId' to determine if the current user has been muted.\n */\n case \"setmute\":\n if (!!this.privConversationServiceConnector.participantUpdateCommandReceived) {\n this.privConversationServiceConnector.participantUpdateCommandReceived(this.privConversationServiceConnector, new ConversationTranslatorEventArgs_js_1.ParticipantAttributeEventArgs(commandPayload.participantId, ConversationTranslatorInterfaces_js_1.ConversationTranslatorCommandTypes.setMute, commandPayload.value, sessionId));\n }\n break;\n /**\n * 'SetMuteAll' is sent if the Conversation has been muted by the host.\n */\n case \"setmuteall\":\n if (!!this.privConversationServiceConnector.muteAllCommandReceived) {\n this.privConversationServiceConnector.muteAllCommandReceived(this.privConversationServiceConnector, new ConversationTranslatorEventArgs_js_1.MuteAllEventArgs(commandPayload.value, sessionId));\n }\n break;\n /**\n * 'RoomExpirationWarning' is sent towards the end of the Conversation session to give a timeout warning.\n */\n case \"roomexpirationwarning\":\n if (!!this.privConversationServiceConnector.conversationExpiration) {\n this.privConversationServiceConnector.conversationExpiration(this.privConversationServiceConnector, new Exports_js_2.ConversationExpirationEventArgs(commandPayload.value, this.privConversationRequestSession.sessionId));\n }\n break;\n /**\n * 'SetUseTts' is sent as a confirmation if the user requests TTS to be turned on or off.\n */\n case \"setusetts\":\n if (!!this.privConversationServiceConnector.participantUpdateCommandReceived) {\n this.privConversationServiceConnector.participantUpdateCommandReceived(this.privConversationServiceConnector, new ConversationTranslatorEventArgs_js_1.ParticipantAttributeEventArgs(commandPayload.participantId, ConversationTranslatorInterfaces_js_1.ConversationTranslatorCommandTypes.setUseTTS, commandPayload.value, sessionId));\n }\n break;\n /**\n * 'SetLockState' is set if the host has locked or unlocked the Conversation.\n */\n case \"setlockstate\":\n if (!!this.privConversationServiceConnector.lockRoomCommandReceived) {\n this.privConversationServiceConnector.lockRoomCommandReceived(this.privConversationServiceConnector, new ConversationTranslatorEventArgs_js_1.LockRoomEventArgs(commandPayload.value, sessionId));\n }\n break;\n /**\n * 'ChangeNickname' is received if a user changes their display name.\n * Any cached particpiants list should be updated to reflect the display name.\n */\n case \"changenickname\":\n if (!!this.privConversationServiceConnector.participantUpdateCommandReceived) {\n this.privConversationServiceConnector.participantUpdateCommandReceived(this.privConversationServiceConnector, new ConversationTranslatorEventArgs_js_1.ParticipantAttributeEventArgs(commandPayload.participantId, ConversationTranslatorInterfaces_js_1.ConversationTranslatorCommandTypes.changeNickname, commandPayload.value, sessionId));\n }\n break;\n /**\n * 'JoinSession' is sent when a user joins the Conversation.\n */\n case \"joinsession\":\n const joinParticipantPayload = Exports_js_4.ParticipantPayloadResponse.fromJSON(message.textBody);\n const joiningParticipant = {\n avatar: joinParticipantPayload.avatar,\n displayName: joinParticipantPayload.nickname,\n id: joinParticipantPayload.participantId,\n isHost: joinParticipantPayload.ishost,\n isMuted: joinParticipantPayload.ismuted,\n isUsingTts: joinParticipantPayload.usetts,\n preferredLanguage: joinParticipantPayload.locale,\n };\n if (!!this.privConversationServiceConnector.participantJoinCommandReceived) {\n this.privConversationServiceConnector.participantJoinCommandReceived(this.privConversationServiceConnector, new ConversationTranslatorEventArgs_js_1.ParticipantEventArgs(joiningParticipant, sessionId));\n }\n break;\n /**\n * 'LeaveSession' is sent when a user leaves the Conversation'.\n */\n case \"leavesession\":\n const leavingParticipant = {\n id: commandPayload.participantId\n };\n if (!!this.privConversationServiceConnector.participantLeaveCommandReceived) {\n this.privConversationServiceConnector.participantLeaveCommandReceived(this.privConversationServiceConnector, new ConversationTranslatorEventArgs_js_1.ParticipantEventArgs(leavingParticipant, sessionId));\n }\n break;\n /**\n * 'DisconnectSession' is sent when a user is disconnected from the session (e.g. network problem).\n * Check the 'ParticipantId' to check whether the message is for the current user.\n */\n case \"disconnectsession\":\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const disconnectParticipant = {\n id: commandPayload.participantId\n };\n break;\n case \"token\":\n const token = new Exports_js_3.CognitiveTokenAuthentication(() => {\n const authorizationToken = commandPayload.token;\n return Promise.resolve(authorizationToken);\n }, () => {\n const authorizationToken = commandPayload.token;\n return Promise.resolve(authorizationToken);\n });\n this.authentication = token;\n this.privConversationServiceConnector.onToken(token);\n break;\n /**\n * Message not recognized.\n */\n default:\n break;\n }\n break;\n /**\n * 'partial' (or 'hypothesis') represents a unfinalized speech message.\n */\n case \"partial\":\n /**\n * 'final' (or 'phrase') represents a finalized speech message.\n */\n case \"final\":\n const speechPayload = Exports_js_4.SpeechResponsePayload.fromJSON(message.textBody);\n const conversationResultReason = (conversationMessageType === \"final\") ? Exports_js_2.ResultReason.TranslatedParticipantSpeech : Exports_js_2.ResultReason.TranslatingParticipantSpeech;\n const speechResult = new Exports_js_2.ConversationTranslationResult(speechPayload.participantId, this.getTranslations(speechPayload.translations), speechPayload.language, speechPayload.id, conversationResultReason, speechPayload.recognition, undefined, undefined, message.textBody, undefined);\n if (speechPayload.isFinal) {\n // check the length, sometimes empty finals are returned\n if (speechResult.text !== undefined && speechResult.text.length > 0) {\n sendFinal = true;\n }\n else if (speechPayload.id === this.privLastPartialUtteranceId) {\n // send final as normal. We had a non-empty partial for this same utterance\n // so sending the empty final is important\n sendFinal = true;\n }\n else {\n // suppress unneeded final\n }\n if (sendFinal) {\n if (!!this.privConversationServiceConnector.translationReceived) {\n this.privConversationServiceConnector.translationReceived(this.privConversationServiceConnector, new ConversationTranslatorEventArgs_js_1.ConversationReceivedTranslationEventArgs(ConversationTranslatorInterfaces_js_1.ConversationTranslatorMessageTypes.final, speechResult, sessionId));\n }\n }\n }\n else if (speechResult.text !== undefined) {\n this.privLastPartialUtteranceId = speechPayload.id;\n if (!!this.privConversationServiceConnector.translationReceived) {\n this.privConversationServiceConnector.translationReceived(this.privConversationServiceConnector, new ConversationTranslatorEventArgs_js_1.ConversationReceivedTranslationEventArgs(ConversationTranslatorInterfaces_js_1.ConversationTranslatorMessageTypes.partial, speechResult, sessionId));\n }\n }\n break;\n /**\n * \"translated_message\" is a text message or instant message (IM).\n */\n case \"translated_message\":\n const textPayload = Exports_js_4.TextResponsePayload.fromJSON(message.textBody);\n // TODO: (Native parity) a result reason should be set based whether the participantId is ours or not\n const textResult = new Exports_js_2.ConversationTranslationResult(textPayload.participantId, this.getTranslations(textPayload.translations), textPayload.language, undefined, undefined, textPayload.originalText, undefined, undefined, undefined, message.textBody, undefined);\n if (!!this.privConversationServiceConnector.translationReceived) {\n this.privConversationServiceConnector.translationReceived(this.privConversationServiceConnector, new ConversationTranslatorEventArgs_js_1.ConversationReceivedTranslationEventArgs(ConversationTranslatorInterfaces_js_1.ConversationTranslatorMessageTypes.instantMessage, textResult, sessionId));\n }\n break;\n default:\n // ignore any unsupported message types\n break;\n }\n }\n catch (e) {\n // continue\n }\n return this.receiveConversationMessageOverride();\n }\n catch (e) {\n this.terminateMessageLoop = true;\n }\n return communicationCustodian.promise;\n }\n async startMessageLoop() {\n if (this.isDisposed()) {\n return Promise.resolve();\n }\n this.terminateMessageLoop = false;\n const messageRetrievalPromise = this.receiveConversationMessageOverride();\n try {\n const r = await messageRetrievalPromise;\n return r;\n }\n catch (error) {\n this.cancelRecognition(this.privRequestSession ? this.privRequestSession.sessionId : \"\", this.privRequestSession ? this.privRequestSession.requestId : \"\", Exports_js_2.CancellationReason.Error, Exports_js_2.CancellationErrorCode.RuntimeError, error);\n return null;\n }\n }\n // Takes an established websocket connection to the endpoint\n configConnection() {\n if (this.isDisposed()) {\n return Promise.resolve(undefined);\n }\n if (this.privConnectionConfigPromise !== undefined) {\n return this.privConnectionConfigPromise.then((connection) => {\n if (connection.state() === Exports_js_1.ConnectionState.Disconnected) {\n this.privConnectionId = null;\n this.privConnectionConfigPromise = undefined;\n return this.configConnection();\n }\n return this.privConnectionConfigPromise;\n }, () => {\n this.privConnectionId = null;\n this.privConnectionConfigPromise = undefined;\n return this.configConnection();\n });\n }\n if (this.terminateMessageLoop) {\n return Promise.resolve(undefined);\n }\n this.privConnectionConfigPromise = this.connectImpl().then((connection) => connection);\n return this.privConnectionConfigPromise;\n }\n getTranslations(serviceResultTranslations) {\n let translations;\n if (undefined !== serviceResultTranslations) {\n translations = new Exports_js_2.Translations();\n for (const translation of serviceResultTranslations) {\n translations.set(translation.lang, translation.translation);\n }\n }\n return translations;\n }\n}\nexports.ConversationServiceAdapter = ConversationServiceAdapter;\n\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"script","externalDependencies":[]}
|