Просмотр исходного кода

fix(slackbot): Respond bad gateway error & improved help message (#4470)

* Fixed respond bad gateway error & Improved help message

* Added proxy side try-catch for axios request

* Added logger
Haku Mizuki 4 лет назад
Родитель
Сommit
42e2fbd1f4

+ 11 - 6
packages/app/src/server/routes/apiv3/slack-integration.js

@@ -249,12 +249,17 @@ module.exports = (crowi) => {
     // Send response immediately to avoid opelation_timeout error
     // See https://api.slack.com/apis/connections/events-api#the-events-api__responding-to-events
     const appSiteUrl = crowi.appService.getSiteUrl();
-    await respondUtil.respond({
-      text: 'Processing your request ...',
-      blocks: [
-        markdownSectionBlock(`Processing your request *"/growi ${growiCommand.growiCommandType}"* on GROWI at ${appSiteUrl} ...`),
-      ],
-    });
+    try {
+      await respondUtil.respond({
+        text: 'Processing your request ...',
+        blocks: [
+          markdownSectionBlock(`Processing your request *"/growi ${growiCommand.growiCommandType}"* on GROWI at ${appSiteUrl} ...`),
+        ],
+      });
+    }
+    catch (err) {
+      logger.error('Error occurred while request via axios:', err);
+    }
 
     try {
       await crowi.slackIntegrationService.handleCommandRequest(growiCommand, client, body, respondUtil);

+ 5 - 1
packages/app/src/server/service/slack-command-handler/help.js

@@ -5,13 +5,17 @@
 
 const { markdownSectionBlock } = require('@growi/slack');
 
-module.exports = () => {
+module.exports = (crowi) => {
   const BaseSlackCommandHandler = require('./slack-command-handler');
   const handler = new BaseSlackCommandHandler();
 
   handler.handleCommand = async(growiCommand, client, body, respondUtil) => {
+    const appTitle = crowi.appService.getAppTitle();
+    const appSiteUrl = crowi.appService.getSiteUrl();
     // adjust spacing
     let message = '*Help*\n\n';
+    message += `GROWI App Title: *${appTitle}*`;
+    message += `GROWI Url: ${appSiteUrl}`;
     message += 'Usage:     `/growi [command] [args]`\n\n';
     message += 'Commands:\n\n';
     message += '`/growi note`                          Take a note on GROWI\n\n';

+ 8 - 1
packages/slackbot-proxy/src/controllers/growi-to-slack.ts

@@ -275,7 +275,14 @@ export class GrowiToSlackCtrl {
       return res.status(400).send('Failed to respond.');
     }
 
-    return axios.post(responseUrl, req.body);
+    try {
+      await axios.post(responseUrl, req.body);
+    }
+    catch (err) {
+      logger.error('Error occurred while request via axios:', err);
+      return res.status(502).send(err.message);
+    }
+    return res.send();
   }
 
   @Post('/:method')