@thoughtspot/visual-embed-sdk
Version:
ThoughtSpot Embed SDK
84 lines • 3.16 kB
JavaScript
;
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