Cómo publicar en hipchat desde python

Tengo algunas herramientas de python que me gustaría enviar actualizaciones a una sala de hipchat. Hago esto en otros lugares con scripts de shell, así que sé que funciona en nuestro entorno, pero parece que no puedo obtener el token en la API hipchat. Tiene que ser algo simple.

Primero, esto se autentica correctamente y entrega un mensaje:

curl -d "room_id=xxx&from=DummyFrom&message=ThisIsATest&color=green" https://api.hipchat.com/v1/rooms/message?auth_token=yyy 

Pero cuando trato de usar el módulo de “peticiones” de python, me estoy quedando atascado.

 import requests room_id_real="xxx" auth_token_real="yyy" payload={"room_id":room_id_real,"from":"DummyFrom","message":"ThisIsATest","color":"green"} headerdata={"auth_token":auth_token_real,"format":"json"} r=requests.post("https://api.hipchat.com/v1/rooms/message", params=payload, headers=headerdata) print r.ok, r.status_code, r.text 

Aquí está mi información de error:

 False 401 {"error":{"code":401,"type":"Unauthorized","message":"Auth token not found. Please see: https:\/\/www.hipchat.com\/docs\/api\/auth"}} 

Básicamente, parece que no estoy pasando correctamente el token de autenticación. ¿Cómo puedo hacer que esto funcione?

En caso de que ayude, aquí hay un ejemplo de API V2 de trabajo. Encontré que la API de V2 es un poco más sensible para obtener la forma de la solicitud exactamente correcta. Pero, podría ser más prospectivo cumplir con la API V2 (aunque la pregunta original parecía pertenecer a V1).

 #!/usr/bin/env python import json from urllib2 import Request, urlopen V2TOKEN = '--V2 API token goes here--' ROOMID = --room-id-nr-goes-here-- # API V2, send message to room: url = 'https://api.hipchat.com/v2/room/%d/notification' % ROOMID message = "It's a
trap!" headers = { "content-type": "application/json", "authorization": "Bearer %s" % V2TOKEN} datastr = json.dumps({ 'message': message, 'color': 'yellow', 'message_format': 'html', 'notify': False}) request = Request(url, headers=headers, data=datastr) uo = urlopen(request) rawresponse = ''.join(uo) uo.close() assert uo.code == 204

Otro ejemplo básico utilizando peticiones:

 import requests, json amessage = 'Hello World!' room = 'https://api.hipchat.com/v2/room/18REPLACE35/notification' headers = {'Authorization':'Bearer UGetYourOwnAuthKey', 'Content-type':'application/json'} requests.post(url = room, data = json.dumps({'message':amessage}), headers = headers) 

Como dijo Ianzz, intente incluirlo en la cadena de consulta de URL. Aunque torpe (¡es probable que desees hacerlo!), Definitivamente funciona.

La otra extraña peculiaridad son las fichas que obtienes a través de Hipchat; No tuve fin de problemas esta tarde con mi propia ficha personal; Parecía corresponder a v2 beta de la API. Si entras en el Administrador de grupo y obtienes un token desde allí, puede ayudarte.

La vieja pregunta es vieja.

Aquí hay una lista oficial de librerías que usan la interfaz HipChat API v2 https://www.hipchat.com/docs/apiv2/libraries