0

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

我在https://github.com/Asana/php-asana使用来自 github 的 API

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

致命错误:在 /mydir/asana/Asana/Errors/AsanaError.php:29 中出现未捕获的异常“Asana\Errors\InvalidRequestError”和消息“Invalid Request”

    // 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作为数组键。我尝试了其他键,例如textordatatags无济于事。

4

2 回答 2

0

这是问题....标签分配给工作区。因此,从 workspace-1/project-1/task-1 复制到workspace-2 /project-1/task-1 的标签将不起作用,除非该标签首先在 workspace-2 中创建。

一旦在目标工作区中创建了标签,代码就可以完美运行。

于 2017-03-21T19:26:53.597 回答
0

我看了看复制你的第一个例子,它对我完全有用。(不幸的是,我们的 API 在某些地方是不对称的,这是其中之一:发送 ID 数组是可行的方法,如您的第一个示例中所述,但您将得到的是{ID, name}响应中的那些嵌套对。 )

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

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

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"
    }
  }
}
于 2017-03-20T20:25:52.597 回答