diff --git a/packages/core.gbapp/services/GBAPIService.ts b/packages/core.gbapp/services/GBAPIService.ts index 01ea73b5..fe150266 100644 --- a/packages/core.gbapp/services/GBAPIService.ts +++ b/packages/core.gbapp/services/GBAPIService.ts @@ -468,12 +468,17 @@ export class DialogClass { return [year, month, day].join('/'); } } - + public async isAffirmative(step, text) { + return text.toLowerCase().match(Messages[step.context.activity.locale].affirmative_sentences); + } + public async getNow(step) { - var d = new Date(); - return d.getHours() + ':' + d.getMinutes(); + const nowUTC = new Date(); + const now = new Date((typeof nowUTC === "string" ? + new Date(nowUTC) : + nowUTC).toLocaleString("en-US", {timeZone: process.env.DEFAULT_TIMEZONE})); - // TODO: Choose Fuse with country code or consent IP. + return now.getHours() + ':' + now.getMinutes(); } public async sendFileTo(step, mobile, filename, caption) { diff --git a/packages/core.gbapp/services/GBConversationalService.ts b/packages/core.gbapp/services/GBConversationalService.ts index 0cb93f5d..b427a204 100644 --- a/packages/core.gbapp/services/GBConversationalService.ts +++ b/packages/core.gbapp/services/GBConversationalService.ts @@ -145,9 +145,10 @@ export class GBConversationalService { }); // tslint:disable-next-line:no-unsafe-any nexmo.message.sendSms(min.instance.smsServiceNumber, mobile, text, (err, data) => { - if (data.messages[0]['error-text']) { - GBLog.error(`BASIC: error sending SMS to ${mobile}: ${data.messages[0]['error-text']}`); - reject(data.messages[0]['error-text']); + const message = data.messages ? data.messages[0] : {}; + if (err || message['error-text']) { + GBLog.error(`BASIC: error sending SMS to ${mobile}: ${message['error-text']}`); + reject(message['error-text']); } else { resolve(data); } @@ -467,6 +468,9 @@ export class GBConversationalService { return false; } + text = text.toLowerCase().replace('who\'s', 'who is'); + text = text.toLowerCase().replace('what\'s', 'what is'); + const model = new LuisRecognizer({ applicationId: min.instance.nlpAppId, endpointKey: min.instance.nlpKey, diff --git a/packages/core.gbapp/services/GBMinService.ts b/packages/core.gbapp/services/GBMinService.ts index 917933fd..d486c934 100644 --- a/packages/core.gbapp/services/GBMinService.ts +++ b/packages/core.gbapp/services/GBMinService.ts @@ -186,18 +186,18 @@ export class GBMinService { await sec.updateUserInstance(id, instance.instanceId); await (activeMin as any).whatsAppDirectLine.resetConversationId(id); - await (activeMin as any).whatsAppDirectLine.sendToDevice( - id, - `Agora falando com ${activeMin.instance.title}...` - ); - let startDialog = activeMin.core.getParam(activeMin.instance, 'Start Dialog', null); GBLog.info(`Auto start dialog is now being called: ${startDialog}...`); + if (startDialog) { req.body.messages[0].body = `${startDialog}`; await (activeMin as any).whatsAppDirectLine.received(req, res); } else { + await (activeMin as any).whatsAppDirectLine.sendToDevice( + id, + `Agora falando com ${activeMin.instance.title}...` + ); res.end(); } } else { @@ -797,6 +797,14 @@ export class GBMinService { }); } text = await min.conversationalService.spellCheck(min, text); + if (keepText) { + const list = keepText.split(';'); + let i = 0; + await CollectionUtil.asyncForEach(list, item => { + i++; + text = text.replace(`KEEPTEXT${i}`, item.trim()); + }); + } // Detects user typed language and updates their locale profile if applies. let locale = min.core.getParam( @@ -828,12 +836,28 @@ export class GBMinService { // Translates the input text if is turned on instance params. + if (keepText) { + const list = keepText.split(';'); + let i = 0; + await CollectionUtil.asyncForEach(list, item => { + i++; + text = text.replace(new RegExp(item.trim(), 'gi'), `KEEPTEXT${i}`); + }); + } let contentLocale = min.core.getParam( min.instance, 'Default Content Language', GBConfigService.get('DEFAULT_CONTENT_LANGUAGE') ); + if (keepText) { + const list = keepText.split(';'); + let i = 0; + await CollectionUtil.asyncForEach(list, item => { + i++; + text = text.replace(new RegExp(item.trim(), 'gi'), `KEEPTEXT${i}`); + }); + } text = await min.conversationalService.translate(min, text, contentLocale); if (keepText) { diff --git a/packages/core.gbapp/strings.ts b/packages/core.gbapp/strings.ts index fe2d54cd..4bada273 100644 --- a/packages/core.gbapp/strings.ts +++ b/packages/core.gbapp/strings.ts @@ -13,7 +13,7 @@ export const Messages = { which_language: "Please, type the language name you would like to talk through.", validation_enter_valid_email: "Please enter a valid e-mail." , language_chosen: "Very good, so let's go..." , - affirmative_sentences: /^(sim|s|positivo|afirmativo|claro|evidente|sem dúvida|confirmo|confirmar|confirmado|uhum)/i, + affirmative_sentences: /^(sim|s|positivo|afirmativo|claro|evidente|sem dúvida|confirmo|confirmar|confirmado|uhum|si|y|yes|sure)/i, }, 'pt-BR': { @@ -28,7 +28,7 @@ export const Messages = { which_language: "Por favor, digite o idioma que você gostaria de usar para conversarmos.", validation_enter_valid_email: "Por favor digite um email válido.", language_chosen: "Muito bem, então vamos lá..." , - affirmative_sentences: /^(sim|s|positivo|afirmativo|claro|evidente|sem dúvida|confirmo|confirmar|confirmado|uhum)/i, + affirmative_sentences: /^(sim|s|positivo|afirmativo|claro|evidente|sem dúvida|confirmo|confirmar|confirmado|uhum|si|y|yes|sure)/i, } };