解决Slack Endpoint Ruby的问题

时间:2017-04-28 15:18:31

标签: ruby curl slack-api

我在通过ruby脚本发布到松散的端点时遇到了麻烦我写了:

#!/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

如果有人知道我做错了什么,我将不胜感激!此外,我不想要求任何模块,我也不需要。

2 个答案:

答案 0 :(得分:2)

您将频道指定为数组,因此,如果您未指定将哪个值或索引添加为请求中的数组。如果您有多次尝试迭代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请求中,不需要用引号指定。

并且您不需要使用反斜杠来加入参数,只需要&

答案 1 :(得分:1)

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

slack_rooms = '#test-notification-channel'

它按预期工作。