new(core.gbapp): New bot to any language according to the user language.
This commit is contained in:
parent
f0bb5978d4
commit
d0fecf1a6f
14 changed files with 160 additions and 76 deletions
|
@ -46,6 +46,7 @@ import { GBImporter } from '../../core.gbapp/services/GBImporterService';
|
||||||
import { Messages } from '../strings';
|
import { Messages } from '../strings';
|
||||||
import { GBAdminService } from '../services/GBAdminService';
|
import { GBAdminService } from '../services/GBAdminService';
|
||||||
import { CollectionUtil } from 'pragmatismo-io-framework';
|
import { CollectionUtil } from 'pragmatismo-io-framework';
|
||||||
|
import { GBConversationalService } from '../../core.gbapp/services/GBConversationalService';
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -74,18 +75,18 @@ export class AdminDialog extends IGBDialog {
|
||||||
const locale = step.context.activity.locale;
|
const locale = step.context.activity.locale;
|
||||||
const prompt = Messages[locale].authenticate;
|
const prompt = Messages[locale].authenticate;
|
||||||
|
|
||||||
return await step.prompt('textPrompt', prompt);
|
return await min.conversationalService.prompt (min, step, prompt);
|
||||||
},
|
},
|
||||||
async step => {
|
async step => {
|
||||||
const locale = step.context.activity.locale;
|
const locale = step.context.activity.locale;
|
||||||
const sensitive = step.result;
|
const sensitive = step.result;
|
||||||
|
|
||||||
if (sensitive === min.instance.adminPass) {
|
if (sensitive === min.instance.adminPass) {
|
||||||
await step.context.sendActivity(Messages[locale].welcome);
|
await min.conversationalService.sendText(min, step, Messages[locale].welcome);
|
||||||
|
|
||||||
return await step.prompt('textPrompt', Messages[locale].which_task);
|
return await min.conversationalService.prompt (min, step, Messages[locale].which_task);
|
||||||
} else {
|
} else {
|
||||||
await step.context.sendActivity(Messages[locale].wrong_password);
|
await min.conversationalService.sendText(min, step, Messages[locale].wrong_password);
|
||||||
|
|
||||||
return await step.endDialog();
|
return await step.endDialog();
|
||||||
}
|
}
|
||||||
|
@ -96,7 +97,7 @@ export class AdminDialog extends IGBDialog {
|
||||||
const text: string = step.result;
|
const text: string = step.result;
|
||||||
const cmdName = text.split(' ')[0];
|
const cmdName = text.split(' ')[0];
|
||||||
|
|
||||||
await step.context.sendActivity(Messages[locale].working(cmdName));
|
await min.conversationalService.sendText(min, step, Messages[locale].working(cmdName));
|
||||||
let unknownCommand = false;
|
let unknownCommand = false;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
@ -109,18 +110,18 @@ export class AdminDialog extends IGBDialog {
|
||||||
|
|
||||||
return await step.replaceDialog('/admin', { firstRun: false });
|
return await step.replaceDialog('/admin', { firstRun: false });
|
||||||
} else if (cmdName === 'redeployPackage' || cmdName === 'rp') {
|
} else if (cmdName === 'redeployPackage' || cmdName === 'rp') {
|
||||||
await step.context.sendActivity('The package is being *unloaded*...');
|
await min.conversationalService.sendText(min, step, 'The package is being *unloaded*...');
|
||||||
await GBAdminService.undeployPackageCommand(text, min);
|
await GBAdminService.undeployPackageCommand(text, min);
|
||||||
await step.context.sendActivity('Now, *deploying* package...');
|
await min.conversationalService.sendText(min, step, 'Now, *deploying* package...');
|
||||||
await GBAdminService.deployPackageCommand(min, text, deployer);
|
await GBAdminService.deployPackageCommand(min, text, deployer);
|
||||||
await step.context.sendActivity('Package deployed. Just need to rebuild the index... Doing it right now.');
|
await min.conversationalService.sendText(min, step, 'Package deployed. Just need to rebuild the index... Doing it right now.');
|
||||||
await GBAdminService.rebuildIndexPackageCommand(min, deployer);
|
await GBAdminService.rebuildIndexPackageCommand(min, deployer);
|
||||||
await step.context.sendActivity('Finished importing of that .gbkb package. Thanks.');
|
await min.conversationalService.sendText(min, step, 'Finished importing of that .gbkb package. Thanks.');
|
||||||
return await step.replaceDialog('/admin', { firstRun: false });
|
return await step.replaceDialog('/admin', { firstRun: false });
|
||||||
} else if (cmdName === 'undeployPackage' || cmdName === 'up') {
|
} else if (cmdName === 'undeployPackage' || cmdName === 'up') {
|
||||||
await step.context.sendActivity('The package is being *undeployed*...');
|
await min.conversationalService.sendText(min, step, 'The package is being *undeployed*...');
|
||||||
await GBAdminService.undeployPackageCommand(text, min);
|
await GBAdminService.undeployPackageCommand(text, min);
|
||||||
await step.context.sendActivity('Package *undeployed*.');
|
await min.conversationalService.sendText(min, step, 'Package *undeployed*.');
|
||||||
return await step.replaceDialog('/admin', { firstRun: false });
|
return await step.replaceDialog('/admin', { firstRun: false });
|
||||||
} else if (cmdName === 'rebuildIndex' || cmdName === 'ri') {
|
} else if (cmdName === 'rebuildIndex' || cmdName === 'ri') {
|
||||||
await GBAdminService.rebuildIndexPackageCommand(min, deployer);
|
await GBAdminService.rebuildIndexPackageCommand(min, deployer);
|
||||||
|
@ -137,13 +138,13 @@ export class AdminDialog extends IGBDialog {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (unknownCommand) {
|
if (unknownCommand) {
|
||||||
await step.context.sendActivity(Messages[locale].unknown_command);
|
await min.conversationalService.sendText(min, step, Messages[locale].unknown_command);
|
||||||
} else {
|
} else {
|
||||||
await step.context.sendActivity(Messages[locale].finished_working);
|
await min.conversationalService.sendText(min, step, Messages[locale].finished_working);
|
||||||
}
|
}
|
||||||
|
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
await step.context.sendActivity(error.message);
|
await min.conversationalService.sendText(min, step, error.message);
|
||||||
}
|
}
|
||||||
await step.replaceDialog('/ask', { isReturning: true });
|
await step.replaceDialog('/ask', { isReturning: true });
|
||||||
}
|
}
|
||||||
|
@ -156,14 +157,14 @@ export class AdminDialog extends IGBDialog {
|
||||||
async step => {
|
async step => {
|
||||||
const botId = min.instance.botId;
|
const botId = min.instance.botId;
|
||||||
const locale = step.context.activity.locale;
|
const locale = step.context.activity.locale;
|
||||||
await step.context.sendActivity(Messages[locale].working('Publishing'));
|
await min.conversationalService.sendText(min, step, Messages[locale].working('Publishing'));
|
||||||
|
|
||||||
step.activeDialog.state.options.args = (step.options as any).args;
|
step.activeDialog.state.options.args = (step.options as any).args;
|
||||||
let args = step.activeDialog.state.options.args.split(' ');
|
let args = step.activeDialog.state.options.args.split(' ');
|
||||||
let filename = args[0];
|
let filename = args[0];
|
||||||
const packages = [];
|
const packages = [];
|
||||||
if (filename === null) {
|
if (filename === null) {
|
||||||
await step.context.sendActivity(`Starting publishing for all bot packages...`);
|
await min.conversationalService.sendText(min, step, `Starting publishing for all bot packages...`);
|
||||||
packages.push(`${botId}.gbkb`);
|
packages.push(`${botId}.gbkb`);
|
||||||
packages.push(`${botId}.gbdialog`);
|
packages.push(`${botId}.gbdialog`);
|
||||||
packages.push(`${botId}.gbot`);
|
packages.push(`${botId}.gbot`);
|
||||||
|
@ -171,7 +172,7 @@ export class AdminDialog extends IGBDialog {
|
||||||
packages.push(`${botId}.gbapp`);
|
packages.push(`${botId}.gbapp`);
|
||||||
packages.push(`${botId}.gblib`);
|
packages.push(`${botId}.gblib`);
|
||||||
} else {
|
} else {
|
||||||
await step.context.sendActivity(`Starting publishing for ${filename}...`);
|
await min.conversationalService.sendText(min, step, `Starting publishing for ${filename}...`);
|
||||||
packages.push(filename);
|
packages.push(filename);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -188,16 +189,16 @@ export class AdminDialog extends IGBDialog {
|
||||||
}
|
}
|
||||||
await GBAdminService.deployPackageCommand(min, cmd1, deployer);
|
await GBAdminService.deployPackageCommand(min, cmd1, deployer);
|
||||||
if (packageName.endsWith('.gbkb')) {
|
if (packageName.endsWith('.gbkb')) {
|
||||||
await step.context.sendActivity('Rebuilding my own index, wait a minute, please...');
|
await min.conversationalService.sendText(min, step, 'Rebuilding my own index, wait a minute, please...');
|
||||||
await GBAdminService.rebuildIndexPackageCommand(min, deployer);
|
await GBAdminService.rebuildIndexPackageCommand(min, deployer);
|
||||||
}
|
}
|
||||||
await step.context.sendActivity(`Finished publishing ${packageName}.`);
|
await min.conversationalService.sendText(min, step, `Finished publishing ${packageName}.`);
|
||||||
});
|
});
|
||||||
|
|
||||||
return await step.replaceDialog('/ask', { isReturning: true });
|
return await step.replaceDialog('/ask', { isReturning: true });
|
||||||
|
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
await step.context.sendActivity(error.message);
|
await min.conversationalService.sendText(min, step, error.message);
|
||||||
}
|
}
|
||||||
await step.replaceDialog('/ask', { isReturning: true });
|
await step.replaceDialog('/ask', { isReturning: true });
|
||||||
|
|
||||||
|
@ -212,14 +213,14 @@ export class AdminDialog extends IGBDialog {
|
||||||
const locale = step.context.activity.locale;
|
const locale = step.context.activity.locale;
|
||||||
const prompt = Messages[locale].enter_authenticator_tenant;
|
const prompt = Messages[locale].enter_authenticator_tenant;
|
||||||
|
|
||||||
return await step.prompt('textPrompt', prompt);
|
return await min.conversationalService.prompt (min, step, prompt);
|
||||||
},
|
},
|
||||||
async step => {
|
async step => {
|
||||||
step.activeDialog.state.authenticatorTenant = step.result;
|
step.activeDialog.state.authenticatorTenant = step.result;
|
||||||
const locale = step.context.activity.locale;
|
const locale = step.context.activity.locale;
|
||||||
const prompt = Messages[locale].enter_authenticator_authority_host_url;
|
const prompt = Messages[locale].enter_authenticator_authority_host_url;
|
||||||
|
|
||||||
return await step.prompt('textPrompt', prompt);
|
return await min.conversationalService.prompt (min, step, prompt);
|
||||||
},
|
},
|
||||||
async step => {
|
async step => {
|
||||||
step.activeDialog.state.authenticatorAuthorityHostUrl = step.result;
|
step.activeDialog.state.authenticatorAuthorityHostUrl = step.result;
|
||||||
|
@ -244,7 +245,7 @@ export class AdminDialog extends IGBDialog {
|
||||||
'/token'
|
'/token'
|
||||||
)}&state=${state}&response_mode=query`;
|
)}&state=${state}&response_mode=query`;
|
||||||
|
|
||||||
await step.context.sendActivity(Messages[locale].consent(url));
|
await min.conversationalService.sendText(min, step, Messages[locale].consent(url));
|
||||||
|
|
||||||
return await step.replaceDialog('/ask', { isReturning: true });
|
return await step.replaceDialog('/ask', { isReturning: true });
|
||||||
}
|
}
|
||||||
|
|
|
@ -42,6 +42,7 @@ import { GBMinInstance, IGBDialog } from 'botlib';
|
||||||
import { Messages } from '../strings';
|
import { Messages } from '../strings';
|
||||||
import { SecService } from '../../security.gblib/services/SecService';
|
import { SecService } from '../../security.gblib/services/SecService';
|
||||||
import { GBServer } from '../../../src/app';
|
import { GBServer } from '../../../src/app';
|
||||||
|
import { GBConversationalService } from '../services/GBConversationalService';
|
||||||
/**
|
/**
|
||||||
* Dialog for the bot explains about itself.
|
* Dialog for the bot explains about itself.
|
||||||
*/
|
*/
|
||||||
|
@ -58,7 +59,7 @@ export class SwitchBotDialog extends IGBDialog {
|
||||||
async step => {
|
async step => {
|
||||||
const locale = step.context.activity.locale;
|
const locale = step.context.activity.locale;
|
||||||
|
|
||||||
return await step.prompt('textPrompt', "Qual seria o código de ativação?");
|
return await min.conversationalService.prompt (min, step, "Qual seria o código de ativação?");
|
||||||
},
|
},
|
||||||
async step => {
|
async step => {
|
||||||
let sec = new SecService();
|
let sec = new SecService();
|
||||||
|
@ -66,7 +67,7 @@ export class SwitchBotDialog extends IGBDialog {
|
||||||
const botId = step.result;
|
const botId = step.result;
|
||||||
const instance = await min.core.loadInstanceByBotId(botId);
|
const instance = await min.core.loadInstanceByBotId(botId);
|
||||||
await sec.updateUserInstance(from, instance.instanceId);
|
await sec.updateUserInstance(from, instance.instanceId);
|
||||||
await step.context.sendActivity(`Opa, vamos lá!`);
|
await min.conversationalService.sendText(min, step, `Opa, vamos lá!`);
|
||||||
|
|
||||||
return await step.next();
|
return await step.next();
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,6 +41,7 @@ import {WaterfallDialog } from 'botbuilder-dialogs';
|
||||||
import { GBMinInstance, IGBDialog } from 'botlib';
|
import { GBMinInstance, IGBDialog } from 'botlib';
|
||||||
import { Messages } from '../strings';
|
import { Messages } from '../strings';
|
||||||
import { GBServer } from '../../../src/app';
|
import { GBServer } from '../../../src/app';
|
||||||
|
import { GBConversationalService } from '../services/GBConversationalService';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Dialog for Welcoming people.
|
* Dialog for Welcoming people.
|
||||||
|
@ -79,7 +80,7 @@ export class WelcomeDialog extends IGBDialog {
|
||||||
? Messages[locale].good_evening
|
? Messages[locale].good_evening
|
||||||
: Messages[locale].good_night;
|
: Messages[locale].good_night;
|
||||||
|
|
||||||
await step.context.sendActivity(Messages[locale].hi(msg));
|
await min.conversationalService.sendText(min, step, Messages[locale].hi(msg));
|
||||||
await step.replaceDialog('/ask', { firstTime: true });
|
await step.replaceDialog('/ask', { firstTime: true });
|
||||||
|
|
||||||
if (
|
if (
|
||||||
|
|
|
@ -40,6 +40,7 @@ import { BotAdapter } from 'botbuilder';
|
||||||
import { WaterfallDialog } from 'botbuilder-dialogs';
|
import { WaterfallDialog } from 'botbuilder-dialogs';
|
||||||
import { GBMinInstance, IGBDialog } from 'botlib';
|
import { GBMinInstance, IGBDialog } from 'botlib';
|
||||||
import { Messages } from '../strings';
|
import { Messages } from '../strings';
|
||||||
|
import { GBConversationalService } from '../services/GBConversationalService';
|
||||||
/**
|
/**
|
||||||
* Dialog for the bot explains about itself.
|
* Dialog for the bot explains about itself.
|
||||||
*/
|
*/
|
||||||
|
@ -54,11 +55,11 @@ export class WhoAmIDialog extends IGBDialog {
|
||||||
min.dialogs.add(new WaterfallDialog('/whoAmI', [
|
min.dialogs.add(new WaterfallDialog('/whoAmI', [
|
||||||
async step => {
|
async step => {
|
||||||
const locale = step.context.activity.locale;
|
const locale = step.context.activity.locale;
|
||||||
await step.context.sendActivity(`${min.instance.description}`);
|
await min.conversationalService.sendText(min, step, `${min.instance.description}`);
|
||||||
|
|
||||||
if (min.instance.whoAmIVideo !== undefined) {
|
if (min.instance.whoAmIVideo !== undefined) {
|
||||||
await step.context.sendActivity(Messages[locale].show_video);
|
await min.conversationalService.sendText(min, step, Messages[locale].show_video);
|
||||||
await min.conversationalService.sendEvent(step, 'play', {
|
await min.conversationalService.sendEvent(min, step, 'play', {
|
||||||
playerType: 'video',
|
playerType: 'video',
|
||||||
data: min.instance.whoAmIVideo.trim()
|
data: min.instance.whoAmIVideo.trim()
|
||||||
});
|
});
|
||||||
|
|
|
@ -43,6 +43,7 @@ import { GBDeployer } from './GBDeployer';
|
||||||
const MicrosoftGraph = require("@microsoft/microsoft-graph-client");
|
const MicrosoftGraph = require("@microsoft/microsoft-graph-client");
|
||||||
import { Messages } from "../strings";
|
import { Messages } from "../strings";
|
||||||
import { GBServer } from '../../../src/app';
|
import { GBServer } from '../../../src/app';
|
||||||
|
import { GBConversationalService } from './GBConversationalService';
|
||||||
const request = require('request-promise-native');
|
const request = require('request-promise-native');
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -294,7 +295,7 @@ export class DialogClass {
|
||||||
async step => {
|
async step => {
|
||||||
const locale = step.context.activity.locale;
|
const locale = step.context.activity.locale;
|
||||||
if ((step.options as any).ask) {
|
if ((step.options as any).ask) {
|
||||||
await step.context.sendActivity(Messages[locale].whats_email);
|
await min.conversationalService.sendText(min, step, Messages[locale].whats_email);
|
||||||
}
|
}
|
||||||
return await step.prompt("textPrompt", {});
|
return await step.prompt("textPrompt", {});
|
||||||
},
|
},
|
||||||
|
@ -308,7 +309,7 @@ export class DialogClass {
|
||||||
const value = extractEntity(step.result);
|
const value = extractEntity(step.result);
|
||||||
|
|
||||||
if (value === null) {
|
if (value === null) {
|
||||||
await step.context.sendActivity(Messages[locale].validation_enter_valid_email);
|
await min.conversationalService.sendText(min, step, Messages[locale].validation_enter_valid_email);
|
||||||
return await step.replaceDialog('/gbasic-email', { ask: true });
|
return await step.replaceDialog('/gbasic-email', { ask: true });
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -378,6 +379,6 @@ export class DialogClass {
|
||||||
}
|
}
|
||||||
|
|
||||||
public async talk(step, text: string) {
|
public async talk(step, text: string) {
|
||||||
return await step.context.sendActivity(text);
|
return await this.min.conversationalService.sendText(this.min, step, text);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -99,7 +99,7 @@ export class GBConversationalService {
|
||||||
await min.whatsAppDirectLine.sendFileToDevice(mobile, url, filename, caption);
|
await min.whatsAppDirectLine.sendFileToDevice(mobile, url, filename, caption);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
await step.context.sendActivity(url);
|
await min.conversationalService.sendText(min, step, url);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -109,7 +109,7 @@ export class GBConversationalService {
|
||||||
await min.whatsAppDirectLine.sendAudioToDevice(mobile, url);
|
await min.whatsAppDirectLine.sendAudioToDevice(mobile, url);
|
||||||
}
|
}
|
||||||
|
|
||||||
public async sendEvent(step: GBDialogStep, name: string, value: Object): Promise<any> {
|
public async sendEvent(min: GBMinInstance, step: GBDialogStep, name: string, value: Object): Promise<any> {
|
||||||
if (step.context.activity.channelId === 'webchat') {
|
if (step.context.activity.channelId === 'webchat') {
|
||||||
const msg = MessageFactory.text('');
|
const msg = MessageFactory.text('');
|
||||||
msg.value = value;
|
msg.value = value;
|
||||||
|
@ -439,6 +439,7 @@ export class GBConversationalService {
|
||||||
if (currentText !== '') {
|
if (currentText !== '') {
|
||||||
if (mobile === null) {
|
if (mobile === null) {
|
||||||
await step.context.sendActivity(currentText);
|
await step.context.sendActivity(currentText);
|
||||||
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
this.sendToMobile(min, mobile, currentText);
|
this.sendToMobile(min, mobile, currentText);
|
||||||
|
@ -555,6 +556,22 @@ export class GBConversationalService {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async prompt(min: GBMinInstance, step: GBDialogStep, text: string) {
|
||||||
|
|
||||||
|
let sec = new SecService();
|
||||||
|
const member = step.context.activity.from;
|
||||||
|
const user = await sec.ensureUser(min.instance.instanceId, member.id,
|
||||||
|
member.name, "", "web", member.name);
|
||||||
|
text = await min.conversationalService.translate(
|
||||||
|
min.instance.translatorKey,
|
||||||
|
min.instance.translatorEndpoint,
|
||||||
|
text,
|
||||||
|
user.locale ? user.locale : 'pt'
|
||||||
|
);
|
||||||
|
|
||||||
|
return await step.prompt("textPrompt", text ? text : {});
|
||||||
|
}
|
||||||
|
|
||||||
public async sendText(min, step, text) {
|
public async sendText(min, step, text) {
|
||||||
|
|
||||||
let sec = new SecService();
|
let sec = new SecService();
|
||||||
|
@ -565,9 +582,10 @@ export class GBConversationalService {
|
||||||
min.instance.translatorKey,
|
min.instance.translatorKey,
|
||||||
min.instance.translatorEndpoint,
|
min.instance.translatorEndpoint,
|
||||||
text,
|
text,
|
||||||
user.locale
|
user.locale? user.locale: 'pt'
|
||||||
);
|
);
|
||||||
|
|
||||||
|
await step.context.sendActivity(text);
|
||||||
}
|
}
|
||||||
|
|
||||||
public async checkLanguage(step: GBDialogStep, min, text) {
|
public async checkLanguage(step: GBDialogStep, min, text) {
|
||||||
|
@ -576,14 +594,14 @@ export class GBConversationalService {
|
||||||
switch (locale) {
|
switch (locale) {
|
||||||
case 'pt':
|
case 'pt':
|
||||||
step.context.activity.locale = 'pt-BR';
|
step.context.activity.locale = 'pt-BR';
|
||||||
await step.context.sendActivity(Messages[locale].changing_language);
|
await min.conversationalService.sendText(min, step, Messages[locale].changing_language);
|
||||||
break;
|
break;
|
||||||
case 'en':
|
case 'en':
|
||||||
step.context.activity.locale = 'en-US';
|
step.context.activity.locale = 'en-US';
|
||||||
await step.context.sendActivity(Messages[locale].changing_language);
|
await min.conversationalService.sendText(min, step, Messages[locale].changing_language);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
await step.context.sendActivity(`; Unknown; language: $;{locale;}`);
|
await min.conversationalService.sendText(min, step, `; Unknown; language: $;{locale;}`);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -68,6 +68,7 @@ import { SecService } from '../../security.gblib/services/SecService';
|
||||||
import { AnalyticsService } from '../../analytics.gblib/services/AnalyticsService';
|
import { AnalyticsService } from '../../analytics.gblib/services/AnalyticsService';
|
||||||
import { WhatsappDirectLine } from '../../whatsapp.gblib/services/WhatsappDirectLine';
|
import { WhatsappDirectLine } from '../../whatsapp.gblib/services/WhatsappDirectLine';
|
||||||
import fs = require('fs');
|
import fs = require('fs');
|
||||||
|
import { GBConversationalService } from './GBConversationalService';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Minimal service layer for a bot.
|
* Minimal service layer for a bot.
|
||||||
|
@ -532,7 +533,7 @@ export class GBMinService {
|
||||||
// First time processing.
|
// First time processing.
|
||||||
|
|
||||||
if (!user.loaded) {
|
if (!user.loaded) {
|
||||||
await min.conversationalService.sendEvent(step, 'loadInstance', {
|
await min.conversationalService.sendEvent(min, step, 'loadInstance', {
|
||||||
instanceId: instance.instanceId,
|
instanceId: instance.instanceId,
|
||||||
botId: instance.botId,
|
botId: instance.botId,
|
||||||
theme: instance.theme ? instance.theme : 'default.gbtheme',
|
theme: instance.theme ? instance.theme : 'default.gbtheme',
|
||||||
|
@ -594,7 +595,7 @@ export class GBMinService {
|
||||||
const msg = `ERROR: ${error.message} ${error.stack ? error.stack : ''}`;
|
const msg = `ERROR: ${error.message} ${error.stack ? error.stack : ''}`;
|
||||||
GBLog.error(msg);
|
GBLog.error(msg);
|
||||||
|
|
||||||
await step.context.sendActivity(Messages[step.context.activity.locale].very_sorry_about_error);
|
await min.conversationalService.sendText(min, step, Messages[step.context.activity.locale].very_sorry_about_error);
|
||||||
await step.beginDialog('/ask', { isReturning: true });
|
await step.beginDialog('/ask', { isReturning: true });
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -666,7 +667,7 @@ export class GBMinService {
|
||||||
|
|
||||||
} else if (globalQuit(step.context.activity.locale, context.activity.text)) { // TODO: Hard-code additional languages.
|
} else if (globalQuit(step.context.activity.locale, context.activity.text)) { // TODO: Hard-code additional languages.
|
||||||
await step.cancelAllDialogs();
|
await step.cancelAllDialogs();
|
||||||
await step.context.sendActivity(Messages[step.context.activity.locale].canceled);
|
await min.conversationalService.sendText(min, step, Messages[step.context.activity.locale].canceled);
|
||||||
} else if (context.activity.text === 'admin') {
|
} else if (context.activity.text === 'admin') {
|
||||||
await step.beginDialog('/admin');
|
await step.beginDialog('/admin');
|
||||||
|
|
||||||
|
|
|
@ -44,6 +44,7 @@ const vm = require('vm');
|
||||||
import urlJoin = require('url-join');
|
import urlJoin = require('url-join');
|
||||||
import { DialogClass } from './GBAPIService';
|
import { DialogClass } from './GBAPIService';
|
||||||
import { Messages } from '../strings';
|
import { Messages } from '../strings';
|
||||||
|
import { GBConversationalService } from './GBConversationalService';
|
||||||
//tslint:disable-next-line:no-submodule-imports
|
//tslint:disable-next-line:no-submodule-imports
|
||||||
const vb2ts = require('vbscript-to-typescript/dist/converter');
|
const vb2ts = require('vbscript-to-typescript/dist/converter');
|
||||||
const beautify = require('js-beautify').js;
|
const beautify = require('js-beautify').js;
|
||||||
|
@ -318,7 +319,7 @@ export class GBVMService extends GBService {
|
||||||
step.activeDialog.state.options = {};
|
step.activeDialog.state.options = {};
|
||||||
step.activeDialog.state.options.cbId = (step.options as any).id;
|
step.activeDialog.state.options.cbId = (step.options as any).id;
|
||||||
step.activeDialog.state.options.previousResolve = (step.options as any).previousResolve;
|
step.activeDialog.state.options.previousResolve = (step.options as any).previousResolve;
|
||||||
return await step.prompt('textPrompt', {});
|
return await min.conversationalService.prompt (min, step,null);
|
||||||
},
|
},
|
||||||
async step => {
|
async step => {
|
||||||
const cbId = step.activeDialog.state.options.cbId;
|
const cbId = step.activeDialog.state.options.cbId;
|
||||||
|
|
|
@ -43,6 +43,7 @@ import { AzureText } from 'pragmatismo-io-framework';
|
||||||
import { CSService } from '../services/CSService';
|
import { CSService } from '../services/CSService';
|
||||||
import { Messages } from '../strings';
|
import { Messages } from '../strings';
|
||||||
import { SecService } from '../../security.gblib/services/SecService';
|
import { SecService } from '../../security.gblib/services/SecService';
|
||||||
|
import { GBConversationalService } from '../../core.gbapp/services/GBConversationalService';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Dialog for feedback collecting.
|
* Dialog for feedback collecting.
|
||||||
|
@ -61,7 +62,7 @@ export class FeedbackDialog extends IGBDialog {
|
||||||
new WaterfallDialog('/pleaseNoBadWords', [
|
new WaterfallDialog('/pleaseNoBadWords', [
|
||||||
async step => {
|
async step => {
|
||||||
const locale = step.context.activity.locale;
|
const locale = step.context.activity.locale;
|
||||||
await step.context.sendActivity(Messages[locale].please_no_bad_words);
|
await min.conversationalService.sendText(min, step, Messages[locale].please_no_bad_words);
|
||||||
|
|
||||||
return await step.next();
|
return await step.next();
|
||||||
}
|
}
|
||||||
|
@ -77,7 +78,7 @@ export class FeedbackDialog extends IGBDialog {
|
||||||
let sec = new SecService();
|
let sec = new SecService();
|
||||||
let from = step.context.activity.from.id;
|
let from = step.context.activity.from.id;
|
||||||
|
|
||||||
await step.context.sendActivity(Messages[locale].please_wait_transfering);
|
await min.conversationalService.sendText(min, step, Messages[locale].please_wait_transfering);
|
||||||
let agentSystemId = await sec.assignHumanAgent(from, min.instance.instanceId);
|
let agentSystemId = await sec.assignHumanAgent(from, min.instance.instanceId);
|
||||||
|
|
||||||
await min.whatsAppDirectLine.sendToDevice(agentSystemId,
|
await min.whatsAppDirectLine.sendToDevice(agentSystemId,
|
||||||
|
@ -98,7 +99,7 @@ export class FeedbackDialog extends IGBDialog {
|
||||||
let from = step.context.activity.from.id;
|
let from = step.context.activity.from.id;
|
||||||
|
|
||||||
await sec.updateCurrentAgent(from, min.instance.instanceId, null);
|
await sec.updateCurrentAgent(from, min.instance.instanceId, null);
|
||||||
await step.context.sendActivity(Messages[locale].notify_end_transfer(min.instance.botId));
|
await min.conversationalService.sendText(min, step, Messages[locale].notify_end_transfer(min.instance.botId));
|
||||||
|
|
||||||
return await step.next();
|
return await step.next();
|
||||||
}
|
}
|
||||||
|
@ -118,7 +119,7 @@ export class FeedbackDialog extends IGBDialog {
|
||||||
const rate = step.result.entity;
|
const rate = step.result.entity;
|
||||||
const user = await min.userProfile.get(step.context, {});
|
const user = await min.userProfile.get(step.context, {});
|
||||||
await service.updateConversationRate(user.conversation, rate);
|
await service.updateConversationRate(user.conversation, rate);
|
||||||
await step.context.sendActivity(Messages[locale].thanks);
|
await min.conversationalService.sendText(min, step, Messages[locale].thanks);
|
||||||
|
|
||||||
return await step.next();
|
return await step.next();
|
||||||
}
|
}
|
||||||
|
@ -130,10 +131,10 @@ export class FeedbackDialog extends IGBDialog {
|
||||||
async step => {
|
async step => {
|
||||||
const locale = step.context.activity.locale;
|
const locale = step.context.activity.locale;
|
||||||
|
|
||||||
await step.context.sendActivity(Messages[locale].about_suggestions);
|
await min.conversationalService.sendText(min, step, Messages[locale].about_suggestions);
|
||||||
step.activeDialog.state.cbId = (step.options as any).id;
|
step.activeDialog.state.cbId = (step.options as any).id;
|
||||||
|
|
||||||
return await step.prompt('textPrompt', Messages[locale].what_about_service);
|
return await min.conversationalService.prompt (min, step, Messages[locale].what_about_service);
|
||||||
},
|
},
|
||||||
async step => {
|
async step => {
|
||||||
const locale = step.context.activity.locale;
|
const locale = step.context.activity.locale;
|
||||||
|
@ -145,9 +146,9 @@ export class FeedbackDialog extends IGBDialog {
|
||||||
);
|
);
|
||||||
|
|
||||||
if (rate > 0.5) {
|
if (rate > 0.5) {
|
||||||
await step.context.sendActivity(Messages[locale].glad_you_liked);
|
await min.conversationalService.sendText(min, step, Messages[locale].glad_you_liked);
|
||||||
} else {
|
} else {
|
||||||
await step.context.sendActivity(Messages[locale].we_will_improve);
|
await min.conversationalService.sendText(min, step, Messages[locale].we_will_improve);
|
||||||
}
|
}
|
||||||
|
|
||||||
return await step.replaceDialog('/ask', { isReturning: true });
|
return await step.replaceDialog('/ask', { isReturning: true });
|
||||||
|
|
|
@ -43,6 +43,7 @@ import { WaterfallDialog } from 'botbuilder-dialogs';
|
||||||
import { CSService } from '../services/CSService';
|
import { CSService } from '../services/CSService';
|
||||||
import { Messages } from '../strings';
|
import { Messages } from '../strings';
|
||||||
import { AnalyticsService } from '../../analytics.gblib/services/AnalyticsService';
|
import { AnalyticsService } from '../../analytics.gblib/services/AnalyticsService';
|
||||||
|
import { GBConversationalService } from '../../core.gbapp/services/GBConversationalService';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Dialog for collecting quality of answer.
|
* Dialog for collecting quality of answer.
|
||||||
|
@ -65,14 +66,14 @@ export class QualityDialog extends IGBDialog {
|
||||||
const score = step.result;
|
const score = step.result;
|
||||||
|
|
||||||
setTimeout(
|
setTimeout(
|
||||||
() => min.conversationalService.sendEvent(step, 'stop', undefined),
|
() => min.conversationalService.sendEvent(min, step, 'stop', undefined),
|
||||||
400
|
400
|
||||||
);
|
);
|
||||||
|
|
||||||
if (score === 0) {
|
if (score === 0) {
|
||||||
await step.context.sendActivity(Messages[locale].im_sorry_lets_try);
|
await min.conversationalService.sendText(min, step, Messages[locale].im_sorry_lets_try);
|
||||||
} else {
|
} else {
|
||||||
await step.context.sendActivity(Messages[locale].great_thanks);
|
await min.conversationalService.sendText(min, step, Messages[locale].great_thanks);
|
||||||
|
|
||||||
await service.insertQuestionAlternate(
|
await service.insertQuestionAlternate(
|
||||||
min.instance.instanceId,
|
min.instance.instanceId,
|
||||||
|
|
|
@ -45,6 +45,7 @@ import { KBService } from './../services/KBService';
|
||||||
import { GuaribasAnswer } from '../models';
|
import { GuaribasAnswer } from '../models';
|
||||||
import { GBMinService } from '../../../packages/core.gbapp/services/GBMinService';
|
import { GBMinService } from '../../../packages/core.gbapp/services/GBMinService';
|
||||||
import { SecService } from '../../security.gblib/services/SecService';
|
import { SecService } from '../../security.gblib/services/SecService';
|
||||||
|
import { GBConversationalService } from '../../core.gbapp/services/GBConversationalService';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Dialog arguments.
|
* Dialog arguments.
|
||||||
|
@ -92,7 +93,7 @@ export class AskDialog extends IGBDialog {
|
||||||
throw new Error('Invalid use of /ask');
|
throw new Error('Invalid use of /ask');
|
||||||
}
|
}
|
||||||
if (text.length > 0) {
|
if (text.length > 0) {
|
||||||
return await step.prompt('textPrompt', text);
|
return await min.conversationalService.prompt(min, step, text);
|
||||||
}
|
}
|
||||||
|
|
||||||
return await step.next();
|
return await step.next();
|
||||||
|
@ -101,6 +102,24 @@ export class AskDialog extends IGBDialog {
|
||||||
if (step.result) {
|
if (step.result) {
|
||||||
|
|
||||||
let query = step.result;
|
let query = step.result;
|
||||||
|
|
||||||
|
const locale = await AzureText.getLocale(min.instance.textAnalyticsKey,
|
||||||
|
min.instance.textAnalyticsEndpoint, query);
|
||||||
|
|
||||||
|
let sec = new SecService();
|
||||||
|
const member = step.context.activity.from;
|
||||||
|
|
||||||
|
const user = await sec.ensureUser(min.instance.instanceId, member.id,
|
||||||
|
member.name, "", "web", member.name);
|
||||||
|
user.locale = locale;
|
||||||
|
await user.save();
|
||||||
|
|
||||||
|
query = await min.conversationalService.translate(
|
||||||
|
min.instance.translatorKey,
|
||||||
|
min.instance.translatorEndpoint,
|
||||||
|
query,
|
||||||
|
'pt');
|
||||||
|
GBLog.info(`Translated text: ${query}.`)
|
||||||
return await step.replaceDialog('/answer', { query: query });
|
return await step.replaceDialog('/answer', { query: query });
|
||||||
} else {
|
} else {
|
||||||
return await step.next();
|
return await step.next();
|
||||||
|
@ -114,17 +133,29 @@ export class AskDialog extends IGBDialog {
|
||||||
async step => {
|
async step => {
|
||||||
const user = await min.userProfile.get(step.context, {});
|
const user = await min.userProfile.get(step.context, {});
|
||||||
let text = step.options.query;
|
let text = step.options.query;
|
||||||
|
|
||||||
|
let sec = new SecService();
|
||||||
|
const member = step.context.activity.from;
|
||||||
|
const userDb = await sec.ensureUser(min.instance.instanceId, member.id,
|
||||||
|
member.name, "", "web", member.name);
|
||||||
|
text = await min.conversationalService.translate(
|
||||||
|
min.instance.translatorKey,
|
||||||
|
min.instance.translatorEndpoint,
|
||||||
|
text,
|
||||||
|
userDb.locale ? userDb.locale : 'pt'
|
||||||
|
);
|
||||||
|
|
||||||
if (!text) {
|
if (!text) {
|
||||||
throw new Error(`/answer being called with no args query text.`);
|
throw new Error(`/answer being called with no args query text.`);
|
||||||
}
|
}
|
||||||
const locale = step.context.activity.locale;
|
const locale = step.context.activity.locale;
|
||||||
// Stops any content on projector.
|
// Stops any content on projector.
|
||||||
await min.conversationalService.sendEvent(step, 'stop', undefined);
|
await min.conversationalService.sendEvent(min, step, 'stop', undefined);
|
||||||
// Handle extra text from FAQ.
|
// Handle extra text from FAQ.
|
||||||
if (step.options && step.options.query) {
|
if (step.options && step.options.query) {
|
||||||
text = step.options.query;
|
text = step.options.query;
|
||||||
} else if (step.options && step.options.fromFaq) {
|
} else if (step.options && step.options.fromFaq) {
|
||||||
await step.context.sendActivity(Messages[locale].going_answer);
|
await min.conversationalService.sendText(min, step, Messages[locale].going_answer);
|
||||||
}
|
}
|
||||||
// Spells check the input text before sending Search or NLP.
|
// Spells check the input text before sending Search or NLP.
|
||||||
if (min.instance.spellcheckerKey !== undefined) {
|
if (min.instance.spellcheckerKey !== undefined) {
|
||||||
|
@ -164,7 +195,7 @@ export class AskDialog extends IGBDialog {
|
||||||
await min.userProfile.set(step.context, user2);
|
await min.userProfile.set(step.context, user2);
|
||||||
// Informs user that a broader search will be used.
|
// Informs user that a broader search will be used.
|
||||||
if (user2.subjects.length > 0) {
|
if (user2.subjects.length > 0) {
|
||||||
await step.context.sendActivity(Messages[locale].wider_answer);
|
await min.conversationalService.sendText(min, step, Messages[locale].wider_answer);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (resultsB.answer)
|
if (resultsB.answer)
|
||||||
|
@ -174,7 +205,7 @@ export class AskDialog extends IGBDialog {
|
||||||
return await AskDialog.handleAnswer(service, min, step, resultsA.answer);
|
return await AskDialog.handleAnswer(service, min, step, resultsA.answer);
|
||||||
} else {
|
} else {
|
||||||
if (!(await min.conversationalService.routeNLP(step, min, text))) {
|
if (!(await min.conversationalService.routeNLP(step, min, text))) {
|
||||||
await step.context.sendActivity(Messages[locale].did_not_find);
|
await min.conversationalService.sendText(min, step, Messages[locale].did_not_find);
|
||||||
|
|
||||||
return await step.replaceDialog('/ask', { isReturning: true });
|
return await step.replaceDialog('/ask', { isReturning: true });
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,6 +41,7 @@ import { WaterfallDialog } from 'botbuilder-dialogs';
|
||||||
import { GBMinInstance, IGBDialog } from 'botlib';
|
import { GBMinInstance, IGBDialog } from 'botlib';
|
||||||
import { Messages } from '../strings';
|
import { Messages } from '../strings';
|
||||||
import { KBService } from './../services/KBService';
|
import { KBService } from './../services/KBService';
|
||||||
|
import { GBConversationalService } from '../../core.gbapp/services/GBConversationalService';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handle display of FAQ allowing direct access to KB.
|
* Handle display of FAQ allowing direct access to KB.
|
||||||
|
@ -61,12 +62,12 @@ export class FaqDialog extends IGBDialog {
|
||||||
const data = await service.getFaqBySubjectArray('faq', undefined);
|
const data = await service.getFaqBySubjectArray('faq', undefined);
|
||||||
const locale = step.context.activity.locale;
|
const locale = step.context.activity.locale;
|
||||||
if (data !== undefined) {
|
if (data !== undefined) {
|
||||||
await min.conversationalService.sendEvent(step, 'play', {
|
await min.conversationalService.sendEvent(min, step, 'play', {
|
||||||
playerType: 'bullet',
|
playerType: 'bullet',
|
||||||
data: data.slice(0, 10)
|
data: data.slice(0, 10)
|
||||||
});
|
});
|
||||||
|
|
||||||
await step.context.sendActivity(Messages[locale].see_faq);
|
await min.conversationalService.sendText(min, step, Messages[locale].see_faq);
|
||||||
|
|
||||||
return await step.next();
|
return await step.next();
|
||||||
}
|
}
|
||||||
|
|
|
@ -44,6 +44,7 @@ import { GBMinInstance, IGBDialog } from 'botlib';
|
||||||
import { GuaribasSubject } from '../models';
|
import { GuaribasSubject } from '../models';
|
||||||
import { KBService } from '../services/KBService';
|
import { KBService } from '../services/KBService';
|
||||||
import { Messages } from '../strings';
|
import { Messages } from '../strings';
|
||||||
|
import { GBConversationalService } from '../../core.gbapp/services/GBConversationalService';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Dialog arguments.
|
* Dialog arguments.
|
||||||
|
@ -94,14 +95,14 @@ export class MenuDialog extends IGBDialog {
|
||||||
// Whenever a subject is selected, shows a faq about it.
|
// Whenever a subject is selected, shows a faq about it.
|
||||||
if (user.subjects.length > 0) {
|
if (user.subjects.length > 0) {
|
||||||
const list = await service.getFaqBySubjectArray('menu', user.subjects);
|
const list = await service.getFaqBySubjectArray('menu', user.subjects);
|
||||||
await min.conversationalService.sendEvent(step, 'play', {
|
await min.conversationalService.sendEvent(min, step, 'play', {
|
||||||
playerType: 'bullet',
|
playerType: 'bullet',
|
||||||
data: list.slice(0, 10)
|
data: list.slice(0, 10)
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
user.subjects = [];
|
user.subjects = [];
|
||||||
await step.context.sendActivity(Messages[locale].here_is_subjects);
|
await min.conversationalService.sendText(min, step, Messages[locale].here_is_subjects);
|
||||||
user.isAsking = false;
|
user.isAsking = false;
|
||||||
}
|
}
|
||||||
const msg = MessageFactory.text('');
|
const msg = MessageFactory.text('');
|
||||||
|
@ -133,7 +134,7 @@ export class MenuDialog extends IGBDialog {
|
||||||
if (attachments.length === 0) {
|
if (attachments.length === 0) {
|
||||||
|
|
||||||
if (user.subjects && user.subjects.length > 0) {
|
if (user.subjects && user.subjects.length > 0) {
|
||||||
await step.context.sendActivity(
|
await min.conversationalService.sendText(min, step,
|
||||||
Messages[locale].lets_search(KBService.getFormattedSubjectItems(user.subjects))
|
Messages[locale].lets_search(KBService.getFormattedSubjectItems(user.subjects))
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -54,7 +54,7 @@ import { GuaribasAnswer, GuaribasQuestion, GuaribasSubject } from '../models';
|
||||||
import { Messages } from '../strings';
|
import { Messages } from '../strings';
|
||||||
import { GBConfigService } from './../../core.gbapp/services/GBConfigService';
|
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';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Result for quey on KB data.
|
* Result for quey on KB data.
|
||||||
|
@ -376,7 +376,7 @@ export class KBService implements IGBKBService {
|
||||||
|
|
||||||
public async sendAnswer(min: GBMinInstance, channel: string, step: GBDialogStep, answer: GuaribasAnswer) {
|
public async sendAnswer(min: GBMinInstance, channel: string, step: GBDialogStep, answer: GuaribasAnswer) {
|
||||||
if (answer.content.endsWith('.mp4')) {
|
if (answer.content.endsWith('.mp4')) {
|
||||||
await this.playVideo(min.conversationalService, step, answer);
|
await this.playVideo(min, min.conversationalService, step, answer);
|
||||||
}
|
}
|
||||||
else if (answer.format === '.md') {
|
else if (answer.format === '.md') {
|
||||||
|
|
||||||
|
@ -386,8 +386,8 @@ export class KBService implements IGBKBService {
|
||||||
|
|
||||||
await this.playAudio(min, answer, channel, step, min.conversationalService);
|
await this.playAudio(min, answer, channel, step, min.conversationalService);
|
||||||
} else {
|
} else {
|
||||||
await step.context.sendActivity(answer.content);
|
await min.conversationalService.sendText(min, step, answer.content);
|
||||||
await min.conversationalService.sendEvent(step, 'stop', undefined);
|
await min.conversationalService.sendEvent(min, step, 'stop', undefined);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -411,21 +411,45 @@ export class KBService implements IGBKBService {
|
||||||
html = marked(answer.content);
|
html = marked(answer.content);
|
||||||
if (channel === 'webchat' &&
|
if (channel === 'webchat' &&
|
||||||
GBConfigService.get('DISABLE_WEB') !== 'true') {
|
GBConfigService.get('DISABLE_WEB') !== 'true') {
|
||||||
await this.sendMarkdownToWeb(step, conversationalService, html, answer);
|
|
||||||
|
await this.sendMarkdownToWeb(min, step, conversationalService, html, answer);
|
||||||
}
|
}
|
||||||
else if (channel === 'whatsapp') {
|
else if (channel === 'whatsapp') {
|
||||||
|
let sec = new SecService();
|
||||||
|
const member = step.context.activity.from;
|
||||||
|
const user = await sec.ensureUser(min.instance.instanceId, member.id,
|
||||||
|
member.name, "", "web", member.name);
|
||||||
|
let text = await min.conversationalService.translate(
|
||||||
|
min.instance.translatorKey,
|
||||||
|
min.instance.translatorEndpoint,
|
||||||
|
answer.content,
|
||||||
|
user.locale ? user.locale : 'pt'
|
||||||
|
);
|
||||||
|
|
||||||
await conversationalService.sendMarkdownToMobile(min, step, null, answer.content);
|
await conversationalService.sendMarkdownToMobile(min, step, null, answer.content);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
await step.context.sendActivity(html);
|
await min.conversationalService.sendText(min, step, html);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private async sendMarkdownToWeb(step: GBDialogStep, conversationalService: IGBConversationalService, html: string, answer: GuaribasAnswer) {
|
private async sendMarkdownToWeb(min, step: GBDialogStep, conversationalService: IGBConversationalService, html: string, answer: GuaribasAnswer) {
|
||||||
|
|
||||||
|
let sec = new SecService();
|
||||||
|
const member = step.context.activity.from;
|
||||||
|
const user = await sec.ensureUser(min.instance.instanceId, member.id,
|
||||||
|
member.name, "", "web", member.name);
|
||||||
|
html = await min.conversationalService.translate(
|
||||||
|
min.instance.translatorKey,
|
||||||
|
min.instance.translatorEndpoint,
|
||||||
|
html,
|
||||||
|
user.locale ? user.locale : 'pt'
|
||||||
|
);
|
||||||
|
|
||||||
const locale = step.context.activity.locale;
|
const locale = step.context.activity.locale;
|
||||||
await step.context.sendActivity(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\//g, `src=\"../kb/`);
|
||||||
await conversationalService.sendEvent(step, 'play', {
|
await conversationalService.sendEvent(min, step, 'play', {
|
||||||
playerType: 'markdown',
|
playerType: 'markdown',
|
||||||
data: {
|
data: {
|
||||||
content: html,
|
content: html,
|
||||||
|
@ -437,8 +461,8 @@ export class KBService implements IGBKBService {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private async playVideo(conversationalService: IGBConversationalService, step: GBDialogStep, answer: GuaribasAnswer) {
|
private async playVideo(min, conversationalService: IGBConversationalService, step: GBDialogStep, answer: GuaribasAnswer) {
|
||||||
await conversationalService.sendEvent(step, 'play', {
|
await conversationalService.sendEvent(min, step, 'play', {
|
||||||
playerType: 'video',
|
playerType: 'video',
|
||||||
data: answer.content
|
data: answer.content
|
||||||
});
|
});
|
||||||
|
|
Loading…
Add table
Reference in a new issue