asksuite-core
Version:
143 lines (118 loc) • 3.35 kB
JavaScript
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;
};