首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用带节点的松弛网络钩子

使用带节点的松弛网络钩子
EN

Stack Overflow用户
提问于 2018-06-06 14:23:59
回答 3查看 5K关注 0票数 3

我正在尝试使用松弛的网钩。我能读到很多关于我应该如何进行的变化,但到目前为止,它们都没有正常工作。

我正在使用request节点模块进行api调用,但如果需要,我可以进行更改。

首先尝试遵循

代码语言:javascript
运行
复制
import request from 'request';
const url = 'https://hooks.slack.com/services/xxx';
const text = '(test)!';
request.post(
  {
    headers : { 'Content-type' : 'application/json' },
    url,
    payload : JSON.stringify({ text }),
  },
  (error, res, body) => console.log(error, body, res.statusCode)
);

我明白了:null 400 'invalid_payload'

下一次尝试遵循

代码语言:javascript
运行
复制
request.post(
  {
    headers : { 'Content-type' : 'application/json' },
    url,
    form : JSON.stringify({ text }),
  },
  (error, res, body) => console.log(error, body, res.statusCode)
);

这一次,它起作用了,但是Slack显示:%28test%29%21而不是(test)!

我错过了什么吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-06-06 15:16:19

基于您的第二个示例和正在工作的邮递员请求--这是我如何让它工作的--请原谅我的更改,因为我现在正在运行旧的节点版本。我不太确定你的数据会是什么样子,你想要张贴到斯拉克,这可能会改变你想要组装这个。

代码语言:javascript
运行
复制
const request = require('request');

const url = 'https://hooks.slack.com/services/xxxxx';
const text = '(test)!';
request.post(
  {
    headers : { 'Content-type' : 'application/json' },
    url,
    form : {payload: JSON.stringify({ text } )}
  },
  (error, res, body) => console.log(error, body, res.statusCode)
);

如果您想使用请求,您可能需要检查松弛节点是如何发布数据的,这里是来自松弛节点的相关片段。

代码语言:javascript
运行
复制
Slack.prototype.webhook = function(options, callback) {
    var emoji, payload;
    emoji = this.detectEmoji(options.icon_emoji);
    payload = {
      response_type: options.response_type || 'ephemeral',
      channel: options.channel,
      text: options.text,
      username: options.username,
      attachments: options.attachments,
      link_names: options.link_names || 0
    };
    payload[emoji.key] = emoji.val;
    return request({
      method: "POST",
      url: this.webhookUrl,
      body: JSON.stringify(payload),
      timeout: this.timeout,
      maxAttempts: this.maxAttempts,
      retryDelay: 0
    }, function(err, body, response) {
      if (err != null) {
        return callback(err);
      }
      return callback(null, {
        status: err || response !== "ok" ? "fail" : "ok",
        statusCode: body.statusCode,
        headers: body.headers,
        response: response
      });
    });
  };
票数 4
EN

Stack Overflow用户

发布于 2018-06-06 14:31:36

您可以尝试松弛节点模块,将post封装到钩子上。这里是我用来推送AWS实例通知的一个简化的修改的真实世界示例。

更改编辑以使用文本

现在,使用松弛节点,您自己组装{},自己添加文本:和其他参数,并将其传递给.webhook。

代码语言:javascript
运行
复制
const Slack = require('slack-node');

const webhookUri = 'https://hooks.slack.com/services/xxxxx';
const slack = new Slack();
slack.setWebhook(webhookUri);

text = "(test)!"

slack.webhook({
        text: text
        // text: JSON.stringify({ text })
    }, function(err, response) {
       console.log(err, response);
});
票数 1
EN

Stack Overflow用户

发布于 2018-06-07 07:43:50

最后,我使用了松弛网钩,我更喜欢它而不是松弛节点。d parolin的解决方案是对我问题的最好回答,但我想提到pthm的工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50722837

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档