UNPKG

@thoughtspot/visual-embed-sdk

Version:
84 lines 3.16 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.BodylessConversation = void 0; const types_1 = require("../types"); const ts_embed_1 = require("./ts-embed"); const conversation_service_1 = require("../utils/graphql/nlsService/conversation-service"); const embedConfig_1 = require("./embedConfig"); const utils_1 = require("../utils"); class ConversationMessage extends ts_embed_1.TsEmbed { constructor(container, viewConfig) { viewConfig.embedComponentType = 'bodyless-conversation'; super(container, viewConfig); this.viewConfig = viewConfig; } getIframeSrc() { var _a; const { sessionId, genNo, acSessionId, acGenNo, } = this.viewConfig; const path = 'conv-assist-answer'; const queryParams = this.getBaseQueryParams(); queryParams[types_1.Param.HideActions] = [...((_a = queryParams[types_1.Param.HideActions]) !== null && _a !== void 0 ? _a : [])]; let query = ''; const queryParamsString = (0, utils_1.getQueryParamString)(queryParams, true); if (queryParamsString) { query = `?${queryParamsString}`; } const tsPostHashParams = this.getThoughtSpotPostUrlParams({ sessionId, genNo, acSessionId, acGenNo, }); return `${this.getEmbedBasePath(query)}/embed/${path}${tsPostHashParams}`; } async render() { await super.render(); const src = this.getIframeSrc(); await this.renderIFrame(src); return this; } } /** * Create a conversation embed, which can be integrated inside * chatbots or other conversational interfaces. * @example * ```js * import { BodylessConversation } from '@thoughtspot/visual-embed-sdk'; * * const conversation = new BodylessConversation({ * worksheetId: 'worksheetId', * }); * * const { container, error } = await conversation.sendMessage('show me sales by region'); * * // append the container to the DOM * document.body.appendChild(container); // or to any other element * ``` * @group Embed components * @version SDK: 1.33.1 | ThoughtSpot: 10.5.0.cl */ class BodylessConversation { constructor(viewConfig) { this.viewConfig = viewConfig; const embedConfig = (0, embedConfig_1.getEmbedConfig)(); this.conversationService = new conversation_service_1.Conversation(embedConfig.thoughtSpotHost, viewConfig.worksheetId); } async sendMessage(userMessage) { const { data, error } = await this.conversationService.sendMessage(userMessage); if (error) { return { error }; } const container = document.createElement('div'); const embed = new ConversationMessage(container, { ...this.viewConfig, sessionId: data.sessionId, genNo: data.genNo, acSessionId: data.stateKey.transactionId, acGenNo: data.stateKey.generationNumber, }); await embed.render(); return { container }; } } exports.BodylessConversation = BodylessConversation; //# sourceMappingURL=bodyless-conversation.js.map