fix(core.gbapp): BASIC and KB improvements.
This commit is contained in:
parent
f3a32d04b4
commit
1bf23cf4e4
8 changed files with 80 additions and 73 deletions
|
@ -98,7 +98,7 @@ export class GBAdminService implements IGBAdminService {
|
||||||
maximumLength: 14
|
maximumLength: 14
|
||||||
};
|
};
|
||||||
let password = passwordGenerator.generatePassword(options);
|
let password = passwordGenerator.generatePassword(options);
|
||||||
password = password.replace(/[\@\[\=\:\;\?]/g, '#');
|
password = password.replace(/[\@\[\=\:\;\?]/gi, '#');
|
||||||
|
|
||||||
return password;
|
return password;
|
||||||
}
|
}
|
||||||
|
|
|
@ -96,7 +96,7 @@ class SysClass {
|
||||||
}
|
}
|
||||||
|
|
||||||
public async save(file: string, ...args): Promise<any> {
|
public async save(file: string, ...args): Promise<any> {
|
||||||
|
try {
|
||||||
let token =
|
let token =
|
||||||
await this.min.adminService.acquireElevatedToken(this.min.instance.instanceId);
|
await this.min.adminService.acquireElevatedToken(this.min.instance.instanceId);
|
||||||
|
|
||||||
|
@ -140,6 +140,10 @@ class SysClass {
|
||||||
let res2 = await client.api(
|
let res2 = await client.api(
|
||||||
`https://graph.microsoft.com/v1.0/sites/${siteId}/lists/${libraryId}/drive/items/${document[0].id}/workbook/worksheets('Sheet1')/range(address='A2:Z2')`)
|
`https://graph.microsoft.com/v1.0/sites/${siteId}/lists/${libraryId}/drive/items/${document[0].id}/workbook/worksheets('Sheet1')/range(address='A2:Z2')`)
|
||||||
.patch(body);
|
.patch(body);
|
||||||
|
} catch (error) {
|
||||||
|
GBLog.error(`SAVE BASIC error: ${error.message}`);
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -264,7 +268,7 @@ class SysClass {
|
||||||
}
|
}
|
||||||
|
|
||||||
public async numberOnly(text: string) {
|
public async numberOnly(text: string) {
|
||||||
return text.replace(/\D/g, "");
|
return text.replace(/\D/gi, "");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -580,12 +580,14 @@ export class GBConversationalService {
|
||||||
const member = step.context.activity.from;
|
const member = step.context.activity.from;
|
||||||
const user = await sec.ensureUser(min.instance.instanceId, member.id,
|
const user = await sec.ensureUser(min.instance.instanceId, member.id,
|
||||||
member.name, "", "web", member.name);
|
member.name, "", "web", member.name);
|
||||||
|
if (text !== null) {
|
||||||
text = await min.conversationalService.translate(
|
text = await min.conversationalService.translate(
|
||||||
min.instance.translatorKey ? min.instance.translatorKey : minBoot.instance.translatorKey,
|
min.instance.translatorKey ? min.instance.translatorKey : minBoot.instance.translatorKey,
|
||||||
min.instance.translatorEndpoint ? min.instance.translatorEndpoint : minBoot.instance.translatorEndpoint,
|
min.instance.translatorEndpoint ? min.instance.translatorEndpoint : minBoot.instance.translatorEndpoint,
|
||||||
text,
|
text,
|
||||||
user.locale ? user.locale : 'pt'
|
user.locale ? user.locale : 'pt'
|
||||||
);
|
);
|
||||||
|
}
|
||||||
|
|
||||||
return await step.prompt("textPrompt", text ? text : {});
|
return await step.prompt("textPrompt", text ? text : {});
|
||||||
}
|
}
|
||||||
|
|
|
@ -404,6 +404,7 @@ export class GBDeployer implements IGBDeployer {
|
||||||
|
|
||||||
case '.gbkb':
|
case '.gbkb':
|
||||||
const service = new KBService(this.core.sequelize);
|
const service = new KBService(this.core.sequelize);
|
||||||
|
rimraf.sync(localPath);
|
||||||
return await service.undeployKbFromStorage(instance, this, p.packageId);
|
return await service.undeployKbFromStorage(instance, this, p.packageId);
|
||||||
|
|
||||||
case '.gbui':
|
case '.gbui':
|
||||||
|
@ -411,11 +412,11 @@ export class GBDeployer implements IGBDeployer {
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case '.gbtheme':
|
case '.gbtheme':
|
||||||
|
rimraf.sync(localPath);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case '.gbdialog':
|
case '.gbdialog':
|
||||||
|
rimraf.sync(localPath);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case '.gblib':
|
case '.gblib':
|
||||||
|
|
|
@ -720,7 +720,7 @@ export class GBMinService {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static async callVM(text: string, min: GBMinInstance, step: GBDialogStep) {
|
public static async callVM(text: string, min: GBMinInstance, step: GBDialogStep) {
|
||||||
const mainMethod = text;
|
const mainMethod = text.toLowerCase();
|
||||||
min.sandBoxMap[mainMethod][mainMethod].bind(min.sandBoxMap[mainMethod]);
|
min.sandBoxMap[mainMethod][mainMethod].bind(min.sandBoxMap[mainMethod]);
|
||||||
return await min.sandBoxMap[mainMethod][mainMethod](step);
|
return await min.sandBoxMap[mainMethod][mainMethod](step);
|
||||||
}
|
}
|
||||||
|
|
|
@ -88,8 +88,9 @@ export class GBVMService extends GBService {
|
||||||
fs.writeFileSync(urlJoin(folder, filename), text);
|
fs.writeFileSync(urlJoin(folder, filename), text);
|
||||||
}
|
}
|
||||||
|
|
||||||
const mainName = filename.replace(/\s|\-/g, '').split('.')[0];
|
let mainName = filename.replace(/\s|\-/gi, '').split('.')[0];
|
||||||
min.scriptMap[filename] = mainName;
|
mainName = mainName.toLowerCase();
|
||||||
|
min.scriptMap[filename] = mainName.toLowerCase();
|
||||||
|
|
||||||
const fullFilename = urlJoin(folder, filename);
|
const fullFilename = urlJoin(folder, filename);
|
||||||
// TODO: Implement in development mode, how swap for .vbs files
|
// TODO: Implement in development mode, how swap for .vbs files
|
||||||
|
@ -138,39 +139,39 @@ export class GBVMService extends GBService {
|
||||||
|
|
||||||
// Keywords from General Bots BASIC.
|
// Keywords from General Bots BASIC.
|
||||||
|
|
||||||
code = code.replace(/(hear email)/g, `email = askEmail()`);
|
code = code.replace(/(hear email)/gi, `email = askEmail()`);
|
||||||
|
|
||||||
code = code.replace(/(hear)\s*(\w+)/g, ($0, $1, $2) => {
|
code = code.replace(/(hear)\s*(\w+)/gi, ($0, $1, $2) => {
|
||||||
return `${$2} = hear()`;
|
return `${$2} = hear()`;
|
||||||
});
|
});
|
||||||
code = code.replace(/(\w)\s*\=\s*find\s*(.*)/g, ($0, $1, $2, $3) => {
|
code = code.replace(/(\w)\s*\=\s*find\s*(.*)/gi, ($0, $1, $2, $3) => {
|
||||||
return `${$1} = sys().find(${$2})\n`;
|
return `${$1} = sys().find(${$2})\n`;
|
||||||
});
|
});
|
||||||
|
|
||||||
code = code.replace(/(wait)\s*(\d+)/g, ($0, $1, $2) => {
|
code = code.replace(/(wait)\s*(\d+)/gi, ($0, $1, $2) => {
|
||||||
return `sys().wait(${$2})`;
|
return `sys().wait(${$2})`;
|
||||||
});
|
});
|
||||||
|
|
||||||
code = code.replace(/(get stock for )(.*)/g, ($0, $1, $2) => {
|
code = code.replace(/(get stock for )(.*)/gi, ($0, $1, $2) => {
|
||||||
return `let stock = sys().getStock(${$2})`;
|
return `let stock = sys().getStock(${$2})`;
|
||||||
});
|
});
|
||||||
|
|
||||||
code = code.replace(/(get)(\s)(.*)/g, ($0, $1, $2) => {
|
code = code.replace(/(get)(\s)(.*)/gi, ($0, $1, $2) => {
|
||||||
return `sys().httpGet (${$2})`;
|
return `sys().httpGet (${$2})`;
|
||||||
});
|
});
|
||||||
|
|
||||||
code = code.replace(/(create a bot farm using)(\s)(.*)/g, ($0, $1, $2, $3) => {
|
code = code.replace(/(create a bot farm using)(\s)(.*)/gi, ($0, $1, $2, $3) => {
|
||||||
return `sys().createABotFarmUsing (${$3})`;
|
return `sys().createABotFarmUsing (${$3})`;
|
||||||
});
|
});
|
||||||
|
|
||||||
code = code.replace(/(talk)(\s)(.*)/g, ($0, $1, $2, $3) => {
|
code = code.replace(/(talk)(\s)(.*)/gi, ($0, $1, $2, $3) => {
|
||||||
return `talk (step, ${$3})\n`;
|
return `talk (step, ${$3})\n`;
|
||||||
});
|
});
|
||||||
code = code.replace(/(send file)(\s*)(.*)/g, ($0, $1, $2, $3) => {
|
code = code.replace(/(send file)(\s*)(.*)/gi, ($0, $1, $2, $3) => {
|
||||||
return `sendFile (step, ${$3})\n`;
|
return `sendFile (step, ${$3})\n`;
|
||||||
});
|
});
|
||||||
|
|
||||||
code = code.replace(/(save)(\s)(.*)/g, ($0, $1, $2, $3) => {
|
code = code.replace(/(save)(\s)(.*)/gi, ($0, $1, $2, $3) => {
|
||||||
return `sys().save(${$3})\n`;
|
return `sys().save(${$3})\n`;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -193,7 +194,7 @@ export class GBVMService extends GBService {
|
||||||
// Convert TS into JS.
|
// Convert TS into JS.
|
||||||
const tsfile: string = `${filename}.ts`;
|
const tsfile: string = `${filename}.ts`;
|
||||||
let tsCode: string = fs.readFileSync(tsfile, 'utf8');
|
let tsCode: string = fs.readFileSync(tsfile, 'utf8');
|
||||||
tsCode = tsCode.replace(/export.*\n/g, `export function ${mainName}(step:any) { let resolve = undefined;`);
|
tsCode = tsCode.replace(/export.*\n/gi, `export function ${mainName}(step:any) { let resolve = undefined;`);
|
||||||
fs.writeFileSync(tsfile, tsCode);
|
fs.writeFileSync(tsfile, tsCode);
|
||||||
|
|
||||||
const tsc = new TSCompiler();
|
const tsc = new TSCompiler();
|
||||||
|
@ -275,7 +276,7 @@ export class GBVMService extends GBService {
|
||||||
const sandbox: DialogClass = new DialogClass(min, deployer);
|
const sandbox: DialogClass = new DialogClass(min, deployer);
|
||||||
const context = vm.createContext(sandbox);
|
const context = vm.createContext(sandbox);
|
||||||
vm.runInContext(parsedCode, context);
|
vm.runInContext(parsedCode, context);
|
||||||
min.sandBoxMap[mainName] = sandbox;
|
min.sandBoxMap[mainName.toLowerCase()] = sandbox;
|
||||||
GBLog.info(`[GBVMService] Finished loading of ${filename}`);
|
GBLog.info(`[GBVMService] Finished loading of ${filename}`);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
GBLog.error(`[GBVMService] ERROR loading ${error}`);
|
GBLog.error(`[GBVMService] ERROR loading ${error}`);
|
||||||
|
@ -286,20 +287,20 @@ export class GBVMService extends GBService {
|
||||||
private handleThisAndAwait(code: string) {
|
private handleThisAndAwait(code: string) {
|
||||||
// this insertion.
|
// this insertion.
|
||||||
|
|
||||||
code = code.replace(/sys\(\)/g, 'this.sys()');
|
code = code.replace(/sys\(\)/gi, 'this.sys()');
|
||||||
code = code.replace(/("[^"]*"|'[^']*')|\btalk\b/g, ($0, $1) => {
|
code = code.replace(/("[^"]*"|'[^']*')|\btalk\b/gi, ($0, $1) => {
|
||||||
return $1 === undefined ? 'this.talk' : $1;
|
return $1 === undefined ? 'this.talk' : $1;
|
||||||
});
|
});
|
||||||
code = code.replace(/("[^"]*"|'[^']*')|\bhear\b/g, ($0, $1) => {
|
code = code.replace(/("[^"]*"|'[^']*')|\bhear\b/gi, ($0, $1) => {
|
||||||
return $1 === undefined ? 'this.hear' : $1;
|
return $1 === undefined ? 'this.hear' : $1;
|
||||||
});
|
});
|
||||||
code = code.replace(/("[^"]*"|'[^']*')|\bsendEmail\b/g, ($0, $1) => {
|
code = code.replace(/("[^"]*"|'[^']*')|\bsendEmail\b/gi, ($0, $1) => {
|
||||||
return $1 === undefined ? 'this.sendEmail' : $1;
|
return $1 === undefined ? 'this.sendEmail' : $1;
|
||||||
});
|
});
|
||||||
code = code.replace(/("[^"]*"|'[^']*')|\baskEmail\b/g, ($0, $1) => {
|
code = code.replace(/("[^"]*"|'[^']*')|\baskEmail\b/gi, ($0, $1) => {
|
||||||
return $1 === undefined ? 'this.askEmail' : $1;
|
return $1 === undefined ? 'this.askEmail' : $1;
|
||||||
});
|
});
|
||||||
code = code.replace(/("[^"]*"|'[^']*')|\bsendFile\b/g, ($0, $1) => {
|
code = code.replace(/("[^"]*"|'[^']*')|\bsendFile\b/gi, ($0, $1) => {
|
||||||
return $1 === undefined ? 'this.sendFile' : $1;
|
return $1 === undefined ? 'this.sendFile' : $1;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -230,7 +230,7 @@ export class AskDialog extends IGBDialog {
|
||||||
const urlSufix = 'url:';
|
const urlSufix = 'url:';
|
||||||
|
|
||||||
if (answer.content.endsWith('.docx')) {
|
if (answer.content.endsWith('.docx')) {
|
||||||
const mainName = answer.content.replace(/\s|\-/g, '').split('.')[0];
|
const mainName = answer.content.replace(/\s|\-/gi, '').split('.')[0];
|
||||||
return await GBMinService.callVM(mainName, min, step);
|
return await GBMinService.callVM(mainName, min, step);
|
||||||
} else {
|
} else {
|
||||||
await service.sendAnswer(min, AskDialog.getChannel(step), step, answer);
|
await service.sendAnswer(min, AskDialog.getChannel(step), step, answer);
|
||||||
|
|
|
@ -57,7 +57,6 @@ import { GBConfigService } from './../../core.gbapp/services/GBConfigService';
|
||||||
import { CSService } from '../../customer-satisfaction.gbapp/services/CSService';
|
import { CSService } from '../../customer-satisfaction.gbapp/services/CSService';
|
||||||
import { SecService } from '../../security.gblib/services/SecService';
|
import { SecService } from '../../security.gblib/services/SecService';
|
||||||
import { CollectionUtil } from 'pragmatismo-io-framework';
|
import { CollectionUtil } from 'pragmatismo-io-framework';
|
||||||
import { try } from 'bluebird';
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Result for quey on KB data.
|
* Result for quey on KB data.
|
||||||
|
@ -302,7 +301,7 @@ export class KBService implements IGBKBService {
|
||||||
|
|
||||||
let media = null;
|
let media = null;
|
||||||
|
|
||||||
if (!answer) {
|
if (typeof (answer) !== "string" ) {
|
||||||
GBLog.info(`[GBImporter] Answer is NULL related to Question '${question}'.`);
|
GBLog.info(`[GBImporter] Answer is NULL related to Question '${question}'.`);
|
||||||
answer = 'Existe um problema na base de conhecimento. Fui treinado para entender sua pergunta, avise a quem me criou que a resposta não foi informada para esta pergunta.';
|
answer = 'Existe um problema na base de conhecimento. Fui treinado para entender sua pergunta, avise a quem me criou que a resposta não foi informada para esta pergunta.';
|
||||||
} else if (answer.indexOf('.md') > -1) {
|
} else if (answer.indexOf('.md') > -1) {
|
||||||
|
@ -455,7 +454,7 @@ export class KBService implements IGBKBService {
|
||||||
|
|
||||||
const locale = step.context.activity.locale;
|
const locale = step.context.activity.locale;
|
||||||
await min.conversationalService.sendText(min, step, Messages[locale].will_answer_projector);
|
await min.conversationalService.sendText(min, step, Messages[locale].will_answer_projector);
|
||||||
html = html.replace(/src\=\"kb\//g, `src=\"../kb/`);
|
html = html.replace(/src\=\"kb\//gi, `src=\"../kb/`);
|
||||||
await conversationalService.sendEvent(min, step, 'play', {
|
await conversationalService.sendEvent(min, step, 'play', {
|
||||||
playerType: 'markdown',
|
playerType: 'markdown',
|
||||||
data: {
|
data: {
|
||||||
|
|
Loading…
Add table
Reference in a new issue