1

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
4

2 に答える 2

1

質問への回答を送信して、stackoverflowが未回答として表示されないようにします。

OPの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
于 2012-11-15T16:44:03.233 に答える
0

Hubotのhttpクライアントはquery()、文字列ではなく、のオブジェクトを期待していると思います。を呼び出す代わりに、オブジェクトを直接渡してみてくださいJSON.stringify

于 2012-05-07T22:21:43.927 に答える