new(all): TRUE multicloud.
This commit is contained in:
		
							parent
							
								
									3d1624ac23
								
							
						
					
					
						commit
						367e45f5f5
					
				
					 3 changed files with 25 additions and 19 deletions
				
			
		| 
						 | 
					@ -173,8 +173,9 @@ export class GBMinService {
 | 
				
			||||||
    await CollectionUtil.asyncForEach(
 | 
					    await CollectionUtil.asyncForEach(
 | 
				
			||||||
      instances,
 | 
					      instances,
 | 
				
			||||||
      (async instance => {
 | 
					      (async instance => {
 | 
				
			||||||
 | 
					        if (!GBConfigService.get('STORAGE_NAME')) {
 | 
				
			||||||
        startRouter(GBServer.globals.server, instance.botId);
 | 
					          startRouter(GBServer.globals.server, instance.botId);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
          GBLog.info(`Mounting ${instance.botId}...`);
 | 
					          GBLog.info(`Mounting ${instance.botId}...`);
 | 
				
			||||||
| 
						 | 
					@ -284,7 +285,7 @@ export class GBMinService {
 | 
				
			||||||
    const gbai = DialogKeywords.getGBAIPath(min.botId);
 | 
					    const gbai = DialogKeywords.getGBAIPath(min.botId);
 | 
				
			||||||
    let dir = `work/${gbai}/cache`;
 | 
					    let dir = `work/${gbai}/cache`;
 | 
				
			||||||
    const botId = gbai.replace(/\.[^/.]+$/, '');
 | 
					    const botId = gbai.replace(/\.[^/.]+$/, '');
 | 
				
			||||||
    
 | 
					
 | 
				
			||||||
    if (!Fs.existsSync(dir)) {
 | 
					    if (!Fs.existsSync(dir)) {
 | 
				
			||||||
      mkdirp.sync(dir);
 | 
					      mkdirp.sync(dir);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
| 
						 | 
					@ -677,12 +678,12 @@ export class GBMinService {
 | 
				
			||||||
      if (!theme) {
 | 
					      if (!theme) {
 | 
				
			||||||
        theme = `default.gbtheme`;
 | 
					        theme = `default.gbtheme`;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
      
 | 
					
 | 
				
			||||||
      let config = {
 | 
					      let config = {
 | 
				
			||||||
        instanceId: instance.instanceId,
 | 
					        instanceId: instance.instanceId,
 | 
				
			||||||
        botId: botId,
 | 
					        botId: botId,
 | 
				
			||||||
        theme: theme,
 | 
					        theme: theme,
 | 
				
			||||||
        speechToken: speechToken,        
 | 
					        speechToken: speechToken,
 | 
				
			||||||
        authenticatorTenant: instance.authenticatorTenant,
 | 
					        authenticatorTenant: instance.authenticatorTenant,
 | 
				
			||||||
        authenticatorClientId: instance.marketplaceId,
 | 
					        authenticatorClientId: instance.marketplaceId,
 | 
				
			||||||
        paramLogoImageUrl: this.core.getParam(instance, 'Logo Image Url', null),
 | 
					        paramLogoImageUrl: this.core.getParam(instance, 'Logo Image Url', null),
 | 
				
			||||||
| 
						 | 
					@ -699,8 +700,8 @@ export class GBMinService {
 | 
				
			||||||
        config['domain'] = `http://localhost:${process.env.PORT}/directline/${botId}`;
 | 
					        config['domain'] = `http://localhost:${process.env.PORT}/directline/${botId}`;
 | 
				
			||||||
      } else {
 | 
					      } else {
 | 
				
			||||||
        const webchatTokenContainer = await this.getWebchatToken(instance);
 | 
					        const webchatTokenContainer = await this.getWebchatToken(instance);
 | 
				
			||||||
        config['conversationId']= webchatTokenContainer.conversationId,
 | 
					        (config['conversationId'] = webchatTokenContainer.conversationId),
 | 
				
			||||||
        config['webchatToken'] = webchatTokenContainer.token;
 | 
					          (config['webchatToken'] = webchatTokenContainer.token);
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      res.send(JSON.stringify(config));
 | 
					      res.send(JSON.stringify(config));
 | 
				
			||||||
| 
						 | 
					@ -844,8 +845,7 @@ export class GBMinService {
 | 
				
			||||||
      GBServer.globals.minBoot = min;
 | 
					      GBServer.globals.minBoot = min;
 | 
				
			||||||
      GBServer.globals.minBoot.instance.marketplaceId = GBConfigService.get('MARKETPLACE_ID');
 | 
					      GBServer.globals.minBoot.instance.marketplaceId = GBConfigService.get('MARKETPLACE_ID');
 | 
				
			||||||
      GBServer.globals.minBoot.instance.marketplacePassword = GBConfigService.get('MARKETPLACE_SECRET');
 | 
					      GBServer.globals.minBoot.instance.marketplacePassword = GBConfigService.get('MARKETPLACE_SECRET');
 | 
				
			||||||
    }
 | 
					    } else {
 | 
				
			||||||
    else{
 | 
					 | 
				
			||||||
      url = `/api/messages`;
 | 
					      url = `/api/messages`;
 | 
				
			||||||
      GBServer.globals.server.post(url, receiver);
 | 
					      GBServer.globals.server.post(url, receiver);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -124,7 +124,7 @@ export class GBServer {
 | 
				
			||||||
    process.on('uncaughtException', (err, p) => {
 | 
					    process.on('uncaughtException', (err, p) => {
 | 
				
			||||||
      GBLogEx.error(
 | 
					      GBLogEx.error(
 | 
				
			||||||
        0,
 | 
					        0,
 | 
				
			||||||
        `GBEXCEPTION: ${GBUtil.toYAML(JSON.parse(JSON.stringify(err, Object.getOwnPropertyNames(err))))}`
 | 
					        `GBEXCEPTION: ${GBUtil.toYAML(err)}`
 | 
				
			||||||
      );
 | 
					      );
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -140,7 +140,7 @@ export class GBServer {
 | 
				
			||||||
      if (!bypass) {
 | 
					      if (!bypass) {
 | 
				
			||||||
        GBLogEx.error(
 | 
					        GBLogEx.error(
 | 
				
			||||||
          0,
 | 
					          0,
 | 
				
			||||||
          `GBREJECTION: ${GBUtil.toYAML(JSON.parse(JSON.stringify(err, Object.getOwnPropertyNames(err))))}`
 | 
					          `GBREJECTION: ${GBUtil.toYAML(err)}`
 | 
				
			||||||
        );
 | 
					        );
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										22
									
								
								src/util.ts
									
										
									
									
									
								
							
							
						
						
									
										22
									
								
								src/util.ts
									
										
									
									
									
								
							| 
						 | 
					@ -68,14 +68,13 @@ export class GBUtil {
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  public static async getDirectLineClient(min) {
 | 
					  public static async getDirectLineClient(min) {
 | 
				
			||||||
 | 
					 | 
				
			||||||
    let config = {
 | 
					    let config = {
 | 
				
			||||||
      url: `http://127.0.0.1:${GBConfigService.getServerPort()}/api/messages`, 
 | 
					      url: `http://127.0.0.1:${GBConfigService.getServerPort()}/api/messages`,
 | 
				
			||||||
      spec: JSON.parse(Fs.readFileSync('directline-3.0.json', 'utf8')),
 | 
					      spec: JSON.parse(Fs.readFileSync('directline-3.0.json', 'utf8')),
 | 
				
			||||||
      requestInterceptor: req => {
 | 
					      requestInterceptor: req => {
 | 
				
			||||||
        req.headers['Authorization'] = `Bearer ${min.instance.webchatKey}`;
 | 
					        req.headers['Authorization'] = `Bearer ${min.instance.webchatKey}`;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    };    
 | 
					    };
 | 
				
			||||||
    if (!GBConfigService.get('STORAGE_NAME')) {
 | 
					    if (!GBConfigService.get('STORAGE_NAME')) {
 | 
				
			||||||
      config['spec'].servers = [{ url: `http://127.0.0.1:${GBConfigService.getServerPort()}/api/messages` }];
 | 
					      config['spec'].servers = [{ url: `http://127.0.0.1:${GBConfigService.getServerPort()}/api/messages` }];
 | 
				
			||||||
      config['openapi'] = '3.0.0';
 | 
					      config['openapi'] = '3.0.0';
 | 
				
			||||||
| 
						 | 
					@ -83,11 +82,18 @@ export class GBUtil {
 | 
				
			||||||
    return await new SwaggerClient(config);
 | 
					    return await new SwaggerClient(config);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  public static toYAML(json) {
 | 
					  public static toYAML(data) {
 | 
				
			||||||
    const doc = new YAML.Document();
 | 
					    const extractProps = (obj) => {
 | 
				
			||||||
    doc.contents = json;
 | 
					        return Object.getOwnPropertyNames(obj).reduce((acc, key) => {
 | 
				
			||||||
    return doc.toString();
 | 
					            const value = obj[key];
 | 
				
			||||||
  }
 | 
					            acc[key] = value && typeof value === 'object' && !Array.isArray(value) ? extractProps(value) : value;
 | 
				
			||||||
 | 
					            return acc;
 | 
				
			||||||
 | 
					        }, {});
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    const extractedError = extractProps(data);
 | 
				
			||||||
 | 
					    return YAML.stringify(extractedError);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  public static sleep(ms) {
 | 
					  public static sleep(ms) {
 | 
				
			||||||
    return new Promise(resolve => {
 | 
					    return new Promise(resolve => {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		
		Reference in a new issue