我正在制作我的第一个 Hubot 脚本,它将为 Asana 添加一个快速任务。
我不想做任何太疯狂的事情,或者至少不认为我是。
目前我有
url = 'https://app.asana.com/api/1.0'
WORKSPACE = "1111111111111"
user = "xxxxxx.xxxxxxxxxxxxxxxx"
pass = ""
module.exports = (robot) ->
robot.respond /task (.*)/i, (msg) ->
params = {name: "#{msg.match[1]}", workspace: "#{WORKSPACE}"}
stringParams = JSON.stringify params
auth = 'Basic ' + new Buffer("#{user}:#{pass}").toString('base64')
msg.http("#{url}/tasks")
.headers("Authorization": auth, "Content-Length": stringParams.length, "Accept": "application/json")
.query(params)
.post() (err, res, body) ->
console.log(err)
console.log(res)
console.log(body)
msg.send body
我真正想做的就是输出它发布到工作区。我知道 Asana API 还有更多功能可以使其正常工作,但是看着我的日志尾部,没有任何输出,没有任何日志记录到控制台,没有任何事情发生。
如果我在参数下执行 console.log,它将输出 JSON 并且它是正确的,但似乎帖子永远不会发生。
任何方向都会很棒!
谢谢。
编辑
经过更多调整,跟随 Dan 是朝着正确方向迈出的一步,删除 .query() 并将字符串放入 .post() 输出最终是正确的。
module.exports = (robot) ->
robot.respond /task (.*)/i, (msg) ->
params = {data:{name: "#{msg.match[1]}", workspace: "#{WORKSPACE}"}}
stringParams = JSON.stringify params
auth = 'Basic ' + new Buffer("#{user}:#{pass}").toString('base64')
msg.http("#{url}/tasks")
.headers("Authorization": auth, "Content-Length": stringParams.length, "Accept": "application/json")
.post(stringParams) (err, res, body) ->
console.log(err)
console.log(res)
console.log(body)
msg.send body