fix(whastapp.gblib): Fix in pro-active messaging.

This commit is contained in:
Rodrigo Rodriguez 2019-06-18 16:03:19 -03:00
parent 10d2a4afb9
commit 3f710e836b
5 changed files with 22 additions and 28 deletions

View file

@ -373,9 +373,7 @@ STORAGE_SYNC=true
GBLog.info(`Loading sys package: ${e.name}...`);
const p = Object.create(e.prototype) as IGBPackage;
if (e.name === 'GBWhatsappPackage') {
sysPackages.push(p);
}
sysPackages.push(p);
p.loadPackage(core, core.sequelize);
});

View file

@ -111,6 +111,7 @@ export class GBMinService {
bootInstance: IGBInstance,
server: any,
appPackages: IGBPackage[],
sysPackages: IGBPackage[],
instances: IGBInstance[],
deployer: GBDeployer,
proxyAddress: string
@ -137,7 +138,7 @@ export class GBMinService {
// Build bot adapter.
const { min, adapter, conversationState } = await this.buildBotAdapter(instance, proxyAddress);
const { min, adapter, conversationState } = await this.buildBotAdapter(instance, proxyAddress, sysPackages);
// Install default VBA module.
@ -145,7 +146,7 @@ export class GBMinService {
// Call the loadBot context.activity for all packages.
this.invokeLoadBot(appPackages, min, server);
this.invokeLoadBot(appPackages, sysPackages, min, server);
// Serves individual URL for each bot conversational interface...
@ -313,7 +314,7 @@ export class GBMinService {
}
}
private async buildBotAdapter(instance: any, proxyAddress: string) {
private async buildBotAdapter(instance: any, proxyAddress: string, sysPackages: IGBPackage[]) {
const adapter = new BotFrameworkAdapter({
appId: instance.marketplaceId,
appPassword: instance.marketplacePassword
@ -341,7 +342,7 @@ export class GBMinService {
min.cbMap = {};
min.scriptMap = {};
min.sandBoxMap = {};
min.packages = GBServer.globals.sysPackages[0]; // HACK: Whatsapp now.
min.packages = sysPackages;
min.userProfile = conversationState.createProperty('userProfile');
const dialogState = conversationState.createProperty('dialogState');
@ -352,27 +353,17 @@ export class GBMinService {
return { min, adapter, conversationState };
}
private invokeLoadBot(appPackages: any[], min: GBMinInstance, server: any) {
const sysPackages: IGBPackage[] = [];
// NOTE: A semicolon is necessary before this line.
[
GBCorePackage,
GBSecurityPackage,
GBAdminPackage,
GBKBPackage,
GBAnalyticsPackage,
GBCustomerSatisfactionPackage,
GBWhatsappPackage
].forEach(sysPackage => {
const p = Object.create(sysPackage.prototype) as IGBPackage;
p.loadBot(min);
sysPackages.push(p);
if (sysPackage.name === 'GBWhatsappPackage') {
private invokeLoadBot(appPackages: IGBPackage[], sysPackages: IGBPackage[], min: GBMinInstance, server: any) {
let index = 0;
sysPackages.forEach(e => {
e.loadBot(min);
if (index === 6) { // TODO: Remove this magic number and use a map.
const url = '/instances/:botId/whatsapp';
server.post(url, (req, res) => {
(p as any).channel.received(req, res);
(e as any).channel.received(req, res);
});
}
index++;
}, this);
appPackages.forEach(p => {

View file

@ -62,6 +62,10 @@ export class GBWhatsappPackage implements IGBPackage {
}
}
public getChannel() {
return this.channel;
}
public getDialogs(min: GBMinInstance) {
GBLog.verbose(`getDialogs called.`);
}

View file

@ -222,7 +222,8 @@ export class WhatsappDirectLine extends GBService {
};
try {
const result = request.post(options);
// tslint:disable-next-line: await-promise
const result = await request.post(options);
GBLog.info(result);
} catch (error) {
GBLog.error(`Error sending message to Whatsapp provider ${error.message}`);

View file

@ -57,7 +57,7 @@ const appPackages: IGBPackage[] = [];
export class RootData {
public publicAddress: string;
public server: any;
sysPackages: any;
public sysPackages: any[];
}
/**
@ -123,7 +123,7 @@ export class GBServer {
// Deploys system and user packages.
GBLog.info(`Deploying packages...`);
GBServer.globals.sysPackages = core.loadSysPackages(core);
const sysPackages = core.loadSysPackages(core);
await core.checkStorage(azureDeployer);
await deployer.deployPackages(core, server, appPackages);
@ -151,7 +151,7 @@ export class GBServer {
// Builds minimal service infrastructure.
const minService: GBMinService = new GBMinService(core, conversationalService, adminService, deployer);
await minService.buildMin(bootInstance, server, appPackages, instances,
await minService.buildMin(bootInstance, server, appPackages, sysPackages, instances,
deployer, GBServer.globals.publicAddress);
// Deployment of local applications for the first time.