UNPKG

asksuite-core

Version:
143 lines (118 loc) 3.35 kB
const _ = require('lodash'); module.exports = function(config) { const util = {}; util.buildUrlRedirect = function( conversationId, url, type, companyId, additionalQueryParams = {}, ) { let baseUrl = ''; if (config.URL_FOR_BUILD_LINK) { baseUrl = config.URL_FOR_BUILD_LINK; } else { baseUrl = config.INFOCHAT_DATA_SERVER; } const pathWithCompany = companyId ? `/${companyId}` : ''; const queryParameters = _.chain({ url, type, }) .assign(additionalQueryParams) .omitBy(_.isNil) .map((value, key) => `${key}=${value}`) .join('&') .value(); return baseUrl + '/redirect/' + conversationId + pathWithCompany + '?' + queryParameters; }; util.defineLanguage = function(language) { if (language) { language = language.toLowerCase(); if (language.indexOf('pt') >= 0) { language = 'pt-br'; } else if (language.indexOf('es') >= 0) { language = 'es'; } else { language = 'en'; } } else { language = 'en'; } return language; }; util.resolveLanguage = function(paramLanguage, languages, attrValueLanguage = 'formatIso') { if (!paramLanguage) { return 'en-us'; } let language = _.find(languages, _.matchesProperty('formatIso', paramLanguage)); if (language) { return language[attrValueLanguage]; } language = _.chain(languages) .filter(_.matchesProperty('parentLanguage', paramLanguage.substring(0, 2))) .sortBy(l => !l.standard) .head() .value(); if (language) { return language[attrValueLanguage]; } return 'en-us'; }; util.resolveLanguageGoogle = function( paramLanguage, languages, attrValueLanguage = 'formatGoogle', ) { if (!paramLanguage) { return 'en'; } let language = _.find(languages, _.matchesProperty('formatIso', paramLanguage)); if (language) { return language[attrValueLanguage]; } language = _.find( languages, _.matchesProperty('parentLanguage', paramLanguage.substring(0, 2)), ); if (language) { return language[attrValueLanguage]; } return 'en'; }; util.excuteTimedOutDialog = function( context, value, AskSuiteMessageResolver, conversationId, nextDialogMap, AsksuiteTreeManager, ) { if ( !context || !value || !AskSuiteMessageResolver || !conversationId || !nextDialogMap || !AsksuiteTreeManager ) { return; } const timeout = (value.nextDialogTimeout || 10) * 1000; nextDialogMap.set(conversationId, value.nextDialog); setTimeout(() => { const nextDialog = nextDialogMap.get(conversationId); if (nextDialog && nextDialog === value.nextDialog) { nextDialogMap.delete(conversationId); const findDialog = AsksuiteTreeManager.get(nextDialog, context); AskSuiteMessageResolver.resolve(context, findDialog); } }, timeout); }; util.buildUrlConversation = function(conversationId, companyId) { const BASE_URL = config.ADMIN_URL; const convertedCompanies = encodeURI(JSON.stringify([companyId])); return `${BASE_URL}/chat?conversationId=${conversationId}&companyIds=${convertedCompanies}`; }; return util; };