Asana API:使用task / addTag或使用标记

时间:2017-03-05 05:21:07

标签: php api asana asana-api

我似乎无法为新任务或现有任务添加标签。

我在https://github.com/Asana/php-asana

使用来自github的API

根据文档here,我设置了选项并启动了对任务端点的API调用。它失败了:

致命错误:在/mydir/asana/Asana/Errors/AsanaError.php:29

中未捕获的异常'Asana \ Errors \ InvalidRequestError',消息'无效请求'
    // create new task
    $newTaskOptions = array(
        'name' => $taskName,
        'notes' => $taskNotes,
        'projects' => [11111111115445],
        'tags' => [11111119991, 11111119992]   // without this, the task is created ok
    );

    $newTask = $client->tasks->create($newTaskOptions);

以下是发送到request过程的对象:

array(2) {
  ["headers"]=> array(1) {
    ["content-type"] => string(16) "application/json"
  }
  ["data"]=> array(2) {
    ["data"]=> array(4) {
      ["name"]=> string(17) "module 1 - task 1"
      ["notes"]=> string(32) "description of module 1 - task 1"
      ["projects"]=> array(1) {
        [0]=> int(11111111115445)
      }
      ["tags"]=> array(2) {
        [0]=> int(11111119991)
        [1]=> int(11111119992)
      }
    }
    ["options"]=> array(0) {
    }
  }
}

即使使用[ { id: 59746, name: 'Grade A' }, ... ]的示例(使用正确的标记ID和名称),它仍然会出错。实际上,它会在第一个“{”处抛出语法错误。

接下来,如果我尝试tasks/taskid/addTag现有任务,我会收到类似的错误。以下是这段代码。

foreach ($tags as $tag){
  $newTag = $client->tasks->addTag($newTask->id, array('tag' => $tag));
}

addTag命令的第二部分需要一个数组,根据文档使用tag作为数组键。我尝试了textdatatags等其他密钥无效。

2 个答案:

答案 0 :(得分:0)

我看了一下复制你的第一个例子,它完全适合我。 (不幸的是,我们的API在某些地方是不对称的,这里是其中之一:发送ID数组是要走的路,如您的第一个示例中所示,但您将获得的是那些响应中嵌套{ID, name}对。)

我不确定您可能会遇到什么 - 我怀疑它可能是您正在使用的实际PHP代码之外的东西。如果标签的ID在Asana中不存在,我可以得到无效的请求错误,这可能是问题吗?

要解决错误,我们会在响应中发回我们希望的相当友好的消息。如果您将上面的请求代码更改为

try {
  $newTask = $client->tasks->create($newTaskOptions);
} catch (Asana\Errors\InvalidRequestError $e) {
  var_dump($e->response->body);
}

希望它能帮助你了解正在发生的事情(即在我的复制品中,我得到了)

object(stdClass)#24 (1) {
  ["errors"]=>
  array(1) {
    [0]=>
    object(stdClass)#25 (2) {
      ["message"]=>
      string(40) "tags: [1]: Unknown object: 1980346754317"
      ["help"]=>
        string(155) "For more information on API status codes and how to handle them, read the docs on errors: https://asana.com/developers/documentation/getting-started/errors"
    }
  }
}

答案 1 :(得分:0)

这是问题....标签被分配给工作区。因此,从workspace-1 / project-1 / task-1复制到 workspace-2 / project-1 / task-1的标记将无法正常工作,除非首先在workspace-2中创建标记。

在目标工作区中创建标记后,代码可以完美运行。