我在通过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
如果有人知道我做错了什么,我将不胜感激!此外,我不想要求任何模块,我也不需要。
答案 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'
它按预期工作。