fix(core.gbapp): resolve is being called correctly in /hear.
This commit is contained in:
parent
27641442cb
commit
9804debfcc
4 changed files with 84 additions and 20 deletions
|
@ -657,6 +657,17 @@ export class DialogClass {
|
|||
}
|
||||
}
|
||||
|
||||
public async setLanguage(step, language)
|
||||
{
|
||||
const locale = step.context.activity.locale;
|
||||
const user = await this.min.userProfile.get(step.context, {});
|
||||
|
||||
let sec = new SecService();
|
||||
user.systemUser = await sec.updateUserLocale(user.systemUser.userId, language);
|
||||
|
||||
await this.min.userProfile.set(step.context, user);
|
||||
}
|
||||
|
||||
public async getFrom(step) {
|
||||
return step.context.activity.from.id;
|
||||
}
|
||||
|
|
|
@ -170,6 +170,12 @@ export class GBConversationalService {
|
|||
// "what?" version ... http://jsperf.com/diacritics/12
|
||||
public static removeDiacriticsAndPunctuation(str) {
|
||||
|
||||
str = GBConversationalService.removeDiacritics(str);
|
||||
return str.replace(/[.,\/#!$%\^&\*;:{}=\-_`~()]/g, "");
|
||||
|
||||
}
|
||||
public static removeDiacritics(str) {
|
||||
|
||||
var diacriticsMap = {};
|
||||
for (var i = 0; i < GBConversationalService.defaultDiacriticsRemovalMap.length; i++) {
|
||||
var letters = GBConversationalService.defaultDiacriticsRemovalMap[i].letters;
|
||||
|
@ -180,9 +186,7 @@ export class GBConversationalService {
|
|||
str = str.replace(/[^\u0000-\u007E]/g, function (a) {
|
||||
return diacriticsMap[a] || a;
|
||||
});
|
||||
|
||||
return str.replace(/[.,\/#!$%\^&\*;:{}=\-_`~()]/g, "");
|
||||
|
||||
return str;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -668,21 +668,24 @@ export class GBMinService {
|
|||
);
|
||||
if (context.activity.type === 'conversationUpdate' && context.activity.membersAdded.length > 0) {
|
||||
const member = context.activity.membersAdded[0];
|
||||
if (member.name === min.instance.title) {
|
||||
if (context.activity.membersAdded[0].id === context.activity.recipient.id) {
|
||||
GBLog.info(`Bot added to conversation, starting chat...`);
|
||||
await CollectionUtil.asyncForEach(appPackages, async e => {
|
||||
await e.onNewSession(min, step);
|
||||
});
|
||||
|
||||
await step.beginDialog('/');
|
||||
|
||||
} else {
|
||||
const startDialog = min.core.getParam(min.instance, 'Start Dialog', null);
|
||||
if (startDialog && !user.welcomed) {
|
||||
user.welcomed = true;
|
||||
GBLog.info(`Auto start dialog is now being called: ${startDialog}...`);
|
||||
await GBVMService.callVM(startDialog.toLowerCase(), min, step, this.deployer);
|
||||
}
|
||||
else
|
||||
{
|
||||
await step.beginDialog('/');
|
||||
}
|
||||
|
||||
} else {
|
||||
|
||||
GBLog.info(`Member added to conversation: ${member.name}`);
|
||||
}
|
||||
|
@ -841,18 +844,18 @@ export class GBMinService {
|
|||
keepTextList = keepTextList.concat(result);
|
||||
}
|
||||
});
|
||||
let textProcessed = GBConversationalService.removeDiacriticsAndPunctuation(text);
|
||||
let textProcessed = GBConversationalService.removeDiacritics(text);
|
||||
if (keepTextList) {
|
||||
keepTextList = keepTextList.filter(p => p.trim() !== '');
|
||||
let i = 0;
|
||||
await CollectionUtil.asyncForEach(keepTextList, item => {
|
||||
let it = GBConversationalService.removeDiacriticsAndPunctuation(item);
|
||||
let it = GBConversationalService.removeDiacritics(item);
|
||||
|
||||
if (textProcessed.toLowerCase().indexOf(it.toLowerCase()) != -1) {
|
||||
const replacementToken = 'X' + GBAdminService['getNumberIdentifier']().substr(0,4);
|
||||
replacements[i] = { text: item, replacementToken: replacementToken };
|
||||
i++;
|
||||
textProcessed = textProcessed.replace(new RegExp(it.trim(), 'gi'), `${replacementToken}`);
|
||||
textProcessed = textProcessed.replace(new RegExp(`\\b${it.trim()}\\b`, 'gi'), `${replacementToken}`);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
@ -917,8 +920,6 @@ export class GBMinService {
|
|||
if (step.activeDialog !== undefined) {
|
||||
await step.continueDialog();
|
||||
|
||||
|
||||
|
||||
} else {
|
||||
// Checks if any .gbapp will handle this answer, if not goes to standard kb.gbapp.
|
||||
|
||||
|
|
|
@ -201,6 +201,10 @@ export class GBVMService extends GBService {
|
|||
return `${$1} = hear("money")`;
|
||||
});
|
||||
|
||||
code = code.replace(/hear (\w+) as language/gi, ($0, $1, $2) => {
|
||||
return `${$1} = hear("language")`;
|
||||
});
|
||||
|
||||
code = code.replace(/hear (\w+) as zipcode/gi, ($0, $1, $2) => {
|
||||
return `${$1} = hear("zipcode")`;
|
||||
});
|
||||
|
@ -237,6 +241,10 @@ export class GBVMService extends GBService {
|
|||
}
|
||||
});
|
||||
|
||||
code = code.replace(/(set language)(\s*)(.*)/gi, ($0, $1, $2, $3) => {
|
||||
return `setLanguage (step, ${$3})\n`;
|
||||
});
|
||||
|
||||
code = code.replace(/set\s(.*)/gi, ($0, $1, $2) => {
|
||||
return `sys().set (${$1})`;
|
||||
});
|
||||
|
@ -254,7 +262,7 @@ export class GBVMService extends GBService {
|
|||
});
|
||||
|
||||
code = code.replace(/(exit)/gi, () => {
|
||||
return `exit (step)\n`;
|
||||
return `resolve();\n`;
|
||||
});
|
||||
|
||||
code = code.replace(/(show menu)/gi, () => {
|
||||
|
@ -368,7 +376,7 @@ export class GBVMService extends GBService {
|
|||
}
|
||||
|
||||
parsedCode += code.substring(start + match1[0].length + 1, pos + match1[0].length);
|
||||
|
||||
|
||||
parsedCode += '}catch(error){reject(error);}});\n';
|
||||
parsedCode += '}\n';
|
||||
|
||||
|
@ -424,12 +432,12 @@ export class GBVMService extends GBService {
|
|||
code = code.replace(/("[^"]*"|'[^']*')|\bsendFile\b/gi, ($0, $1) => {
|
||||
return $1 === undefined ? 'this.sendFile' : $1;
|
||||
});
|
||||
code = code.replace(/("[^"]*"|'[^']*')|\bsetLanguage\b/gi, ($0, $1) => {
|
||||
return $1 === undefined ? 'this.setLanguage' : $1;
|
||||
});
|
||||
code = code.replace(/("[^"]*"|'[^']*')|\btransfer\b/gi, ($0, $1) => {
|
||||
return $1 === undefined ? 'this.transfer' : $1;
|
||||
});
|
||||
code = code.replace(/("[^"]*"|'[^']*')|\bexit\b/gi, ($0, $1) => {
|
||||
return $1 === undefined ? 'this.exit' : $1;
|
||||
});
|
||||
code = code.replace(/("[^"]*"|'[^']*')|\bmenu\b/gi, ($0, $1) => {
|
||||
return $1 === undefined ? 'this.menu' : $1;
|
||||
});
|
||||
|
@ -629,21 +637,61 @@ export class GBVMService extends GBService {
|
|||
return await step.replaceDialog('/hear', step.activeDialog.state.options);
|
||||
}
|
||||
}
|
||||
else if (step.activeDialog.state.options['kind'] === "language") {
|
||||
|
||||
result = null;
|
||||
|
||||
const list = [
|
||||
{ name: 'english', code: 'en' },
|
||||
{ name: 'inglês', code: 'en' },
|
||||
{ name: 'portuguese', code: 'pt' },
|
||||
{ name: 'português', code: 'pt' },
|
||||
{ name: 'français', code: 'fr' },
|
||||
{ name: 'francês', code: 'fr' },
|
||||
{ name: 'french', code: 'fr' },
|
||||
{ name: 'spanish', code: 'es' },
|
||||
{ name: 'espanõl', code: 'es' },
|
||||
{ name: 'espanhol', code: 'es' },
|
||||
{ name: 'german', code: 'de' },
|
||||
{ name: 'deutsch', code: 'de' },
|
||||
{ name: 'alemão', code: 'de' }
|
||||
];
|
||||
|
||||
const text = step.context.activity['originalText'];
|
||||
|
||||
await CollectionUtil.asyncForEach(list, async item => {
|
||||
if (GBConversationalService.kmpSearch(text.toLowerCase(), item.name.toLowerCase()) != -1 ||
|
||||
GBConversationalService.kmpSearch(text.toLowerCase(), item.code.toLowerCase()) != -1) {
|
||||
result = item.code;
|
||||
}
|
||||
});
|
||||
|
||||
if (result === null) {
|
||||
await min.conversationalService.sendText(min, step, `Escolha por favor um dos idiomas sugeridos.`);
|
||||
return await step.replaceDialog('/hear', step.activeDialog.state.options);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
const id = step.activeDialog.state.options.id;
|
||||
if (min.cbMap[id]) {
|
||||
const promise = min.cbMap[id].promise;
|
||||
delete min.cbMap[id];
|
||||
try {
|
||||
const opts = await promise(step, result);
|
||||
return await step.replaceDialog('/hear', opts);
|
||||
|
||||
await promise(step, step.result);
|
||||
if (step.activeDialog.state.options.previousResolve != undefined) {
|
||||
step.activeDialog.state.options.previousResolve();
|
||||
}
|
||||
|
||||
return await step.next();
|
||||
} catch (error) {
|
||||
GBLog.error(`Error in BASIC code: ${error}`);
|
||||
const locale = step.context.activity.locale;
|
||||
await min.conversationalService.sendText(min, step, Messages[locale].very_sorry_about_error);
|
||||
}
|
||||
}
|
||||
return await step.endDialog();
|
||||
|
||||
}
|
||||
])
|
||||
);
|
||||
|
|
Loading…
Add table
Reference in a new issue