松弛斜杠命令有效,但发送“失败,错误为“ operation_timeout”“

时间:2020-03-24 13:49:23

标签: slack slack-api slack-commands

我有一个问题,可能是愚蠢的斜线命令。

我配置了一个/ command,简单地询问一些有关covid感染的数据,该数据将在请求时获取,答案运行良好,但是经过一秒钟(3000毫秒超时)后,我收到一条错误消息“失败,错误为“ operation_timeout” “

阅读Slack文档,我必须发送一条确认后消息,我认为这是通过发送带有消息的后响应来完成的,对吗?还是我必须先发送答案,然后再发送消息?

这是代码:

app.post('/covid', async (req, res) => {
console.log(req.body)
const respUrl = req.body.response_url
slackBody = {
    "text": "Test"
}

await axios.post(respUrl, JSON.stringify(slackBody), {
    headers: {
        'Content-Type': 'application/json',
    }
})
            .then(function (response) {
                console.log(response.data);
                console.log(response.status);
                console.log(response.statusText);
                console.log(response.headers);
                console.log(response.config);
            })
            .catch((e) => console.log(e))
})

This is the result

这是Axios的响应。

{
  url: 'https://hooks.slack.com/commands/TU7AFJ1RU/1022360678069/tTuQ4NJhgmnb58FNPeubZUR5',
  method: 'post',
  data: '{"text":"Test"}',
  headers: {
  Accept: 'application/json, text/plain, */*',
  'Content-Type': 'application/json',
  'User-Agent': 'axios/0.19.2',
 'Content-Length': 15
},
transformRequest: [ [Function: transformRequest] ],
transformResponse: [ [Function: transformResponse] ],
timeout: 0,
adapter: [Function: httpAdapter],
xsrfCookieName: 'XSRF-TOKEN',
xsrfHeaderName: 'X-XSRF-TOKEN',
maxContentLength: -1,
validateStatus: [Function: validateStatus]
}

对于这个棘手的问题,我要从8小时开始努力。感谢您的帮助:)


更新

亲爱的社区,我用简单的

解决了这个问题
res.send(slackBody)

删除所有axios配置,现在我收到一条简单的消息,如果我发送对象,则将松弛块可视化Array而不是消息...

1 个答案:

答案 0 :(得分:3)

很高兴您已经解决了它!同时,Slack期望200状态within 3 seconds,如果它没有得到任何响应,那么它将抛出“操作超时”错误。您还可以使用从Slash命令有效负载中获得的response_url向松弛通道发送确认。要了解更多,https://api.slack.com/interactivity/handling#message_responses