0

我正在尝试使用 Asana 事件 API 来跟踪我们的一个项目中的更改,以及更具体的部分之间的任务移动。我们的工作流程如下:

  1. 我们有一个项目分为几个部分。
  2. 每个部分代表流程中的一个步骤。完成一个步骤后,任务将移至下面的部分。
  3. 当给定任务到达特定步骤时,我们希望将其传递给外部系统。它不必是完整的信息——基本的东西 + url 就足够了。

我的想法是使用https://asana.com/developers/api-reference/events来实现一个基于拉取的机制来获取最近的任务变化。

我的问题是:

  1. 事件 API 似乎生成了很多信息,但不是有用的信息。在部分之间移动一项任务会生成 3 个事件(2 个“更改”操作,一个“添加”操作标记为“系统”)。在工作期间,许多任务将在许多部分之间移动,但我对一个特定部分感兴趣。如何找到移入该部分的项目?我知道有一个 资源-> 文本字段,但它给了我一些东西,比如从 X 移动到 Y(项目名称),这可能是人类可读的消息,将来可能会改变
  2. 根据文档,资源键应包含任务数据,但我看到的唯一信息是idname,这对我的情况来说还不够。是否可以使用事件 API 获取标签?或者任何其他可以让我们对系统中的任务进行分类的数据?
  3. 我可以监听特定部分的事件而不是跟踪整个项目吗?

欢迎提出想法或建议。谢谢

4

1 回答 1

0

简而言之:

  1. 是的,在下面回答。
  2. 是的,在下面回答。
  3. 不幸的是,部分确实是具有一些额外功能的任务。memberships目前,API 通过任务上的字段而不是其他方式表示部分和其中的任务之间的关系。

我认为,这应该可以帮助您实现所需的目标。

假设您有一个Ninja Pipeline包含 2 个部分Novice&的项目Expert。请记住,部分实际上只是名称以:字符结尾的任务,其中任务可以属于它们。

从孩子到父母的事件“冒泡”;因此,当您Wombat将此项目中的任务形成该Novice部分时,Expert您将获得 3 个事件。从顶层开始向下,它们是:

  • 项目Ninja Pipeline变了。
  • Wombat任务变了。
  • 一个故事被添加到Wombat任务中。

对于您的用例,最有趣的事件是关于任务更改的第二个事件。您真正想知道的数据是现在任务更改了任务上memberships字段的值。如果它现在是您感兴趣的部分的成员,请采取行动,否则忽略。

默认情况下,API 中的许多资源都以紧凑形式表示,通常只包含id& name。使用输入/输出选项来扩展对象或选择您需要的特定字段。

在这种情况下,最好的办法是opt_expand=resource在对项目进行轮询事件时包含查询参数。这应该扩展resource有效负载中的所有对象。对于type: "task"then 的事件,如果resource.memberships[0].section.id=<id_of_the_section>为真,则采取行动,否则忽略。

于 2015-05-23T00:28:37.783 回答