UNPKG

asksuite-core

Version:
122 lines (100 loc) 2.84 kB
const _ = require('lodash'); module.exports = function(config) { const util = {}; util.buildUrlRedirect = function(conversationId, url, type, companyId) { let baseUrl = ''; if (config.URL_FOR_BUILD_LINK) { baseUrl = config.URL_FOR_BUILD_LINK; } else { baseUrl = config.INFOCHAT_DATA_SERVER; } const pathWithCompany = companyId ? `/${companyId}` : ''; return ( baseUrl + '/redirect/' + conversationId + pathWithCompany + '?url=' + url + '&type=' + type ); }; 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); }; return util; };