我正在製作我的第一個Hubot腳本,它將向Asana添加一項快速任務。
我並沒有看着做任何事情太瘋狂,或至少不認爲我是。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讓它一切正常,但看着我的日誌的尾巴,沒有什麼是輸出,沒有任何東西正在記錄到控制檯,什麼都沒有發生。
如果我在params下做了一個console.log,它會輸出JSON並且它是正確的,但是好像這個帖子永遠不會發生。
任何方向都會很棒!
謝謝。
EDIT
一些更多的調整後,以下丹在正確方向邁出的一步,滴.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
不要忘記它必須位於頂級對象的'data'參數中。 '{data:{parameters:values}}' – DanRedux
謝謝@DanRedux,我給了他一個鏡頭,但沒有任何改變。 : -/ – LostInQuery
經過一番調整後,終於找到了答案。感謝指針! – LostInQuery