Unauthorized readbody = true при публикации сообщения в чате с веб-крючком - PullRequest
0 голосов
/ 31 января 2019

Попытка отправить сообщение на hangout chat room.Я создал веб-крючок для комнаты и использовал его как URI в следующем коде.Остальные являются базовыми материалами net / http.

require 'net/http'
require 'uri'

message = 'hello'

# prep and send the http request 
uri = URI.parse("https://chat.googleapis.com/v1/spaces/AAAAcroWtl4/messages?key=abc&token=xyz")

request = Net::HTTP::Post.new(uri)
request.content_type = "application/json"
request.body = '"content":[{"type":"text","text":"'+message+'"}]'
req_options = { use_ssl: uri.scheme == "https" }

response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
  http.request(request)
end
puts response.inspect

Ответ содержит следующий текст.

#<Net::HTTPUnauthorized 401 Unauthorized readbody=true>

Что-то не так с телом запроса?

Редактировать: ключ и токен изменены в вопросе.

Этот же код работал с простыми комнатами, с той лишь разницей, что он имел

request["Authorization"] = "Bearer #{access_token}"

Так как токен уже находится в URI, я понял, чтоне будет необходимости.

1 Ответ

0 голосов
/ 31 января 2019

Это сработало для меня

require 'net/http'
require 'uri'
require 'json'

message = 'hello'

# prep and send the http request 
uri = URI.parse("//webhook")
request = Net::HTTP::Post.new(uri)
request['Content-Type'] = "application/json"
request.body = { text: message }.to_json

response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
  http.request(request)
end

puts response.inspect
...