【问题标题】:Trouble With Post Request to Slack Endpoint Ruby发布请求到 Slack Endpoint Ruby 的问题
【发布时间】:2017-04-28 15:18:31
【问题描述】:

我无法通过我正在编写的 ruby​​ 脚本发布到 slack 端点:

#!/usr/bin/env ruby
#Notification Script Test

def send_slack_message
    slack_rooms = [ '#test_channel_notify' ]
    slack_token_file = (File.join(ENV['HOME'], '.slack_api_token'))
    slack_api_token = (File.open(slack_token_file).readlines)[0].chomp
    msg = 'This is a test message send'
    slack_url = "https://slack.com/api/chat.postMessage"
    %x{curl -X POST -d 'token=#{slack_api_token}\&channel=#{slack_rooms}\&text=#{msg}' '#{slack_url}'} 
end

send_slack_message

在命令行中硬编码所有参数的 curl 命令正常工作,我的消息被发布:

curl -X POST -d 'token=xxxxx-11111111111&channel=#test_channel_notify&text=This is a test' 'https://slack.com/api/chat.postMessage'

但是从脚本中,我只得到以下返回:

 Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   154  100    40  100   114    289    825 --:--:-- --:--:-- --:--:--   832

如果有人知道我做错了什么,将不胜感激!此外,我不想为了做到这一点而需要任何模块,我也不应该这样做。

【问题讨论】:

  • 您期待什么?你怎么知道没用?为什么要使用 curl 而不是 Ruby 可用的几种 HTTP 方法中的任何一种?
  • 我不想下载任何模块,包括 http,我希望在我的频道中看到一条消息。我是从命令行获取的,但不是从我的脚本获取的。
  • 标准 Ruby 库中有一个简单的。

标签: ruby curl slack-api


【解决方案1】:

您将频道指定为数组,因此如果您不指定哪个值或索引,它将作为数组添加到您的请求中。如果您有多个尝试迭代 slack_rooms 数组中的每个值,或者只指定第一个元素“slack_rooms.first”。

%x{curl -X POST -d 'token=#{slack_api_token}&channel=#{slack_rooms.first}&text=#{msg}' #{slack_url}} 

注意slack_url 也是一个变量,但在 curl 请求中不需要用引号指定。

您不需要反斜杠来加入参数,只需 &

【讨论】:

  • 感谢您的回复,我发现阵列也是一个问题。至于在 json 请求的数据中使用双引号还是单引号没有区别,两种方式都进行了测试。另外,我之前在问题中更新了 slack_url,它只是被错误地复制了。
  • 不客气,很有趣,而且你是对的,即使你使用单引号,它也需要值,我已经编辑过,坏事是通过 curl 它没有给出任何输出看看出了什么问题。
【解决方案2】:

问题是我为我的频道指定了一个数组,但只将一个频道传递给我的命令。当我删除数组并测试为:

slack_rooms = '#test-notification-channel'

它按预期工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-03
    • 2014-05-14
    相关资源
    最近更新 更多