Slack传入Webhook API

3
我可以通过CURL将信息POST到Slack的入站API端点,但在尝试下面的代码时它无法工作。我认为格式有误。我该如何解决?
parms = {text: text_for_slack, channel: "#customer_sessions", username: "SessionBot", icon_emoji: ":raised_hands:"}
x = Net::HTTP.post_form(URI.parse(ENV['SessionSlackURL'].to_s), parms.to_s)
1个回答

12

您可以使用两种方法发布内容(来自Slack配置传入Webhook的文本):

向上面的Webhook URL发送数据有两个选项: 1. 将JSON字符串作为负载参数发送到POST请求中 2. 将JSON字符串作为POST请求的正文发送

在正文中使用JSON。

require "net/http"
require "uri"
require "json"

parms = {
    text: text_for_slack, 
    channel: "#customer_sessions", 
    username: "SessionBot", 
    icon_emoji: ":raised_hands:"
}

uri = URI.parse(ENV['SessionSlackURL'])
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true

request = Net::HTTP::Post.new(uri.request_uri)
request.body = parms.to_json

response = http.request(request)

将JSON作为参数

parms_form = { 
    "payload" => {
        text: text_for_slack, 
        channel: "#customer_sessions", 
        username: "SessionBot", 
        icon_emoji:":raised_hands:"
        }.to_json
    }

request = Net::HTTP::Post.new(uri.request_uri)
request.set_form_data(parms_form)

这里我一直忽略的微妙之处是需要使用 .to_json 转换 内部 字典,而不是整个 parms_form。谢谢! - Bek

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接