asksuite-core
Version:
122 lines (100 loc) • 2.84 kB
JavaScript
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;
};