Asanaに簡単なタスクを追加する最初のHubotスクリプトの作成に取り組んでいます。
私はあまりにもクレイジーなことをすることを考えていません、あるいは少なくとも私がそうだとは思いませんでした。
現在私は持っています
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が出力されて正しいのですが、投稿が行われていないようです。
どんな方向でも素晴らしいでしょう!
ありがとう。
編集
さらに微調整した後、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