Skip to content

Commit

Permalink
fix(whastapp.gblib): Fix in pro-active messaging.
Browse files Browse the repository at this point in the history
  • Loading branch information
rodrigorodriguez committed Jun 18, 2019
1 parent 10d2a4a commit 3f710e8
Show file tree
Hide file tree
Showing 5 changed files with 22 additions and 28 deletions.
4 changes: 1 addition & 3 deletions packages/core.gbapp/services/GBCoreService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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);
});

Expand Down
33 changes: 12 additions & 21 deletions packages/core.gbapp/services/GBMinService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,7 @@ export class GBMinService {
bootInstance: IGBInstance,
server: any,
appPackages: IGBPackage[],
sysPackages: IGBPackage[],
instances: IGBInstance[],
deployer: GBDeployer,
proxyAddress: string
Expand All @@ -137,15 +138,15 @@ 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.

// DISABLED: deployer.deployPackage(min, 'packages/default.gbdialog');

// 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...

Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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');

Expand All @@ -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 => {
Expand Down
4 changes: 4 additions & 0 deletions packages/whatsapp.gblib/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,10 @@ export class GBWhatsappPackage implements IGBPackage {
}
}

public getChannel() {
return this.channel;
}

public getDialogs(min: GBMinInstance) {
GBLog.verbose(`getDialogs called.`);
}
Expand Down
3 changes: 2 additions & 1 deletion packages/whatsapp.gblib/services/WhatsappDirectLine.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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}`);
Expand Down
6 changes: 3 additions & 3 deletions src/app.ts
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ const appPackages: IGBPackage[] = [];
export class RootData {
public publicAddress: string;
public server: any;
sysPackages: any;
public sysPackages: any[];
}

/**
Expand Down Expand Up @@ -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);

Expand Down Expand Up @@ -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.
Expand Down

0 comments on commit 3f710e8

Please sign in to comment.