我似乎无法为新任务或现有任务添加标签。
我在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
作为数组键。我尝试了text
或data
或tags
等其他密钥无效。
答案 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中创建标记。
在目标工作区中创建标记后,代码可以完美运行。