From 88a63710c02a968ecf38d5303a945d9f5bd02955 Mon Sep 17 00:00:00 2001 From: Rodrigo Rodriguez Date: Sat, 21 Aug 2021 09:19:07 -0300 Subject: [PATCH] new(basic.gblib): New SET WHOLE WORD keyword added. --- .../basic.gblib/services/DialogKeywords.ts | 13 ++++ .../basic.gblib/services/SystemKeywords.ts | 15 ++++- packages/core.gbapp/services/GBMinService.ts | 15 +++-- packages/default.gbui/src/GBUIApp.js | 59 ++++++++----------- 4 files changed, 61 insertions(+), 41 deletions(-) diff --git a/packages/basic.gblib/services/DialogKeywords.ts b/packages/basic.gblib/services/DialogKeywords.ts index 5354e8db..b5549ba4 100644 --- a/packages/basic.gblib/services/DialogKeywords.ts +++ b/packages/basic.gblib/services/DialogKeywords.ts @@ -343,6 +343,19 @@ export class DialogKeywords { this.user = user; } + /** + * Defines the FIND behaviour to consider whole words while searching. + * + * @example SET WHOLE WORD ON + * + */ + public async setWholeWord(step, on) { + const user = await this.min.userProfile.get(step.context, {}); + user.basicOptions.wholeWord = (on.trim() === "on"); + await this.min.userProfile.set(step.context, user); + this.user = user; + } + /** * Defines translator behaviour. * diff --git a/packages/basic.gblib/services/SystemKeywords.ts b/packages/basic.gblib/services/SystemKeywords.ts index 3ed2144e..27591a38 100644 --- a/packages/basic.gblib/services/SystemKeywords.ts +++ b/packages/basic.gblib/services/SystemKeywords.ts @@ -457,8 +457,19 @@ export class SystemKeywords { case 'string': switch (filter.operator) { case '=': - if (result && result.toLowerCase().trim() === filter.value.toLowerCase().trim()) { - filterAcceptCount++; + let wholeWord = true; + if (this.dk.user && this.dk.user.basicOptions && this.dk.user.basicOptions.wholeWord) { + wholeWord = this.dk.user.basicOptions.wholeWord; + } + if (wholeWord) { + if (result && result.toLowerCase().trim() === filter.value.toLowerCase().trim()) { + filterAcceptCount++; + } + } + else { + if (result && result.toLowerCase().trim().indexOf(filter.value.toLowerCase().trim()) > -1) { + filterAcceptCount++; + } } break; case 'not in': diff --git a/packages/core.gbapp/services/GBMinService.ts b/packages/core.gbapp/services/GBMinService.ts index b39365a0..f99124e1 100644 --- a/packages/core.gbapp/services/GBMinService.ts +++ b/packages/core.gbapp/services/GBMinService.ts @@ -812,11 +812,14 @@ export class GBMinService { const sec = new SecService(); if (!user.loaded) { + + await min.conversationalService.sendEvent(min, step, 'loadInstance', {}); + user.loaded = true; user.subjects = []; user.cb = undefined; user.welcomed = false; - user.basicOptions = { maxLines: 100, translatorOn: true }; + user.basicOptions = { maxLines: 100, translatorOn: true , wholeWord: true}; firstTime = true; @@ -888,6 +891,7 @@ export class GBMinService { // Answer to specific BOT Framework event conversationUpdate to auto start dialogs. // Skips if the bot is talking. + const startDialog = min.core.getParam(min.instance, 'Start Dialog', null); if (context.activity.type === 'conversationUpdate' && context.activity.membersAdded.length > 0) { @@ -906,19 +910,22 @@ export class GBMinService { // Auto starts dialogs if any is specified. - const startDialog = min.core.getParam(min.instance, 'Start Dialog', null); if (!startDialog && !user.welcomed) { // Otherwise, calls / (root) to default welcome users. await step.beginDialog('/'); } + else { + user.welcomed = true; + GBLog.info(`Auto start (web) dialog is now being called: ${startDialog} for ${min.instance.instanceId}...`); + await GBVMService.callVM(startDialog.toLowerCase(), min, step, this.deployer); + } } else { GBLog.info(`Person added to conversation: ${member.name}`); - if (this.userMobile(step)) { - const startDialog = min.core.getParam(min.instance, 'Start Dialog', null); + if (this.userMobile(step) ) { if (startDialog && !user.welcomed) { user.welcomed = true; GBLog.info(`Auto start (whatsapp) dialog is now being called: ${startDialog} for ${min.instance.instanceId}...`); diff --git a/packages/default.gbui/src/GBUIApp.js b/packages/default.gbui/src/GBUIApp.js index 4f29f0b5..6cb2579d 100644 --- a/packages/default.gbui/src/GBUIApp.js +++ b/packages/default.gbui/src/GBUIApp.js @@ -77,15 +77,17 @@ class GBUIApp extends React.Component { } send(command) { - window.line - .postActivity({ - type: 'event', - name: command, - locale: 'en-us', - textFormat: 'plain', - timestamp: new Date().toISOString(), - from: this.getUser() - }); + + window.line + .postActivity({ + type: 'event', + name: command, + locale: 'en-us', + textFormat: 'plain', + timestamp: new Date().toISOString(), + from: this.getUser() + }); + } getUser() { @@ -93,19 +95,6 @@ class GBUIApp extends React.Component { return { id: 'web@gb', name: 'You' }; } - postEvent(name, item) { - setTimeout(() => { - window['botConnection'].postActivity({ - type: "event", - name: name, - data: item, - locale: "en-us", - textFormat: "plain", - timestamp: new Date().toISOString(), - from: window.user - }) - }, 400); - } postMessage(value) { window.line.postActivity({ type: 'message', @@ -161,8 +150,8 @@ class GBUIApp extends React.Component { ); window.userAgentApplication = userAgentApplication; - if (!userAgentApplication.isCallback(window.location.hash) && window.parent === window - && !window.opener && userAgentApplication.getUser) { + if (!userAgentApplication.isCallback(window.location.hash) && window.parent === window + && !window.opener && userAgentApplication.getUser) { var user = userAgentApplication.getUser(); if (user) { userAgentApplication.acquireTokenSilent(graphScopes).then( @@ -184,25 +173,25 @@ class GBUIApp extends React.Component { const line = new DirectLine({ token: instanceClient.webchatToken }); - _this_.setState({ line: line}); + _this_.setState({ line: line }); line.connectionStatus$.subscribe(connectionStatus => { if (connectionStatus === ConnectionStatus.Online) { - _this_.setState({ instanceClient: instanceClient}); - window['botConnection'] = line; + _this_.setState({ instanceClient: instanceClient }); + window['botConnection'] = line; } }); window.line = line; line.activity$ - .filter(activity => activity.type === 'event' && activity.name === 'loadInstance') - .subscribe(() => { - this.postEvent('startGB', true); - _this_.authenticate(); - }); + .filter(activity => activity.type === 'event' && activity.name === 'loadInstance') + .subscribe(() => { + _this_.send('startGB'); + _this_.authenticate(); + }); - line.activity$ + line.activity$ .filter(activity => activity.type === 'event' && activity.name === 'stop') .subscribe(() => { if (_this_.player) { @@ -317,12 +306,12 @@ class GBUIApp extends React.Component { if (this.state.line) { if (this.state.instanceClient) { - + gbCss = ; seo = ; } - // let speechOptions; + // let speechOptions; // let token = this.state.instanceClient.speechToken; // speechOptions = {