跳转到内容

Asana 集成

让你的代理通过 Asana 管理任务、项目和团队协作。借助 AI 驱动的自动化,创建任务、更新项目状态、管理分配,并简化团队工作流程。

在使用 Asana 集成前,请确保你已经具备:

  • 一个拥有有效订阅的 CrewAI AMP 账号
  • 一个具有相应权限的 Asana 账号
  • 已通过 集成页面 连接你的 Asana 账号
  1. 进入 CrewAI AMP Integrations
  2. 在身份验证集成部分找到 Asana
  3. 点击 Connect 并完成 OAuth 流程
  4. 授予任务和项目管理所需的权限
  5. Integration Settings 复制你的 Enterprise Token
Terminal window
uv add crewai-tools
Terminal window
export CREWAI_PLATFORM_INTEGRATION_TOKEN="your_enterprise_token"

或者将其添加到你的 .env 文件中:

CREWAI_PLATFORM_INTEGRATION_TOKEN=your_enterprise_token
asana/create_comment

描述: 在 Asana 中创建评论。

参数:

  • task (string, required): 任务 ID - 要将评论添加到的任务 ID。评论将由当前已认证用户发布。
  • text (string, required): 文本(示例:"This is a comment.")。
asana/create_project

描述: 在 Asana 中创建项目。

参数:

  • name (string, required): 名称(示例:"Stuff to buy")。
  • workspace (string, required): 工作区 - 使用 Connect Portal Workflow Settings 让用户选择创建项目的工作区。如果留空,则默认为用户的第一个工作区。
  • team (string, optional): 团队 - 使用 Connect Portal Workflow Settings 让用户选择与该项目共享的团队。如果留空,则默认为用户的第一个团队。
  • notes (string, optional): 备注(示例:"These are things we need to purchase.")。
asana/get_projects

描述: 获取 Asana 中的项目列表。

参数:

  • archived (string, optional): 已归档 - 选择 "true" 显示已归档项目,"false" 仅显示活动项目,或 "default" 同时显示已归档和活动项目。
    • 可选项:default, true, false
asana/get_project_by_id

描述: 通过 ID 获取 Asana 中的项目。

参数:

  • projectFilterId (string, required): 项目 ID。
asana/create_task

描述: 在 Asana 中创建任务。

参数:

  • name (string, required): 名称(示例:"Task Name")。
  • workspace (string, optional): 工作区 - 使用 Connect Portal Workflow Settings 让用户选择创建任务的工作区。如果留空,则默认为用户的第一个工作区。。
  • project (string, optional): 项目 - 使用 Connect Portal Workflow Settings 让用户选择要在其中创建此任务的项目。
  • notes (string, optional): 备注。
  • dueOnDate (string, optional): 截止日期 - 该任务的到期日期。不能与截止时间同时使用。(示例:"YYYY-MM-DD")。
  • dueAtDate (string, optional): 截止时间 - 该任务的到期日期和时间(ISO 时间戳)。不能与截止日期同时使用。(示例:"2019-09-15T02:06:58.147Z")。
  • assignee (string, optional): 负责人 - 该任务将被分配到的 Asana 用户 ID。使用 Connect Portal Workflow Settings 让用户选择负责人。
  • gid (string, optional): 外部 ID - 你应用中的一个 ID,用于关联此任务。之后你可以使用该 ID 同步此任务的更新。
asana/update_task

描述: 在 Asana 中更新任务。

参数:

  • taskId (string, required): 任务 ID - 将要更新的任务 ID。
  • completeStatus (string, optional): 完成状态。
    • 可选项:true, false
  • name (string, optional): 名称(示例:"Task Name")。
  • notes (string, optional): 备注。
  • dueOnDate (string, optional): 截止日期 - 该任务的到期日期。不能与截止时间同时使用。(示例:"YYYY-MM-DD")。
  • dueAtDate (string, optional): 截止时间 - 该任务的到期日期和时间(ISO 时间戳)。不能与截止日期同时使用。(示例:"2019-09-15T02:06:58.147Z")。
  • assignee (string, optional): 负责人 - 该任务将被分配到的 Asana 用户 ID。使用 Connect Portal Workflow Settings 让用户选择负责人。
  • gid (string, optional): 外部 ID - 你应用中的一个 ID,用于关联此任务。之后你可以使用该 ID 同步此任务的更新。
asana/get_tasks

描述: 获取 Asana 中的任务列表。

参数:

  • workspace (string, optional): 工作区 - 用于筛选任务的工作区 ID。使用 Connect Portal Workflow Settings 让用户选择一个工作区。
  • project (string, optional): 项目 - 用于筛选任务的项目 ID。使用 Connect Portal Workflow Settings 让用户选择一个项目。
  • assignee (string, optional): 负责人 - 用于筛选任务的负责人 ID。使用 Connect Portal Workflow Settings 让用户选择一个负责人。
  • completedSince (string, optional): 自此完成 - 仅返回尚未完成,或自此时间之后完成的任务(ISO 或 Unix 时间戳)。(示例:"2014-04-25T16:15:47-04:00")。
asana/get_tasks_by_id

描述: 通过 ID 获取 Asana 中的任务列表。

参数:

  • taskId (string, required): 任务 ID。
asana/get_task_by_external_id

描述: 通过外部 ID 获取 Asana 中的任务。

参数:

  • gid (string, required): 外部 ID - 该任务与你的应用关联或同步所使用的 ID。
asana/add_task_to_section

描述: 将任务添加到 Asana 的某个分区。

参数:

  • sectionId (string, required): 分区 ID - 要将此任务添加到的分区 ID。
  • taskId (string, required): 任务 ID - 任务的 ID。(示例:"1204619611402340")。
  • beforeTaskId (string, optional): 之前的任务 ID - 此任务将在该分区中插入到其前面的任务 ID。不能与 After Task ID 同时使用。(示例:"1204619611402340")。
  • afterTaskId (string, optional): 之后的任务 ID - 此任务将在该分区中插入到其后面的任务 ID。不能与 Before Task ID 同时使用。(示例:"1204619611402340")。
asana/get_teams

描述: 获取 Asana 中的团队列表。

参数:

  • workspace (string, required): 工作区 - 返回该工作区中对已授权用户可见的团队。
asana/get_workspaces

描述: 获取 Asana 中的工作区列表。

参数: 不需要。

from crewai import Agent, Task, Crew
# Create an agent with Asana capabilities
asana_agent = Agent(
role="Project Manager",
goal="Manage tasks and projects in Asana efficiently",
backstory="An AI assistant specialized in project management and task coordination.",
apps=['asana'] # All Asana actions will be available
)
# Task to create a new project
create_project_task = Task(
description="Create a new project called 'Q1 Marketing Campaign' in the Marketing workspace",
agent=asana_agent,
expected_output="Confirmation that the project was created successfully with project ID"
)
# Run the task
crew = Crew(
agents=[asana_agent],
tasks=[create_project_task]
)
crew.kickoff()
from crewai import Agent, Task, Crew
# Create agent with specific Asana actions only
task_manager_agent = Agent(
role="Task Manager",
goal="Create and manage tasks efficiently",
backstory="An AI assistant that focuses on task creation and management.",
apps=[
'asana/create_task',
'asana/update_task',
'asana/get_tasks'
] # Specific Asana actions
)
# Task to create and assign a task
task_management = Task(
description="Create a task called 'Review quarterly reports' and assign it to the appropriate team member",
agent=task_manager_agent,
expected_output="Task created and assigned successfully"
)
crew = Crew(
agents=[task_manager_agent],
tasks=[task_management]
)
crew.kickoff()
from crewai import Agent, Task, Crew
project_coordinator = Agent(
role="Project Coordinator",
goal="Coordinate project activities and track progress",
backstory="An experienced project coordinator who ensures projects run smoothly.",
apps=['asana']
)
# Complex task involving multiple Asana operations
coordination_task = Task(
description="""
1. Get all active projects in the workspace
2. For each project, get the list of incomplete tasks
3. Create a summary report task in the 'Management Reports' project
4. Add comments to overdue tasks to request status updates
""",
agent=project_coordinator,
expected_output="Summary report created and status update requests sent for overdue tasks"
)
crew = Crew(
agents=[project_coordinator],
tasks=[coordination_task]
)
crew.kickoff()