mirror of
https://github.com/crewAIInc/crewAI.git
synced 2026-01-09 16:18:30 +00:00
Add Korean translations (#3307)
This commit is contained in:
253
docs/ko/enterprise/integrations/asana.mdx
Normal file
253
docs/ko/enterprise/integrations/asana.mdx
Normal file
@@ -0,0 +1,253 @@
|
||||
---
|
||||
title: Asana 연동
|
||||
description: "CrewAI를 위한 Asana 연동으로 팀 작업 및 프로젝트 조정."
|
||||
icon: "circle"
|
||||
---
|
||||
|
||||
## 개요
|
||||
|
||||
에이전트가 Asana를 통해 업무, 프로젝트, 팀 협업을 관리할 수 있도록 지원하세요. 작업 생성, 프로젝트 상태 업데이트, 담당 할당 관리, AI 기반 자동화를 통한 팀의 워크플로우 최적화를 손쉽게 할 수 있습니다.
|
||||
|
||||
## 사전 준비 사항
|
||||
|
||||
Asana 연동을 사용하기 전에 다음을 확인하세요:
|
||||
|
||||
- 활성 구독이 있는 [CrewAI Enterprise](https://app.crewai.com) 계정
|
||||
- 적절한 권한이 있는 Asana 계정
|
||||
- [통합 페이지](https://app.crewai.com/crewai_plus/connectors)를 통해 Asana 계정 연결
|
||||
|
||||
## 아사나(Asana) 연동 설정
|
||||
|
||||
### 1. Asana 계정 연결하기
|
||||
|
||||
1. [CrewAI Enterprise Integrations](https://app.crewai.com/crewai_plus/connectors)로 이동합니다.
|
||||
2. 인증 통합 섹션에서 **Asana**를 찾습니다.
|
||||
3. **Connect**를 클릭하고 OAuth 플로우를 완료합니다.
|
||||
4. 작업 및 프로젝트 관리를 위한 필요한 권한을 부여합니다.
|
||||
5. [계정 설정](https://app.crewai.com/crewai_plus/settings/account)에서 Enterprise Token을 복사합니다.
|
||||
|
||||
### 2. 필수 패키지 설치
|
||||
|
||||
```bash
|
||||
uv add crewai-tools
|
||||
```
|
||||
|
||||
## 사용 가능한 작업
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="ASANA_CREATE_COMMENT">
|
||||
**설명:** Asana에 댓글을 생성합니다.
|
||||
|
||||
**매개변수:**
|
||||
- `task` (string, 필수): 작업 ID - 댓글이 추가될 작업의 ID입니다. 댓글 작성자는 현재 인증된 사용자입니다.
|
||||
- `text` (string, 필수): 텍스트 (예: "This is a comment.").
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="ASANA_CREATE_PROJECT">
|
||||
**설명:** Asana에 프로젝트를 생성합니다.
|
||||
|
||||
**매개변수:**
|
||||
- `name` (string, 필수): 이름 (예: "Stuff to buy").
|
||||
- `workspace` (string, 필수): 워크스페이스 - Connect Portal Workflow 설정을 사용해 사용자가 프로젝트를 생성할 워크스페이스를 선택할 수 있도록 합니다. 공란인 경우 기본적으로 사용자의 첫 번째 워크스페이스가 선택됩니다.
|
||||
- `team` (string, 선택): 팀 - Connect Portal Workflow 설정을 사용해 사용자가 이 프로젝트를 공유할 팀을 선택할 수 있도록 합니다. 공란인 경우 기본적으로 사용자의 첫 번째 팀이 선택됩니다.
|
||||
- `notes` (string, 선택): 노트 (예: "These are things we need to purchase.").
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="ASANA_GET_PROJECTS">
|
||||
**설명:** Asana의 프로젝트 목록을 가져옵니다.
|
||||
|
||||
**매개변수:**
|
||||
- `archived` (string, 선택): 보관됨 - 보관된 프로젝트를 보려면 "true", 활성 프로젝트만 보려면 "false", 보관됨과 활성 모두 보려면 "default"를 선택합니다.
|
||||
- 옵션: `default`, `true`, `false`
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="ASANA_GET_PROJECT_BY_ID">
|
||||
**설명:** Asana에서 ID로 프로젝트를 가져옵니다.
|
||||
|
||||
**매개변수:**
|
||||
- `projectFilterId` (string, 필수): 프로젝트 ID.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="ASANA_CREATE_TASK">
|
||||
**설명:** Asana에 작업을 생성합니다.
|
||||
|
||||
**매개변수:**
|
||||
- `name` (string, 필수): 이름 (예: "Task Name").
|
||||
- `workspace` (string, 선택): 워크스페이스 - Connect Portal Workflow 설정을 사용해 사용자가 작업을 생성할 워크스페이스를 선택할 수 있도록 합니다. 공란인 경우 기본적으로 사용자의 첫 번째 워크스페이스가 선택됩니다.
|
||||
- `project` (string, 선택): 프로젝트 - Connect Portal Workflow 설정을 사용해 사용자가 이 작업을 생성할 프로젝트를 선택할 수 있도록 합니다.
|
||||
- `notes` (string, 선택): 노트.
|
||||
- `dueOnDate` (string, 선택): 마감일 - 이 작업이 완료되어야 하는 날짜입니다. Due At과 함께 사용할 수 없습니다. (예: "YYYY-MM-DD").
|
||||
- `dueAtDate` (string, 선택): 마감 시각 - 이 작업이 완료되어야 하는 날짜와 시간 (ISO 타임스탬프) 입니다. Due On과 함께 사용할 수 없습니다. (예: "2019-09-15T02:06:58.147Z").
|
||||
- `assignee` (string, 선택): 담당자 - 이 작업이 할당될 Asana 사용자의 ID입니다. Connect Portal Workflow 설정을 사용해 사용자가 담당자를 선택할 수 있도록 합니다.
|
||||
- `gid` (string, 선택): 외부 ID - 이 작업과 연결할 애플리케이션의 ID입니다. 이 ID를 사용하여 이후 작업 업데이트를 동기화할 수 있습니다.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="ASANA_UPDATE_TASK">
|
||||
**설명:** Asana의 작업을 업데이트합니다.
|
||||
|
||||
**매개변수:**
|
||||
- `taskId` (string, 필수): 작업 ID - 업데이트할 작업의 ID입니다.
|
||||
- `completeStatus` (string, 선택): 완료 상태.
|
||||
- 옵션: `true`, `false`
|
||||
- `name` (string, 선택): 이름 (예: "Task Name").
|
||||
- `notes` (string, 선택): 노트.
|
||||
- `dueOnDate` (string, 선택): 마감일 - 이 작업이 완료되어야 하는 날짜입니다. Due At과 함께 사용할 수 없습니다. (예: "YYYY-MM-DD").
|
||||
- `dueAtDate` (string, 선택): 마감 시각 - 이 작업이 완료되어야 하는 날짜와 시간 (ISO 타임스탬프) 입니다. Due On과 함께 사용할 수 없습니다. (예: "2019-09-15T02:06:58.147Z").
|
||||
- `assignee` (string, 선택): 담당자 - 이 작업이 할당될 Asana 사용자의 ID입니다. Connect Portal Workflow 설정을 사용해 사용자가 담당자를 선택할 수 있도록 합니다.
|
||||
- `gid` (string, 선택): 외부 ID - 이 작업과 연결할 애플리케이션의 ID입니다. 이 ID를 사용하여 이후 작업 업데이트를 동기화할 수 있습니다.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="ASANA_GET_TASKS">
|
||||
**설명:** Asana의 작업 목록을 가져옵니다.
|
||||
|
||||
**매개변수:**
|
||||
- `workspace` (string, 선택): 워크스페이스 - 작업을 필터링할 워크스페이스의 ID입니다. Connect Portal Workflow 설정을 사용해 사용자가 워크스페이스를 선택할 수 있도록 합니다.
|
||||
- `project` (string, 선택): 프로젝트 - 작업을 필터링할 프로젝트의 ID입니다. Connect Portal Workflow 설정을 사용해 사용자가 프로젝트를 선택할 수 있도록 합니다.
|
||||
- `assignee` (string, 선택): 담당자 - 작업을 필터링할 담당자의 ID입니다. Connect Portal Workflow 설정을 사용해 사용자가 담당자를 선택할 수 있도록 합니다.
|
||||
- `completedSince` (string, 선택): 이후 완료됨 - 미완료이거나 해당 시간(ISO 또는 Unix 타임스탬프) 이후에 완료된 작업만 반환합니다. (예: "2014-04-25T16:15:47-04:00").
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="ASANA_GET_TASKS_BY_ID">
|
||||
**설명:** Asana에서 ID로 작업 목록을 가져옵니다.
|
||||
|
||||
**매개변수:**
|
||||
- `taskId` (string, 필수): 작업 ID.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="ASANA_GET_TASK_BY_EXTERNAL_ID">
|
||||
**설명:** Asana에서 외부 ID로 작업을 가져옵니다.
|
||||
|
||||
**매개변수:**
|
||||
- `gid` (string, 필수): 외부 ID - 이 작업이 애플리케이션과 연동(또는 동기화)된 ID입니다.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="ASANA_ADD_TASK_TO_SECTION">
|
||||
**설명:** Asana에서 섹션에 작업을 추가합니다.
|
||||
|
||||
**매개변수:**
|
||||
- `sectionId` (string, 필수): 섹션 ID - 작업을 추가할 섹션의 ID입니다.
|
||||
- `taskId` (string, 필수): 작업 ID - 작업의 ID입니다. (예: "1204619611402340").
|
||||
- `beforeTaskId` (string, 선택): 이전 작업 ID - 이 작업이 삽입될 섹션 내의 작업 ID입니다. 이후 작업 ID와 함께 사용할 수 없습니다. (예: "1204619611402340").
|
||||
- `afterTaskId` (string, 선택): 이후 작업 ID - 이 작업이 삽입될 섹션 내의 작업 ID입니다. 이전 작업 ID와 함께 사용할 수 없습니다. (예: "1204619611402340").
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="ASANA_GET_TEAMS">
|
||||
**설명:** Asana에서 팀 목록을 가져옵니다.
|
||||
|
||||
**매개변수:**
|
||||
- `workspace` (string, 필수): 워크스페이스 - 인증된 사용자가 볼 수 있는 이 워크스페이스 내의 팀을 반환합니다.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="ASANA_GET_WORKSPACES">
|
||||
**설명:** Asana에서 워크스페이스 목록을 가져옵니다.
|
||||
|
||||
**매개변수:** 필요 없음.
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
## 사용 예시
|
||||
|
||||
### 기본 Asana 에이전트 설정
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
# Get enterprise tools (Asana tools will be included)
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token"
|
||||
)
|
||||
|
||||
# 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.",
|
||||
tools=[enterprise_tools]
|
||||
)
|
||||
|
||||
# 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()
|
||||
```
|
||||
|
||||
### 특정 Asana 도구 필터링
|
||||
|
||||
```python
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
# Get only specific Asana tools
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token",
|
||||
actions_list=["asana_create_task", "asana_update_task", "asana_get_tasks"]
|
||||
)
|
||||
|
||||
task_manager_agent = Agent(
|
||||
role="Task Manager",
|
||||
goal="Create and manage tasks efficiently",
|
||||
backstory="An AI assistant that focuses on task creation and management.",
|
||||
tools=enterprise_tools
|
||||
)
|
||||
|
||||
# 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()
|
||||
```
|
||||
|
||||
### 고급 프로젝트 관리
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token"
|
||||
)
|
||||
|
||||
project_coordinator = Agent(
|
||||
role="Project Coordinator",
|
||||
goal="Coordinate project activities and track progress",
|
||||
backstory="An experienced project coordinator who ensures projects run smoothly.",
|
||||
tools=[enterprise_tools]
|
||||
)
|
||||
|
||||
# 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()
|
||||
```
|
||||
268
docs/ko/enterprise/integrations/box.mdx
Normal file
268
docs/ko/enterprise/integrations/box.mdx
Normal file
@@ -0,0 +1,268 @@
|
||||
---
|
||||
title: Box 통합
|
||||
description: "CrewAI용 Box 통합을 통한 파일 저장 및 문서 관리."
|
||||
icon: "box"
|
||||
---
|
||||
|
||||
## 개요
|
||||
|
||||
에이전트가 Box를 통해 파일, 폴더, 문서를 관리할 수 있도록 지원하세요. 파일을 업로드하고, 폴더 구조를 조직하며, 콘텐츠를 검색하고, AI 기반 자동화를 통해 팀의 문서 관리를 효율적으로 진행할 수 있습니다.
|
||||
|
||||
## 사전 준비 사항
|
||||
|
||||
Box 통합을 사용하기 전에 다음을 확인하세요:
|
||||
|
||||
- 활성 구독이 있는 [CrewAI Enterprise](https://app.crewai.com) 계정
|
||||
- 적절한 권한이 있는 Box 계정
|
||||
- [통합 페이지](https://app.crewai.com/crewai_plus/connectors)를 통해 Box 계정 연결
|
||||
|
||||
## Box 통합 설정
|
||||
|
||||
### 1. Box 계정 연결하기
|
||||
|
||||
1. [CrewAI Enterprise Integrations](https://app.crewai.com/crewai_plus/connectors)로 이동합니다.
|
||||
2. 인증 통합 섹션에서 **Box**를 찾습니다.
|
||||
3. **Connect**를 클릭하고 OAuth 흐름을 완료합니다.
|
||||
4. 파일 및 폴더 관리를 위한 필요한 권한을 부여합니다.
|
||||
5. [Account Settings](https://app.crewai.com/crewai_plus/settings/account)에서 Enterprise Token을 복사합니다.
|
||||
|
||||
### 2. 필수 패키지 설치
|
||||
|
||||
```bash
|
||||
uv add crewai-tools
|
||||
```
|
||||
|
||||
## 사용 가능한 액션
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="BOX_SAVE_FILE">
|
||||
**설명:** Box에서 URL로부터 파일을 저장합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `fileAttributes` (object, 필수): 속성 - 이름, 상위 폴더, 타임스탬프 등 파일 메타데이터.
|
||||
```json
|
||||
{
|
||||
"content_created_at": "2012-12-12T10:53:43-08:00",
|
||||
"content_modified_at": "2012-12-12T10:53:43-08:00",
|
||||
"name": "qwerty.png",
|
||||
"parent": { "id": "1234567" }
|
||||
}
|
||||
```
|
||||
- `file` (string, 필수): 파일 URL - 파일 크기는 50MB 미만이어야 합니다. (예시: "https://picsum.photos/200/300").
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="BOX_SAVE_FILE_FROM_OBJECT">
|
||||
**설명:** Box에 파일을 저장합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `file` (string, 필수): 파일 - 파일 데이터를 포함하는 파일 객체를 허용합니다. 파일 크기는 50MB 미만이어야 합니다.
|
||||
- `fileName` (string, 필수): 파일명 (예시: "qwerty.png").
|
||||
- `folder` (string, 선택): 폴더 - Connect Portal Workflow Settings를 사용하여 사용자가 파일의 폴더 목적지를 선택할 수 있도록 합니다. 비워두면 기본적으로 사용자의 루트 폴더에 저장됩니다.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="BOX_GET_FILE_BY_ID">
|
||||
**설명:** Box에서 ID로 파일을 가져옵니다.
|
||||
|
||||
**파라미터:**
|
||||
- `fileId` (string, 필수): 파일 ID - 파일을 나타내는 고유 식별자. (예시: "12345").
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="BOX_LIST_FILES">
|
||||
**설명:** Box에서 파일 목록을 조회합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `folderId` (string, 필수): 폴더 ID - 폴더를 나타내는 고유 식별자. (예시: "0").
|
||||
- `filterFormula` (object, 선택): 쿼리 normal form (DNF)의 필터 - 단일 조건의 AND 그룹의 OR.
|
||||
```json
|
||||
{
|
||||
"operator": "OR",
|
||||
"conditions": [
|
||||
{
|
||||
"operator": "AND",
|
||||
"conditions": [
|
||||
{
|
||||
"field": "direction",
|
||||
"operator": "$stringExactlyMatches",
|
||||
"value": "ASC"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="BOX_CREATE_FOLDER">
|
||||
**설명:** Box에 폴더를 생성합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `folderName` (string, 필수): 이름 - 새 폴더의 이름. (예시: "New Folder").
|
||||
- `folderParent` (object, 필수): 상위 폴더 - 새 폴더가 생성될 상위 폴더.
|
||||
```json
|
||||
{
|
||||
"id": "123456"
|
||||
}
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="BOX_MOVE_FOLDER">
|
||||
**설명:** Box에서 폴더를 이동합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `folderId` (string, 필수): 폴더 ID - 폴더를 나타내는 고유 식별자. (예시: "0").
|
||||
- `folderName` (string, 필수): 이름 - 폴더의 이름. (예시: "New Folder").
|
||||
- `folderParent` (object, 필수): 상위 폴더 - 새 상위 폴더 목적지.
|
||||
```json
|
||||
{
|
||||
"id": "123456"
|
||||
}
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="BOX_GET_FOLDER_BY_ID">
|
||||
**설명:** Box에서 ID로 폴더를 가져옵니다.
|
||||
|
||||
**파라미터:**
|
||||
- `folderId` (string, 필수): 폴더 ID - 폴더를 나타내는 고유 식별자. (예시: "0").
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="BOX_SEARCH_FOLDERS">
|
||||
**설명:** Box에서 폴더를 검색합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `folderId` (string, 필수): 폴더 ID - 검색할 폴더.
|
||||
- `filterFormula` (object, 선택): 쿼리 normal form (DNF)의 필터 - 단일 조건의 AND 그룹의 OR.
|
||||
```json
|
||||
{
|
||||
"operator": "OR",
|
||||
"conditions": [
|
||||
{
|
||||
"operator": "AND",
|
||||
"conditions": [
|
||||
{
|
||||
"field": "sort",
|
||||
"operator": "$stringExactlyMatches",
|
||||
"value": "name"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="BOX_DELETE_FOLDER">
|
||||
**설명:** Box에서 폴더를 삭제합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `folderId` (string, 필수): 폴더 ID - 폴더를 나타내는 고유 식별자. (예시: "0").
|
||||
- `recursive` (boolean, 선택): 재귀적 삭제 - 폴더가 비어 있지 않을 경우, 폴더와 그 모든 내용을 재귀적으로 삭제합니다.
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
## 사용 예시
|
||||
|
||||
### 기본 Box Agent 설정
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
# Get enterprise tools (Box tools will be included)
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token"
|
||||
)
|
||||
|
||||
# Create an agent with Box capabilities
|
||||
box_agent = Agent(
|
||||
role="Document Manager",
|
||||
goal="Manage files and folders in Box efficiently",
|
||||
backstory="An AI assistant specialized in document management and file organization.",
|
||||
tools=[enterprise_tools]
|
||||
)
|
||||
|
||||
# Task to create a folder structure
|
||||
create_structure_task = Task(
|
||||
description="Create a folder called 'Project Files' in the root directory and upload a document from URL",
|
||||
agent=box_agent,
|
||||
expected_output="Folder created and file uploaded successfully"
|
||||
)
|
||||
|
||||
# Run the task
|
||||
crew = Crew(
|
||||
agents=[box_agent],
|
||||
tasks=[create_structure_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### 특정 Box 도구 필터링
|
||||
|
||||
```python
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
# Get only specific Box tools
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token",
|
||||
actions_list=["box_create_folder", "box_save_file", "box_list_files"]
|
||||
)
|
||||
|
||||
file_organizer_agent = Agent(
|
||||
role="File Organizer",
|
||||
goal="Organize and manage file storage efficiently",
|
||||
backstory="An AI assistant that focuses on file organization and storage management.",
|
||||
tools=enterprise_tools
|
||||
)
|
||||
|
||||
# Task to organize files
|
||||
organization_task = Task(
|
||||
description="Create a folder structure for the marketing team and organize existing files",
|
||||
agent=file_organizer_agent,
|
||||
expected_output="Folder structure created and files organized"
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[file_organizer_agent],
|
||||
tasks=[organization_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### 고급 파일 관리
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token"
|
||||
)
|
||||
|
||||
file_manager = Agent(
|
||||
role="File Manager",
|
||||
goal="Maintain organized file structure and manage document lifecycle",
|
||||
backstory="An experienced file manager who ensures documents are properly organized and accessible.",
|
||||
tools=[enterprise_tools]
|
||||
)
|
||||
|
||||
# Complex task involving multiple Box operations
|
||||
management_task = Task(
|
||||
description="""
|
||||
1. List all files in the root folder
|
||||
2. Create monthly archive folders for the current year
|
||||
3. Move old files to appropriate archive folders
|
||||
4. Generate a summary report of the file organization
|
||||
""",
|
||||
agent=file_manager,
|
||||
expected_output="Files organized into archive structure with summary report"
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[file_manager],
|
||||
tasks=[management_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
293
docs/ko/enterprise/integrations/clickup.mdx
Normal file
293
docs/ko/enterprise/integrations/clickup.mdx
Normal file
@@ -0,0 +1,293 @@
|
||||
---
|
||||
title: ClickUp 연동
|
||||
description: "CrewAI를 위한 ClickUp 연동을 통한 작업 및 생산성 관리."
|
||||
icon: "list-check"
|
||||
---
|
||||
|
||||
## 개요
|
||||
|
||||
에이전트가 ClickUp을 통해 작업, 프로젝트 및 생산성 워크플로우를 관리할 수 있도록 지원하세요. 작업을 생성 및 업데이트하고, 프로젝트를 구성하며, 팀 할당을 관리하고, AI 기반 자동화를 통해 생산성 관리를 간소화할 수 있습니다.
|
||||
|
||||
## 사전 준비사항
|
||||
|
||||
ClickUp 통합을 사용하기 전에 다음을 준비해야 합니다:
|
||||
|
||||
- 활성 구독이 있는 [CrewAI Enterprise](https://app.crewai.com) 계정
|
||||
- 적절한 권한이 있는 ClickUp 계정
|
||||
- [통합 페이지](https://app.crewai.com/crewai_plus/connectors)를 통해 ClickUp 계정 연결
|
||||
|
||||
## ClickUp 통합 설정
|
||||
|
||||
### 1. ClickUp 계정 연결하기
|
||||
|
||||
1. [CrewAI Enterprise Integrations](https://app.crewai.com/crewai_plus/connectors)로 이동합니다.
|
||||
2. 인증 통합 섹션에서 **ClickUp**을 찾습니다.
|
||||
3. **Connect**를 클릭하고 OAuth 과정을 완료합니다.
|
||||
4. 작업 및 프로젝트 관리에 필요한 권한을 부여합니다.
|
||||
5. [계정 설정](https://app.crewai.com/crewai_plus/settings/account)에서 Enterprise Token을 복사합니다.
|
||||
|
||||
### 2. 필수 패키지 설치
|
||||
|
||||
```bash
|
||||
uv add crewai-tools
|
||||
```
|
||||
|
||||
## 사용 가능한 동작
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="CLICKUP_SEARCH_TASKS">
|
||||
**설명:** 고급 필터를 사용하여 ClickUp에서 작업을 검색합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `taskFilterFormula` (object, 선택): 이항 표준형(DNF)의 필터 - 단일 조건의 AND 그룹들의 OR.
|
||||
```json
|
||||
{
|
||||
"operator": "OR",
|
||||
"conditions": [
|
||||
{
|
||||
"operator": "AND",
|
||||
"conditions": [
|
||||
{
|
||||
"field": "statuses%5B%5D",
|
||||
"operator": "$stringExactlyMatches",
|
||||
"value": "open"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
사용 가능한 필드: `space_ids%5B%5D`, `project_ids%5B%5D`, `list_ids%5B%5D`, `statuses%5B%5D`, `include_closed`, `assignees%5B%5D`, `tags%5B%5D`, `due_date_gt`, `due_date_lt`, `date_created_gt`, `date_created_lt`, `date_updated_gt`, `date_updated_lt`
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="CLICKUP_GET_TASK_IN_LIST">
|
||||
**설명:** ClickUp의 특정 목록에서 작업을 가져옵니다.
|
||||
|
||||
**파라미터:**
|
||||
- `listId` (string, 필수): 목록 - 작업을 가져올 목록을 선택합니다. 사용자가 ClickUp 목록을 선택할 수 있도록 Connect Portal 사용자 설정을 사용하세요.
|
||||
- `taskFilterFormula` (string, 선택): 지정된 필터와 일치하는 작업을 검색합니다. 예: name=task1.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="CLICKUP_CREATE_TASK">
|
||||
**설명:** ClickUp에 작업을 생성합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `listId` (string, 필수): 목록 - 이 작업을 생성할 목록을 선택합니다. 사용자가 ClickUp 목록을 선택할 수 있도록 Connect Portal 사용자 설정을 사용하세요.
|
||||
- `name` (string, 필수): 이름 - 작업 이름.
|
||||
- `description` (string, 선택): 설명 - 작업 설명.
|
||||
- `status` (string, 선택): 상태 - 이 작업에 대한 상태를 선택합니다. 사용자가 ClickUp 상태를 선택할 수 있도록 Connect Portal 사용자 설정을 사용하세요.
|
||||
- `assignees` (string, 선택): 담당자 - 이 작업에 할당할 멤버(또는 멤버 ID 배열)를 선택합니다. 사용자가 ClickUp 멤버를 선택할 수 있도록 Connect Portal 사용자 설정을 사용하세요.
|
||||
- `dueDate` (string, 선택): 마감일 - 이 작업의 마감일을 지정합니다.
|
||||
- `additionalFields` (string, 선택): 추가 필드 - 이 작업에 포함할 추가 필드를 JSON으로 지정합니다.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="CLICKUP_UPDATE_TASK">
|
||||
**설명:** ClickUp의 작업을 업데이트합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `taskId` (string, 필수): 작업 ID - 업데이트할 작업의 ID입니다.
|
||||
- `listId` (string, 필수): 목록 - 이 작업을 생성할 목록을 선택합니다. 사용자가 ClickUp 목록을 선택할 수 있도록 Connect Portal 사용자 설정을 사용하세요.
|
||||
- `name` (string, 선택): 이름 - 작업 이름.
|
||||
- `description` (string, 선택): 설명 - 작업 설명.
|
||||
- `status` (string, 선택): 상태 - 이 작업에 대한 상태를 선택합니다. 사용자가 ClickUp 상태를 선택할 수 있도록 Connect Portal 사용자 설정을 사용하세요.
|
||||
- `assignees` (string, 선택): 담당자 - 이 작업에 할당할 멤버(또는 멤버 ID 배열)를 선택합니다. 사용자가 ClickUp 멤버를 선택할 수 있도록 Connect Portal 사용자 설정을 사용하세요.
|
||||
- `dueDate` (string, 선택): 마감일 - 이 작업의 마감일을 지정합니다.
|
||||
- `additionalFields` (string, 선택): 추가 필드 - 이 작업에 포함할 추가 필드를 JSON으로 지정합니다.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="CLICKUP_DELETE_TASK">
|
||||
**설명:** ClickUp에서 작업을 삭제합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `taskId` (string, 필수): 작업 ID - 삭제할 작업의 ID입니다.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="CLICKUP_GET_LIST">
|
||||
**설명:** ClickUp에서 목록 정보를 가져옵니다.
|
||||
|
||||
**파라미터:**
|
||||
- `spaceId` (string, 필수): 스페이스 ID - 목록이 포함된 스페이스의 ID입니다.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="CLICKUP_GET_CUSTOM_FIELDS_IN_LIST">
|
||||
**설명:** ClickUp에서 목록의 사용자 정의 필드를 가져옵니다.
|
||||
|
||||
**파라미터:**
|
||||
- `listId` (string, 필수): 목록 ID - 사용자 정의 필드를 가져올 목록의 ID입니다.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="CLICKUP_GET_ALL_FIELDS_IN_LIST">
|
||||
**설명:** ClickUp에서 목록의 모든 필드를 가져옵니다.
|
||||
|
||||
**파라미터:**
|
||||
- `listId` (string, 필수): 목록 ID - 모든 필드를 가져올 목록의 ID입니다.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="CLICKUP_GET_SPACE">
|
||||
**설명:** ClickUp에서 스페이스 정보를 가져옵니다.
|
||||
|
||||
**파라미터:**
|
||||
- `spaceId` (string, 선택): 스페이스 ID - 조회할 스페이스의 ID입니다.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="CLICKUP_GET_FOLDERS">
|
||||
**설명:** ClickUp에서 폴더를 가져옵니다.
|
||||
|
||||
**파라미터:**
|
||||
- `spaceId` (string, 필수): 스페이스 ID - 폴더가 포함된 스페이스의 ID입니다.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="CLICKUP_GET_MEMBER">
|
||||
**설명:** ClickUp에서 멤버 정보를 가져옵니다.
|
||||
|
||||
**파라미터:** 필요 없음.
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
## 사용 예시
|
||||
|
||||
### 기본 ClickUp 에이전트 설정
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
# Get enterprise tools (ClickUp tools will be included)
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token"
|
||||
)
|
||||
|
||||
# Create an agent with ClickUp capabilities
|
||||
clickup_agent = Agent(
|
||||
role="Task Manager",
|
||||
goal="Manage tasks and projects in ClickUp efficiently",
|
||||
backstory="An AI assistant specialized in task management and productivity coordination.",
|
||||
tools=[enterprise_tools]
|
||||
)
|
||||
|
||||
# Task to create a new task
|
||||
create_task = Task(
|
||||
description="Create a task called 'Review Q1 Reports' in the Marketing list with high priority",
|
||||
agent=clickup_agent,
|
||||
expected_output="Task created successfully with task ID"
|
||||
)
|
||||
|
||||
# Run the task
|
||||
crew = Crew(
|
||||
agents=[clickup_agent],
|
||||
tasks=[create_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### 특정 ClickUp 도구 필터링
|
||||
|
||||
```python
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
# Get only specific ClickUp tools
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token",
|
||||
actions_list=["clickup_create_task", "clickup_update_task", "clickup_search_tasks"]
|
||||
)
|
||||
|
||||
task_coordinator = Agent(
|
||||
role="Task Coordinator",
|
||||
goal="Create and manage tasks efficiently",
|
||||
backstory="An AI assistant that focuses on task creation and status management.",
|
||||
tools=enterprise_tools
|
||||
)
|
||||
|
||||
# Task to manage task workflow
|
||||
task_workflow = Task(
|
||||
description="Create a task for project planning and assign it to the development team",
|
||||
agent=task_coordinator,
|
||||
expected_output="Task created and assigned successfully"
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[task_coordinator],
|
||||
tasks=[task_workflow]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### 고급 프로젝트 관리
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token"
|
||||
)
|
||||
|
||||
project_manager = Agent(
|
||||
role="Project Manager",
|
||||
goal="Coordinate project activities and track team productivity",
|
||||
backstory="An experienced project manager who ensures projects are delivered on time.",
|
||||
tools=[enterprise_tools]
|
||||
)
|
||||
|
||||
# Complex task involving multiple ClickUp operations
|
||||
project_coordination = Task(
|
||||
description="""
|
||||
1. Get all open tasks in the current space
|
||||
2. Identify overdue tasks and update their status
|
||||
3. Create a weekly report task summarizing project progress
|
||||
4. Assign the report task to the team lead
|
||||
""",
|
||||
agent=project_manager,
|
||||
expected_output="Project status updated and weekly report task created and assigned"
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[project_manager],
|
||||
tasks=[project_coordination]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### 작업 검색 및 관리
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token"
|
||||
)
|
||||
|
||||
task_analyst = Agent(
|
||||
role="Task Analyst",
|
||||
goal="Analyze task patterns and optimize team productivity",
|
||||
backstory="An AI assistant that analyzes task data to improve team efficiency.",
|
||||
tools=[enterprise_tools]
|
||||
)
|
||||
|
||||
# Task to analyze and optimize task distribution
|
||||
task_analysis = Task(
|
||||
description="""
|
||||
Search for all tasks assigned to team members in the last 30 days,
|
||||
analyze completion patterns, and create optimization recommendations
|
||||
""",
|
||||
agent=task_analyst,
|
||||
expected_output="Task analysis report with optimization recommendations"
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[task_analyst],
|
||||
tasks=[task_analysis]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### 도움 받기
|
||||
|
||||
<Card title="도움이 필요하신가요?" icon="headset" href="mailto:support@crewai.com">
|
||||
ClickUp 연동 설정 또는 문제 해결에 대한 지원이 필요하신 경우 저희 지원팀에 문의하세요.
|
||||
</Card>
|
||||
323
docs/ko/enterprise/integrations/github.mdx
Normal file
323
docs/ko/enterprise/integrations/github.mdx
Normal file
@@ -0,0 +1,323 @@
|
||||
---
|
||||
title: GitHub 통합
|
||||
description: "CrewAI를 위한 GitHub 통합을 통한 리포지토리 및 이슈 관리."
|
||||
icon: "github"
|
||||
---
|
||||
|
||||
## 개요
|
||||
|
||||
에이전트가 GitHub를 통해 리포지토리, 이슈, 릴리스를 관리할 수 있도록 지원합니다. 이슈를 생성 및 업데이트하고, 릴리스를 관리하고, 프로젝트 개발을 추적하며, AI 기반 자동화를 통해 소프트웨어 개발 워크플로우를 효율화하세요.
|
||||
|
||||
## 사전 요구 사항
|
||||
|
||||
GitHub 통합을 사용하기 전에 다음을 확인하세요:
|
||||
|
||||
- 활성 구독이 있는 [CrewAI Enterprise](https://app.crewai.com) 계정
|
||||
- 해당 리포지토리에 대한 적절한 권한이 있는 GitHub 계정
|
||||
- [통합 페이지](https://app.crewai.com/crewai_plus/connectors)를 통해 GitHub 계정 연결 완료
|
||||
|
||||
## GitHub 연동 설정
|
||||
|
||||
### 1. GitHub 계정 연결하기
|
||||
|
||||
1. [CrewAI Enterprise Integrations](https://app.crewai.com/crewai_plus/connectors)로 이동합니다.
|
||||
2. 인증 통합 섹션에서 **GitHub**을 찾습니다.
|
||||
3. **Connect**를 클릭하고 OAuth 흐름을 완료합니다.
|
||||
4. 리포지토리 및 이슈 관리를 위한 필수 권한을 부여합니다.
|
||||
5. [계정 설정](https://app.crewai.com/crewai_plus/settings/account)에서 Enterprise Token을 복사합니다.
|
||||
|
||||
### 2. 필수 패키지 설치
|
||||
|
||||
```bash
|
||||
uv add crewai-tools
|
||||
```
|
||||
|
||||
## 사용 가능한 작업
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="GITHUB_CREATE_ISSUE">
|
||||
**설명:** GitHub에 이슈를 생성합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `owner` (string, 필수): 소유자 - 이 이슈와 연관된 저장소의 계정 소유자 이름을 지정합니다. (예시: "abc").
|
||||
- `repo` (string, 필수): 저장소 - 이 이슈와 연관된 저장소 이름을 지정합니다.
|
||||
- `title` (string, 필수): 이슈 제목 - 생성할 이슈의 제목을 지정합니다.
|
||||
- `body` (string, 선택): 이슈 본문 - 생성할 이슈의 본문 내용을 지정합니다.
|
||||
- `assignees` (string, 선택): 담당자 - 이 이슈의 담당자 GitHub 로그인을 문자열 배열로 지정합니다. (예시: `["octocat"]`).
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GITHUB_UPDATE_ISSUE">
|
||||
**설명:** GitHub에서 이슈를 업데이트합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `owner` (string, 필수): 소유자 - 이 이슈와 연관된 저장소의 계정 소유자 이름을 지정합니다. (예시: "abc").
|
||||
- `repo` (string, 필수): 저장소 - 이 이슈와 연관된 저장소 이름을 지정합니다.
|
||||
- `issue_number` (string, 필수): 이슈 번호 - 업데이트할 이슈의 번호를 지정합니다.
|
||||
- `title` (string, 필수): 이슈 제목 - 업데이트할 이슈의 제목을 지정합니다.
|
||||
- `body` (string, 선택): 이슈 본문 - 업데이트할 이슈의 본문 내용을 지정합니다.
|
||||
- `assignees` (string, 선택): 담당자 - 이 이슈의 담당자 GitHub 로그인을 문자열 배열로 지정합니다. (예시: `["octocat"]`).
|
||||
- `state` (string, 선택): 상태 - 이슈의 변경된 상태를 지정합니다.
|
||||
- 옵션: `open`, `closed`
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GITHUB_GET_ISSUE_BY_NUMBER">
|
||||
**설명:** GitHub에서 번호로 이슈를 조회합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `owner` (string, 필수): 소유자 - 이 이슈와 연관된 저장소의 계정 소유자 이름을 지정합니다. (예시: "abc").
|
||||
- `repo` (string, 필수): 저장소 - 이 이슈와 연관된 저장소 이름을 지정합니다.
|
||||
- `issue_number` (string, 필수): 이슈 번호 - 가져올 이슈의 번호를 지정합니다.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GITHUB_LOCK_ISSUE">
|
||||
**설명:** GitHub에서 이슈를 잠급니다.
|
||||
|
||||
**파라미터:**
|
||||
- `owner` (string, 필수): 소유자 - 이 이슈와 연관된 저장소의 계정 소유자 이름을 지정합니다. (예시: "abc").
|
||||
- `repo` (string, 필수): 저장소 - 이 이슈와 연관된 저장소 이름을 지정합니다.
|
||||
- `issue_number` (string, 필수): 이슈 번호 - 잠글 이슈의 번호를 지정합니다.
|
||||
- `lock_reason` (string, 필수): 잠금 사유 - 이슈 또는 풀 리퀘스트 대화에 대한 잠금 이유를 지정합니다.
|
||||
- 옵션: `off-topic`, `too heated`, `resolved`, `spam`
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GITHUB_SEARCH_ISSUE">
|
||||
**설명:** GitHub에서 이슈를 검색합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `owner` (string, 필수): 소유자 - 이 이슈와 연관된 저장소의 계정 소유자 이름을 지정합니다. (예시: "abc").
|
||||
- `repo` (string, 필수): 저장소 - 이 이슈와 연관된 저장소 이름을 지정합니다.
|
||||
- `filter` (object, 필수): 불리언 표준형의 필터 - 단일 조건의 AND 그룹의 OR 조합.
|
||||
```json
|
||||
{
|
||||
"operator": "OR",
|
||||
"conditions": [
|
||||
{
|
||||
"operator": "AND",
|
||||
"conditions": [
|
||||
{
|
||||
"field": "assignee",
|
||||
"operator": "$stringExactlyMatches",
|
||||
"value": "octocat"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
사용 가능한 필드: `assignee`, `creator`, `mentioned`, `labels`
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GITHUB_CREATE_RELEASE">
|
||||
**설명:** GitHub에 릴리스를 생성합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `owner` (string, 필수): 소유자 - 이 릴리스와 연관된 저장소의 계정 소유자 이름을 지정합니다. (예시: "abc").
|
||||
- `repo` (string, 필수): 저장소 - 이 릴리스와 연관된 저장소 이름을 지정합니다.
|
||||
- `tag_name` (string, 필수): 이름 - 생성할 릴리스 태그의 이름을 지정합니다. (예시: "v1.0.0").
|
||||
- `target_commitish` (string, 선택): 대상 - 릴리스의 대상을 지정합니다. 브랜치 이름이나 커밋 SHA가 될 수 있으며, 기본값은 메인 브랜치입니다. (예시: "master").
|
||||
- `body` (string, 선택): 본문 - 이 릴리스에 대한 설명을 지정합니다.
|
||||
- `draft` (string, 선택): 초안 - 생성할 릴리스를 초안(비공개) 릴리스로 지정할지 여부를 지정합니다.
|
||||
- 옵션: `true`, `false`
|
||||
- `prerelease` (string, 선택): 프리릴리스 - 생성할 릴리스를 프리릴리스로 지정할지 여부를 지정합니다.
|
||||
- 옵션: `true`, `false`
|
||||
- `discussion_category_name` (string, 선택): 토론 카테고리 이름 - 지정 시, 해당 카테고리의 토론이 생성되어 릴리스와 연결됩니다. 값은 저장소에 이미 존재하는 카테고리여야 합니다.
|
||||
- `generate_release_notes` (string, 선택): 릴리스 노트 - 지정한 이름과 본문을 사용하여 릴리스 노트를 자동으로 생성할지 여부를 지정합니다.
|
||||
- 옵션: `true`, `false`
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GITHUB_UPDATE_RELEASE">
|
||||
**설명:** GitHub에서 릴리스를 업데이트합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `owner` (string, 필수): 소유자 - 이 릴리스와 연관된 저장소의 계정 소유자 이름을 지정합니다. (예시: "abc").
|
||||
- `repo` (string, 필수): 저장소 - 이 릴리스와 연관된 저장소 이름을 지정합니다.
|
||||
- `id` (string, 필수): 릴리스 ID - 업데이트할 릴리스의 ID를 지정합니다.
|
||||
- `tag_name` (string, 선택): 이름 - 업데이트할 릴리스 태그의 이름을 지정합니다. (예시: "v1.0.0").
|
||||
- `target_commitish` (string, 선택): 대상 - 릴리스의 대상을 지정합니다. 브랜치 이름이나 커밋 SHA가 될 수 있으며, 기본값은 메인 브랜치입니다. (예시: "master").
|
||||
- `body` (string, 선택): 본문 - 이 릴리스에 대한 설명을 지정합니다.
|
||||
- `draft` (string, 선택): 초안 - 생성할 릴리스를 초안(비공개) 릴리스로 지정할지 여부를 지정합니다.
|
||||
- 옵션: `true`, `false`
|
||||
- `prerelease` (string, 선택): 프리릴리스 - 생성할 릴리스를 프리릴리스로 지정할지 여부를 지정합니다.
|
||||
- 옵션: `true`, `false`
|
||||
- `discussion_category_name` (string, 선택): 토론 카테고리 이름 - 지정 시, 해당 카테고리의 토론이 생성되어 릴리스와 연결됩니다. 값은 저장소에 이미 존재하는 카테고리여야 합니다.
|
||||
- `generate_release_notes` (string, 선택): 릴리스 노트 - 지정한 이름과 본문을 사용하여 릴리스 노트를 자동으로 생성할지 여부를 지정합니다.
|
||||
- 옵션: `true`, `false`
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GITHUB_GET_RELEASE_BY_ID">
|
||||
**설명:** GitHub에서 ID로 릴리스를 조회합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `owner` (string, 필수): 소유자 - 이 릴리스와 연관된 저장소의 계정 소유자 이름을 지정합니다. (예시: "abc").
|
||||
- `repo` (string, 필수): 저장소 - 이 릴리스와 연관된 저장소 이름을 지정합니다.
|
||||
- `id` (string, 필수): 릴리스 ID - 조회할 릴리스의 ID를 지정합니다.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GITHUB_GET_RELEASE_BY_TAG_NAME">
|
||||
**설명:** GitHub에서 태그 이름으로 릴리스를 조회합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `owner` (string, 필수): 소유자 - 이 릴리스와 연관된 저장소의 계정 소유자 이름을 지정합니다. (예시: "abc").
|
||||
- `repo` (string, 필수): 저장소 - 이 릴리스와 연관된 저장소 이름을 지정합니다.
|
||||
- `tag_name` (string, 필수): 이름 - 가져올 릴리스의 태그를 지정합니다. (예시: "v1.0.0").
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GITHUB_DELETE_RELEASE">
|
||||
**설명:** GitHub에서 릴리스를 삭제합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `owner` (string, 필수): 소유자 - 이 릴리스와 연관된 저장소의 계정 소유자 이름을 지정합니다. (예시: "abc").
|
||||
- `repo` (string, 필수): 저장소 - 이 릴리스와 연관된 저장소 이름을 지정합니다.
|
||||
- `id` (string, 필수): 릴리스 ID - 삭제할 릴리스의 ID를 지정합니다.
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
## 사용 예시
|
||||
|
||||
### 기본 GitHub 에이전트 설정
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
# Get enterprise tools (GitHub tools will be included)
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token"
|
||||
)
|
||||
|
||||
# Create an agent with GitHub capabilities
|
||||
github_agent = Agent(
|
||||
role="Repository Manager",
|
||||
goal="Manage GitHub repositories, issues, and releases efficiently",
|
||||
backstory="An AI assistant specialized in repository management and issue tracking.",
|
||||
tools=[enterprise_tools]
|
||||
)
|
||||
|
||||
# Task to create a new issue
|
||||
create_issue_task = Task(
|
||||
description="Create a bug report issue for the login functionality in the main repository",
|
||||
agent=github_agent,
|
||||
expected_output="Issue created successfully with issue number"
|
||||
)
|
||||
|
||||
# Run the task
|
||||
crew = Crew(
|
||||
agents=[github_agent],
|
||||
tasks=[create_issue_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### 특정 GitHub 도구 필터링
|
||||
|
||||
```python
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
# Get only specific GitHub tools
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token",
|
||||
actions_list=["github_create_issue", "github_update_issue", "github_search_issue"]
|
||||
)
|
||||
|
||||
issue_manager = Agent(
|
||||
role="Issue Manager",
|
||||
goal="Create and manage GitHub issues efficiently",
|
||||
backstory="An AI assistant that focuses on issue tracking and management.",
|
||||
tools=enterprise_tools
|
||||
)
|
||||
|
||||
# Task to manage issue workflow
|
||||
issue_workflow = Task(
|
||||
description="Create a feature request issue and assign it to the development team",
|
||||
agent=issue_manager,
|
||||
expected_output="Feature request issue created and assigned successfully"
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[issue_manager],
|
||||
tasks=[issue_workflow]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### 릴리즈 관리
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token"
|
||||
)
|
||||
|
||||
release_manager = Agent(
|
||||
role="Release Manager",
|
||||
goal="Manage software releases and versioning",
|
||||
backstory="An experienced release manager who handles version control and release processes.",
|
||||
tools=[enterprise_tools]
|
||||
)
|
||||
|
||||
# Task to create a new release
|
||||
release_task = Task(
|
||||
description="""
|
||||
Create a new release v2.1.0 for the project with:
|
||||
- Auto-generated release notes
|
||||
- Target the main branch
|
||||
- Include a description of new features and bug fixes
|
||||
""",
|
||||
agent=release_manager,
|
||||
expected_output="Release v2.1.0 created successfully with release notes"
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[release_manager],
|
||||
tasks=[release_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### 이슈 추적 및 관리
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token"
|
||||
)
|
||||
|
||||
project_coordinator = Agent(
|
||||
role="Project Coordinator",
|
||||
goal="Track and coordinate project issues and development progress",
|
||||
backstory="An AI assistant that helps coordinate development work and track project progress.",
|
||||
tools=[enterprise_tools]
|
||||
)
|
||||
|
||||
# Complex task involving multiple GitHub operations
|
||||
coordination_task = Task(
|
||||
description="""
|
||||
1. Search for all open issues assigned to the current milestone
|
||||
2. Identify overdue issues and update their priority labels
|
||||
3. Create a weekly progress report issue
|
||||
4. Lock resolved issues that have been inactive for 30 days
|
||||
""",
|
||||
agent=project_coordinator,
|
||||
expected_output="Project coordination completed with progress report and issue management"
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[project_coordinator],
|
||||
tasks=[coordination_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### 도움 받기
|
||||
|
||||
<Card title="도움이 필요하신가요?" icon="headset" href="mailto:support@crewai.com">
|
||||
GitHub 통합 설정 또는 문제 해결에 대해 지원팀에 문의하세요.
|
||||
</Card>
|
||||
356
docs/ko/enterprise/integrations/gmail.mdx
Normal file
356
docs/ko/enterprise/integrations/gmail.mdx
Normal file
@@ -0,0 +1,356 @@
|
||||
---
|
||||
title: Gmail 연동
|
||||
description: "CrewAI를 위한 Gmail 연동을 통한 이메일 및 연락처 관리."
|
||||
icon: "envelope"
|
||||
---
|
||||
|
||||
## 개요
|
||||
|
||||
에이전트가 Gmail을 통해 이메일, 연락처, 임시 저장 메시지를 관리할 수 있도록 합니다. 이메일을 보내고, 메시지를 검색하며, 연락처를 관리하고, 임시 저장 메시지를 작성하며, AI 기반 자동화를 통해 이메일 커뮤니케이션을 효율화하세요.
|
||||
|
||||
## 사전 준비 사항
|
||||
|
||||
Gmail 통합을 사용하기 전에 다음을 확인하세요:
|
||||
|
||||
- 활성 구독이 있는 [CrewAI Enterprise](https://app.crewai.com) 계정
|
||||
- 적절한 권한이 있는 Gmail 계정
|
||||
- [통합 페이지](https://app.crewai.com/crewai_plus/connectors)를 통해 Gmail 계정 연결
|
||||
|
||||
## Gmail 연동 설정
|
||||
|
||||
### 1. Gmail 계정 연결하기
|
||||
|
||||
1. [CrewAI Enterprise Integrations](https://app.crewai.com/crewai_plus/connectors)로 이동합니다.
|
||||
2. 인증 통합 섹션에서 **Gmail**을 찾습니다.
|
||||
3. **Connect**를 클릭하고 OAuth 흐름을 완료합니다.
|
||||
4. 이메일 및 연락처 관리를 위한 필요한 권한을 부여합니다.
|
||||
5. [Account Settings](https://app.crewai.com/crewai_plus/settings/account)에서 Enterprise Token을 복사합니다.
|
||||
|
||||
### 2. 필수 패키지 설치
|
||||
|
||||
```bash
|
||||
uv add crewai-tools
|
||||
```
|
||||
|
||||
## 사용 가능한 작업
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="GMAIL_SEND_EMAIL">
|
||||
**설명:** Gmail에서 이메일을 보냅니다.
|
||||
|
||||
**파라미터:**
|
||||
- `toRecipients` (array, 필수): 받는 사람 - 하나의 문자열 또는 JSON 배열로 받는 사람을 지정합니다.
|
||||
```json
|
||||
[
|
||||
"recipient1@domain.com",
|
||||
"recipient2@domain.com"
|
||||
]
|
||||
```
|
||||
- `from` (string, 필수): 보내는 사람 - 발신자의 이메일을 지정합니다.
|
||||
- `subject` (string, 필수): 제목 - 메시지의 제목을 지정합니다.
|
||||
- `messageContent` (string, 필수): 메시지 내용 - 이메일 메시지의 내용을 일반 텍스트 또는 HTML로 지정합니다.
|
||||
- `attachments` (string, 선택): 첨부파일 - 단일 파일 객체 또는 파일 객체의 JSON 배열을 허용합니다.
|
||||
- `additionalHeaders` (object, 선택): 추가 헤더 - 추가 헤더 필드를 지정할 수 있습니다.
|
||||
```json
|
||||
{
|
||||
"reply-to": "Sender Name <sender@domain.com>"
|
||||
}
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GMAIL_GET_EMAIL_BY_ID">
|
||||
**설명:** Gmail에서 ID로 이메일을 조회합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `userId` (string, 필수): 사용자 ID - 사용자의 이메일 주소를 지정합니다. (예: "user@domain.com").
|
||||
- `messageId` (string, 필수): 메시지 ID - 조회할 메시지의 ID를 지정합니다.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GMAIL_SEARCH_FOR_EMAIL">
|
||||
**설명:** 고급 필터를 사용하여 Gmail에서 이메일을 검색합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `emailFilterFormula` (object, 선택): 불리언 식(OR로 연결된 AND 그룹의 단일 조건)으로 된 필터.
|
||||
```json
|
||||
{
|
||||
"operator": "OR",
|
||||
"conditions": [
|
||||
{
|
||||
"operator": "AND",
|
||||
"conditions": [
|
||||
{
|
||||
"field": "from",
|
||||
"operator": "$stringContains",
|
||||
"value": "example@domain.com"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
사용 가능한 필드: `from`, `to`, `date`, `label`, `subject`, `cc`, `bcc`, `category`, `deliveredto:`, `size`, `filename`, `older_than`, `newer_than`, `list`, `is:important`, `is:unread`, `is:snoozed`, `is:starred`, `is:read`, `has:drive`, `has:document`, `has:spreadsheet`, `has:presentation`, `has:attachment`, `has:youtube`, `has:userlabels`
|
||||
- `paginationParameters` (object, 선택): 페이지네이션 파라미터.
|
||||
```json
|
||||
{
|
||||
"pageCursor": "page_cursor_string"
|
||||
}
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GMAIL_DELETE_EMAIL">
|
||||
**설명:** Gmail에서 이메일을 삭제합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `userId` (string, 필수): 사용자 ID - 사용자의 이메일 주소를 지정합니다. (예: "user@domain.com").
|
||||
- `messageId` (string, 필수): 메시지 ID - 휴지통으로 보낼 메시지의 ID를 지정합니다.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GMAIL_CREATE_A_CONTACT">
|
||||
**설명:** Gmail에서 연락처를 생성합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `givenName` (string, 필수): 이름 - 생성할 연락처의 이름을 지정합니다. (예: "John").
|
||||
- `familyName` (string, 필수): 성 - 생성할 연락처의 성을 지정합니다. (예: "Doe").
|
||||
- `email` (string, 필수): 이메일 - 생성할 연락처의 이메일 주소를 지정합니다.
|
||||
- `additionalFields` (object, 선택): 추가 필드 - 기타 연락처 정보를 입력할 수 있습니다.
|
||||
```json
|
||||
{
|
||||
"addresses": [
|
||||
{
|
||||
"streetAddress": "1000 North St.",
|
||||
"city": "Los Angeles"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GMAIL_GET_CONTACT_BY_RESOURCE_NAME">
|
||||
**설명:** Gmail에서 리소스 이름으로 연락처를 조회합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `resourceName` (string, 필수): 리소스 이름 - 조회할 연락처의 리소스 이름을 지정합니다.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GMAIL_SEARCH_FOR_CONTACT">
|
||||
**설명:** Gmail에서 연락처를 검색합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `searchTerm` (string, 필수): 검색어 - 이름, 닉네임, 이메일 주소, 전화번호 또는 조직 연락처 속성에서 유사하거나 정확히 일치하는 항목을 검색할 검색어를 지정합니다.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GMAIL_DELETE_CONTACT">
|
||||
**설명:** Gmail에서 연락처를 삭제합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `resourceName` (string, 필수): 리소스 이름 - 삭제할 연락처의 리소스 이름을 지정합니다.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GMAIL_CREATE_DRAFT">
|
||||
**설명:** Gmail에서 임시 저장 메일을 만듭니다.
|
||||
|
||||
**파라미터:**
|
||||
- `toRecipients` (array, 선택): 받는 사람 - 하나의 문자열 또는 JSON 배열로 받는 사람을 지정합니다.
|
||||
```json
|
||||
[
|
||||
"recipient1@domain.com",
|
||||
"recipient2@domain.com"
|
||||
]
|
||||
```
|
||||
- `from` (string, 선택): 보내는 사람 - 발신자의 이메일을 지정합니다.
|
||||
- `subject` (string, 선택): 제목 - 메시지의 제목을 지정합니다.
|
||||
- `messageContent` (string, 선택): 메시지 내용 - 이메일 메시지의 내용을 일반 텍스트 또는 HTML로 지정합니다.
|
||||
- `attachments` (string, 선택): 첨부파일 - 단일 파일 객체 또는 파일 객체의 JSON 배열을 허용합니다.
|
||||
- `additionalHeaders` (object, 선택): 추가 헤더 - 추가 헤더 필드를 지정할 수 있습니다.
|
||||
```json
|
||||
{
|
||||
"reply-to": "Sender Name <sender@domain.com>"
|
||||
}
|
||||
```
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
## 사용 예시
|
||||
|
||||
### 기본 Gmail 에이전트 설정
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
# Get enterprise tools (Gmail tools will be included)
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token"
|
||||
)
|
||||
|
||||
# Create an agent with Gmail capabilities
|
||||
gmail_agent = Agent(
|
||||
role="Email Manager",
|
||||
goal="Manage email communications and contacts efficiently",
|
||||
backstory="An AI assistant specialized in email management and communication.",
|
||||
tools=[enterprise_tools]
|
||||
)
|
||||
|
||||
# Task to send a follow-up email
|
||||
send_email_task = Task(
|
||||
description="Send a follow-up email to john@example.com about the project update meeting",
|
||||
agent=gmail_agent,
|
||||
expected_output="Email sent successfully with confirmation"
|
||||
)
|
||||
|
||||
# Run the task
|
||||
crew = Crew(
|
||||
agents=[gmail_agent],
|
||||
tasks=[send_email_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### 특정 Gmail 도구 필터링
|
||||
|
||||
```python
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
# Get only specific Gmail tools
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token",
|
||||
actions_list=["gmail_send_email", "gmail_search_for_email", "gmail_create_draft"]
|
||||
)
|
||||
|
||||
email_coordinator = Agent(
|
||||
role="Email Coordinator",
|
||||
goal="Coordinate email communications and manage drafts",
|
||||
backstory="An AI assistant that focuses on email coordination and draft management.",
|
||||
tools=enterprise_tools
|
||||
)
|
||||
|
||||
# Task to prepare and send emails
|
||||
email_coordination = Task(
|
||||
description="Search for emails from the marketing team, create a summary draft, and send it to stakeholders",
|
||||
agent=email_coordinator,
|
||||
expected_output="Summary email sent to stakeholders"
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[email_coordinator],
|
||||
tasks=[email_coordination]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### 연락처 관리
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token"
|
||||
)
|
||||
|
||||
contact_manager = Agent(
|
||||
role="Contact Manager",
|
||||
goal="Manage and organize email contacts efficiently",
|
||||
backstory="An experienced contact manager who maintains organized contact databases.",
|
||||
tools=[enterprise_tools]
|
||||
)
|
||||
|
||||
# Task to manage contacts
|
||||
contact_task = Task(
|
||||
description="""
|
||||
1. 'example.com' 도메인에서 연락처를 검색합니다.
|
||||
2. 연락처 목록에 없는 최근 이메일 발신자에 대해 새 연락처를 생성합니다.
|
||||
3. 최근 상호 작용 데이터를 반영하여 연락처 정보를 업데이트합니다.
|
||||
""",
|
||||
agent=contact_manager,
|
||||
expected_output="새 연락처와 최근 상호 작용으로 연락처 데이터베이스가 업데이트됨"
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[contact_manager],
|
||||
tasks=[contact_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### 이메일 검색 및 분석
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token"
|
||||
)
|
||||
|
||||
email_analyst = Agent(
|
||||
role="Email Analyst",
|
||||
goal="Analyze email patterns and provide insights",
|
||||
backstory="An AI assistant that analyzes email data to provide actionable insights.",
|
||||
tools=[enterprise_tools]
|
||||
)
|
||||
|
||||
# Task to analyze email patterns
|
||||
analysis_task = Task(
|
||||
description="""
|
||||
Search for all unread emails from the last 7 days,
|
||||
categorize them by sender domain,
|
||||
and create a summary report of communication patterns
|
||||
""",
|
||||
agent=email_analyst,
|
||||
expected_output="Email analysis report with communication patterns and recommendations"
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[email_analyst],
|
||||
tasks=[analysis_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### 자동화된 이메일 워크플로우
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token"
|
||||
)
|
||||
|
||||
workflow_manager = Agent(
|
||||
role="Email Workflow Manager",
|
||||
goal="Automate email workflows and responses",
|
||||
backstory="An AI assistant that manages automated email workflows and responses.",
|
||||
tools=[enterprise_tools]
|
||||
)
|
||||
|
||||
# Complex task involving multiple Gmail operations
|
||||
workflow_task = Task(
|
||||
description="""
|
||||
1. 지난 24시간 동안 제목에 'urgent'가 포함된 이메일 검색
|
||||
2. 각 긴급 이메일에 대한 답장 초안 생성
|
||||
3. 발신자에게 자동 확인 이메일 전송
|
||||
4. 주의가 필요한 긴급 항목의 요약 보고서 작성
|
||||
""",
|
||||
agent=workflow_manager,
|
||||
expected_output="긴급 이메일이 자동 응답 및 요약 보고서와 함께 처리됨"
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[workflow_manager],
|
||||
tasks=[workflow_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### 도움 받기
|
||||
|
||||
<Card title="도움이 필요하신가요?" icon="headset" href="mailto:support@crewai.com">
|
||||
Gmail 통합 설정 또는 문제 해결에 대한 지원이 필요하시다면 저희 지원팀에 문의해 주세요.
|
||||
</Card>
|
||||
391
docs/ko/enterprise/integrations/google_calendar.mdx
Normal file
391
docs/ko/enterprise/integrations/google_calendar.mdx
Normal file
@@ -0,0 +1,391 @@
|
||||
---
|
||||
title: Google 캘린더 연동
|
||||
description: "CrewAI를 위한 Google 캘린더 연동을 통한 이벤트 및 일정 관리."
|
||||
icon: "calendar"
|
||||
---
|
||||
|
||||
## 개요
|
||||
|
||||
에이전트가 Google Calendar를 통해 캘린더 이벤트, 일정, 가용 시간을 관리할 수 있도록 지원합니다. 이벤트를 생성 및 업데이트하고 참석자를 관리하며, 가용성을 확인하고 AI 기반 자동화로 일정 관리 워크플로우를 효율적으로 운영하세요.
|
||||
|
||||
## 필수 조건
|
||||
|
||||
Google Calendar 통합을 사용하기 전에 다음을 준비해야 합니다:
|
||||
|
||||
- 활성 구독이 있는 [CrewAI Enterprise](https://app.crewai.com) 계정
|
||||
- Google Calendar에 접근 가능한 Google 계정
|
||||
- [통합 페이지](https://app.crewai.com/crewai_plus/connectors)를 통해 Google 계정을 연결 완료
|
||||
|
||||
## Google Calendar 연동 설정
|
||||
|
||||
### 1. Google 계정 연결하기
|
||||
|
||||
1. [CrewAI Enterprise Integrations](https://app.crewai.com/crewai_plus/connectors)로 이동합니다.
|
||||
2. 인증 통합 섹션에서 **Google Calendar**를 찾습니다.
|
||||
3. **Connect**를 클릭하고 OAuth 과정을 완료합니다.
|
||||
4. 캘린더 및 연락처 접근 권한을 허용합니다.
|
||||
5. [Account Settings](https://app.crewai.com/crewai_plus/settings/account)에서 Enterprise Token을 복사합니다.
|
||||
|
||||
### 2. 필수 패키지 설치
|
||||
|
||||
```bash
|
||||
uv add crewai-tools
|
||||
```
|
||||
|
||||
## 사용 가능한 작업
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="GOOGLE_CALENDAR_CREATE_EVENT">
|
||||
**설명:** Google 캘린더에 이벤트를 생성합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `eventName` (string, 필수): 이벤트 이름.
|
||||
- `startTime` (string, 필수): 시작 시간 - Unix 타임스탬프 또는 ISO8601 날짜 형식 허용.
|
||||
- `endTime` (string, 선택): 종료 시간 - 비워두면 시작 시간 기준 1시간 후로 기본 설정됩니다.
|
||||
- `calendar` (string, 선택): 캘린더 - Connect Portal Workflow Settings를 사용하여 사용자가 이벤트를 추가할 캘린더를 선택할 수 있도록 합니다. 비워두면 사용자의 기본 캘린더로 기본 설정됩니다.
|
||||
- `attendees` (string, 선택): 참석자 - 이메일 주소 배열 또는 쉼표로 구분된 이메일 주소 허용.
|
||||
- `eventLocation` (string, 선택): 이벤트 위치.
|
||||
- `eventDescription` (string, 선택): 이벤트 설명.
|
||||
- `eventId` (string, 선택): 이벤트 ID - 이 이벤트와 연결할 애플리케이션의 ID입니다. 이후 이 ID를 사용하여 이벤트를 동기화할 수 있습니다.
|
||||
- `includeMeetLink` (boolean, 선택): Google Meet 링크 포함 여부? - 이 이벤트에 대해 Google Meet 컨퍼런스 링크를 자동으로 생성합니다.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GOOGLE_CALENDAR_UPDATE_EVENT">
|
||||
**설명:** Google 캘린더에서 기존 이벤트를 업데이트합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `eventId` (string, 필수): 이벤트 ID - 업데이트할 이벤트의 ID입니다.
|
||||
- `eventName` (string, 선택): 이벤트 이름.
|
||||
- `startTime` (string, 선택): 시작 시간 - Unix 타임스탬프 또는 ISO8601 날짜 형식 허용.
|
||||
- `endTime` (string, 선택): 종료 시간 - 비워두면 시작 시간 기준 1시간 후로 기본 설정됩니다.
|
||||
- `calendar` (string, 선택): 캘린더 - Connect Portal Workflow Settings를 사용하여 사용자가 이벤트를 추가할 캘린더를 선택할 수 있도록 합니다. 비워두면 사용자의 기본 캘린더로 기본 설정됩니다.
|
||||
- `attendees` (string, 선택): 참석자 - 이메일 주소 배열 또는 쉼표로 구분된 이메일 주소 허용.
|
||||
- `eventLocation` (string, 선택): 이벤트 위치.
|
||||
- `eventDescription` (string, 선택): 이벤트 설명.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GOOGLE_CALENDAR_LIST_EVENTS">
|
||||
**설명:** Google 캘린더에서 이벤트 목록을 가져옵니다.
|
||||
|
||||
**파라미터:**
|
||||
- `calendar` (string, 선택): 캘린더 - Connect Portal Workflow Settings를 사용하여 사용자가 이벤트를 추가할 캘린더를 선택할 수 있도록 합니다. 비워두면 사용자의 기본 캘린더로 기본 설정됩니다.
|
||||
- `after` (string, 선택): 이후 - 제공된 날짜 이후에 시작하는 이벤트를 필터링합니다 (밀리초 단위의 Unix 또는 ISO 타임스탬프). (예시: "2025-04-12T10:00:00Z 또는 1712908800000").
|
||||
- `before` (string, 선택): 이전 - 제공된 날짜 이전에 종료되는 이벤트를 필터링합니다 (밀리초 단위의 Unix 또는 ISO 타임스탬프). (예시: "2025-04-12T10:00:00Z 또는 1712908800000").
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GOOGLE_CALENDAR_GET_EVENT_BY_ID">
|
||||
**설명:** Google 캘린더에서 ID로 특정 이벤트를 가져옵니다.
|
||||
|
||||
**파라미터:**
|
||||
- `eventId` (string, 필수): 이벤트 ID.
|
||||
- `calendar` (string, 선택): 캘린더 - Connect Portal Workflow Settings를 사용하여 사용자가 이벤트를 추가할 캘린더를 선택할 수 있도록 합니다. 비워두면 사용자의 기본 캘린더로 기본 설정됩니다.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GOOGLE_CALENDAR_DELETE_EVENT">
|
||||
**설명:** Google 캘린더에서 이벤트를 삭제합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `eventId` (string, 필수): 이벤트 ID - 삭제할 캘린더 이벤트의 ID입니다.
|
||||
- `calendar` (string, 선택): 캘린더 - Connect Portal Workflow Settings를 사용하여 사용자가 이벤트를 추가할 캘린더를 선택할 수 있도록 합니다. 비워두면 사용자의 기본 캘린더로 기본 설정됩니다.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GOOGLE_CALENDAR_GET_CONTACTS">
|
||||
**설명:** Google 캘린더에서 연락처를 가져옵니다.
|
||||
|
||||
**파라미터:**
|
||||
- `paginationParameters` (object, 선택): 페이지네이션 파라미터.
|
||||
```json
|
||||
{
|
||||
"pageCursor": "page_cursor_string"
|
||||
}
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GOOGLE_CALENDAR_SEARCH_CONTACTS">
|
||||
**설명:** Google 캘린더에서 연락처를 검색합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `query` (string, 선택): 연락처를 검색할 검색 쿼리.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GOOGLE_CALENDAR_LIST_DIRECTORY_PEOPLE">
|
||||
**설명:** 디렉토리 구성원 목록을 가져옵니다.
|
||||
|
||||
**파라미터:**
|
||||
- `paginationParameters` (object, 선택): 페이지네이션 파라미터.
|
||||
```json
|
||||
{
|
||||
"pageCursor": "page_cursor_string"
|
||||
}
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GOOGLE_CALENDAR_SEARCH_DIRECTORY_PEOPLE">
|
||||
**설명:** 디렉토리 구성원을 검색합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `query` (string, 필수): 연락처를 검색할 검색 쿼리.
|
||||
- `paginationParameters` (object, 선택): 페이지네이션 파라미터.
|
||||
```json
|
||||
{
|
||||
"pageCursor": "page_cursor_string"
|
||||
}
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GOOGLE_CALENDAR_LIST_OTHER_CONTACTS">
|
||||
**설명:** 기타 연락처 목록을 가져옵니다.
|
||||
|
||||
**파라미터:**
|
||||
- `paginationParameters` (object, 선택): 페이지네이션 파라미터.
|
||||
```json
|
||||
{
|
||||
"pageCursor": "page_cursor_string"
|
||||
}
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GOOGLE_CALENDAR_SEARCH_OTHER_CONTACTS">
|
||||
**설명:** 기타 연락처를 검색합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `query` (string, 선택): 연락처를 검색할 검색 쿼리.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GOOGLE_CALENDAR_GET_AVAILABILITY">
|
||||
**설명:** 캘린더의 가용성 정보를 가져옵니다.
|
||||
|
||||
**파라미터:**
|
||||
- `timeMin` (string, 필수): 기간의 시작. ISO 형식.
|
||||
- `timeMax` (string, 필수): 기간의 끝. ISO 형식.
|
||||
- `timeZone` (string, 선택): 응답에 사용되는 시간대. 선택 사항입니다. 기본값은 UTC입니다.
|
||||
- `items` (array, 선택): 조회할 캘린더 및/또는 그룹 목록. 비워두면 사용자 기본 캘린더가 기본값입니다.
|
||||
```json
|
||||
[
|
||||
{
|
||||
"id": "calendar_id_1"
|
||||
},
|
||||
{
|
||||
"id": "calendar_id_2"
|
||||
}
|
||||
]
|
||||
```
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
## 사용 예시
|
||||
|
||||
### 기본 캘린더 에이전트 설정
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
# Get enterprise tools (Google Calendar tools will be included)
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token"
|
||||
)
|
||||
|
||||
# Create an agent with Google Calendar capabilities
|
||||
calendar_agent = Agent(
|
||||
role="Schedule Manager",
|
||||
goal="Manage calendar events and scheduling efficiently",
|
||||
backstory="An AI assistant specialized in calendar management and scheduling coordination.",
|
||||
tools=[enterprise_tools]
|
||||
)
|
||||
|
||||
# Task to create a meeting
|
||||
create_meeting_task = Task(
|
||||
description="Create a team standup meeting for tomorrow at 9 AM with the development team",
|
||||
agent=calendar_agent,
|
||||
expected_output="Meeting created successfully with Google Meet link"
|
||||
)
|
||||
|
||||
# Run the task
|
||||
crew = Crew(
|
||||
agents=[calendar_agent],
|
||||
tasks=[create_meeting_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### 특정 캘린더 도구 필터링
|
||||
|
||||
```python
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
# Get only specific Google Calendar tools
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token",
|
||||
actions_list=["google_calendar_create_event", "google_calendar_list_events", "google_calendar_get_availability"]
|
||||
)
|
||||
|
||||
meeting_coordinator = Agent(
|
||||
role="Meeting Coordinator",
|
||||
goal="Coordinate meetings and check availability",
|
||||
backstory="An AI assistant that focuses on meeting scheduling and availability management.",
|
||||
tools=enterprise_tools
|
||||
)
|
||||
|
||||
# Task to schedule a meeting with availability check
|
||||
schedule_meeting = Task(
|
||||
description="Check availability for next week and schedule a project review meeting with stakeholders",
|
||||
agent=meeting_coordinator,
|
||||
expected_output="Meeting scheduled after checking availability of all participants"
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[meeting_coordinator],
|
||||
tasks=[schedule_meeting]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### 이벤트 관리 및 업데이트
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token"
|
||||
)
|
||||
|
||||
event_manager = Agent(
|
||||
role="Event Manager",
|
||||
goal="Manage and update calendar events efficiently",
|
||||
backstory="An experienced event manager who handles event logistics and updates.",
|
||||
tools=[enterprise_tools]
|
||||
)
|
||||
|
||||
# Task to manage event updates
|
||||
event_management = Task(
|
||||
description="""
|
||||
1. List all events for this week
|
||||
2. Update any events that need location changes to include video conference links
|
||||
3. Send calendar invitations to new team members for recurring meetings
|
||||
""",
|
||||
agent=event_manager,
|
||||
expected_output="Weekly events updated with proper locations and new attendees added"
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[event_manager],
|
||||
tasks=[event_management]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### 연락처 및 가용성 관리
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token"
|
||||
)
|
||||
|
||||
availability_coordinator = Agent(
|
||||
role="Availability Coordinator",
|
||||
goal="Coordinate availability and manage contacts for scheduling",
|
||||
backstory="An AI assistant that specializes in availability management and contact coordination.",
|
||||
tools=[enterprise_tools]
|
||||
)
|
||||
|
||||
# Task to coordinate availability
|
||||
availability_task = Task(
|
||||
description="""
|
||||
1. 엔지니어링 부서의 연락처를 검색합니다.
|
||||
2. 다음 주 금요일 오후에 모든 엔지니어의 가용성을 확인합니다.
|
||||
3. 가장 먼저 가능한 2시간 슬롯에 팀 미팅을 만듭니다.
|
||||
4. Google Meet 링크를 포함하고 초대장을 발송합니다.
|
||||
""",
|
||||
agent=availability_coordinator,
|
||||
expected_output="가용성에 따라 팀 미팅이 일정 예약되고 모든 엔지니어가 초대됨"
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[availability_coordinator],
|
||||
tasks=[availability_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### 자동화된 일정 관리 워크플로우
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token"
|
||||
)
|
||||
|
||||
scheduling_automator = Agent(
|
||||
role="Scheduling Automator",
|
||||
goal="Automate scheduling workflows and calendar management",
|
||||
backstory="An AI assistant that automates complex scheduling scenarios and calendar workflows.",
|
||||
tools=[enterprise_tools]
|
||||
)
|
||||
|
||||
# Complex scheduling automation task
|
||||
automation_task = Task(
|
||||
description="""
|
||||
1. 앞으로 2주간 예정된 모든 이벤트를 나열합니다.
|
||||
2. 일정 충돌 또는 연이어 배정된 미팅을 식별합니다.
|
||||
3. 가용 시간을 확인하여 최적의 미팅 시간을 제안합니다.
|
||||
4. 필요한 경우 미팅 사이에 버퍼 시간을 생성합니다.
|
||||
5. 아젠다 항목 및 미팅 링크가 포함된 이벤트 설명을 업데이트합니다.
|
||||
""",
|
||||
agent=scheduling_automator,
|
||||
expected_output="일정 충돌이 해결되고 버퍼 타임 및 미팅 세부 정보가 업데이트된 최적화된 캘린더"
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[scheduling_automator],
|
||||
tasks=[automation_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
## 문제 해결
|
||||
|
||||
### 일반적인 문제
|
||||
|
||||
**인증 오류**
|
||||
- Google 계정에 캘린더 접근에 필요한 권한이 있는지 확인하세요
|
||||
- OAuth 연결에 Google Calendar API에 필요한 모든 범위가 포함되어 있는지 확인하세요
|
||||
- 캘린더 공유 설정이 필요한 접근 수준을 허용하는지 확인하세요
|
||||
|
||||
**이벤트 생성 문제**
|
||||
- 시간 형식이 올바른지(ISO8601 또는 Unix 타임스탬프) 확인하세요
|
||||
- 참석자 이메일 주소가 올바르게 형식화되어 있는지 확인하세요
|
||||
- 대상 캘린더가 존재하며 접근 가능한지 확인하세요
|
||||
- 올바른 시간대가 지정되어 있는지 확인하세요
|
||||
|
||||
**가용성 및 시간 충돌**
|
||||
- 가용성 확인 시 시간 범위에 올바른 ISO 형식을 사용하세요
|
||||
- 모든 작업에서 시간대가 일관성 있는지 확인하세요
|
||||
- 여러 캘린더를 확인할 때 캘린더 ID가 올바른지 확인하세요
|
||||
|
||||
**연락처 및 사용자 검색**
|
||||
- 검색 쿼리가 올바르게 형식화되어 있는지 확인하세요
|
||||
- 디렉터리 접근 권한이 부여되었는지 확인하세요
|
||||
- 연락처 정보가 최신이며 접근 가능한지 확인하세요
|
||||
|
||||
**이벤트 업데이트 및 삭제**
|
||||
- 이벤트 ID가 올바르며 이벤트가 존재하는지 확인하세요
|
||||
- 이벤트를 편집할 수 있는 권한이 있는지 확인하세요
|
||||
- 캘린더 소유권이 수정 작업을 허용하는지 확인하세요
|
||||
|
||||
### 도움 받기
|
||||
|
||||
<Card title="도움이 필요하신가요?" icon="headset" href="mailto:support@crewai.com">
|
||||
Google Calendar 연동 설정 또는 문제 해결에 대한 지원이 필요하면 저희 지원팀에 문의하세요.
|
||||
</Card>
|
||||
321
docs/ko/enterprise/integrations/google_sheets.mdx
Normal file
321
docs/ko/enterprise/integrations/google_sheets.mdx
Normal file
@@ -0,0 +1,321 @@
|
||||
---
|
||||
title: Google Sheets 연동
|
||||
description: "CrewAI를 위한 Google Sheets 연동을 통해 스프레드시트 데이터 동기화."
|
||||
icon: "google"
|
||||
---
|
||||
|
||||
## 개요
|
||||
|
||||
에이전트가 Google Sheets를 통해 스프레드시트 데이터를 관리할 수 있도록 합니다. 행을 읽고, 새 항목을 생성하며, 기존 데이터를 업데이트하고, AI 기반 자동화를 통해 데이터 관리 워크플로우를 간소화하세요. 데이터 추적, 보고, 협업 데이터 관리에 최적화되어 있습니다.
|
||||
|
||||
## 사전 준비 사항
|
||||
|
||||
Google Sheets 통합을 사용하기 전에 다음을 확인하세요:
|
||||
|
||||
- 활성 구독이 되어 있는 [CrewAI Enterprise](https://app.crewai.com) 계정
|
||||
- Google Sheets에 액세스할 수 있는 Google 계정
|
||||
- [통합 페이지](https://app.crewai.com/crewai_plus/connectors)를 통해 Google 계정 연결
|
||||
- 데이터 작업을 위한 올바른 열 헤더가 있는 스프레드시트
|
||||
|
||||
## Google Sheets 통합 설정
|
||||
|
||||
### 1. Google 계정 연결하기
|
||||
|
||||
1. [CrewAI Enterprise Integrations](https://app.crewai.com/crewai_plus/connectors)로 이동합니다.
|
||||
2. 인증 통합 섹션에서 **Google Sheets**를 찾습니다.
|
||||
3. **Connect**를 클릭하고 OAuth 흐름을 완료합니다.
|
||||
4. 스프레드시트 접근에 필요한 권한을 허용합니다.
|
||||
5. [Account Settings](https://app.crewai.com/crewai_plus/settings/account)에서 Enterprise Token을 복사합니다.
|
||||
|
||||
### 2. 필수 패키지 설치
|
||||
|
||||
```bash
|
||||
uv add crewai-tools
|
||||
```
|
||||
|
||||
## 사용 가능한 작업
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="GOOGLE_SHEETS_GET_ROW">
|
||||
**설명:** Google Sheets 스프레드시트에서 행을 가져옵니다.
|
||||
|
||||
**매개변수:**
|
||||
- `spreadsheetId` (string, 필수): 스프레드시트 - Connect Portal Workflow Settings를 사용하여 사용자가 스프레드시트를 선택할 수 있도록 합니다. 선택한 스프레드시트의 첫 번째 워크시트를 기본값으로 사용합니다.
|
||||
- `limit` (string, 선택): 행 제한 - 반환할 최대 행 수를 제한합니다.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GOOGLE_SHEETS_CREATE_ROW">
|
||||
**설명:** Google Sheets 스프레드시트에 새로운 행을 만듭니다.
|
||||
|
||||
**매개변수:**
|
||||
- `spreadsheetId` (string, 필수): 스프레드시트 - Connect Portal Workflow Settings를 사용하여 사용자가 스프레드시트를 선택할 수 있도록 합니다. 선택한 스프레드시트의 첫 번째 워크시트를 기본값으로 사용합니다.
|
||||
- `worksheet` (string, 필수): 워크시트 - 워크시트에는 반드시 열 헤더가 있어야 합니다.
|
||||
- `additionalFields` (object, 필수): 필드 - 추가할 행의 필드를 열 이름을 key로 하는 객체로 포함합니다. Connect Portal Workflow Settings를 사용하여 사용자가 열 매핑을 선택할 수 있도록 합니다.
|
||||
```json
|
||||
{
|
||||
"columnName1": "columnValue1",
|
||||
"columnName2": "columnValue2",
|
||||
"columnName3": "columnValue3",
|
||||
"columnName4": "columnValue4"
|
||||
}
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GOOGLE_SHEETS_UPDATE_ROW">
|
||||
**설명:** Google Sheets 스프레드시트의 기존 행을 업데이트합니다.
|
||||
|
||||
**매개변수:**
|
||||
- `spreadsheetId` (string, 필수): 스프레드시트 - Connect Portal Workflow Settings를 사용하여 사용자가 스프레드시트를 선택할 수 있도록 합니다. 선택한 스프레드시트의 첫 번째 워크시트를 기본값으로 사용합니다.
|
||||
- `worksheet` (string, 필수): 워크시트 - 워크시트에는 반드시 열 헤더가 있어야 합니다.
|
||||
- `filterFormula` (object, 선택): 필터 - 업데이트할 행을 식별하기 위한 단일 조건의 AND 그룹으로 이루어진 OR의 형태(분리 정규형)로 작성합니다.
|
||||
```json
|
||||
{
|
||||
"operator": "OR",
|
||||
"conditions": [
|
||||
{
|
||||
"operator": "AND",
|
||||
"conditions": [
|
||||
{
|
||||
"field": "status",
|
||||
"operator": "$stringExactlyMatches",
|
||||
"value": "pending"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
사용 가능한 연산자: `$stringContains`, `$stringDoesNotContain`, `$stringExactlyMatches`, `$stringDoesNotExactlyMatch`, `$stringStartsWith`, `$stringDoesNotStartWith`, `$stringEndsWith`, `$stringDoesNotEndWith`, `$numberGreaterThan`, `$numberLessThan`, `$numberEquals`, `$numberDoesNotEqual`, `$dateTimeAfter`, `$dateTimeBefore`, `$dateTimeEquals`, `$booleanTrue`, `$booleanFalse`, `$exists`, `$doesNotExist`
|
||||
- `additionalFields` (object, 필수): 필드 - 업데이트할 필드를 열 이름을 key로 하는 객체로 포함합니다. Connect Portal Workflow Settings를 사용하여 사용자가 열 매핑을 선택할 수 있도록 합니다.
|
||||
```json
|
||||
{
|
||||
"columnName1": "newValue1",
|
||||
"columnName2": "newValue2",
|
||||
"columnName3": "newValue3",
|
||||
"columnName4": "newValue4"
|
||||
}
|
||||
```
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
## 사용 예시
|
||||
|
||||
### 기본 Google Sheets 에이전트 설정
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
# Get enterprise tools (Google Sheets tools will be included)
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token"
|
||||
)
|
||||
|
||||
# Create an agent with Google Sheets capabilities
|
||||
sheets_agent = Agent(
|
||||
role="Data Manager",
|
||||
goal="Manage spreadsheet data and track information efficiently",
|
||||
backstory="An AI assistant specialized in data management and spreadsheet operations.",
|
||||
tools=[enterprise_tools]
|
||||
)
|
||||
|
||||
# Task to add new data to a spreadsheet
|
||||
data_entry_task = Task(
|
||||
description="Add a new customer record to the customer database spreadsheet with name, email, and signup date",
|
||||
agent=sheets_agent,
|
||||
expected_output="New customer record added successfully to the spreadsheet"
|
||||
)
|
||||
|
||||
# Run the task
|
||||
crew = Crew(
|
||||
agents=[sheets_agent],
|
||||
tasks=[data_entry_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### 특정 Google Sheets 도구 필터링
|
||||
|
||||
```python
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
# Get only specific Google Sheets tools
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token",
|
||||
actions_list=["google_sheets_get_row", "google_sheets_create_row"]
|
||||
)
|
||||
|
||||
data_collector = Agent(
|
||||
role="Data Collector",
|
||||
goal="Collect and organize data in spreadsheets",
|
||||
backstory="An AI assistant that focuses on data collection and organization.",
|
||||
tools=enterprise_tools
|
||||
)
|
||||
|
||||
# Task to collect and organize data
|
||||
data_collection = Task(
|
||||
description="Retrieve current inventory data and add new product entries to the inventory spreadsheet",
|
||||
agent=data_collector,
|
||||
expected_output="Inventory data retrieved and new products added successfully"
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[data_collector],
|
||||
tasks=[data_collection]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### 데이터 분석 및 보고
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token"
|
||||
)
|
||||
|
||||
data_analyst = Agent(
|
||||
role="Data Analyst",
|
||||
goal="Analyze spreadsheet data and generate insights",
|
||||
backstory="An experienced data analyst who extracts insights from spreadsheet data.",
|
||||
tools=[enterprise_tools]
|
||||
)
|
||||
|
||||
# Task to analyze data and create reports
|
||||
analysis_task = Task(
|
||||
description="""
|
||||
1. Retrieve all sales data from the current month's spreadsheet
|
||||
2. Analyze the data for trends and patterns
|
||||
3. Create a summary report in a new row with key metrics
|
||||
""",
|
||||
agent=data_analyst,
|
||||
expected_output="Sales data analyzed and summary report created with key insights"
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[data_analyst],
|
||||
tasks=[analysis_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### 자동화된 데이터 업데이트
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token"
|
||||
)
|
||||
|
||||
data_updater = Agent(
|
||||
role="Data Updater",
|
||||
goal="Automatically update and maintain spreadsheet data",
|
||||
backstory="An AI assistant that maintains data accuracy and updates records automatically.",
|
||||
tools=[enterprise_tools]
|
||||
)
|
||||
|
||||
# Task to update data based on conditions
|
||||
update_task = Task(
|
||||
description="""
|
||||
1. 주문 스프레드시트에서 모든 보류 중인 주문을 찾으세요
|
||||
2. 해당 주문의 상태를 'processing'으로 업데이트하세요
|
||||
3. 상태가 업데이트된 시점의 타임스탬프를 추가하세요
|
||||
4. 변경 사항을 별도의 추적 시트에 기록하세요
|
||||
""",
|
||||
agent=data_updater,
|
||||
expected_output="모든 보류 중인 주문이 processing 상태로 업데이트되고, 타임스탬프가 기록됨"
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[data_updater],
|
||||
tasks=[update_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### 복잡한 데이터 관리 워크플로우
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token"
|
||||
)
|
||||
|
||||
workflow_manager = Agent(
|
||||
role="Data Workflow Manager",
|
||||
goal="Manage complex data workflows across multiple spreadsheets",
|
||||
backstory="An AI assistant that orchestrates complex data operations across multiple spreadsheets.",
|
||||
tools=[enterprise_tools]
|
||||
)
|
||||
|
||||
# Complex workflow task
|
||||
workflow_task = Task(
|
||||
description="""
|
||||
1. 메인 고객 스프레드시트에서 모든 고객 데이터를 가져옵니다
|
||||
2. 활성 고객에 대한 월별 요약 항목을 생성합니다
|
||||
3. 최근 30일간의 활동을 기반으로 고객 상태를 업데이트합니다
|
||||
4. 고객 지표가 포함된 월간 보고서를 생성합니다
|
||||
5. 비활성 고객 기록을 별도의 시트로 보관합니다
|
||||
""",
|
||||
agent=workflow_manager,
|
||||
expected_output="월간 고객 워크플로우가 완료되어 상태가 업데이트되고 보고서가 생성됨"
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[workflow_manager],
|
||||
tasks=[workflow_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
## 문제 해결
|
||||
|
||||
### 일반적인 문제
|
||||
|
||||
**권한 오류**
|
||||
- Google 계정이 대상 스프레드시트에 대해 편집 권한이 있는지 확인하세요
|
||||
- OAuth 연결에 Google Sheets API에 필요한 scope가 포함되어 있는지 검증하세요
|
||||
- 스프레드시트가 인증된 계정과 공유되어 있는지 확인하세요
|
||||
|
||||
**스프레드시트 구조 문제**
|
||||
- 행을 생성하거나 업데이트하기 전에 워크시트에 올바른 열 헤더가 있는지 확인하세요
|
||||
- `additionalFields`의 열 이름이 실제 열 헤더와 일치하는지 검증하세요
|
||||
- 지정된 워크시트가 스프레드시트에 존재하는지 확인하세요
|
||||
|
||||
**데이터 유형 및 형식 문제**
|
||||
- 데이터 값이 각 열에 대해 예상되는 형식과 일치하는지 확인하세요
|
||||
- 날짜 열에는 올바른 날짜 형식(ISO 형식 권장)을 사용하세요
|
||||
- 숫자 열에 입력되는 값이 적절한 형식인지 검증하세요
|
||||
|
||||
**필터 수식 문제**
|
||||
- 필터 수식이 부정 정규형(disjunctive normal form)의 올바른 JSON 구조를 따르는지 확인하세요
|
||||
- 실제 열 헤더와 일치하는 유효한 필드명을 사용하세요
|
||||
- 복잡한 다중 조건 쿼리를 작성하기 전에 간단한 필터로 테스트하세요
|
||||
- 연산자 유형이 열의 데이터 유형과 일치하는지 검증하세요
|
||||
|
||||
**행 제한 및 성능**
|
||||
- `GOOGLE_SHEETS_GET_ROW`를 사용할 때 행 제한에 유의하세요
|
||||
- 대용량 데이터셋의 경우 페이지네이션을 고려하세요
|
||||
- 처리되는 데이터의 양을 줄이기 위해 구체적인 필터를 사용하세요
|
||||
|
||||
**업데이트 작업**
|
||||
- 필터 조건이 업데이트하려는 행을 정확하게 식별하는지 확인하세요
|
||||
- 대규모 업데이트 전에 작은 데이터셋으로 필터 조건을 테스트하세요
|
||||
- 모든 필수 필드가 업데이트 작업에 포함되어 있는지 검증하세요
|
||||
|
||||
### 도움 받기
|
||||
|
||||
<Card title="도움이 필요하신가요?" icon="headset" href="mailto:support@crewai.com">
|
||||
Google Sheets 통합 설정 또는 문제 해결에 대한 지원이 필요하시면 저희 지원팀으로 문의해 주세요.
|
||||
</Card>
|
||||
579
docs/ko/enterprise/integrations/hubspot.mdx
Normal file
579
docs/ko/enterprise/integrations/hubspot.mdx
Normal file
@@ -0,0 +1,579 @@
|
||||
---
|
||||
title: "HubSpot 연동"
|
||||
description: "CrewAI로 HubSpot에서 회사 및 연락처를 관리하세요."
|
||||
icon: "briefcase"
|
||||
---
|
||||
|
||||
## 개요
|
||||
|
||||
에이전트가 HubSpot 내에서 회사 및 연락처를 관리할 수 있도록 지원합니다. 새로운 레코드를 생성하고 AI 기반 자동화로 CRM 프로세스를 효율화하세요.
|
||||
|
||||
## 사전 준비 사항
|
||||
|
||||
HubSpot 통합을 사용하기 전에 다음을 확인하세요.
|
||||
|
||||
- 활성 구독이 있는 [CrewAI Enterprise](https://app.crewai.com) 계정
|
||||
- 적절한 권한이 있는 HubSpot 계정
|
||||
- [통합 페이지](https://app.crewai.com/crewai_plus/connectors)를 통해 HubSpot 계정이 연결되어 있음
|
||||
|
||||
## HubSpot 통합 설정
|
||||
|
||||
### 1. HubSpot 계정 연결하기
|
||||
|
||||
1. [CrewAI Enterprise Integrations](https://app.crewai.com/crewai_plus/connectors)로 이동합니다.
|
||||
2. 인증 통합 섹션에서 **HubSpot**을 찾습니다.
|
||||
3. **Connect**를 클릭하고 OAuth 플로우를 완료합니다.
|
||||
4. 회사 및 연락처 관리를 위한 필요한 권한을 부여합니다.
|
||||
5. [계정 설정](https://app.crewai.com/crewai_plus/settings/account)에서 Enterprise Token을 복사합니다.
|
||||
|
||||
### 2. 필수 패키지 설치
|
||||
|
||||
```bash
|
||||
uv add crewai-tools
|
||||
```
|
||||
|
||||
## 사용 가능한 액션
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="HUBSPOT_CREATE_RECORD_COMPANIES">
|
||||
**설명:** HubSpot에서 새로운 회사 레코드를 생성합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `name` (string, 필수): 회사명.
|
||||
- `domain` (string, 선택): 회사 도메인명.
|
||||
- `industry` (string, 선택): 산업군. HubSpot에서 미리 정의된 값 중 하나여야 합니다.
|
||||
- `phone` (string, 선택): 전화번호.
|
||||
- `hubspot_owner_id` (string, 선택): 회사 소유자 ID.
|
||||
- `type` (string, 선택): 회사 유형. 사용 가능한 값: `PROSPECT`, `PARTNER`, `RESELLER`, `VENDOR`, `OTHER`.
|
||||
- `city` (string, 선택): 도시.
|
||||
- `state` (string, 선택): 주/지역.
|
||||
- `zip` (string, 선택): 우편번호.
|
||||
- `numberofemployees` (number, 선택): 직원 수.
|
||||
- `annualrevenue` (number, 선택): 연간 매출.
|
||||
- `timezone` (string, 선택): 시간대.
|
||||
- `description` (string, 선택): 설명.
|
||||
- `linkedin_company_page` (string, 선택): LinkedIn 회사 페이지 URL.
|
||||
- `company_email` (string, 선택): 회사 이메일.
|
||||
- `first_name` (string, 선택): 회사 연락처의 이름.
|
||||
- `last_name` (string, 선택): 회사 연락처의 성.
|
||||
- `about_us` (string, 선택): 회사 소개.
|
||||
- `hs_csm_sentiment` (string, 선택): CSM 만족도. 사용 가능한 값: `at_risk`, `neutral`, `healthy`.
|
||||
- `closedate` (string, 선택): 마감일.
|
||||
- `hs_keywords` (string, 선택): 회사 키워드. 미리 정의된 값 중 하나여야 합니다.
|
||||
- `country` (string, 선택): 국가/지역.
|
||||
- `hs_country_code` (string, 선택): 국가/지역 코드.
|
||||
- `hs_employee_range` (string, 선택): 직원 범위.
|
||||
- `facebook_company_page` (string, 선택): Facebook 회사 페이지 URL.
|
||||
- `facebookfans` (number, 선택): Facebook 팬 수.
|
||||
- `hs_gps_coordinates` (string, 선택): GPS 좌표.
|
||||
- `hs_gps_error` (string, 선택): GPS 오류.
|
||||
- `googleplus_page` (string, 선택): Google Plus 페이지 URL.
|
||||
- `owneremail` (string, 선택): HubSpot 소유자 이메일.
|
||||
- `ownername` (string, 선택): HubSpot 소유자 이름.
|
||||
- `hs_ideal_customer_profile` (string, 선택): 이상적인 고객 프로필 티어. 사용 가능한 값: `tier_1`, `tier_2`, `tier_3`.
|
||||
- `hs_industry_group` (string, 선택): 산업 그룹.
|
||||
- `is_public` (boolean, 선택): 공개 여부.
|
||||
- `hs_last_metered_enrichment_timestamp` (string, 선택): 마지막 enrichment 타임스탬프.
|
||||
- `hs_lead_status` (string, 선택): 리드 상태. 사용 가능한 값: `NEW`, `OPEN`, `IN_PROGRESS`, `OPEN_DEAL`, `UNQUALIFIED`, `ATTEMPTED_TO_CONTACT`, `CONNECTED`, `BAD_TIMING`.
|
||||
- `lifecyclestage` (string, 선택): 라이프사이클 단계. 사용 가능한 값: `subscriber`, `lead`, `marketingqualifiedlead`, `salesqualifiedlead`, `opportunity`, `customer`, `evangelist`, `other`.
|
||||
- `linkedinbio` (string, 선택): LinkedIn 바이오.
|
||||
- `hs_linkedin_handle` (string, 선택): LinkedIn 핸들.
|
||||
- `hs_live_enrichment_deadline` (string, 선택): 라이브 enrichment 기한.
|
||||
- `hs_logo_url` (string, 선택): 로고 URL.
|
||||
- `hs_analytics_source` (string, 선택): 원래 유입 경로.
|
||||
- `hs_pinned_engagement_id` (number, 선택): 고정된 참여 ID.
|
||||
- `hs_quick_context` (string, 선택): 간략한 컨텍스트.
|
||||
- `hs_revenue_range` (string, 선택): 매출 범위.
|
||||
- `hs_state_code` (string, 선택): 주/지역 코드.
|
||||
- `address` (string, 선택): 거리 주소.
|
||||
- `address2` (string, 선택): 거리 주소 2.
|
||||
- `hs_is_target_account` (boolean, 선택): 타깃 계정 여부.
|
||||
- `hs_target_account` (string, 선택): 타깃 계정 티어. 사용 가능한 값: `tier_1`, `tier_2`, `tier_3`.
|
||||
- `hs_target_account_recommendation_snooze_time` (string, 선택): 타깃 계정 추천 일시중지 시간.
|
||||
- `hs_target_account_recommendation_state` (string, 선택): 타깃 계정 추천 상태. 사용 가능한 값: `DISMISSED`, `NONE`, `SNOOZED`.
|
||||
- `total_money_raised` (string, 선택): 총 조달 금액.
|
||||
- `twitterbio` (string, 선택): 트위터 바이오.
|
||||
- `twitterfollowers` (number, 선택): 트위터 팔로워 수.
|
||||
- `twitterhandle` (string, 선택): 트위터 핸들.
|
||||
- `web_technologies` (string, 선택): 사용한 웹 기술. 미리 정의된 값 중 하나여야 합니다.
|
||||
- `website` (string, 선택): 웹사이트 URL.
|
||||
- `founded_year` (string, 선택): 설립 연도.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_CREATE_RECORD_CONTACTS">
|
||||
**설명:** HubSpot에서 새로운 연락처 레코드를 생성합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `email` (string, 필수): 연락처 이메일 주소.
|
||||
- `firstname` (string, 선택): 이름.
|
||||
- `lastname` (string, 선택): 성.
|
||||
- `phone` (string, 선택): 전화번호.
|
||||
- `hubspot_owner_id` (string, 선택): 연락처 소유자.
|
||||
- `lifecyclestage` (string, 선택): 라이프사이클 단계. 사용 가능한 값: `subscriber`, `lead`, `marketingqualifiedlead`, `salesqualifiedlead`, `opportunity`, `customer`, `evangelist`, `other`.
|
||||
- `hs_lead_status` (string, 선택): 리드 상태. 사용 가능한 값: `NEW`, `OPEN`, `IN_PROGRESS`, `OPEN_DEAL`, `UNQUALIFIED`, `ATTEMPTED_TO_CONTACT`, `CONNECTED`, `BAD_TIMING`.
|
||||
- `annualrevenue` (string, 선택): 연간 매출.
|
||||
- `hs_buying_role` (string, 선택): 구매 역할.
|
||||
- `cc_emails` (string, 선택): 참조(CC) 이메일.
|
||||
- `ch_customer_id` (string, 선택): Chargify 고객 ID.
|
||||
- `ch_customer_reference` (string, 선택): Chargify 고객 참조.
|
||||
- `chargify_sites` (string, 선택): Chargify 사이트(들).
|
||||
- `city` (string, 선택): 도시.
|
||||
- `hs_facebook_ad_clicked` (boolean, 선택): Facebook 광고 클릭 여부.
|
||||
- `hs_linkedin_ad_clicked` (string, 선택): LinkedIn 광고 클릭 여부.
|
||||
- `hs_clicked_linkedin_ad` (string, 선택): LinkedIn 광고 클릭 여부.
|
||||
- `closedate` (string, 선택): 마감일.
|
||||
- `company` (string, 선택): 회사명.
|
||||
- `company_size` (string, 선택): 회사 규모.
|
||||
- `country` (string, 선택): 국가/지역.
|
||||
- `hs_country_region_code` (string, 선택): 국가/지역 코드.
|
||||
- `date_of_birth` (string, 선택): 생년월일.
|
||||
- `degree` (string, 선택): 학위.
|
||||
- `hs_email_customer_quarantined_reason` (string, 선택): 이메일 주소 격리 사유.
|
||||
- `hs_role` (string, 선택): 고용 역할. 미리 정의된 값 중 하나여야 합니다.
|
||||
- `hs_seniority` (string, 선택): 고용 직급. 미리 정의된 값 중 하나여야 합니다.
|
||||
- `hs_sub_role` (string, 선택): 고용 하위 역할. 미리 정의된 값 중 하나여야 합니다.
|
||||
- `hs_employment_change_detected_date` (string, 선택): 고용 변경 감지 날짜.
|
||||
- `hs_enriched_email_bounce_detected` (boolean, 선택): 향상된 이메일 바운스 감지됨.
|
||||
- `hs_facebookid` (string, 선택): Facebook ID.
|
||||
- `hs_facebook_click_id` (string, 선택): Facebook 클릭 ID.
|
||||
- `fax` (string, 선택): 팩스번호.
|
||||
- `field_of_study` (string, 선택): 전공.
|
||||
- `followercount` (number, 선택): 팔로워 수.
|
||||
- `gender` (string, 선택): 성별.
|
||||
- `hs_google_click_id` (string, 선택): Google 광고 클릭 ID.
|
||||
- `graduation_date` (string, 선택): 졸업 날짜.
|
||||
- `owneremail` (string, 선택): HubSpot 소유자 이메일(레거시).
|
||||
- `ownername` (string, 선택): HubSpot 소유자 이름(레거시).
|
||||
- `industry` (string, 선택): 산업군.
|
||||
- `hs_inferred_language_codes` (string, 선택): 추정 언어 코드. 미리 정의된 값 중 하나여야 합니다.
|
||||
- `jobtitle` (string, 선택): 직책.
|
||||
- `hs_job_change_detected_date` (string, 선택): 직장 변경 감지 날짜.
|
||||
- `job_function` (string, 선택): 직무.
|
||||
- `hs_journey_stage` (string, 선택): 여정 단계. 미리 정의된 값 중 하나여야 합니다.
|
||||
- `kloutscoregeneral` (number, 선택): Klout 점수.
|
||||
- `hs_last_metered_enrichment_timestamp` (string, 선택): 마지막 enrichment 타임스탬프.
|
||||
- `hs_latest_source` (string, 선택): 최신 유입 경로.
|
||||
- `hs_latest_source_timestamp` (string, 선택): 최신 유입 경로 날짜.
|
||||
- `hs_legal_basis` (string, 선택): 연락처 데이터 처리를 위한 법적 근거.
|
||||
- `linkedinbio` (string, 선택): LinkedIn 바이오.
|
||||
- `linkedinconnections` (number, 선택): LinkedIn 연결 수.
|
||||
- `hs_linkedin_url` (string, 선택): LinkedIn URL.
|
||||
- `hs_linkedinid` (string, 선택): LinkedIn ID.
|
||||
- `hs_live_enrichment_deadline` (string, 선택): 라이브 enrichment 기한.
|
||||
- `marital_status` (string, 선택): 결혼 상태.
|
||||
- `hs_content_membership_email` (string, 선택): 멤버 이메일.
|
||||
- `hs_content_membership_notes` (string, 선택): 멤버십 노트.
|
||||
- `message` (string, 선택): 메시지.
|
||||
- `military_status` (string, 선택): 군복무 상태.
|
||||
- `mobilephone` (string, 선택): 휴대전화 번호.
|
||||
- `numemployees` (string, 선택): 직원 수.
|
||||
- `hs_analytics_source` (string, 선택): 원래 유입 경로.
|
||||
- `photo` (string, 선택): 사진.
|
||||
- `hs_pinned_engagement_id` (number, 선택): 고정된 참여 ID.
|
||||
- `zip` (string, 선택): 우편번호.
|
||||
- `hs_language` (string, 선택): 선호 언어. 미리 정의된 값 중 하나여야 합니다.
|
||||
- `associatedcompanyid` (number, 선택): 기본 연결된 회사 ID.
|
||||
- `hs_email_optout_survey_reason` (string, 선택): 이메일 수신 거부 사유.
|
||||
- `relationship_status` (string, 선택): 관계 상태.
|
||||
- `hs_returning_to_office_detected_date` (string, 선택): 사무실 복귀 감지 날짜.
|
||||
- `salutation` (string, 선택): 호칭.
|
||||
- `school` (string, 선택): 학교.
|
||||
- `seniority` (string, 선택): 직급.
|
||||
- `hs_feedback_show_nps_web_survey` (boolean, 선택): NPS 웹 설문조사를 표시할지 여부.
|
||||
- `start_date` (string, 선택): 시작일.
|
||||
- `state` (string, 선택): 주/지역.
|
||||
- `hs_state_code` (string, 선택): 주/지역 코드.
|
||||
- `hs_content_membership_status` (string, 선택): 상태.
|
||||
- `address` (string, 선택): 거리 주소.
|
||||
- `tax_exempt` (string, 선택): 세금 면제.
|
||||
- `hs_timezone` (string, 선택): 시간대. 미리 정의된 값 중 하나여야 합니다.
|
||||
- `twitterbio` (string, 선택): 트위터 바이오.
|
||||
- `hs_twitterid` (string, 선택): 트위터 ID.
|
||||
- `twitterprofilephoto` (string, 선택): 트위터 프로필 사진.
|
||||
- `twitterhandle` (string, 선택): 트위터 사용자명.
|
||||
- `vat_number` (string, 선택): 부가가치세 번호.
|
||||
- `ch_verified` (string, 선택): ACH/eCheck 결제 인증됨.
|
||||
- `website` (string, 선택): 웹사이트 URL.
|
||||
- `hs_whatsapp_phone_number` (string, 선택): WhatsApp 전화번호.
|
||||
- `work_email` (string, 선택): 업무용 이메일.
|
||||
- `hs_googleplusid` (string, 선택): googleplus ID.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_CREATE_RECORD_DEALS">
|
||||
**설명:** HubSpot에서 새로운 거래(deal) 레코드를 생성합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `dealname` (string, 필수): 거래 이름.
|
||||
- `amount` (number, 선택): 거래 금액.
|
||||
- `dealstage` (string, 선택): 거래의 파이프라인 단계.
|
||||
- `pipeline` (string, 선택): 거래가 속한 파이프라인.
|
||||
- `closedate` (string, 선택): 예상 마감일.
|
||||
- `hubspot_owner_id` (string, 선택): 거래 소유자.
|
||||
- `dealtype` (string, 선택): 거래 유형. 사용 가능한 값: `newbusiness`, `existingbusiness`.
|
||||
- `description` (string, 선택): 거래 설명.
|
||||
- `hs_priority` (string, 선택): 거래 우선순위. 사용 가능한 값: `low`, `medium`, `high`.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_CREATE_RECORD_ENGAGEMENTS">
|
||||
**설명:** HubSpot에서 새로운 참여(예: 노트, 이메일, 통화, 미팅, 작업)를 생성합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `engagementType` (string, 필수): 참여 유형. 사용 가능한 값: `NOTE`, `EMAIL`, `CALL`, `MEETING`, `TASK`.
|
||||
- `hubspot_owner_id` (string, 선택): 이 활동이 할당된 사용자.
|
||||
- `hs_timestamp` (string, 선택): 활동 날짜 및 시간.
|
||||
- `hs_note_body` (string, 선택): 노트 본문. (`NOTE`에서 사용)
|
||||
- `hs_task_subject` (string, 선택): 작업 제목. (`TASK`에서 사용)
|
||||
- `hs_task_body` (string, 선택): 작업 노트. (`TASK`에서 사용)
|
||||
- `hs_task_status` (string, 선택): 작업 상태. (`TASK`에서 사용)
|
||||
- `hs_meeting_title` (string, 선택): 미팅 제목. (`MEETING`에서 사용)
|
||||
- `hs_meeting_body` (string, 선택): 미팅 설명. (`MEETING`에서 사용)
|
||||
- `hs_meeting_start_time` (string, 선택): 미팅 시작 시간. (`MEETING`에서 사용)
|
||||
- `hs_meeting_end_time` (string, 선택): 미팅 종료 시간. (`MEETING`에서 사용)
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_UPDATE_RECORD_COMPANIES">
|
||||
**설명:** HubSpot에서 기존 회사 레코드를 업데이트합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `recordId` (string, 필수): 업데이트할 회사의 ID.
|
||||
- `name` (string, 선택): 회사명.
|
||||
- `domain` (string, 선택): 회사 도메인명.
|
||||
- `industry` (string, 선택): 산업군.
|
||||
- `phone` (string, 선택): 전화번호.
|
||||
- `city` (string, 선택): 도시.
|
||||
- `state` (string, 선택): 주/지역.
|
||||
- `zip` (string, 선택): 우편번호.
|
||||
- `numberofemployees` (number, 선택): 직원 수.
|
||||
- `annualrevenue` (number, 선택): 연간 매출.
|
||||
- `description` (string, 선택): 설명.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_CREATE_RECORD_ANY">
|
||||
**설명:** HubSpot에서 지정된 오브젝트 타입의 레코드를 생성합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `recordType` (string, 필수): 커스텀 오브젝트의 오브젝트 타입 ID.
|
||||
- 추가 파라미터는 커스텀 오브젝트의 스키마에 따라 다릅니다.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_UPDATE_RECORD_CONTACTS">
|
||||
**설명:** HubSpot에서 기존 연락처 레코드를 업데이트합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `recordId` (string, 필수): 업데이트할 연락처의 ID.
|
||||
- `firstname` (string, 선택): 이름.
|
||||
- `lastname` (string, 선택): 성.
|
||||
- `email` (string, 선택): 이메일 주소.
|
||||
- `phone` (string, 선택): 전화번호.
|
||||
- `company` (string, 선택): 회사명.
|
||||
- `jobtitle` (string, 선택): 직책.
|
||||
- `lifecyclestage` (string, 선택): 라이프사이클 단계.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_UPDATE_RECORD_DEALS">
|
||||
**설명:** HubSpot에서 기존 거래 레코드를 업데이트합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `recordId` (string, 필수): 업데이트할 거래의 ID.
|
||||
- `dealname` (string, 선택): 거래 이름.
|
||||
- `amount` (number, 선택): 거래 금액.
|
||||
- `dealstage` (string, 선택): 거래의 파이프라인 단계.
|
||||
- `pipeline` (string, 선택): 거래가 속한 파이프라인.
|
||||
- `closedate` (string, 선택): 예상 마감일.
|
||||
- `dealtype` (string, 선택): 거래 유형.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_UPDATE_RECORD_ENGAGEMENTS">
|
||||
**설명:** HubSpot에서 기존 참여(engagement)를 업데이트합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `recordId` (string, 필수): 업데이트할 참여의 ID.
|
||||
- `hs_note_body` (string, 선택): 노트 본문.
|
||||
- `hs_task_subject` (string, 선택): 작업 제목.
|
||||
- `hs_task_body` (string, 선택): 작업 노트.
|
||||
- `hs_task_status` (string, 선택): 작업 상태.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_UPDATE_RECORD_ANY">
|
||||
**설명:** HubSpot에서 지정된 오브젝트 타입의 레코드를 업데이트합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `recordId` (string, 필수): 업데이트할 레코드의 ID.
|
||||
- `recordType` (string, 필수): 커스텀 오브젝트의 오브젝트 타입 ID.
|
||||
- 추가 파라미터는 커스텀 오브젝트의 스키마에 따라 다릅니다.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_GET_RECORDS_COMPANIES">
|
||||
**설명:** HubSpot에서 회사 레코드 목록을 가져옵니다.
|
||||
|
||||
**파라미터:**
|
||||
- `paginationParameters` (object, 선택): 다음 페이지를 가져오려면 `pageCursor`를 사용하세요.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_GET_RECORDS_CONTACTS">
|
||||
**설명:** HubSpot에서 연락처 레코드 목록을 가져옵니다.
|
||||
|
||||
**파라미터:**
|
||||
- `paginationParameters` (object, 선택): 다음 페이지를 가져오려면 `pageCursor`를 사용하세요.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_GET_RECORDS_DEALS">
|
||||
**설명:** HubSpot에서 거래 레코드 목록을 가져옵니다.
|
||||
|
||||
**파라미터:**
|
||||
- `paginationParameters` (object, 선택): 다음 페이지를 가져오려면 `pageCursor`를 사용하세요.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_GET_RECORDS_ENGAGEMENTS">
|
||||
**설명:** HubSpot에서 참여(engagement) 레코드 목록을 가져옵니다.
|
||||
|
||||
**파라미터:**
|
||||
- `objectName` (string, 필수): 가져올 참여 유형(예: "notes").
|
||||
- `paginationParameters` (object, 선택): 다음 페이지를 가져오려면 `pageCursor`를 사용하세요.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_GET_RECORDS_ANY">
|
||||
**설명:** HubSpot에서 지정된 오브젝트 타입의 레코드 목록을 가져옵니다.
|
||||
|
||||
**파라미터:**
|
||||
- `recordType` (string, 필수): 커스텀 오브젝트의 오브젝트 타입 ID.
|
||||
- `paginationParameters` (object, 선택): 다음 페이지를 가져오려면 `pageCursor`를 사용하세요.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_GET_RECORD_BY_ID_COMPANIES">
|
||||
**설명:** ID로 단일 회사 레코드를 가져옵니다.
|
||||
|
||||
**파라미터:**
|
||||
- `recordId` (string, 필수): 가져올 회사의 ID.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_GET_RECORD_BY_ID_CONTACTS">
|
||||
**설명:** ID로 단일 연락처 레코드를 가져옵니다.
|
||||
|
||||
**파라미터:**
|
||||
- `recordId` (string, 필수): 가져올 연락처의 ID.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_GET_RECORD_BY_ID_DEALS">
|
||||
**설명:** ID로 단일 거래 레코드를 가져옵니다.
|
||||
|
||||
**파라미터:**
|
||||
- `recordId` (string, 필수): 가져올 거래의 ID.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_GET_RECORD_BY_ID_ENGAGEMENTS">
|
||||
**설명:** ID로 단일 참여(engagement) 레코드를 가져옵니다.
|
||||
|
||||
**파라미터:**
|
||||
- `recordId` (string, 필수): 가져올 참여의 ID.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_GET_RECORD_BY_ID_ANY">
|
||||
**설명:** 지정된 오브젝트 타입의 단일 레코드를 ID로 가져옵니다.
|
||||
|
||||
**파라미터:**
|
||||
- `recordType` (string, 필수): 커스텀 오브젝트의 오브젝트 타입 ID.
|
||||
- `recordId` (string, 필수): 가져올 레코드의 ID.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_SEARCH_RECORDS_COMPANIES">
|
||||
**설명:** 필터 수식을 사용해 HubSpot에서 회사 레코드를 검색합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `filterFormula` (object, 선택): 분리 정규형(OR of ANDs) 필터.
|
||||
- `paginationParameters` (object, 선택): 다음 페이지를 가져오려면 `pageCursor`를 사용하세요.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_SEARCH_RECORDS_CONTACTS">
|
||||
**설명:** 필터 수식을 사용해 HubSpot에서 연락처 레코드를 검색합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `filterFormula` (object, 선택): 분리 정규형(OR of ANDs) 필터.
|
||||
- `paginationParameters` (object, 선택): 다음 페이지를 가져오려면 `pageCursor`를 사용하세요.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_SEARCH_RECORDS_DEALS">
|
||||
**설명:** 필터 수식을 사용해 HubSpot에서 거래 레코드를 검색합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `filterFormula` (object, 선택): 분리 정규형(OR of ANDs) 필터.
|
||||
- `paginationParameters` (object, 선택): 다음 페이지를 가져오려면 `pageCursor`를 사용하세요.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_SEARCH_RECORDS_ENGAGEMENTS">
|
||||
**설명:** 필터 수식을 사용해 HubSpot에서 참여(engagement) 레코드를 검색합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `engagementFilterFormula` (object, 선택): 참여 필터.
|
||||
- `paginationParameters` (object, 선택): 다음 페이지를 가져오려면 `pageCursor`를 사용하세요.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_SEARCH_RECORDS_ANY">
|
||||
**설명:** HubSpot에서 지정된 오브젝트 타입의 레코드를 검색합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `recordType` (string, 필수): 검색할 오브젝트 타입 ID.
|
||||
- `filterFormula` (string, 선택): 적용할 필터 수식.
|
||||
- `paginationParameters` (object, 선택): 다음 페이지를 가져오려면 `pageCursor`를 사용하세요.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_DELETE_RECORD_COMPANIES">
|
||||
**설명:** ID로 회사 레코드를 삭제합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `recordId` (string, 필수): 삭제할 회사의 ID.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_DELETE_RECORD_CONTACTS">
|
||||
**설명:** ID로 연락처 레코드를 삭제합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `recordId` (string, 필수): 삭제할 연락처의 ID.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_DELETE_RECORD_DEALS">
|
||||
**설명:** ID로 거래 레코드를 삭제합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `recordId` (string, 필수): 삭제할 거래의 ID.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_DELETE_RECORD_ENGAGEMENTS">
|
||||
**설명:** ID로 참여(engagement) 레코드를 삭제합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `recordId` (string, 필수): 삭제할 참여의 ID.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_DELETE_RECORD_ANY">
|
||||
**설명:** 지정된 오브젝트 타입의 레코드를 ID로 삭제합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `recordType` (string, 필수): 커스텀 오브젝트의 오브젝트 타입 ID.
|
||||
- `recordId` (string, 필수): 삭제할 레코드의 ID.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_GET_CONTACTS_BY_LIST_ID">
|
||||
**설명:** 지정된 리스트 ID로부터 연락처 목록을 가져옵니다.
|
||||
|
||||
**파라미터:**
|
||||
- `listId` (string, 필수): 연락처를 가져올 리스트의 ID.
|
||||
- `paginationParameters` (object, 선택): 이후 페이지를 위해 `pageCursor` 사용.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_DESCRIBE_ACTION_SCHEMA">
|
||||
**설명:** 특정 오브젝트 타입 및 작업에 대한 예상 스키마를 가져옵니다.
|
||||
|
||||
**파라미터:**
|
||||
- `recordType` (string, 필수): 오브젝트 타입 ID(예: 'companies').
|
||||
- `operation` (string, 필수): 작업 유형(예: 'CREATE_RECORD').
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
## 사용 예시
|
||||
|
||||
### 기본 HubSpot 에이전트 설정
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
# Get enterprise tools (HubSpot tools will be included)
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token"
|
||||
)
|
||||
|
||||
# Create an agent with HubSpot capabilities
|
||||
hubspot_agent = Agent(
|
||||
role="CRM Manager",
|
||||
goal="Manage company and contact records in HubSpot",
|
||||
backstory="An AI assistant specialized in CRM management.",
|
||||
tools=[enterprise_tools]
|
||||
)
|
||||
|
||||
# Task to create a new company
|
||||
create_company_task = Task(
|
||||
description="Create a new company in HubSpot with name 'Innovate Corp' and domain 'innovatecorp.com'.",
|
||||
agent=hubspot_agent,
|
||||
expected_output="Company created successfully with confirmation"
|
||||
)
|
||||
|
||||
# Run the task
|
||||
crew = Crew(
|
||||
agents=[hubspot_agent],
|
||||
tasks=[create_company_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### 특정 HubSpot 도구 필터링
|
||||
|
||||
```python
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
# Get only the tool to create contacts
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token",
|
||||
actions_list=["hubspot_create_record_contacts"]
|
||||
)
|
||||
|
||||
contact_creator = Agent(
|
||||
role="Contact Creator",
|
||||
goal="Create new contacts in HubSpot",
|
||||
backstory="An AI assistant that focuses on creating new contact entries in the CRM.",
|
||||
tools=[enterprise_tools]
|
||||
)
|
||||
|
||||
# Task to create a contact
|
||||
create_contact = Task(
|
||||
description="Create a new contact for 'John Doe' with email 'john.doe@example.com'.",
|
||||
agent=contact_creator,
|
||||
expected_output="Contact created successfully in HubSpot."
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[contact_creator],
|
||||
tasks=[create_contact]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### 연락처 관리
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token"
|
||||
)
|
||||
|
||||
crm_manager = Agent(
|
||||
role="CRM Manager",
|
||||
goal="Manage and organize HubSpot contacts efficiently.",
|
||||
backstory="An experienced CRM manager who maintains an organized contact database.",
|
||||
tools=[enterprise_tools]
|
||||
)
|
||||
|
||||
# Task to manage contacts
|
||||
contact_task = Task(
|
||||
description="Create a new contact for 'Jane Smith' at 'Global Tech Inc.' with email 'jane.smith@globaltech.com'.",
|
||||
agent=crm_manager,
|
||||
expected_output="Contact database updated with the new contact."
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[crm_manager],
|
||||
tasks=[contact_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### 도움 받기
|
||||
|
||||
<Card title="도움이 필요하신가요?" icon="headset" href="mailto:support@crewai.com">
|
||||
HubSpot 연동 설정 또는 문제 해결에 도움이 필요하시면 지원팀에 문의해 주세요.
|
||||
</Card>
|
||||
394
docs/ko/enterprise/integrations/jira.mdx
Normal file
394
docs/ko/enterprise/integrations/jira.mdx
Normal file
@@ -0,0 +1,394 @@
|
||||
---
|
||||
title: Jira 연동
|
||||
description: "CrewAI를 위한 Jira 연동을 통한 이슈 추적 및 프로젝트 관리."
|
||||
icon: "bug"
|
||||
---
|
||||
|
||||
## 개요
|
||||
|
||||
에이전트가 Jira를 통해 이슈, 프로젝트, 워크플로우를 관리할 수 있도록 합니다. 이슈를 생성 및 업데이트하고, 프로젝트 진행 상황을 추적하며, 할당 작업을 관리하고, AI 기반 자동화로 프로젝트 관리를 효율화하세요.
|
||||
|
||||
## 사전 준비 사항
|
||||
|
||||
Jira 통합을 사용하기 전에 다음을 준비하세요:
|
||||
|
||||
- 활성 구독이 있는 [CrewAI Enterprise](https://app.crewai.com) 계정
|
||||
- 적절한 프로젝트 권한이 있는 Jira 계정
|
||||
- [통합 페이지](https://app.crewai.com/crewai_plus/connectors)를 통해 Jira 계정 연결
|
||||
|
||||
## Jira 연동 설정
|
||||
|
||||
### 1. Jira 계정 연결하기
|
||||
|
||||
1. [CrewAI Enterprise Integrations](https://app.crewai.com/crewai_plus/connectors)로 이동합니다.
|
||||
2. **Jira**를 인증 통합 섹션에서 찾습니다.
|
||||
3. **Connect**를 클릭하고 OAuth 절차를 완료합니다.
|
||||
4. 이슈 및 프로젝트 관리를 위한 필요한 권한을 부여합니다.
|
||||
5. [Account Settings](https://app.crewai.com/crewai_plus/settings/account)에서 Enterprise Token을 복사합니다.
|
||||
|
||||
### 2. 필수 패키지 설치
|
||||
|
||||
```bash
|
||||
uv add crewai-tools
|
||||
```
|
||||
|
||||
## 사용 가능한 작업
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="JIRA_CREATE_ISSUE">
|
||||
**설명:** Jira에서 이슈를 생성합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `summary` (string, 필수): 요약 - 이슈에 대한 간단한 한 줄 요약입니다. (예시: "프린터가 작동을 멈췄습니다").
|
||||
- `project` (string, 선택): 프로젝트 - 이슈가 속한 프로젝트입니다. 제공되지 않으면 사용자의 첫 번째 프로젝트로 기본 설정됩니다. 사용자가 프로젝트를 선택할 수 있도록 Connect Portal Workflow Settings를 사용하세요.
|
||||
- `issueType` (string, 선택): 이슈 유형 - 제공되지 않으면 기본값은 Task입니다.
|
||||
- `jiraIssueStatus` (string, 선택): 상태 - 제공되지 않으면 프로젝트의 첫 번째 상태가 기본입니다.
|
||||
- `assignee` (string, 선택): 담당자 - 제공되지 않으면 인증된 사용자로 기본 설정됩니다.
|
||||
- `descriptionType` (string, 선택): 설명 유형 - 설명 유형을 선택하세요.
|
||||
- 옵션: `description`, `descriptionJSON`
|
||||
- `description` (string, 선택): 설명 - 이슈에 대한 자세한 설명입니다. 이 필드는 'descriptionType'이 'description'일 때만 나타납니다.
|
||||
- `additionalFields` (string, 선택): 추가 필드 - 포함해야 하는 다른 필드를 JSON 형식으로 지정하세요. 사용자가 업데이트할 이슈 필드를 선택할 수 있도록 Connect Portal Workflow Settings를 사용하세요.
|
||||
```json
|
||||
{
|
||||
"customfield_10001": "value"
|
||||
}
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="JIRA_UPDATE_ISSUE">
|
||||
**설명:** Jira에서 이슈를 업데이트합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `issueKey` (string, 필수): 이슈 키 (예시: "TEST-1234").
|
||||
- `summary` (string, 선택): 요약 - 이슈에 대한 간단한 한 줄 요약입니다. (예시: "프린터가 작동을 멈췄습니다").
|
||||
- `issueType` (string, 선택): 이슈 유형 - 사용자가 이슈 유형을 선택할 수 있도록 Connect Portal Workflow Settings를 사용하세요.
|
||||
- `jiraIssueStatus` (string, 선택): 상태 - 사용자가 상태를 선택할 수 있도록 Connect Portal Workflow Settings를 사용하세요.
|
||||
- `assignee` (string, 선택): 담당자 - 사용자가 담당자를 선택할 수 있도록 Connect Portal Workflow Settings를 사용하세요.
|
||||
- `descriptionType` (string, 선택): 설명 유형 - 설명 유형을 선택하세요.
|
||||
- 옵션: `description`, `descriptionJSON`
|
||||
- `description` (string, 선택): 설명 - 이슈에 대한 자세한 설명입니다. 이 필드는 'descriptionType'이 'description'일 때만 나타납니다.
|
||||
- `additionalFields` (string, 선택): 추가 필드 - 포함해야 하는 다른 필드를 JSON 형식으로 지정하세요.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="JIRA_GET_ISSUE_BY_KEY">
|
||||
**설명:** Jira에서 키로 이슈를 조회합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `issueKey` (string, 필수): 이슈 키 (예시: "TEST-1234").
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="JIRA_FILTER_ISSUES">
|
||||
**설명:** 필터를 사용하여 Jira에서 이슈를 검색합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `jqlQuery` (object, 선택): 불리언 합정규형(OR의 AND 그룹)으로 구성된 필터.
|
||||
```json
|
||||
{
|
||||
"operator": "OR",
|
||||
"conditions": [
|
||||
{
|
||||
"operator": "AND",
|
||||
"conditions": [
|
||||
{
|
||||
"field": "status",
|
||||
"operator": "$stringExactlyMatches",
|
||||
"value": "Open"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
사용 가능한 연산자: `$stringExactlyMatches`, `$stringDoesNotExactlyMatch`, `$stringIsIn`, `$stringIsNotIn`, `$stringContains`, `$stringDoesNotContain`, `$stringGreaterThan`, `$stringLessThan`
|
||||
- `limit` (string, 선택): 결과 제한 - 반환되는 최대 이슈 수를 제한합니다. 입력하지 않으면 기본값은 10입니다.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="JIRA_SEARCH_BY_JQL">
|
||||
**설명:** Jira에서 JQL로 이슈를 검색합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `jqlQuery` (string, 필수): JQL 쿼리 (예시: "project = PROJECT").
|
||||
- `paginationParameters` (object, 선택): 페이지네이션 결과를 위한 파라미터.
|
||||
```json
|
||||
{
|
||||
"pageCursor": "cursor_string"
|
||||
}
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="JIRA_UPDATE_ISSUE_ANY">
|
||||
**설명:** Jira에서 임의의 이슈를 업데이트합니다. 이 기능의 속성 스키마를 얻으려면 DESCRIBE_ACTION_SCHEMA를 사용하세요.
|
||||
|
||||
**파라미터:** 특정 파라미터 없음 - 예상 스키마를 먼저 확인하려면 JIRA_DESCRIBE_ACTION_SCHEMA를 사용하세요.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="JIRA_DESCRIBE_ACTION_SCHEMA">
|
||||
**설명:** 이슈 유형에 대한 예상 스키마를 가져옵니다. 사용하려는 이슈 유형과 일치하는 다른 기능이 없을 경우 먼저 이 기능을 사용하세요.
|
||||
|
||||
**파라미터:**
|
||||
- `issueTypeId` (string, 필수): 이슈 유형 ID.
|
||||
- `projectKey` (string, 필수): 프로젝트 키.
|
||||
- `operation` (string, 필수): 작업 유형 값(예: CREATE_ISSUE 또는 UPDATE_ISSUE).
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="JIRA_GET_PROJECTS">
|
||||
**설명:** Jira에서 프로젝트를 가져옵니다.
|
||||
|
||||
**파라미터:**
|
||||
- `paginationParameters` (object, 선택): 페이지네이션 파라미터.
|
||||
```json
|
||||
{
|
||||
"pageCursor": "cursor_string"
|
||||
}
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="JIRA_GET_ISSUE_TYPES_BY_PROJECT">
|
||||
**설명:** Jira에서 프로젝트별 이슈 유형을 조회합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `project` (string, 필수): 프로젝트 키.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="JIRA_GET_ISSUE_TYPES">
|
||||
**설명:** Jira에서 모든 이슈 유형을 조회합니다.
|
||||
|
||||
**파라미터:** 필요 없음.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="JIRA_GET_ISSUE_STATUS_BY_PROJECT">
|
||||
**설명:** 주어진 프로젝트의 이슈 상태를 조회합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `project` (string, 필수): 프로젝트 키.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="JIRA_GET_ALL_ASSIGNEES_BY_PROJECT">
|
||||
**설명:** 주어진 프로젝트의 담당자 목록을 조회합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `project` (string, 필수): 프로젝트 키.
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
## 사용 예시
|
||||
|
||||
### 기본 Jira 에이전트 설정
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
# Get enterprise tools (Jira tools will be included)
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token"
|
||||
)
|
||||
|
||||
# Create an agent with Jira capabilities
|
||||
jira_agent = Agent(
|
||||
role="Issue Manager",
|
||||
goal="Manage Jira issues and track project progress efficiently",
|
||||
backstory="An AI assistant specialized in issue tracking and project management.",
|
||||
tools=[enterprise_tools]
|
||||
)
|
||||
|
||||
# Task to create a bug report
|
||||
create_bug_task = Task(
|
||||
description="Create a bug report for the login functionality with high priority and assign it to the development team",
|
||||
agent=jira_agent,
|
||||
expected_output="Bug report created successfully with issue key"
|
||||
)
|
||||
|
||||
# Run the task
|
||||
crew = Crew(
|
||||
agents=[jira_agent],
|
||||
tasks=[create_bug_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### 특정 Jira 도구 필터링
|
||||
|
||||
```python
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
# Get only specific Jira tools
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token",
|
||||
actions_list=["jira_create_issue", "jira_update_issue", "jira_search_by_jql"]
|
||||
)
|
||||
|
||||
issue_coordinator = Agent(
|
||||
role="Issue Coordinator",
|
||||
goal="Create and manage Jira issues efficiently",
|
||||
backstory="An AI assistant that focuses on issue creation and management.",
|
||||
tools=enterprise_tools
|
||||
)
|
||||
|
||||
# Task to manage issue workflow
|
||||
issue_workflow = Task(
|
||||
description="Create a feature request issue and update the status of related issues",
|
||||
agent=issue_coordinator,
|
||||
expected_output="Feature request created and related issues updated"
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[issue_coordinator],
|
||||
tasks=[issue_workflow]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### 프로젝트 분석 및 보고
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token"
|
||||
)
|
||||
|
||||
project_analyst = Agent(
|
||||
role="Project Analyst",
|
||||
goal="Analyze project data and generate insights from Jira",
|
||||
backstory="An experienced project analyst who extracts insights from project management data.",
|
||||
tools=[enterprise_tools]
|
||||
)
|
||||
|
||||
# Task to analyze project status
|
||||
analysis_task = Task(
|
||||
description="""
|
||||
1. Get all projects and their issue types
|
||||
2. Search for all open issues across projects
|
||||
3. Analyze issue distribution by status and assignee
|
||||
4. Create a summary report issue with findings
|
||||
""",
|
||||
agent=project_analyst,
|
||||
expected_output="Project analysis completed with summary report created"
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[project_analyst],
|
||||
tasks=[analysis_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### 자동화된 이슈 관리
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token"
|
||||
)
|
||||
|
||||
automation_manager = Agent(
|
||||
role="Automation Manager",
|
||||
goal="Automate issue management and workflow processes",
|
||||
backstory="An AI assistant that automates repetitive issue management tasks.",
|
||||
tools=[enterprise_tools]
|
||||
)
|
||||
|
||||
# Task to automate issue management
|
||||
automation_task = Task(
|
||||
description="""
|
||||
1. Search for all unassigned issues using JQL
|
||||
2. Get available assignees for each project
|
||||
3. Automatically assign issues based on workload and expertise
|
||||
4. Update issue priorities based on age and type
|
||||
5. Create weekly sprint planning issues
|
||||
""",
|
||||
agent=automation_manager,
|
||||
expected_output="Issues automatically assigned and sprint planning issues created"
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[automation_manager],
|
||||
tasks=[automation_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### 고급 스키마 기반 작업
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token"
|
||||
)
|
||||
|
||||
schema_specialist = Agent(
|
||||
role="Schema Specialist",
|
||||
goal="Handle complex Jira operations using dynamic schemas",
|
||||
backstory="An AI assistant that can work with dynamic Jira schemas and custom issue types.",
|
||||
tools=[enterprise_tools]
|
||||
)
|
||||
|
||||
# Task using schema-based operations
|
||||
schema_task = Task(
|
||||
description="""
|
||||
1. 모든 프로젝트와 해당 커스텀 이슈 유형을 가져옵니다
|
||||
2. 각 커스텀 이슈 유형에 대해, 액션 스키마를 설명합니다
|
||||
3. 복잡한 커스텀 필드를 위한 동적 스키마를 사용해 이슈를 생성합니다
|
||||
4. 비즈니스 규칙에 따라 커스텀 필드 값을 사용해 이슈를 업데이트합니다
|
||||
""",
|
||||
agent=schema_specialist,
|
||||
expected_output="동적 스키마를 사용하여 커스텀 이슈가 생성되고 업데이트됨"
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[schema_specialist],
|
||||
tasks=[schema_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
## 문제 해결
|
||||
|
||||
### 일반적인 문제
|
||||
|
||||
**권한 오류**
|
||||
- Jira 계정이 대상 프로젝트에 필요한 권한을 가지고 있는지 확인하세요
|
||||
- OAuth 연결에 Jira API에 필요한 범위가 포함되어 있는지 확인하세요
|
||||
- 지정된 프로젝트에서 이슈 생성/편집 권한이 있는지 확인하세요
|
||||
|
||||
**잘못된 프로젝트 또는 이슈 키**
|
||||
- 프로젝트 키와 이슈 키가 올바른 형식(예: "PROJ-123")인지 다시 확인하세요
|
||||
- 프로젝트가 존재하며 계정으로 접근 가능한지 확인하세요
|
||||
- 이슈 키가 실제로 존재하는 이슈를 참조하는지 확인하세요
|
||||
|
||||
**이슈 유형 및 상태 관련 문제**
|
||||
- 프로젝트에 대한 유효한 이슈 유형을 얻으려면 JIRA_GET_ISSUE_TYPES_BY_PROJECT를 사용하세요
|
||||
- 유효한 상태를 얻으려면 JIRA_GET_ISSUE_STATUS_BY_PROJECT를 사용하세요
|
||||
- 이슈 유형과 상태가 대상 프로젝트에 제공되는지 확인하세요
|
||||
|
||||
**JQL 쿼리 문제**
|
||||
- API 호출에 사용하기 전에 Jira의 이슈 검색에서 JQL 쿼리를 테스트하세요
|
||||
- JQL에 사용된 필드명이 정확하게 철자되어 있고, Jira 인스턴스에 존재하는지 확인하세요
|
||||
- 복잡한 쿼리에는 올바른 JQL 문법을 사용하세요
|
||||
|
||||
**커스텀 필드 및 스키마 문제**
|
||||
- 복잡한 이슈 유형에 대해 올바른 스키마를 얻으려면 JIRA_DESCRIBE_ACTION_SCHEMA를 사용하세요
|
||||
- 커스텀 필드 ID가 정확한지 확인하세요 (예: "customfield_10001")
|
||||
- 커스텀 필드가 대상 프로젝트와 이슈 유형에서 사용 가능한지 확인하세요
|
||||
|
||||
**필터 공식 문제**
|
||||
- 필터 공식이 올바른 JSON 구조(불리언 합의 정규형)를 따르는지 확인하세요
|
||||
- Jira 구성에 존재하는 유효한 필드명을 사용하세요
|
||||
- 복잡한 다중 조건 쿼리를 만들기 전에 간단한 필터를 테스트하세요
|
||||
|
||||
### 도움 받기
|
||||
|
||||
<Card title="도움이 필요하신가요?" icon="headset" href="mailto:support@crewai.com">
|
||||
Jira 연동 설정 또는 문제 해결에 대한 지원이 필요하시면 저희 지원팀에 문의하십시오.
|
||||
</Card>
|
||||
453
docs/ko/enterprise/integrations/linear.mdx
Normal file
453
docs/ko/enterprise/integrations/linear.mdx
Normal file
@@ -0,0 +1,453 @@
|
||||
---
|
||||
title: Linear 연동
|
||||
description: "CrewAI를 위한 Linear 연동을 통한 소프트웨어 프로젝트 및 버그 추적."
|
||||
icon: "list-check"
|
||||
---
|
||||
|
||||
## 개요
|
||||
|
||||
에이전트가 Linear를 통해 이슈, 프로젝트, 개발 워크플로우를 관리할 수 있도록 지원합니다. 이슈를 생성 및 업데이트하고, 프로젝트 타임라인을 관리하며, 팀을 조직하고, AI 기반 자동화로 소프트웨어 개발 프로세스를 간소화할 수 있습니다.
|
||||
|
||||
## 필수 조건
|
||||
|
||||
Linear 통합을 사용하기 전에 다음을 확인하세요:
|
||||
|
||||
- 활성 구독이 있는 [CrewAI Enterprise](https://app.crewai.com) 계정
|
||||
- 적절한 워크스페이스 권한이 있는 Linear 계정
|
||||
- [통합 페이지](https://app.crewai.com/crewai_plus/connectors)에서 Linear 계정 연결
|
||||
|
||||
## 리니어 통합 설정
|
||||
|
||||
### 1. Linear 계정 연결하기
|
||||
|
||||
1. [CrewAI Enterprise Integrations](https://app.crewai.com/crewai_plus/connectors)로 이동합니다.
|
||||
2. 인증 통합( Authentication Integrations ) 섹션에서 **Linear**를 찾습니다.
|
||||
3. **Connect**를 클릭하고 OAuth 절차를 완료합니다.
|
||||
4. 이슈 및 프로젝트 관리를 위한 필수 권한을 부여합니다.
|
||||
5. [계정 설정](https://app.crewai.com/crewai_plus/settings/account)에서 Enterprise Token을 복사합니다.
|
||||
|
||||
### 2. 필수 패키지 설치
|
||||
|
||||
```bash
|
||||
uv add crewai-tools
|
||||
```
|
||||
|
||||
## 사용 가능한 작업
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="LINEAR_CREATE_ISSUE">
|
||||
**설명:** Linear에서 새로운 이슈를 생성합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `teamId` (string, 필수): 팀 ID - 이 새로운 이슈의 상위 팀 ID를 지정합니다. Connect Portal Workflow Settings를 사용하여 사용자가 팀 ID를 선택할 수 있도록 하세요. (예: "a70bdf0f-530a-4887-857d-46151b52b47c").
|
||||
- `title` (string, 필수): 제목 - 이 이슈의 제목을 지정합니다.
|
||||
- `description` (string, 선택): 설명 - 이 이슈의 설명을 지정합니다.
|
||||
- `statusId` (string, 선택): 상태 - 이 이슈의 상태를 지정합니다.
|
||||
- `priority` (string, 선택): 우선순위 - 이 이슈의 우선순위를 정수로 지정합니다.
|
||||
- `dueDate` (string, 선택): 마감일 - 이 이슈의 마감일을 ISO 8601 형식으로 지정합니다.
|
||||
- `cycleId` (string, 선택): 사이클 ID - 이 이슈가 속한 사이클을 지정합니다.
|
||||
- `additionalFields` (object, 선택): 추가 필드.
|
||||
```json
|
||||
{
|
||||
"assigneeId": "a70bdf0f-530a-4887-857d-46151b52b47c",
|
||||
"labelIds": ["a70bdf0f-530a-4887-857d-46151b52b47c"]
|
||||
}
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="LINEAR_UPDATE_ISSUE">
|
||||
**설명:** Linear에서 이슈를 업데이트합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `issueId` (string, 필수): 이슈 ID - 업데이트할 이슈의 ID를 지정합니다. (예: "90fbc706-18cd-42c9-ae66-6bd344cc8977").
|
||||
- `title` (string, 선택): 제목 - 이 이슈의 제목을 지정합니다.
|
||||
- `description` (string, 선택): 설명 - 이 이슈의 설명을 지정합니다.
|
||||
- `statusId` (string, 선택): 상태 - 이 이슈의 상태를 지정합니다.
|
||||
- `priority` (string, 선택): 우선순위 - 이 이슈의 우선순위를 정수로 지정합니다.
|
||||
- `dueDate` (string, 선택): 마감일 - 이 이슈의 마감일을 ISO 8601 형식으로 지정합니다.
|
||||
- `cycleId` (string, 선택): 사이클 ID - 이 이슈가 속한 사이클을 지정합니다.
|
||||
- `additionalFields` (object, 선택): 추가 필드.
|
||||
```json
|
||||
{
|
||||
"assigneeId": "a70bdf0f-530a-4887-857d-46151b52b47c",
|
||||
"labelIds": ["a70bdf0f-530a-4887-857d-46151b52b47c"]
|
||||
}
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="LINEAR_GET_ISSUE_BY_ID">
|
||||
**설명:** Linear에서 ID로 이슈를 가져옵니다.
|
||||
|
||||
**파라미터:**
|
||||
- `issueId` (string, 필수): 이슈 ID - 가져올 이슈의 레코드 ID를 지정합니다. (예: "90fbc706-18cd-42c9-ae66-6bd344cc8977").
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="LINEAR_GET_ISSUE_BY_ISSUE_IDENTIFIER">
|
||||
**설명:** Linear에서 이슈 식별자로 이슈를 가져옵니다.
|
||||
|
||||
**파라미터:**
|
||||
- `externalId` (string, 필수): 외부 ID - 가져올 이슈의 사람이 읽을 수 있는 이슈 식별자를 지정합니다. (예: "ABC-1").
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="LINEAR_SEARCH_ISSUE">
|
||||
**설명:** Linear에서 이슈를 검색합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `queryTerm` (string, 필수): 검색어 - 찾을 검색어입니다.
|
||||
- `issueFilterFormula` (object, 선택): 부정합적 정규형(DNF)의 필터 - 단일 조건의 AND 그룹들에 대한 OR.
|
||||
```json
|
||||
{
|
||||
"operator": "OR",
|
||||
"conditions": [
|
||||
{
|
||||
"operator": "AND",
|
||||
"conditions": [
|
||||
{
|
||||
"field": "title",
|
||||
"operator": "$stringContains",
|
||||
"value": "bug"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
사용 가능한 필드: `title`, `number`, `project`, `createdAt`
|
||||
사용 가능한 연산자: `$stringExactlyMatches`, `$stringDoesNotExactlyMatch`, `$stringIsIn`, `$stringIsNotIn`, `$stringStartsWith`, `$stringDoesNotStartWith`, `$stringEndsWith`, `$stringDoesNotEndWith`, `$stringContains`, `$stringDoesNotContain`, `$stringGreaterThan`, `$stringLessThan`, `$numberGreaterThanOrEqualTo`, `$numberLessThanOrEqualTo`, `$numberGreaterThan`, `$numberLessThan`, `$dateTimeAfter`, `$dateTimeBefore`
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="LINEAR_DELETE_ISSUE">
|
||||
**설명:** Linear에서 이슈를 삭제합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `issueId` (string, 필수): 이슈 ID - 삭제할 이슈의 레코드 ID를 지정합니다. (예: "90fbc706-18cd-42c9-ae66-6bd344cc8977").
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="LINEAR_ARCHIVE_ISSUE">
|
||||
**설명:** Linear에서 이슈를 아카이브합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `issueId` (string, 필수): 이슈 ID - 아카이브할 이슈의 레코드 ID를 지정합니다. (예: "90fbc706-18cd-42c9-ae66-6bd344cc8977").
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="LINEAR_CREATE_SUB_ISSUE">
|
||||
**설명:** Linear에서 하위 이슈를 생성합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `parentId` (string, 필수): 상위 ID - 이 새로운 이슈의 상위 이슈 ID를 지정합니다.
|
||||
- `teamId` (string, 필수): 팀 ID - 이 새로운 하위 이슈의 상위 팀 ID를 지정합니다. Connect Portal Workflow Settings를 사용하여 사용자가 팀 ID를 선택할 수 있도록 하세요. (예: "a70bdf0f-530a-4887-857d-46151b52b47c").
|
||||
- `title` (string, 필수): 제목 - 이 이슈의 제목을 지정합니다.
|
||||
- `description` (string, 선택): 설명 - 이 이슈의 설명을 지정합니다.
|
||||
- `additionalFields` (object, 선택): 추가 필드.
|
||||
```json
|
||||
{
|
||||
"lead": "linear_user_id"
|
||||
}
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="LINEAR_CREATE_PROJECT">
|
||||
**설명:** Linear에서 새로운 프로젝트를 생성합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `teamIds` (object, 필수): 팀 ID - 이 프로젝트와 연관된 팀 ID 혹은 팀 ID의 JSON 배열을 문자열로 지정합니다. Connect Portal User Settings를 사용하여 사용자가 팀 ID를 선택할 수 있도록 하세요.
|
||||
```json
|
||||
[
|
||||
"a70bdf0f-530a-4887-857d-46151b52b47c",
|
||||
"4ac7..."
|
||||
]
|
||||
```
|
||||
- `projectName` (string, 필수): 프로젝트 이름 - 프로젝트의 이름을 지정합니다. (예: "My Linear Project").
|
||||
- `description` (string, 선택): 프로젝트 설명 - 프로젝트에 대한 설명을 지정합니다.
|
||||
- `additionalFields` (object, 선택): 추가 필드.
|
||||
```json
|
||||
{
|
||||
"state": "planned",
|
||||
"description": ""
|
||||
}
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="LINEAR_UPDATE_PROJECT">
|
||||
**설명:** Linear에서 프로젝트를 업데이트합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `projectId` (string, 필수): 프로젝트 ID - 업데이트할 프로젝트의 ID를 지정합니다. (예: "a6634484-6061-4ac7-9739-7dc5e52c796b").
|
||||
- `projectName` (string, 선택): 프로젝트 이름 - 업데이트할 프로젝트의 이름을 지정합니다. (예: "My Linear Project").
|
||||
- `description` (string, 선택): 프로젝트 설명 - 프로젝트에 대한 설명을 지정합니다.
|
||||
- `additionalFields` (object, 선택): 추가 필드.
|
||||
```json
|
||||
{
|
||||
"state": "planned",
|
||||
"description": ""
|
||||
}
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="LINEAR_GET_PROJECT_BY_ID">
|
||||
**설명:** Linear에서 ID로 프로젝트를 가져옵니다.
|
||||
|
||||
**파라미터:**
|
||||
- `projectId` (string, 필수): 프로젝트 ID - 가져올 프로젝트의 프로젝트 ID를 지정합니다. (예: "a6634484-6061-4ac7-9739-7dc5e52c796b").
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="LINEAR_DELETE_PROJECT">
|
||||
**설명:** Linear에서 프로젝트를 삭제합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `projectId` (string, 필수): 프로젝트 ID - 삭제할 프로젝트의 프로젝트 ID를 지정합니다. (예: "a6634484-6061-4ac7-9739-7dc5e52c796b").
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="LINEAR_SEARCH_TEAMS">
|
||||
**설명:** Linear에서 팀을 검색합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `teamFilterFormula` (object, 선택): 부정합적 정규형(DNF)의 필터 - 단일 조건의 AND 그룹들에 대한 OR.
|
||||
```json
|
||||
{
|
||||
"operator": "OR",
|
||||
"conditions": [
|
||||
{
|
||||
"operator": "AND",
|
||||
"conditions": [
|
||||
{
|
||||
"field": "name",
|
||||
"operator": "$stringContains",
|
||||
"value": "Engineering"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
사용 가능한 필드: `id`, `name`
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
## 사용 예시
|
||||
|
||||
### 기본 Linear 에이전트 설정
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
# Get enterprise tools (Linear tools will be included)
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token"
|
||||
)
|
||||
|
||||
# Create an agent with Linear capabilities
|
||||
linear_agent = Agent(
|
||||
role="Development Manager",
|
||||
goal="Manage Linear issues and track development progress efficiently",
|
||||
backstory="An AI assistant specialized in software development project management.",
|
||||
tools=[enterprise_tools]
|
||||
)
|
||||
|
||||
# Task to create a bug report
|
||||
create_bug_task = Task(
|
||||
description="Create a high-priority bug report for the authentication system and assign it to the backend team",
|
||||
agent=linear_agent,
|
||||
expected_output="Bug report created successfully with issue ID"
|
||||
)
|
||||
|
||||
# Run the task
|
||||
crew = Crew(
|
||||
agents=[linear_agent],
|
||||
tasks=[create_bug_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### 특정 Linear 도구 필터링
|
||||
|
||||
```python
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
# Get only specific Linear tools
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token",
|
||||
actions_list=["linear_create_issue", "linear_update_issue", "linear_search_issue"]
|
||||
)
|
||||
|
||||
issue_manager = Agent(
|
||||
role="Issue Manager",
|
||||
goal="Create and manage Linear issues efficiently",
|
||||
backstory="An AI assistant that focuses on issue creation and lifecycle management.",
|
||||
tools=enterprise_tools
|
||||
)
|
||||
|
||||
# Task to manage issue workflow
|
||||
issue_workflow = Task(
|
||||
description="Create a feature request issue and update the status of related issues to reflect current progress",
|
||||
agent=issue_manager,
|
||||
expected_output="Feature request created and related issues updated"
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[issue_manager],
|
||||
tasks=[issue_workflow]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### 프로젝트 및 팀 관리
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token"
|
||||
)
|
||||
|
||||
project_coordinator = Agent(
|
||||
role="Project Coordinator",
|
||||
goal="Coordinate projects and teams in Linear efficiently",
|
||||
backstory="An experienced project coordinator who manages development cycles and team workflows.",
|
||||
tools=[enterprise_tools]
|
||||
)
|
||||
|
||||
# Task to coordinate project setup
|
||||
project_coordination = Task(
|
||||
description="""
|
||||
1. Search for engineering teams in Linear
|
||||
2. Create a new project for Q2 feature development
|
||||
3. Associate the project with relevant teams
|
||||
4. Create initial project milestones as issues
|
||||
""",
|
||||
agent=project_coordinator,
|
||||
expected_output="Q2 project created with teams assigned and initial milestones established"
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[project_coordinator],
|
||||
tasks=[project_coordination]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### 이슈 계층 구조 및 하위 작업 관리
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token"
|
||||
)
|
||||
|
||||
task_organizer = Agent(
|
||||
role="Task Organizer",
|
||||
goal="Organize complex issues into manageable sub-tasks",
|
||||
backstory="An AI assistant that breaks down complex development work into organized sub-tasks.",
|
||||
tools=[enterprise_tools]
|
||||
)
|
||||
|
||||
# Task to create issue hierarchy
|
||||
hierarchy_task = Task(
|
||||
description="""
|
||||
1. 세분화가 필요한 대형 기능 이슈를 검색합니다
|
||||
2. 각 복잡한 이슈에 대해 다양한 컴포넌트별로 하위 이슈를 생성합니다
|
||||
3. 부모 이슈를 적절한 설명과 하위 이슈에 대한 링크로 업데이트합니다
|
||||
4. 전문성에 따라 적합한 팀원에게 하위 이슈를 할당합니다
|
||||
""",
|
||||
agent=task_organizer,
|
||||
expected_output="복잡한 이슈가 적절히 할당된 관리 가능한 하위 작업 단위로 분해됨"
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[task_organizer],
|
||||
tasks=[hierarchy_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### 자동화된 개발 워크플로우
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token"
|
||||
)
|
||||
|
||||
workflow_automator = Agent(
|
||||
role="Workflow Automator",
|
||||
goal="Automate development workflow processes in Linear",
|
||||
backstory="An AI assistant that automates repetitive development workflow tasks.",
|
||||
tools=[enterprise_tools]
|
||||
)
|
||||
|
||||
# Complex workflow automation task
|
||||
automation_task = Task(
|
||||
description="""
|
||||
1. 7일 이상 진행 중인 이슈를 검색합니다
|
||||
2. 마감일과 프로젝트 중요도에 따라 우선순위를 업데이트합니다
|
||||
3. 각 팀을 위한 주간 스프린트 계획 이슈를 생성합니다
|
||||
4. 이전 사이클에서 완료된 이슈를 보관합니다
|
||||
5. 프로젝트 상태 보고서를 새로운 이슈로 생성합니다
|
||||
""",
|
||||
agent=workflow_automator,
|
||||
expected_output="우선순위, 스프린트 계획, 상태 보고서가 업데이트된 자동화된 개발 워크플로우"
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[workflow_automator],
|
||||
tasks=[automation_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
## 문제 해결
|
||||
|
||||
### 일반적인 문제
|
||||
|
||||
**권한 오류**
|
||||
- Linear 계정이 대상 워크스페이스에 필요한 권한을 가지고 있는지 확인하세요
|
||||
- OAuth 연결에 Linear API에 필요한 스코프가 포함되어 있는지 확인하세요
|
||||
- 워크스페이스에서 이슈 및 프로젝트를 생성/편집할 권한이 있는지 확인하세요
|
||||
|
||||
**잘못된 ID 및 참조**
|
||||
- 팀 ID, 이슈 ID, 프로젝트 ID가 올바른 UUID 형식인지 다시 한번 확인하세요
|
||||
- 참조된 엔티티(팀, 프로젝트, 사이클)가 존재하며 접근 가능한지 확인하세요
|
||||
- 이슈 식별자가 올바른 형식(예: "ABC-1")을 따르는지 검증하세요
|
||||
|
||||
**팀 및 프로젝트 연관 문제**
|
||||
- 이슈나 프로젝트를 생성하기 전에 LINEAR_SEARCH_TEAMS를 사용하여 유효한 팀 ID를 조회하세요
|
||||
- 워크스페이스 내에 팀이 존재하고 활성화되어 있는지 확인하세요
|
||||
- 팀 ID가 올바르게 UUID 형식으로 구성되어 있는지 검증하세요
|
||||
|
||||
**이슈 상태 및 우선순위 문제**
|
||||
- 상태 ID가 팀의 유효한 워크플로우 상태를 참조하는지 확인하세요
|
||||
- 우선순위 값이 Linear 구성에서 허용된 범위 내에 있는지 확인하세요
|
||||
- 참조하기 전에 사용자 지정 필드와 라벨이 존재하는지 검증하세요
|
||||
|
||||
**날짜 및 시간 형식 문제**
|
||||
- 마감일 및 타임스탬프에 ISO 8601 형식을 사용하세요
|
||||
- 마감일 계산 시 타임존을 올바로 처리하는지 확인하세요
|
||||
- 마감일의 날짜 값이 유효하며 미래인지 검증하세요
|
||||
|
||||
**검색 및 필터 문제**
|
||||
- 검색 쿼리가 올바르게 형식화되어 있으며 비어 있지 않은지 확인하세요
|
||||
- 필터 공식에서 유효한 필드 이름을 사용하세요: `title`, `number`, `project`, `createdAt`
|
||||
- 복잡한 다중 조건 쿼리를 만들기 전에 단순한 필터를 먼저 테스트해 보세요
|
||||
- 연산자 타입이 필터링 대상 필드의 데이터 타입과 일치하는지 확인하세요
|
||||
|
||||
**서브이슈 생성 문제**
|
||||
- 상위 이슈 ID가 유효하고 접근 가능한지 확인하세요
|
||||
- 서브이슈의 팀 ID가 상위 이슈 팀과 일치하거나 호환되는지 검증하세요
|
||||
- 상위 이슈가 이미 보관/삭제되지 않았는지 확인하세요
|
||||
|
||||
### 도움 받기
|
||||
|
||||
<Card title="도움이 필요하신가요?" icon="headset" href="mailto:support@crewai.com">
|
||||
Linear 연동 설정 또는 문제 해결에 대해 지원팀에 문의하세요.
|
||||
</Card>
|
||||
509
docs/ko/enterprise/integrations/notion.mdx
Normal file
509
docs/ko/enterprise/integrations/notion.mdx
Normal file
@@ -0,0 +1,509 @@
|
||||
---
|
||||
title: Notion 연동
|
||||
description: "CrewAI를 위한 Notion 연동을 통한 페이지 및 데이터베이스 관리."
|
||||
icon: "book"
|
||||
---
|
||||
|
||||
## 개요
|
||||
|
||||
에이전트가 Notion을 통해 페이지, 데이터베이스, 콘텐츠를 관리할 수 있도록 지원합니다. 페이지 생성 및 업데이트, 콘텐츠 블록 관리, 지식 베이스 구성, AI 기반 자동화를 통해 문서화 작업 흐름을 효율화할 수 있습니다.
|
||||
|
||||
## 필수 조건
|
||||
|
||||
Notion 통합을 사용하기 전에 다음을 확인하세요:
|
||||
|
||||
- 활성 구독이 있는 [CrewAI Enterprise](https://app.crewai.com) 계정
|
||||
- 적절한 워크스페이스 권한이 있는 Notion 계정
|
||||
- [통합 페이지](https://app.crewai.com/crewai_plus/connectors)를 통해 Notion 계정을 연결함
|
||||
|
||||
## Notion 연동 설정
|
||||
|
||||
### 1. Notion 계정 연결하기
|
||||
|
||||
1. [CrewAI Enterprise Integrations](https://app.crewai.com/crewai_plus/connectors)로 이동합니다.
|
||||
2. 인증 통합(Auhtentication Integrations) 섹션에서 **Notion**을(를) 찾습니다.
|
||||
3. **Connect**를 클릭하고 OAuth 플로우를 완료합니다.
|
||||
4. 페이지 및 데이터베이스 관리를 위한 필요한 권한을 부여합니다.
|
||||
5. [Account Settings](https://app.crewai.com/crewai_plus/settings/account)에서 Enterprise Token을 복사합니다.
|
||||
|
||||
### 2. 필수 패키지 설치
|
||||
|
||||
```bash
|
||||
uv add crewai-tools
|
||||
```
|
||||
|
||||
## 사용 가능한 액션
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="NOTION_CREATE_PAGE">
|
||||
**설명:** Notion에서 페이지를 생성합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `parent` (object, 필수): 상위 - 새 페이지가 삽입될 상위 페이지 또는 데이터베이스를 나타내는 JSON 객체로, page_id 또는 database_id 키를 포함합니다.
|
||||
```json
|
||||
{
|
||||
"database_id": "DATABASE_ID"
|
||||
}
|
||||
```
|
||||
- `properties` (object, 필수): 속성 - 페이지 속성의 값입니다. 상위가 데이터베이스인 경우, 스키마는 상위 데이터베이스의 속성과 일치해야 합니다.
|
||||
```json
|
||||
{
|
||||
"title": [
|
||||
{
|
||||
"text": {
|
||||
"content": "My Page"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
- `icon` (object, 필수): 아이콘 - 페이지 아이콘입니다.
|
||||
```json
|
||||
{
|
||||
"emoji": "🥬"
|
||||
}
|
||||
```
|
||||
- `children` (object, 선택): 자식 - 페이지에 추가할 콘텐츠 블록입니다.
|
||||
```json
|
||||
[
|
||||
{
|
||||
"object": "block",
|
||||
"type": "heading_2",
|
||||
"heading_2": {
|
||||
"rich_text": [
|
||||
{
|
||||
"type": "text",
|
||||
"text": {
|
||||
"content": "Lacinato kale"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
```
|
||||
- `cover` (object, 선택): 표지 - 페이지 표지 이미지입니다.
|
||||
```json
|
||||
{
|
||||
"external": {
|
||||
"url": "https://upload.wikimedia.org/wikipedia/commons/6/62/Tuscankale.jpg"
|
||||
}
|
||||
}
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="NOTION_UPDATE_PAGE">
|
||||
**설명:** Notion에서 페이지를 업데이트합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `pageId` (string, 필수): 페이지 ID - 업데이트할 페이지의 ID를 지정합니다. (예: "59833787-2cf9-4fdf-8782-e53db20768a5").
|
||||
- `icon` (object, 필수): 아이콘 - 페이지 아이콘입니다.
|
||||
```json
|
||||
{
|
||||
"emoji": "🥬"
|
||||
}
|
||||
```
|
||||
- `archived` (boolean, 선택): 보관됨 - 페이지가 보관(삭제)되었는지 여부입니다. true로 설정하면 페이지를 보관합니다. false로 설정하면 보관 해제(복원)합니다.
|
||||
- `properties` (object, 선택): 속성 - 페이지에서 업데이트할 속성 값입니다.
|
||||
```json
|
||||
{
|
||||
"title": [
|
||||
{
|
||||
"text": {
|
||||
"content": "My Updated Page"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
- `cover` (object, 선택): 표지 - 페이지 표지 이미지입니다.
|
||||
```json
|
||||
{
|
||||
"external": {
|
||||
"url": "https://upload.wikimedia.org/wikipedia/commons/6/62/Tuscankale.jpg"
|
||||
}
|
||||
}
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="NOTION_GET_PAGE_BY_ID">
|
||||
**설명:** Notion에서 ID로 페이지를 가져옵니다.
|
||||
|
||||
**파라미터:**
|
||||
- `pageId` (string, 필수): 페이지 ID - 가져올 페이지의 ID를 지정합니다. (예: "59833787-2cf9-4fdf-8782-e53db20768a5").
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="NOTION_ARCHIVE_PAGE">
|
||||
**설명:** Notion에서 페이지를 보관합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `pageId` (string, 필수): 페이지 ID - 보관할 페이지의 ID를 지정합니다. (예: "59833787-2cf9-4fdf-8782-e53db20768a5").
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="NOTION_SEARCH_PAGES">
|
||||
**설명:** 필터를 사용하여 Notion에서 페이지를 검색합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `searchByTitleFilterSearch` (object, 선택): 불리언 정규형(OR 조건 그룹의 AND 그룹) 형태의 필터입니다.
|
||||
```json
|
||||
{
|
||||
"operator": "OR",
|
||||
"conditions": [
|
||||
{
|
||||
"operator": "AND",
|
||||
"conditions": [
|
||||
{
|
||||
"field": "query",
|
||||
"operator": "$stringExactlyMatches",
|
||||
"value": "meeting notes"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
사용 가능한 필드: `query`, `filter.value`, `direction`, `page_size`
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="NOTION_GET_PAGE_CONTENT">
|
||||
**설명:** Notion에서 페이지 콘텐츠(블록)를 가져옵니다.
|
||||
|
||||
**파라미터:**
|
||||
- `blockId` (string, 필수): 페이지 ID - 해당 블록이나 페이지의 모든 자식 블록을 순서대로 가져오기 위해 Block 또는 Page ID를 지정합니다. (예: "59833787-2cf9-4fdf-8782-e53db20768a5").
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="NOTION_UPDATE_BLOCK">
|
||||
**설명:** Notion에서 블록을 업데이트합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `blockId` (string, 필수): 블록 ID - 업데이트할 블록의 ID를 지정합니다. (예: "9bc30ad4-9373-46a5-84ab-0a7845ee52e6").
|
||||
- `archived` (boolean, 선택): 보관됨 - true로 설정하면 블록을 보관(삭제)합니다. false로 설정하면 보관 해제(복원)합니다.
|
||||
- `paragraph` (object, 선택): 단락 콘텐츠.
|
||||
```json
|
||||
{
|
||||
"rich_text": [
|
||||
{
|
||||
"type": "text",
|
||||
"text": {
|
||||
"content": "Lacinato kale",
|
||||
"link": null
|
||||
}
|
||||
}
|
||||
],
|
||||
"color": "default"
|
||||
}
|
||||
```
|
||||
- `image` (object, 선택): 이미지 블록.
|
||||
```json
|
||||
{
|
||||
"type": "external",
|
||||
"external": {
|
||||
"url": "https://website.domain/images/image.png"
|
||||
}
|
||||
}
|
||||
```
|
||||
- `bookmark` (object, 선택): 북마크 블록.
|
||||
```json
|
||||
{
|
||||
"caption": [],
|
||||
"url": "https://companywebsite.com"
|
||||
}
|
||||
```
|
||||
- `code` (object, 선택): 코드 블록.
|
||||
```json
|
||||
{
|
||||
"rich_text": [
|
||||
{
|
||||
"type": "text",
|
||||
"text": {
|
||||
"content": "const a = 3"
|
||||
}
|
||||
}
|
||||
],
|
||||
"language": "javascript"
|
||||
}
|
||||
```
|
||||
- `pdf` (object, 선택): PDF 블록.
|
||||
```json
|
||||
{
|
||||
"type": "external",
|
||||
"external": {
|
||||
"url": "https://website.domain/files/doc.pdf"
|
||||
}
|
||||
}
|
||||
```
|
||||
- `table` (object, 선택): 테이블 블록.
|
||||
```json
|
||||
{
|
||||
"table_width": 2,
|
||||
"has_column_header": false,
|
||||
"has_row_header": false
|
||||
}
|
||||
```
|
||||
- `tableOfContent` (object, 선택): 목차 블록.
|
||||
```json
|
||||
{
|
||||
"color": "default"
|
||||
}
|
||||
```
|
||||
- `additionalFields` (object, 선택): 추가 블록 유형.
|
||||
```json
|
||||
{
|
||||
"child_page": {
|
||||
"title": "Lacinato kale"
|
||||
},
|
||||
"child_database": {
|
||||
"title": "My database"
|
||||
}
|
||||
}
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="NOTION_GET_BLOCK_BY_ID">
|
||||
**설명:** Notion에서 ID로 블록을 가져옵니다.
|
||||
|
||||
**파라미터:**
|
||||
- `blockId` (string, 필수): 블록 ID - 가져올 블록의 ID를 지정합니다. (예: "9bc30ad4-9373-46a5-84ab-0a7845ee52e6").
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="NOTION_DELETE_BLOCK">
|
||||
**설명:** Notion에서 블록을 삭제합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `blockId` (string, 필수): 블록 ID - 삭제할 블록의 ID를 지정합니다. (예: "9bc30ad4-9373-46a5-84ab-0a7845ee52e6").
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
## 사용 예시
|
||||
|
||||
### 기본 Notion Agent 설정
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
# Get enterprise tools (Notion tools will be included)
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token"
|
||||
)
|
||||
|
||||
# Create an agent with Notion capabilities
|
||||
notion_agent = Agent(
|
||||
role="Documentation Manager",
|
||||
goal="Manage documentation and knowledge base in Notion efficiently",
|
||||
backstory="An AI assistant specialized in content management and documentation.",
|
||||
tools=[enterprise_tools]
|
||||
)
|
||||
|
||||
# Task to create a meeting notes page
|
||||
create_notes_task = Task(
|
||||
description="Create a new meeting notes page in the team database with today's date and agenda items",
|
||||
agent=notion_agent,
|
||||
expected_output="Meeting notes page created successfully with structured content"
|
||||
)
|
||||
|
||||
# Run the task
|
||||
crew = Crew(
|
||||
agents=[notion_agent],
|
||||
tasks=[create_notes_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### 특정 Notion 도구 필터링
|
||||
|
||||
```python
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
# Get only specific Notion tools
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token",
|
||||
actions_list=["notion_create_page", "notion_update_block", "notion_search_pages"]
|
||||
)
|
||||
|
||||
content_manager = Agent(
|
||||
role="Content Manager",
|
||||
goal="Create and manage content pages efficiently",
|
||||
backstory="An AI assistant that focuses on content creation and management.",
|
||||
tools=enterprise_tools
|
||||
)
|
||||
|
||||
# Task to manage content workflow
|
||||
content_workflow = Task(
|
||||
description="Create a new project documentation page and add structured content blocks for requirements and specifications",
|
||||
agent=content_manager,
|
||||
expected_output="Project documentation created with organized content sections"
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[content_manager],
|
||||
tasks=[content_workflow]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### 지식 베이스 관리
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token"
|
||||
)
|
||||
|
||||
knowledge_curator = Agent(
|
||||
role="Knowledge Curator",
|
||||
goal="Curate and organize knowledge base content in Notion",
|
||||
backstory="An experienced knowledge manager who organizes and maintains comprehensive documentation.",
|
||||
tools=[enterprise_tools]
|
||||
)
|
||||
|
||||
# Task to curate knowledge base
|
||||
curation_task = Task(
|
||||
description="""
|
||||
1. 새로운 제품 기능과 관련된 기존 문서 페이지를 검색합니다.
|
||||
2. 적절한 구조로 포괄적인 기능 문서 페이지를 생성합니다.
|
||||
3. 코드 예제, 이미지 및 관련 리소스에 대한 링크를 추가합니다.
|
||||
4. 기존 페이지를 업데이트하여 새 문서에 대한 교차 참조를 추가합니다.
|
||||
""",
|
||||
agent=knowledge_curator,
|
||||
expected_output="Feature documentation created and integrated with existing knowledge base"
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[knowledge_curator],
|
||||
tasks=[curation_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### 콘텐츠 구조 및 구성
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token"
|
||||
)
|
||||
|
||||
content_organizer = Agent(
|
||||
role="Content Organizer",
|
||||
goal="Organize and structure content blocks for optimal readability",
|
||||
backstory="An AI assistant that specializes in content structure and user experience.",
|
||||
tools=[enterprise_tools]
|
||||
)
|
||||
|
||||
# Task to organize content structure
|
||||
organization_task = Task(
|
||||
description="""
|
||||
1. Get content from existing project pages
|
||||
2. Analyze the structure and identify improvement opportunities
|
||||
3. Update content blocks to use proper headings, tables, and formatting
|
||||
4. Add table of contents and improve navigation between related pages
|
||||
5. Create templates for future documentation consistency
|
||||
""",
|
||||
agent=content_organizer,
|
||||
expected_output="Content reorganized with improved structure and navigation"
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[content_organizer],
|
||||
tasks=[organization_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### 자동화된 문서화 워크플로우
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token"
|
||||
)
|
||||
|
||||
doc_automator = Agent(
|
||||
role="Documentation Automator",
|
||||
goal="Automate documentation workflows and maintenance",
|
||||
backstory="An AI assistant that automates repetitive documentation tasks.",
|
||||
tools=[enterprise_tools]
|
||||
)
|
||||
|
||||
# Complex documentation automation task
|
||||
automation_task = Task(
|
||||
description="""
|
||||
1. 최근 30일 이내에 업데이트되지 않은 페이지 검색
|
||||
2. 오래된 콘텐츠 블록 검토 및 업데이트
|
||||
3. 일관된 포맷으로 주간 팀 업데이트 페이지 생성
|
||||
4. 프로젝트 페이지에 상태 표시기 및 진행 상황 추적 추가
|
||||
5. 월간 문서 헬스 리포트 생성
|
||||
6. 완료된 프로젝트 페이지를 아카이브 섹션에 정리 및 보관
|
||||
""",
|
||||
agent=doc_automator,
|
||||
expected_output="업데이트된 콘텐츠, 주간 리포트, 정리된 아카이브로 문서화 자동화 완료"
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[doc_automator],
|
||||
tasks=[automation_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
## 문제 해결
|
||||
|
||||
### 일반적인 문제
|
||||
|
||||
**권한 오류**
|
||||
- Notion 계정이 대상 워크스페이스에 대한 편집 권한이 있는지 확인하세요
|
||||
- OAuth 연결에 Notion API에 필요한 범위가 포함되어 있는지 확인하세요
|
||||
- 페이지와 데이터베이스가 인증된 통합에 공유되어 있는지 확인하세요
|
||||
|
||||
**잘못된 페이지 및 블록 ID**
|
||||
- 페이지 ID 및 블록 ID가 올바른 UUID 형식인지 다시 확인하세요
|
||||
- 참조되는 페이지와 블록이 존재하고 접근 가능한지 확인하세요
|
||||
- 새 페이지를 생성할 때 상위 페이지 또는 데이터베이스 ID가 유효한지 검증하세요
|
||||
|
||||
**속성 스키마 문제**
|
||||
- 데이터베이스에 페이지를 생성할 때 페이지 속성이 데이터베이스 스키마와 일치하는지 확인하세요
|
||||
- 대상 데이터베이스에 대해 속성 이름과 타입이 올바른지 확인하세요
|
||||
- 페이지를 생성하거나 업데이트할 때 필수 속성이 포함되어 있는지 확인하세요
|
||||
|
||||
**콘텐츠 블록 구조**
|
||||
- 블록 콘텐츠가 Notion의 리치 텍스트 형식 사양을 따르는지 확인하세요
|
||||
- 중첩된 블록 구조가 올바르게 포맷되어 있는지 확인하세요
|
||||
- 미디어 URL이 접근 가능하며 올바른 형식인지 확인하세요
|
||||
|
||||
**검색 및 필터 문제**
|
||||
- 검색 쿼리가 올바르게 포맷되어 있고 비어 있지 않은지 확인하세요
|
||||
- 필터 공식에서 유효한 필드명을 사용하세요: `query`, `filter.value`, `direction`, `page_size`
|
||||
- 복잡한 필터 조건을 만들기 전에 간단한 검색을 테스트하세요
|
||||
|
||||
**상위-하위 관계**
|
||||
- 하위 페이지를 생성하기 전에 상위 페이지 또는 데이터베이스가 존재하는지 확인하세요
|
||||
- 상위 컨테이너에 대한 적절한 권한이 있는지 확인하세요
|
||||
- 데이터베이스 스키마가 설정하려는 속성을 허용하는지 확인하세요
|
||||
|
||||
**리치 텍스트 및 미디어 콘텐츠**
|
||||
- 외부 이미지, PDF, 북마크의 URL이 접근 가능한지 확인하세요
|
||||
- 리치 텍스트 포매팅이 Notion의 API 사양을 따르는지 확인하세요
|
||||
- 코드 블록의 언어 타입이 Notion에서 지원되는지 확인하세요
|
||||
|
||||
**아카이브 및 삭제 작업**
|
||||
- 아카이브(복구 가능)와 삭제(영구적)의 차이를 이해하세요
|
||||
- 대상 콘텐츠를 아카이브 또는 삭제할 수 있는 권한이 있는지 확인하세요
|
||||
- 여러 페이지 또는 블록에 영향을 줄 수 있는 대량 작업은 신중히 진행하세요
|
||||
|
||||
### 도움 받기
|
||||
|
||||
<Card title="도움이 필요하신가요?" icon="headset" href="mailto:support@crewai.com">
|
||||
Notion 연동 설정 또는 문제 해결에 대해 지원팀에 문의해 주세요.
|
||||
</Card>
|
||||
632
docs/ko/enterprise/integrations/salesforce.mdx
Normal file
632
docs/ko/enterprise/integrations/salesforce.mdx
Normal file
@@ -0,0 +1,632 @@
|
||||
---
|
||||
title: Salesforce 통합
|
||||
description: "CrewAI를 위한 Salesforce 통합을 통한 CRM 및 영업 자동화."
|
||||
icon: "salesforce"
|
||||
---
|
||||
|
||||
## 개요
|
||||
|
||||
에이전트가 Salesforce를 통해 고객 관계, 영업 프로세스 및 데이터를 관리할 수 있도록 합니다. 레코드를 생성 및 업데이트하고, 리드와 기회를 관리하며, SOQL 쿼리를 실행하고, AI 기반 자동화로 CRM 워크플로를 간소화하세요.
|
||||
|
||||
## 사전 준비 사항
|
||||
|
||||
Salesforce 통합을 사용하기 전에 다음을 확인하세요:
|
||||
|
||||
- 활성 구독이 있는 [CrewAI Enterprise](https://app.crewai.com) 계정
|
||||
- 적절한 권한이 있는 Salesforce 계정
|
||||
- [통합 페이지](https://app.crewai.com/integrations)를 통해 Salesforce 계정 연결
|
||||
|
||||
## 사용 가능한 도구
|
||||
|
||||
### **레코드 관리**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="SALESFORCE_CREATE_RECORD_CONTACT">
|
||||
**설명:** Salesforce에서 새로운 Contact 레코드를 생성합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `FirstName` (string, 선택): 이름
|
||||
- `LastName` (string, 필수): 성 - 이 필드는 필수입니다
|
||||
- `accountId` (string, 선택): Account ID - 이 Contact가 소속된 Account
|
||||
- `Email` (string, 선택): 이메일 주소
|
||||
- `Title` (string, 선택): 담당자의 직함(예: CEO 또는 Vice President 등)
|
||||
- `Description` (string, 선택): Contact에 대한 설명
|
||||
- `additionalFields` (object, 선택): 사용자 정의 Contact 필드를 위한 JSON 형식의 추가 필드
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_CREATE_RECORD_LEAD">
|
||||
**설명:** Salesforce에서 새로운 Lead 레코드를 생성합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `FirstName` (string, 선택): 이름
|
||||
- `LastName` (string, 필수): 성 - 이 필드는 필수입니다
|
||||
- `Company` (string, 필수): 회사명 - 이 필드는 필수입니다
|
||||
- `Email` (string, 선택): 이메일 주소
|
||||
- `Phone` (string, 선택): 전화번호
|
||||
- `Website` (string, 선택): 웹사이트 URL
|
||||
- `Title` (string, 선택): 담당자의 직함(예: CEO 또는 Vice President 등)
|
||||
- `Status` (string, 선택): 리드 상태 - 리드 상태를 선택하려면 Connect Portal Workflow 설정을 사용하세요
|
||||
- `Description` (string, 선택): Lead에 대한 설명
|
||||
- `additionalFields` (object, 선택): 사용자 정의 Lead 필드를 위한 JSON 형식의 추가 필드
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_CREATE_RECORD_OPPORTUNITY">
|
||||
**설명:** Salesforce에서 새로운 Opportunity 레코드를 생성합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `Name` (string, 필수): Opportunity 이름 - 이 필드는 필수입니다
|
||||
- `StageName` (string, 선택): Opportunity 단계 - 단계를 선택하려면 Connect Portal Workflow 설정을 사용하세요
|
||||
- `CloseDate` (string, 선택): 마감일(YYYY-MM-DD 형식) - 기본값은 현재 날짜로부터 30일 이후
|
||||
- `AccountId` (string, 선택): 이 Opportunity가 소속된 Account
|
||||
- `Amount` (string, 선택): 예상 전체 판매 금액
|
||||
- `Description` (string, 선택): Opportunity에 대한 설명
|
||||
- `OwnerId` (string, 선택): 이 Opportunity를 담당하는 Salesforce 사용자
|
||||
- `NextStep` (string, 선택): Opportunity 마감을 위한 다음 작업의 설명
|
||||
- `additionalFields` (object, 선택): 사용자 정의 Opportunity 필드를 위한 JSON 형식의 추가 필드
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_CREATE_RECORD_TASK">
|
||||
**설명:** Salesforce에서 새로운 Task 레코드를 생성합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `whatId` (string, 선택): 관련 ID - 이 Task가 관련된 Account 또는 Opportunity의 ID
|
||||
- `whoId` (string, 선택): 이름 ID - 이 Task가 관련된 Contact 또는 Lead의 ID
|
||||
- `subject` (string, 필수): 작업 제목
|
||||
- `activityDate` (string, 선택): 작업 날짜(YYYY-MM-DD 형식)
|
||||
- `description` (string, 선택): Task에 대한 설명
|
||||
- `taskSubtype` (string, 필수): Task 하위 유형 - 선택 항목: task, email, listEmail, call
|
||||
- `Status` (string, 선택): 상태 - 선택 항목: Not Started, In Progress, Completed
|
||||
- `ownerId` (string, 선택): 담당자 ID - 이 Task를 담당하는 Salesforce 사용자
|
||||
- `callDurationInSeconds` (string, 선택): 통화 시간(초)
|
||||
- `isReminderSet` (boolean, 선택): 알림 설정 여부
|
||||
- `reminderDateTime` (string, 선택): 알림 날짜/시간(ISO 형식)
|
||||
- `additionalFields` (object, 선택): 사용자 정의 Task 필드를 위한 JSON 형식의 추가 필드
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_CREATE_RECORD_ACCOUNT">
|
||||
**설명:** Salesforce에서 새로운 Account 레코드를 생성합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `Name` (string, 필수): Account 이름 - 이 필드는 필수입니다
|
||||
- `OwnerId` (string, 선택): 이 Account를 담당하는 Salesforce 사용자
|
||||
- `Website` (string, 선택): 웹사이트 URL
|
||||
- `Phone` (string, 선택): 전화번호
|
||||
- `Description` (string, 선택): Account 설명
|
||||
- `additionalFields` (object, 선택): 사용자 정의 Account 필드를 위한 JSON 형식의 추가 필드
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_CREATE_RECORD_ANY">
|
||||
**설명:** Salesforce에서 모든 오브젝트 유형의 레코드를 생성합니다.
|
||||
|
||||
**참고:** 이 기능은 사용자 정의 또는 알려지지 않은 오브젝트 유형의 레코드를 생성할 때 유연하게 사용할 수 있습니다.
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
### **레코드 업데이트**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="SALESFORCE_UPDATE_RECORD_CONTACT">
|
||||
**설명:** Salesforce에서 기존 연락처(Contact) 레코드를 업데이트합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `recordId` (string, 필수): 업데이트할 레코드의 ID
|
||||
- `FirstName` (string, 선택): 이름
|
||||
- `LastName` (string, 선택): 성
|
||||
- `accountId` (string, 선택): 계정 ID - 연락처가 속한 계정
|
||||
- `Email` (string, 선택): 이메일 주소
|
||||
- `Title` (string, 선택): 연락처의 직함
|
||||
- `Description` (string, 선택): 연락처에 대한 설명
|
||||
- `additionalFields` (object, 선택): 커스텀 연락처 필드를 위한 JSON 형식의 추가 필드
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_UPDATE_RECORD_LEAD">
|
||||
**설명:** Salesforce에서 기존 리드(Lead) 레코드를 업데이트합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `recordId` (string, 필수): 업데이트할 레코드의 ID
|
||||
- `FirstName` (string, 선택): 이름
|
||||
- `LastName` (string, 선택): 성
|
||||
- `Company` (string, 선택): 회사명
|
||||
- `Email` (string, 선택): 이메일 주소
|
||||
- `Phone` (string, 선택): 전화번호
|
||||
- `Website` (string, 선택): 웹사이트 URL
|
||||
- `Title` (string, 선택): 연락처의 직함
|
||||
- `Status` (string, 선택): 리드 상태
|
||||
- `Description` (string, 선택): 리드에 대한 설명
|
||||
- `additionalFields` (object, 선택): 커스텀 리드 필드를 위한 JSON 형식의 추가 필드
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_UPDATE_RECORD_OPPORTUNITY">
|
||||
**설명:** Salesforce에서 기존 기회(Opportunity) 레코드를 업데이트합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `recordId` (string, 필수): 업데이트할 레코드의 ID
|
||||
- `Name` (string, 선택): 기회명
|
||||
- `StageName` (string, 선택): 기회 단계
|
||||
- `CloseDate` (string, 선택): 마감 날짜 (YYYY-MM-DD 형식)
|
||||
- `AccountId` (string, 선택): 기회가 속한 계정
|
||||
- `Amount` (string, 선택): 예상 총 판매 금액
|
||||
- `Description` (string, 선택): 기회에 대한 설명
|
||||
- `OwnerId` (string, 선택): 이 기회를 담당하는 Salesforce 사용자
|
||||
- `NextStep` (string, 선택): 기회 마감을 위한 다음 작업의 설명
|
||||
- `additionalFields` (object, 선택): 커스텀 기회 필드를 위한 JSON 형식의 추가 필드
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_UPDATE_RECORD_TASK">
|
||||
**설명:** Salesforce에서 기존 작업(Task) 레코드를 업데이트합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `recordId` (string, 필수): 업데이트할 레코드의 ID
|
||||
- `whatId` (string, 선택): 관련 ID - 이 작업이 연결된 계정 또는 기회의 ID
|
||||
- `whoId` (string, 선택): 이름 ID - 이 작업이 연결된 연락처 또는 리드의 ID
|
||||
- `subject` (string, 선택): 작업의 주제
|
||||
- `activityDate` (string, 선택): 활동 날짜 (YYYY-MM-DD 형식)
|
||||
- `description` (string, 선택): 작업에 대한 설명
|
||||
- `Status` (string, 선택): 상태 - 옵션: Not Started, In Progress, Completed
|
||||
- `ownerId` (string, 선택): 담당자 ID - 이 작업을 할당받은 Salesforce 사용자
|
||||
- `callDurationInSeconds` (string, 선택): 통화 시간(초)
|
||||
- `isReminderSet` (boolean, 선택): 알림 설정 여부
|
||||
- `reminderDateTime` (string, 선택): 알림 날짜/시간 (ISO 형식)
|
||||
- `additionalFields` (object, 선택): 커스텀 작업 필드를 위한 JSON 형식의 추가 필드
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_UPDATE_RECORD_ACCOUNT">
|
||||
**설명:** Salesforce에서 기존 계정(Account) 레코드를 업데이트합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `recordId` (string, 필수): 업데이트할 레코드의 ID
|
||||
- `Name` (string, 선택): 계정 이름
|
||||
- `OwnerId` (string, 선택): 이 계정에 할당된 Salesforce 사용자
|
||||
- `Website` (string, 선택): 웹사이트 URL
|
||||
- `Phone` (string, 선택): 전화번호
|
||||
- `Description` (string, 선택): 계정 설명
|
||||
- `additionalFields` (object, 선택): 커스텀 계정 필드를 위한 JSON 형식의 추가 필드
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_UPDATE_RECORD_ANY">
|
||||
**설명:** Salesforce에서 어떤 객체 유형이든 레코드를 업데이트합니다.
|
||||
|
||||
**참고:** 이는 커스텀 또는 미확인 객체 유형의 레코드 업데이트를 위한 유연한 도구입니다.
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
### **레코드 조회**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="SALESFORCE_GET_RECORD_BY_ID_CONTACT">
|
||||
**설명:** ID로 Contact 레코드를 조회합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `recordId` (string, 필수): Contact의 레코드 ID
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_GET_RECORD_BY_ID_LEAD">
|
||||
**설명:** ID로 Lead 레코드를 조회합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `recordId` (string, 필수): Lead의 레코드 ID
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_GET_RECORD_BY_ID_OPPORTUNITY">
|
||||
**설명:** ID로 Opportunity 레코드를 조회합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `recordId` (string, 필수): Opportunity의 레코드 ID
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_GET_RECORD_BY_ID_TASK">
|
||||
**설명:** ID로 Task 레코드를 조회합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `recordId` (string, 필수): Task의 레코드 ID
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_GET_RECORD_BY_ID_ACCOUNT">
|
||||
**설명:** ID로 Account 레코드를 조회합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `recordId` (string, 필수): Account의 레코드 ID
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_GET_RECORD_BY_ID_ANY">
|
||||
**설명:** ID로 임의 객체 유형의 레코드를 조회합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `recordType` (string, 필수): 레코드 유형 (예: "CustomObject__c")
|
||||
- `recordId` (string, 필수): 레코드 ID
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
### **레코드 검색**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="SALESFORCE_SEARCH_RECORDS_CONTACT">
|
||||
**설명:** 고급 필터링으로 연락처(Contact) 레코드를 검색합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `filterFormula` (object, 선택): 필드별 연산자가 지정된 분리적 정규형(Disjunctive Normal Form)의 고급 필터
|
||||
- `sortBy` (string, 선택): 정렬 기준 필드 (예: "CreatedDate")
|
||||
- `sortDirection` (string, 선택): 정렬 방향 - 옵션: ASC, DESC
|
||||
- `includeAllFields` (boolean, 선택): 결과에 모든 필드를 포함
|
||||
- `paginationParameters` (object, 선택): pageCursor를 포함한 페이지네이션 설정
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_SEARCH_RECORDS_LEAD">
|
||||
**설명:** 고급 필터링으로 리드(Lead) 레코드를 검색합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `filterFormula` (object, 선택): 필드별 연산자가 지정된 분리적 정규형의 고급 필터
|
||||
- `sortBy` (string, 선택): 정렬 기준 필드 (예: "CreatedDate")
|
||||
- `sortDirection` (string, 선택): 정렬 방향 - 옵션: ASC, DESC
|
||||
- `includeAllFields` (boolean, 선택): 결과에 모든 필드를 포함
|
||||
- `paginationParameters` (object, 선택): pageCursor를 포함한 페이지네이션 설정
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_SEARCH_RECORDS_OPPORTUNITY">
|
||||
**설명:** 고급 필터링으로 기회(Opportunity) 레코드를 검색합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `filterFormula` (object, 선택): 필드별 연산자가 지정된 분리적 정규형의 고급 필터
|
||||
- `sortBy` (string, 선택): 정렬 기준 필드 (예: "CreatedDate")
|
||||
- `sortDirection` (string, 선택): 정렬 방향 - 옵션: ASC, DESC
|
||||
- `includeAllFields` (boolean, 선택): 결과에 모든 필드를 포함
|
||||
- `paginationParameters` (object, 선택): pageCursor를 포함한 페이지네이션 설정
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_SEARCH_RECORDS_TASK">
|
||||
**설명:** 고급 필터링으로 작업(Task) 레코드를 검색합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `filterFormula` (object, 선택): 필드별 연산자가 지정된 분리적 정규형의 고급 필터
|
||||
- `sortBy` (string, 선택): 정렬 기준 필드 (예: "CreatedDate")
|
||||
- `sortDirection` (string, 선택): 정렬 방향 - 옵션: ASC, DESC
|
||||
- `includeAllFields` (boolean, 선택): 결과에 모든 필드를 포함
|
||||
- `paginationParameters` (object, 선택): pageCursor를 포함한 페이지네이션 설정
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_SEARCH_RECORDS_ACCOUNT">
|
||||
**설명:** 고급 필터링으로 계정(Account) 레코드를 검색합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `filterFormula` (object, 선택): 필드별 연산자가 지정된 분리적 정규형의 고급 필터
|
||||
- `sortBy` (string, 선택): 정렬 기준 필드 (예: "CreatedDate")
|
||||
- `sortDirection` (string, 선택): 정렬 방향 - 옵션: ASC, DESC
|
||||
- `includeAllFields` (boolean, 선택): 결과에 모든 필드를 포함
|
||||
- `paginationParameters` (object, 선택): pageCursor를 포함한 페이지네이션 설정
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_SEARCH_RECORDS_ANY">
|
||||
**설명:** 모든 오브젝트 유형의 레코드를 검색합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `recordType` (string, 필수): 검색할 레코드 유형
|
||||
- `filterFormula` (string, 선택): 필터 검색 조건
|
||||
- `includeAllFields` (boolean, 선택): 결과에 모든 필드를 포함
|
||||
- `paginationParameters` (object, 선택): pageCursor를 포함한 페이지네이션 설정
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
### **리스트 뷰 조회**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="SALESFORCE_GET_RECORD_BY_VIEW_ID_CONTACT">
|
||||
**설명:** 특정 리스트 뷰에서 Contact 레코드를 가져옵니다.
|
||||
|
||||
**파라미터:**
|
||||
- `listViewId` (string, 필수): 리스트 뷰 ID
|
||||
- `paginationParameters` (object, 선택): pageCursor와 함께 사용하는 페이지네이션 설정
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_GET_RECORD_BY_VIEW_ID_LEAD">
|
||||
**설명:** 특정 리스트 뷰에서 Lead 레코드를 가져옵니다.
|
||||
|
||||
**파라미터:**
|
||||
- `listViewId` (string, 필수): 리스트 뷰 ID
|
||||
- `paginationParameters` (object, 선택): pageCursor와 함께 사용하는 페이지네이션 설정
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_GET_RECORD_BY_VIEW_ID_OPPORTUNITY">
|
||||
**설명:** 특정 리스트 뷰에서 Opportunity 레코드를 가져옵니다.
|
||||
|
||||
**파라미터:**
|
||||
- `listViewId` (string, 필수): 리스트 뷰 ID
|
||||
- `paginationParameters` (object, 선택): pageCursor와 함께 사용하는 페이지네이션 설정
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_GET_RECORD_BY_VIEW_ID_TASK">
|
||||
**설명:** 특정 리스트 뷰에서 Task 레코드를 가져옵니다.
|
||||
|
||||
**파라미터:**
|
||||
- `listViewId` (string, 필수): 리스트 뷰 ID
|
||||
- `paginationParameters` (object, 선택): pageCursor와 함께 사용하는 페이지네이션 설정
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_GET_RECORD_BY_VIEW_ID_ACCOUNT">
|
||||
**설명:** 특정 리스트 뷰에서 Account 레코드를 가져옵니다.
|
||||
|
||||
**파라미터:**
|
||||
- `listViewId` (string, 필수): 리스트 뷰 ID
|
||||
- `paginationParameters` (object, 선택): pageCursor와 함께 사용하는 페이지네이션 설정
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_GET_RECORD_BY_VIEW_ID_ANY">
|
||||
**설명:** 특정 리스트 뷰에서 임의의 객체 유형의 레코드를 가져옵니다.
|
||||
|
||||
**파라미터:**
|
||||
- `recordType` (string, 필수): 레코드 유형
|
||||
- `listViewId` (string, 필수): 리스트 뷰 ID
|
||||
- `paginationParameters` (object, 선택): pageCursor와 함께 사용하는 페이지네이션 설정
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
### **커스텀 필드**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="SALESFORCE_CREATE_CUSTOM_FIELD_CONTACT">
|
||||
**설명:** Contact 오브젝트에 대한 커스텀 필드를 배포합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `label` (string, 필수): 표시 및 내부 참조를 위한 필드 라벨
|
||||
- `type` (string, 필수): 필드 유형 - 옵션: Checkbox, Currency, Date, Email, Number, Percent, Phone, Picklist, MultiselectPicklist, Text, TextArea, LongTextArea, Html, Time, Url
|
||||
- `defaultCheckboxValue` (boolean, 선택): 체크박스 필드의 기본값
|
||||
- `length` (string, 필수): 숫자/텍스트 필드의 길이
|
||||
- `decimalPlace` (string, 필수): 숫자 필드의 소수 자릿수
|
||||
- `pickListValues` (string, 필수): 피클리스트 필드의 값(줄바꿈으로 구분)
|
||||
- `visibleLines` (string, 필수): 멀티셀렉트/텍스트 영역 필드의 표시 줄 수
|
||||
- `description` (string, 선택): 필드 설명
|
||||
- `helperText` (string, 선택): 마우스를 올렸을 때 표시되는 도움말 텍스트
|
||||
- `defaultFieldValue` (string, 선택): 필드의 기본값
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_CREATE_CUSTOM_FIELD_LEAD">
|
||||
**설명:** Lead 오브젝트에 대한 커스텀 필드를 배포합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `label` (string, 필수): 표시 및 내부 참조를 위한 필드 라벨
|
||||
- `type` (string, 필수): 필드 유형 - 옵션: Checkbox, Currency, Date, Email, Number, Percent, Phone, Picklist, MultiselectPicklist, Text, TextArea, LongTextArea, Html, Time, Url
|
||||
- `defaultCheckboxValue` (boolean, 선택): 체크박스 필드의 기본값
|
||||
- `length` (string, 필수): 숫자/텍스트 필드의 길이
|
||||
- `decimalPlace` (string, 필수): 숫자 필드의 소수 자릿수
|
||||
- `pickListValues` (string, 필수): 피클리스트 필드의 값(줄바꿈으로 구분)
|
||||
- `visibleLines` (string, 필수): 멀티셀렉트/텍스트 영역 필드의 표시 줄 수
|
||||
- `description` (string, 선택): 필드 설명
|
||||
- `helperText` (string, 선택): 마우스를 올렸을 때 표시되는 도움말 텍스트
|
||||
- `defaultFieldValue` (string, 선택): 필드의 기본값
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_CREATE_CUSTOM_FIELD_OPPORTUNITY">
|
||||
**설명:** Opportunity 오브젝트에 대한 커스텀 필드를 배포합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `label` (string, 필수): 표시 및 내부 참조를 위한 필드 라벨
|
||||
- `type` (string, 필수): 필드 유형 - 옵션: Checkbox, Currency, Date, Email, Number, Percent, Phone, Picklist, MultiselectPicklist, Text, TextArea, LongTextArea, Html, Time, Url
|
||||
- `defaultCheckboxValue` (boolean, 선택): 체크박스 필드의 기본값
|
||||
- `length` (string, 필수): 숫자/텍스트 필드의 길이
|
||||
- `decimalPlace` (string, 필수): 숫자 필드의 소수 자릿수
|
||||
- `pickListValues` (string, 필수): 피클리스트 필드의 값(줄바꿈으로 구분)
|
||||
- `visibleLines` (string, 필수): 멀티셀렉트/텍스트 영역 필드의 표시 줄 수
|
||||
- `description` (string, 선택): 필드 설명
|
||||
- `helperText` (string, 선택): 마우스를 올렸을 때 표시되는 도움말 텍스트
|
||||
- `defaultFieldValue` (string, 선택): 필드의 기본값
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_CREATE_CUSTOM_FIELD_TASK">
|
||||
**설명:** Task 오브젝트에 대한 커스텀 필드를 배포합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `label` (string, 필수): 표시 및 내부 참조를 위한 필드 라벨
|
||||
- `type` (string, 필수): 필드 유형 - 옵션: Checkbox, Currency, Date, Email, Number, Percent, Phone, Picklist, MultiselectPicklist, Text, TextArea, Time, Url
|
||||
- `defaultCheckboxValue` (boolean, 선택): 체크박스 필드의 기본값
|
||||
- `length` (string, 필수): 숫자/텍스트 필드의 길이
|
||||
- `decimalPlace` (string, 필수): 숫자 필드의 소수 자릿수
|
||||
- `pickListValues` (string, 필수): 피클리스트 필드의 값(줄바꿈으로 구분)
|
||||
- `visibleLines` (string, 필수): 멀티셀렉트 필드의 표시 줄 수
|
||||
- `description` (string, 선택): 필드 설명
|
||||
- `helperText` (string, 선택): 마우스를 올렸을 때 표시되는 도움말 텍스트
|
||||
- `defaultFieldValue` (string, 선택): 필드의 기본값
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_CREATE_CUSTOM_FIELD_ACCOUNT">
|
||||
**설명:** Account 오브젝트에 대한 커스텀 필드를 배포합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `label` (string, 필수): 표시 및 내부 참조를 위한 필드 라벨
|
||||
- `type` (string, 필수): 필드 유형 - 옵션: Checkbox, Currency, Date, Email, Number, Percent, Phone, Picklist, MultiselectPicklist, Text, TextArea, LongTextArea, Html, Time, Url
|
||||
- `defaultCheckboxValue` (boolean, 선택): 체크박스 필드의 기본값
|
||||
- `length` (string, 필수): 숫자/텍스트 필드의 길이
|
||||
- `decimalPlace` (string, 필수): 숫자 필드의 소수 자릿수
|
||||
- `pickListValues` (string, 필수): 피클리스트 필드의 값(줄바꿈으로 구분)
|
||||
- `visibleLines` (string, 필수): 멀티셀렉트/텍스트 영역 필드의 표시 줄 수
|
||||
- `description` (string, 선택): 필드 설명
|
||||
- `helperText` (string, 선택): 마우스를 올렸을 때 표시되는 도움말 텍스트
|
||||
- `defaultFieldValue` (string, 선택): 필드의 기본값
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_CREATE_CUSTOM_FIELD_ANY">
|
||||
**설명:** 모든 오브젝트 타입에 대한 커스텀 필드를 배포합니다.
|
||||
|
||||
**참고:** 커스텀 또는 미지의 오브젝트 타입에 커스텀 필드를 생성할 수 있는 유연한 도구입니다.
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
### **고급 작업**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="SALESFORCE_WRITE_SOQL_QUERY">
|
||||
**설명:** Salesforce 데이터에 대해 커스텀 SOQL 쿼리를 실행합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `query` (string, 필수): SOQL 쿼리 (예: "SELECT Id, Name FROM Account WHERE Name = 'Example'")
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_CREATE_CUSTOM_OBJECT">
|
||||
**설명:** Salesforce에 새로운 커스텀 오브젝트를 배포합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `label` (string, 필수): 탭, 페이지 레이아웃, 리포트에 사용되는 오브젝트 라벨
|
||||
- `pluralLabel` (string, 필수): 복수형 라벨 (예: "Accounts")
|
||||
- `description` (string, 선택): 커스텀 오브젝트에 대한 설명
|
||||
- `recordName` (string, 필수): 레이아웃과 검색에 표시되는 레코드 이름 (예: "Account Name")
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_DESCRIBE_ACTION_SCHEMA">
|
||||
**설명:** 특정 오브젝트 타입에 대한 작업의 예상 스키마를 가져옵니다.
|
||||
|
||||
**파라미터:**
|
||||
- `recordType` (string, 필수): 설명할 레코드 타입
|
||||
- `operation` (string, 필수): 작업 타입 (예: "CREATE_RECORD" 또는 "UPDATE_RECORD")
|
||||
|
||||
**참고:** 커스텀 오브젝트 작업 시, 해당 스키마를 이해하기 위해 제일 먼저 이 기능을 사용하세요.
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
## 사용 예시
|
||||
|
||||
### 기본 Salesforce 에이전트 설정
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
# Get enterprise tools (Salesforce tools will be included)
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token"
|
||||
)
|
||||
|
||||
# Create an agent with Salesforce capabilities
|
||||
salesforce_agent = Agent(
|
||||
role="CRM Manager",
|
||||
goal="Manage customer relationships and sales processes efficiently",
|
||||
backstory="An AI assistant specialized in CRM operations and sales automation.",
|
||||
tools=[enterprise_tools]
|
||||
)
|
||||
|
||||
# Task to create a new lead
|
||||
create_lead_task = Task(
|
||||
description="Create a new lead for John Doe from Example Corp with email john.doe@example.com",
|
||||
agent=salesforce_agent,
|
||||
expected_output="Lead created successfully with lead ID"
|
||||
)
|
||||
|
||||
# Run the task
|
||||
crew = Crew(
|
||||
agents=[salesforce_agent],
|
||||
tasks=[create_lead_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### 특정 Salesforce 도구 필터링
|
||||
|
||||
```python
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
# Get only specific Salesforce tools
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token",
|
||||
actions_list=["salesforce_create_record_lead", "salesforce_update_record_opportunity", "salesforce_search_records_contact"]
|
||||
)
|
||||
|
||||
sales_manager = Agent(
|
||||
role="Sales Manager",
|
||||
goal="Manage leads and opportunities in the sales pipeline",
|
||||
backstory="An experienced sales manager who handles lead qualification and opportunity management.",
|
||||
tools=enterprise_tools
|
||||
)
|
||||
|
||||
# Task to manage sales pipeline
|
||||
pipeline_task = Task(
|
||||
description="Create a qualified lead and convert it to an opportunity with $50,000 value",
|
||||
agent=sales_manager,
|
||||
expected_output="Lead created and opportunity established successfully"
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[sales_manager],
|
||||
tasks=[pipeline_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### 연락처 및 계정 관리
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token"
|
||||
)
|
||||
|
||||
account_manager = Agent(
|
||||
role="Account Manager",
|
||||
goal="Manage customer accounts and maintain strong relationships",
|
||||
backstory="An AI assistant that specializes in account management and customer relationship building.",
|
||||
tools=[enterprise_tools]
|
||||
)
|
||||
|
||||
# Task to manage customer accounts
|
||||
account_task = Task(
|
||||
description="""
|
||||
1. Create a new account for TechCorp Inc.
|
||||
2. Add John Doe as the primary contact for this account
|
||||
3. Create a follow-up task for next week to check on their project status
|
||||
""",
|
||||
agent=account_manager,
|
||||
expected_output="Account, contact, and follow-up task created successfully"
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[account_manager],
|
||||
tasks=[account_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### 고급 SOQL 쿼리 및 리포팅
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token"
|
||||
)
|
||||
|
||||
data_analyst = Agent(
|
||||
role="Sales Data Analyst",
|
||||
goal="Generate insights from Salesforce data using SOQL queries",
|
||||
backstory="An analytical AI that excels at extracting meaningful insights from CRM data.",
|
||||
tools=[enterprise_tools]
|
||||
)
|
||||
|
||||
# Complex task involving SOQL queries and data analysis
|
||||
analysis_task = Task(
|
||||
description="""
|
||||
1. Execute a SOQL query to find all opportunities closing this quarter
|
||||
2. Search for contacts at companies with opportunities over $100K
|
||||
3. Create a summary report of the sales pipeline status
|
||||
4. Update high-value opportunities with next steps
|
||||
""",
|
||||
agent=data_analyst,
|
||||
expected_output="Comprehensive sales pipeline analysis with actionable insights"
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[data_analyst],
|
||||
tasks=[analysis_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
이 포괄적인 문서는 모든 Salesforce 도구를 기능별로 정리하여, 사용자가 CRM 자동화 작업에 필요한 특정 작업을 쉽게 찾을 수 있도록 도와줍니다.
|
||||
|
||||
### 도움 받기
|
||||
|
||||
<Card title="도움이 필요하신가요?" icon="headset" href="mailto:support@crewai.com">
|
||||
Salesforce 통합 설정 또는 문제 해결에 대해 지원팀에 문의하세요.
|
||||
</Card>
|
||||
382
docs/ko/enterprise/integrations/shopify.mdx
Normal file
382
docs/ko/enterprise/integrations/shopify.mdx
Normal file
@@ -0,0 +1,382 @@
|
||||
---
|
||||
title: Shopify 연동
|
||||
description: "CrewAI를 위한 Shopify 연동을 통한 전자상거래 및 온라인 스토어 관리."
|
||||
icon: "shopify"
|
||||
---
|
||||
|
||||
## 개요
|
||||
|
||||
에이전트가 Shopify를 통해 전자상거래 운영을 관리할 수 있게 하세요. 고객, 주문, 제품, 재고 및 스토어 분석을 처리하여 AI 기반 자동화를 통해 온라인 비즈니스를 간소화할 수 있습니다.
|
||||
|
||||
## 사전 요구 사항
|
||||
|
||||
Shopify 연동을 사용하기 전에 다음을 확인하세요:
|
||||
|
||||
- 활성 구독이 있는 [CrewAI Enterprise](https://app.crewai.com) 계정
|
||||
- 적절한 관리자 권한이 있는 Shopify 스토어
|
||||
- [통합 페이지](https://app.crewai.com/integrations)를 통해 Shopify 스토어 연결
|
||||
|
||||
## 사용 가능한 도구
|
||||
|
||||
### **고객 관리**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="SHOPIFY_GET_CUSTOMERS">
|
||||
**설명:** Shopify 스토어에서 고객 목록을 조회합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `customerIds` (string, 선택): 필터링할 고객 ID의 쉼표로 구분된 목록 (예: "207119551, 207119552")
|
||||
- `createdAtMin` (string, 선택): 이 날짜 이후에 생성된 고객만 반환 (ISO 또는 Unix 타임스탬프)
|
||||
- `createdAtMax` (string, 선택): 이 날짜 이전에 생성된 고객만 반환 (ISO 또는 Unix 타임스탬프)
|
||||
- `updatedAtMin` (string, 선택): 이 날짜 이후에 업데이트된 고객만 반환 (ISO 또는 Unix 타임스탬프)
|
||||
- `updatedAtMax` (string, 선택): 이 날짜 이전에 업데이트된 고객만 반환 (ISO 또는 Unix 타임스탬프)
|
||||
- `limit` (string, 선택): 반환할 최대 고객 수 (기본값 250)
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SHOPIFY_SEARCH_CUSTOMERS">
|
||||
**설명:** 고급 필터링 기준을 사용하여 고객을 검색합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `filterFormula` (object, 선택): 필드별 연산자가 포함된 불리언 합정규형의 고급 필터
|
||||
- `limit` (string, 선택): 반환할 최대 고객 수 (기본값 250)
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SHOPIFY_CREATE_CUSTOMER">
|
||||
**설명:** Shopify 스토어에 새로운 고객을 생성합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `firstName` (string, 필수): 고객의 이름
|
||||
- `lastName` (string, 필수): 고객의 성
|
||||
- `email` (string, 필수): 고객의 이메일 주소
|
||||
- `company` (string, 선택): 회사명
|
||||
- `streetAddressLine1` (string, 선택): 거리 주소
|
||||
- `streetAddressLine2` (string, 선택): 거리 주소 2
|
||||
- `city` (string, 선택): 도시
|
||||
- `state` (string, 선택): 주 또는 도 코드
|
||||
- `country` (string, 선택): 국가
|
||||
- `zipCode` (string, 선택): 우편번호
|
||||
- `phone` (string, 선택): 전화번호
|
||||
- `tags` (string, 선택): 배열 또는 쉼표로 구분된 태그 목록
|
||||
- `note` (string, 선택): 고객 메모
|
||||
- `sendEmailInvite` (boolean, 선택): 이메일 초대장 전송 여부
|
||||
- `metafields` (object, 선택): 추가 메타필드(JSON 형식)
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SHOPIFY_UPDATE_CUSTOMER">
|
||||
**설명:** Shopify 스토어에 기존 고객을 업데이트합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `customerId` (string, 필수): 업데이트할 고객의 ID
|
||||
- `firstName` (string, 선택): 고객의 이름
|
||||
- `lastName` (string, 선택): 고객의 성
|
||||
- `email` (string, 선택): 고객의 이메일 주소
|
||||
- `company` (string, 선택): 회사명
|
||||
- `streetAddressLine1` (string, 선택): 거리 주소
|
||||
- `streetAddressLine2` (string, 선택): 거리 주소 2
|
||||
- `city` (string, 선택): 도시
|
||||
- `state` (string, 선택): 주 또는 도 코드
|
||||
- `country` (string, 선택): 국가
|
||||
- `zipCode` (string, 선택): 우편번호
|
||||
- `phone` (string, 선택): 전화번호
|
||||
- `tags` (string, 선택): 배열 또는 쉼표로 구분된 태그 목록
|
||||
- `note` (string, 선택): 고객 메모
|
||||
- `sendEmailInvite` (boolean, 선택): 이메일 초대장 전송 여부
|
||||
- `metafields` (object, 선택): 추가 메타필드(JSON 형식)
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
### **주문 관리**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="SHOPIFY_GET_ORDERS">
|
||||
**설명:** Shopify 스토어에서 주문 목록을 조회합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `orderIds` (string, optional): 필터링할 주문 ID의 콤마로 구분된 목록 (예: "450789469, 450789470")
|
||||
- `createdAtMin` (string, optional): 이 날짜 이후에 생성된 주문만 반환 (ISO 또는 Unix 타임스탬프)
|
||||
- `createdAtMax` (string, optional): 이 날짜 이전에 생성된 주문만 반환 (ISO 또는 Unix 타임스탬프)
|
||||
- `updatedAtMin` (string, optional): 이 날짜 이후에 업데이트된 주문만 반환 (ISO 또는 Unix 타임스탬프)
|
||||
- `updatedAtMax` (string, optional): 이 날짜 이전에 업데이트된 주문만 반환 (ISO 또는 Unix 타임스탬프)
|
||||
- `limit` (string, optional): 반환할 주문의 최대 개수 (기본값: 250)
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SHOPIFY_CREATE_ORDER">
|
||||
**설명:** Shopify 스토어에 새 주문을 생성합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `email` (string, required): 고객 이메일 주소
|
||||
- `lineItems` (object, required): title, price, quantity, variant_id가 포함된 JSON 형식의 주문 아이템
|
||||
- `sendReceipt` (boolean, optional): 주문 영수증을 발송할지 여부
|
||||
- `fulfillmentStatus` (string, optional): 주문 이행 상태 - 옵션: fulfilled, null, partial, restocked
|
||||
- `financialStatus` (string, optional): 결제 상태 - 옵션: pending, authorized, partially_paid, paid, partially_refunded, refunded, voided
|
||||
- `inventoryBehaviour` (string, optional): 인벤토리 동작 - 옵션: bypass, decrement_ignoring_policy, decrement_obeying_policy
|
||||
- `note` (string, optional): 주문 메모
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SHOPIFY_UPDATE_ORDER">
|
||||
**설명:** Shopify 스토어에서 기존 주문을 업데이트합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `orderId` (string, required): 업데이트할 주문의 ID
|
||||
- `email` (string, optional): 고객 이메일 주소
|
||||
- `lineItems` (object, optional): JSON 형식의 업데이트된 주문 아이템
|
||||
- `sendReceipt` (boolean, optional): 주문 영수증을 발송할지 여부
|
||||
- `fulfillmentStatus` (string, optional): 주문 이행 상태 - 옵션: fulfilled, null, partial, restocked
|
||||
- `financialStatus` (string, optional): 결제 상태 - 옵션: pending, authorized, partially_paid, paid, partially_refunded, refunded, voided
|
||||
- `inventoryBehaviour` (string, optional): 인벤토리 동작 - 옵션: bypass, decrement_ignoring_policy, decrement_obeying_policy
|
||||
- `note` (string, optional): 주문 메모
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SHOPIFY_GET_ABANDONED_CARTS">
|
||||
**설명:** Shopify 스토어에서 방치된 장바구니를 조회합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `createdWithInLast` (string, optional): 지정된 기간 내에 생성된 체크아웃 결과만 제한
|
||||
- `createdAfterId` (string, optional): 지정된 ID 이후 결과로 제한
|
||||
- `status` (string, optional): 주어진 상태의 체크아웃만 표시 - 옵션: open, closed (기본값: open)
|
||||
- `createdAtMin` (string, optional): 이 날짜 이후에 생성된 장바구니만 반환 (ISO 또는 Unix 타임스탬프)
|
||||
- `createdAtMax` (string, optional): 이 날짜 이전에 생성된 장바구니만 반환 (ISO 또는 Unix 타임스탬프)
|
||||
- `limit` (string, optional): 반환할 장바구니의 최대 개수 (기본값: 250)
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
### **제품 관리 (REST API)**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="SHOPIFY_GET_PRODUCTS">
|
||||
**설명:** REST API를 사용하여 Shopify 스토어에서 제품 목록을 조회합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `productIds` (string, optional): 필터링할 제품 ID의 콤마(,)로 구분된 목록 (예: "632910392, 632910393")
|
||||
- `title` (string, optional): 제품 제목으로 필터링
|
||||
- `productType` (string, optional): 제품 유형으로 필터링
|
||||
- `vendor` (string, optional): 공급업체로 필터링
|
||||
- `status` (string, optional): 상태별 필터링 - 옵션: active, archived, draft
|
||||
- `createdAtMin` (string, optional): 해당 날짜(ISO 혹은 Unix 타임스탬프) 이후에 생성된 제품만 반환
|
||||
- `createdAtMax` (string, optional): 해당 날짜(ISO 혹은 Unix 타임스탬프) 이전에 생성된 제품만 반환
|
||||
- `updatedAtMin` (string, optional): 해당 날짜(ISO 혹은 Unix 타임스탬프) 이후에 수정된 제품만 반환
|
||||
- `updatedAtMax` (string, optional): 해당 날짜(ISO 혹은 Unix 타임스탬프) 이전에 수정된 제품만 반환
|
||||
- `limit` (string, optional): 반환할 최대 제품 수 (기본값: 250)
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SHOPIFY_CREATE_PRODUCT">
|
||||
**설명:** REST API를 사용하여 Shopify 스토어에 새로운 제품을 생성합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `title` (string, required): 제품 제목
|
||||
- `productType` (string, required): 제품 유형/카테고리
|
||||
- `vendor` (string, required): 제품 공급업체
|
||||
- `productDescription` (string, optional): 제품 설명 (일반 텍스트 또는 HTML 가능)
|
||||
- `tags` (string, optional): 배열 또는 콤마(,)로 구분된 태그 목록
|
||||
- `price` (string, optional): 제품 가격
|
||||
- `inventoryPolicy` (string, optional): 재고 정책 - 옵션: deny, continue
|
||||
- `imageUrl` (string, optional): 제품 이미지 URL
|
||||
- `isPublished` (boolean, optional): 제품 공개 여부
|
||||
- `publishToPointToSale` (boolean, optional): 포인트 오브 세일(Point of Sale)에 공개 여부
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SHOPIFY_UPDATE_PRODUCT">
|
||||
**설명:** REST API를 사용하여 Shopify 스토어의 기존 제품을 업데이트합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `productId` (string, required): 업데이트할 제품 ID
|
||||
- `title` (string, optional): 제품 제목
|
||||
- `productType` (string, optional): 제품 유형/카테고리
|
||||
- `vendor` (string, optional): 제품 공급업체
|
||||
- `productDescription` (string, optional): 제품 설명 (일반 텍스트 또는 HTML 가능)
|
||||
- `tags` (string, optional): 배열 또는 콤마(,)로 구분된 태그 목록
|
||||
- `price` (string, optional): 제품 가격
|
||||
- `inventoryPolicy` (string, optional): 재고 정책 - 옵션: deny, continue
|
||||
- `imageUrl` (string, optional): 제품 이미지 URL
|
||||
- `isPublished` (boolean, optional): 제품 공개 여부
|
||||
- `publishToPointToSale` (boolean, optional): 포인트 오브 세일(Point of Sale)에 공개 여부
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
### **제품 관리 (GraphQL)**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="SHOPIFY_GET_PRODUCTS_GRAPHQL">
|
||||
**설명:** 고급 GraphQL 필터링 기능을 사용하여 제품을 조회합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `productFilterFormula` (object, 선택): id, title, vendor, status, handle, tag, created_at, updated_at, published_at와 같은 필드를 지원하는 불리언 정규합형(DNF) 기반의 고급 필터
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SHOPIFY_CREATE_PRODUCT_GRAPHQL">
|
||||
**설명:** 미디어 지원이 강화된 GraphQL API를 사용하여 새 제품을 생성합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `title` (string, 필수): 제품 제목
|
||||
- `productType` (string, 필수): 제품 유형/카테고리
|
||||
- `vendor` (string, 필수): 제품 공급업체
|
||||
- `productDescription` (string, 선택): 제품 설명 (일반 텍스트 또는 HTML 허용)
|
||||
- `tags` (string, 선택): 배열 또는 쉼표로 구분된 리스트 형태의 제품 태그
|
||||
- `media` (object, 선택): 대체 텍스트, 콘텐츠 유형 및 소스 URL을 가진 미디어 객체
|
||||
- `additionalFields` (object, 선택): status, requiresSellingPlan, giftCard와 같은 추가 제품 필드
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SHOPIFY_UPDATE_PRODUCT_GRAPHQL">
|
||||
**설명:** 미디어 지원이 강화된 GraphQL API를 사용하여 기존 제품을 업데이트합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `productId` (string, 필수): 업데이트할 제품의 GraphQL ID (예: "gid://shopify/Product/913144112")
|
||||
- `title` (string, 선택): 제품 제목
|
||||
- `productType` (string, 선택): 제품 유형/카테고리
|
||||
- `vendor` (string, 선택): 제품 공급업체
|
||||
- `productDescription` (string, 선택): 제품 설명 (일반 텍스트 또는 HTML 허용)
|
||||
- `tags` (string, 선택): 배열 또는 쉼표로 구분된 리스트 형태의 제품 태그
|
||||
- `media` (object, 선택): 대체 텍스트, 콘텐츠 유형 및 소스 URL을 포함한 업데이트된 미디어 객체
|
||||
- `additionalFields` (object, 선택): status, requiresSellingPlan, giftCard와 같은 추가 제품 필드
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
## 사용 예시
|
||||
|
||||
### 기본 Shopify 에이전트 설정
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
# Get enterprise tools (Shopify tools will be included)
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token"
|
||||
)
|
||||
|
||||
# Create an agent with Shopify capabilities
|
||||
shopify_agent = Agent(
|
||||
role="E-commerce Manager",
|
||||
goal="Manage online store operations and customer relationships efficiently",
|
||||
backstory="An AI assistant specialized in e-commerce operations and online store management.",
|
||||
tools=[enterprise_tools]
|
||||
)
|
||||
|
||||
# Task to create a new customer
|
||||
create_customer_task = Task(
|
||||
description="Create a new VIP customer Jane Smith with email jane.smith@example.com and phone +1-555-0123",
|
||||
agent=shopify_agent,
|
||||
expected_output="Customer created successfully with customer ID"
|
||||
)
|
||||
|
||||
# Run the task
|
||||
crew = Crew(
|
||||
agents=[shopify_agent],
|
||||
tasks=[create_customer_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### 특정 Shopify 도구 필터링
|
||||
|
||||
```python
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
# Get only specific Shopify tools
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token",
|
||||
actions_list=["shopify_create_customer", "shopify_create_order", "shopify_get_products"]
|
||||
)
|
||||
|
||||
store_manager = Agent(
|
||||
role="Store Manager",
|
||||
goal="Manage customer orders and product catalog",
|
||||
backstory="An experienced store manager who handles customer relationships and inventory management.",
|
||||
tools=enterprise_tools
|
||||
)
|
||||
|
||||
# Task to manage store operations
|
||||
store_task = Task(
|
||||
description="Create a new customer and process their order for 2 Premium Coffee Mugs",
|
||||
agent=store_manager,
|
||||
expected_output="Customer created and order processed successfully"
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[store_manager],
|
||||
tasks=[store_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### GraphQL을 활용한 제품 관리
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token"
|
||||
)
|
||||
|
||||
product_manager = Agent(
|
||||
role="Product Manager",
|
||||
goal="Manage product catalog and inventory with advanced GraphQL capabilities",
|
||||
backstory="An AI assistant that specializes in product management and catalog optimization.",
|
||||
tools=[enterprise_tools]
|
||||
)
|
||||
|
||||
# Task to manage product catalog
|
||||
catalog_task = Task(
|
||||
description="""
|
||||
1. Coffee Co 공급업체의 신규 제품 "Premium Coffee Mug"을(를) 생성하세요.
|
||||
2. 고품질 제품 이미지와 설명을 추가하세요.
|
||||
3. 동일한 공급업체의 유사 제품을 검색하세요.
|
||||
4. 제품 태그와 가격 전략을 업데이트하세요.
|
||||
""",
|
||||
agent=product_manager,
|
||||
expected_output="Product created and catalog optimized successfully"
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[product_manager],
|
||||
tasks=[catalog_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### 주문 및 고객 분석
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token"
|
||||
)
|
||||
|
||||
analytics_agent = Agent(
|
||||
role="E-commerce Analyst",
|
||||
goal="Analyze customer behavior and order patterns to optimize store performance",
|
||||
backstory="An analytical AI that excels at extracting insights from e-commerce data.",
|
||||
tools=[enterprise_tools]
|
||||
)
|
||||
|
||||
# Complex task involving multiple operations
|
||||
analytics_task = Task(
|
||||
description="""
|
||||
1. 최근 고객 데이터 및 주문 내역 조회
|
||||
2. 최근 7일간의 장바구니 이탈 식별
|
||||
3. 상품 성과 및 재고 수준 분석
|
||||
4. 고객 유지를 위한 추천 사항 생성
|
||||
""",
|
||||
agent=analytics_agent,
|
||||
expected_output="실행 가능한 인사이트를 제공하는 종합 이커머스 분석 보고서"
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[analytics_agent],
|
||||
tasks=[analytics_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### 도움 받기
|
||||
|
||||
<Card title="도움이 필요하신가요?" icon="headset" href="mailto:support@crewai.com">
|
||||
Shopify 연동 설정 또는 문제 해결에 관한 지원이 필요하시면 고객 지원팀에 문의해 주세요.
|
||||
</Card>
|
||||
293
docs/ko/enterprise/integrations/slack.mdx
Normal file
293
docs/ko/enterprise/integrations/slack.mdx
Normal file
@@ -0,0 +1,293 @@
|
||||
---
|
||||
title: Slack 연동
|
||||
description: "CrewAI를 위한 Slack 연동으로 팀 커뮤니케이션 및 협업 지원."
|
||||
icon: "slack"
|
||||
---
|
||||
|
||||
## 개요
|
||||
|
||||
에이전트가 Slack을 통해 팀 커뮤니케이션을 관리할 수 있도록 지원합니다. 메시지를 보내고, 대화를 검색하며, 채널을 관리하고, AI 기반 자동화를 통해 팀 활동을 조율하여 협업 워크플로우를 효율적으로 최적화하세요.
|
||||
|
||||
## 사전 준비 사항
|
||||
|
||||
Slack 통합을 사용하기 전에 다음을 확인하십시오:
|
||||
|
||||
- 활성 구독이 있는 [CrewAI Enterprise](https://app.crewai.com) 계정
|
||||
- 적절한 권한이 있는 Slack 워크스페이스
|
||||
- [통합 페이지](https://app.crewai.com/integrations)를 통해 Slack 워크스페이스를 연결함
|
||||
|
||||
## 사용 가능한 도구
|
||||
|
||||
### **사용자 관리**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="SLACK_LIST_MEMBERS">
|
||||
**설명:** Slack 채널의 모든 멤버를 나열합니다.
|
||||
|
||||
**파라미터:**
|
||||
- 파라미터 없음 - 모든 채널 멤버를 조회합니다
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SLACK_GET_USER_BY_EMAIL">
|
||||
**설명:** 이메일 주소로 Slack 워크스페이스에서 사용자를 찾습니다.
|
||||
|
||||
**파라미터:**
|
||||
- `email` (string, 필수): 워크스페이스 내 사용자의 이메일 주소
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SLACK_GET_USERS_BY_NAME">
|
||||
**설명:** 이름 또는 표시 이름으로 사용자를 검색합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `name` (string, 필수): 검색할 사용자의 실제 이름
|
||||
- `displayName` (string, 필수): 검색할 사용자의 표시 이름
|
||||
- `paginationParameters` (object, 선택): 페이지네이션 설정
|
||||
- `pageCursor` (string, 선택): 페이지네이션을 위한 페이지 커서
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
### **채널 관리**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="SLACK_LIST_CHANNELS">
|
||||
**설명:** Slack 워크스페이스의 모든 채널을 나열합니다.
|
||||
|
||||
**파라미터:**
|
||||
- 파라미터가 필요하지 않습니다 - 접근 가능한 모든 채널을 조회합니다
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
### **메시징**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="SLACK_SEND_MESSAGE">
|
||||
**설명:** Slack 채널에 메시지를 전송합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `channel` (string, 필수): 채널 이름 또는 ID - Connect Portal Workflow Settings를 사용하여 사용자가 채널을 선택하도록 하거나, 채널 이름을 입력하여 새 채널을 생성할 수 있습니다.
|
||||
- `message` (string, 필수): 전송할 메시지 텍스트
|
||||
- `botName` (string, 필수): 이 메시지를 전송하는 봇의 이름
|
||||
- `botIcon` (string, 필수): 봇 아이콘 - 이미지 URL 또는 이모지(e.g., ":dog:") 모두 가능합니다.
|
||||
- `blocks` (object, 선택): 첨부파일 및 인터랙티브 요소 등이 포함된 풍부한 메시지 포맷팅을 위한 Slack Block Kit JSON
|
||||
- `authenticatedUser` (boolean, 선택): true이면 메시지가 애플리케이션이 아니라 인증된 Slack 사용자로부터 보낸 것처럼 표시됩니다(기본값은 false)
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SLACK_SEND_DIRECT_MESSAGE">
|
||||
**설명:** Slack에서 특정 사용자에게 다이렉트 메시지를 전송합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `memberId` (string, 필수): 수신자 사용자 ID - Connect Portal Workflow Settings를 사용하여 사용자가 워크스페이스 멤버를 선택하도록 합니다.
|
||||
- `message` (string, 필수): 전송할 메시지 텍스트
|
||||
- `botName` (string, 필수): 이 메시지를 전송하는 봇의 이름
|
||||
- `botIcon` (string, 필수): 봇 아이콘 - 이미지 URL 또는 이모지(e.g., ":dog:") 모두 가능합니다.
|
||||
- `blocks` (object, 선택): 첨부파일 및 인터랙티브 요소 등이 포함된 풍부한 메시지 포맷팅을 위한 Slack Block Kit JSON
|
||||
- `authenticatedUser` (boolean, 선택): true이면 메시지가 애플리케이션이 아니라 인증된 Slack 사용자로부터 보낸 것처럼 표시됩니다(기본값은 false)
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
### **검색 및 탐색**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="SLACK_SEARCH_MESSAGES">
|
||||
**설명:** Slack 워크스페이스 전체에서 메시지를 검색합니다.
|
||||
|
||||
**매개변수:**
|
||||
- `query` (string, 필수): 지정된 기준과 일치하는 메시지를 찾기 위해 Slack 검색 구문을 사용한 검색 쿼리
|
||||
|
||||
**검색 쿼리 예시:**
|
||||
- `"project update"` - "project update"가 포함된 메시지 검색
|
||||
- `from:@john in:#general` - #general 채널에서 John이 보낸 메시지 검색
|
||||
- `has:link after:2023-01-01` - 2023년 1월 1일 이후에 링크가 포함된 메시지 검색
|
||||
- `in:@channel before:yesterday` - 특정 채널에서 어제 이전에 작성된 메시지 검색
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
## Block Kit 통합
|
||||
|
||||
Slack의 Block Kit을 사용하면 풍부하고 상호작용이 가능한 메시지를 생성할 수 있습니다. 다음은 `blocks` 매개변수를 사용하는 방법에 대한 몇 가지 예시입니다:
|
||||
|
||||
### 첨부 파일이 있는 간단한 텍스트
|
||||
```json
|
||||
[
|
||||
{
|
||||
"text": "I am a test message",
|
||||
"attachments": [
|
||||
{
|
||||
"text": "And here's an attachment!"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
### 섹션을 활용한 리치 포매팅
|
||||
```json
|
||||
[
|
||||
{
|
||||
"type": "section",
|
||||
"text": {
|
||||
"type": "mrkdwn",
|
||||
"text": "*프로젝트 업데이트*\n상태: ✅ 완료"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "divider"
|
||||
},
|
||||
{
|
||||
"type": "section",
|
||||
"text": {
|
||||
"type": "plain_text",
|
||||
"text": "모든 작업이 성공적으로 완료되었습니다."
|
||||
}
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
## 사용 예시
|
||||
|
||||
### 기본 Slack 에이전트 설정
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
# Get enterprise tools (Slack tools will be included)
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token"
|
||||
)
|
||||
|
||||
# Create an agent with Slack capabilities
|
||||
slack_agent = Agent(
|
||||
role="Team Communication Manager",
|
||||
goal="Facilitate team communication and coordinate collaboration efficiently",
|
||||
backstory="An AI assistant specialized in team communication and workspace coordination.",
|
||||
tools=[enterprise_tools]
|
||||
)
|
||||
|
||||
# Task to send project updates
|
||||
update_task = Task(
|
||||
description="Send a project status update to the #general channel with current progress",
|
||||
agent=slack_agent,
|
||||
expected_output="Project update message sent successfully to team channel"
|
||||
)
|
||||
|
||||
# Run the task
|
||||
crew = Crew(
|
||||
agents=[slack_agent],
|
||||
tasks=[update_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### 특정 Slack 도구 필터링
|
||||
|
||||
```python
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
# Get only specific Slack tools
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token",
|
||||
actions_list=["slack_send_message", "slack_send_direct_message", "slack_search_messages"]
|
||||
)
|
||||
|
||||
communication_manager = Agent(
|
||||
role="Communication Coordinator",
|
||||
goal="Manage team communications and ensure important messages reach the right people",
|
||||
backstory="An experienced communication coordinator who handles team messaging and notifications.",
|
||||
tools=enterprise_tools
|
||||
)
|
||||
|
||||
# Task to coordinate team communication
|
||||
coordination_task = Task(
|
||||
description="Send task completion notifications to team members and update project channels",
|
||||
agent=communication_manager,
|
||||
expected_output="Team notifications sent and project channels updated successfully"
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[communication_manager],
|
||||
tasks=[coordination_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### Block Kit을 활용한 고급 메시징
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token"
|
||||
)
|
||||
|
||||
notification_agent = Agent(
|
||||
role="Notification Manager",
|
||||
goal="Create rich, interactive notifications and manage workspace communication",
|
||||
backstory="An AI assistant that specializes in creating engaging team notifications and updates.",
|
||||
tools=[enterprise_tools]
|
||||
)
|
||||
|
||||
# Task to send rich notifications
|
||||
notification_task = Task(
|
||||
description="""
|
||||
1. Send a formatted project completion message to #general with progress charts
|
||||
2. Send direct messages to team leads with task summaries
|
||||
3. Create interactive notification with action buttons for team feedback
|
||||
""",
|
||||
agent=notification_agent,
|
||||
expected_output="Rich notifications sent with interactive elements and formatted content"
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[notification_agent],
|
||||
tasks=[notification_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### 메시지 검색 및 분석
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token"
|
||||
)
|
||||
|
||||
analytics_agent = Agent(
|
||||
role="Communication Analyst",
|
||||
goal="Analyze team communication patterns and extract insights from conversations",
|
||||
backstory="An analytical AI that excels at understanding team dynamics through communication data.",
|
||||
tools=[enterprise_tools]
|
||||
)
|
||||
|
||||
# Complex task involving search and analysis
|
||||
analysis_task = Task(
|
||||
description="""
|
||||
1. 모든 채널에서 최근 프로젝트 관련 메시지 검색
|
||||
2. 이메일로 사용자를 찾아 팀 구성원 식별
|
||||
3. 커뮤니케이션 패턴 및 응답 시간 분석
|
||||
4. 주간 팀 커뮤니케이션 요약 생성
|
||||
""",
|
||||
agent=analytics_agent,
|
||||
expected_output="팀 인사이트 및 권장사항이 포함된 종합적인 커뮤니케이션 분석"
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[analytics_agent],
|
||||
tasks=[analysis_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
## 지원 문의
|
||||
|
||||
<Card title="도움이 필요하신가요?" icon="headset" href="mailto:support@crewai.com">
|
||||
Slack 연동 설정 또는 문제 해결에 대해 지원팀에 문의하세요.
|
||||
</Card>
|
||||
305
docs/ko/enterprise/integrations/stripe.mdx
Normal file
305
docs/ko/enterprise/integrations/stripe.mdx
Normal file
@@ -0,0 +1,305 @@
|
||||
---
|
||||
title: Stripe 연동
|
||||
description: "CrewAI를 위한 Stripe 연동을 통한 결제 처리 및 구독 관리."
|
||||
icon: "stripe"
|
||||
---
|
||||
|
||||
## 개요
|
||||
|
||||
에이전트가 Stripe를 통해 결제, 구독 및 고객 청구 관리를 할 수 있도록 지원합니다. 고객 데이터 처리, 구독 관리, 상품 관리, 재무 거래 추적 등을 통해 AI 기반 자동화로 결제 워크플로를 효율화하세요.
|
||||
|
||||
## 사전 준비 사항
|
||||
|
||||
Stripe 통합을 사용하기 전에 다음 사항을 확인하세요:
|
||||
|
||||
- 활성 구독이 있는 [CrewAI Enterprise](https://app.crewai.com) 계정
|
||||
- 적절한 API 권한이 있는 Stripe 계정
|
||||
- [통합 페이지](https://app.crewai.com/integrations)를 통해 Stripe 계정 연결
|
||||
|
||||
## 사용 가능한 도구
|
||||
|
||||
### **고객 관리**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="STRIPE_CREATE_CUSTOMER">
|
||||
**설명:** Stripe 계정에 새로운 고객을 생성합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `emailCreateCustomer` (string, 필수): 고객의 이메일 주소
|
||||
- `name` (string, 선택): 고객의 전체 이름
|
||||
- `description` (string, 선택): 내부 참조용 고객 설명
|
||||
- `metadataCreateCustomer` (object, 선택): 추가 메타데이터를 key-value 쌍으로 입력 (예: `{"field1": 1, "field2": 2}`)
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="STRIPE_GET_CUSTOMER_BY_ID">
|
||||
**설명:** Stripe 고객 ID로 특정 고객을 조회합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `idGetCustomer` (string, 필수): 조회할 Stripe 고객 ID
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="STRIPE_GET_CUSTOMERS">
|
||||
**설명:** 필터링 옵션과 함께 고객 리스트를 조회합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `emailGetCustomers` (string, 선택): 이메일 주소로 고객 필터링
|
||||
- `createdAfter` (string, 선택): 이 날짜 이후 생성된 고객 필터링 (유닉스 타임스탬프)
|
||||
- `createdBefore` (string, 선택): 이 날짜 이전 생성된 고객 필터링 (유닉스 타임스탬프)
|
||||
- `limitGetCustomers` (string, 선택): 반환할 최대 고객 수 (기본값 10)
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="STRIPE_UPDATE_CUSTOMER">
|
||||
**설명:** 기존 고객의 정보를 업데이트합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `customerId` (string, 필수): 업데이트할 고객의 ID
|
||||
- `emailUpdateCustomer` (string, 선택): 업데이트할 이메일 주소
|
||||
- `name` (string, 선택): 업데이트할 고객 이름
|
||||
- `description` (string, 선택): 업데이트할 고객 설명
|
||||
- `metadataUpdateCustomer` (object, 선택): 업데이트할 메타데이터를 key-value 쌍으로 입력
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
### **구독 관리**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="STRIPE_CREATE_SUBSCRIPTION">
|
||||
**설명:** 고객을 위한 새로운 구독을 생성합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `customerIdCreateSubscription` (string, 필수): 구독이 생성될 고객 ID
|
||||
- `plan` (string, 필수): 구독을 위한 플랜 ID - 사용자가 플랜을 선택할 수 있도록 Connect Portal Workflow Settings를 사용하세요
|
||||
- `metadataCreateSubscription` (object, 선택): 구독에 대한 추가 메타데이터
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="STRIPE_GET_SUBSCRIPTIONS">
|
||||
**설명:** 선택적 필터링으로 구독을 조회합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `customerIdGetSubscriptions` (string, 선택): 고객 ID로 구독을 필터링
|
||||
- `subscriptionStatus` (string, 선택): 구독 상태별 필터링 - 옵션: incomplete, incomplete_expired, trialing, active, past_due, canceled, unpaid
|
||||
- `limitGetSubscriptions` (string, 선택): 반환할 구독의 최대 개수(기본값은 10)
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
### **제품 관리**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="STRIPE_CREATE_PRODUCT">
|
||||
**설명:** Stripe 카탈로그에 새 제품을 생성합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `productName` (string, 필수): 제품 이름
|
||||
- `description` (string, 선택): 제품 설명
|
||||
- `metadataProduct` (object, 선택): 키-값 쌍으로 구성된 추가 제품 메타데이터
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="STRIPE_GET_PRODUCT_BY_ID">
|
||||
**설명:** Stripe 제품 ID로 특정 제품을 조회합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `productId` (string, 필수): 조회할 Stripe 제품 ID
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="STRIPE_GET_PRODUCTS">
|
||||
**설명:** 선택적 필터링을 통해 제품 목록을 조회합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `createdAfter` (string, 선택): 이 날짜 이후 생성된 제품만 필터링 (Unix 타임스탬프)
|
||||
- `createdBefore` (string, 선택): 이 날짜 이전 생성된 제품만 필터링 (Unix 타임스탬프)
|
||||
- `limitGetProducts` (string, 선택): 반환할 최대 제품 수 (기본값 10)
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
### **금융 운영**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="STRIPE_GET_BALANCE_TRANSACTIONS">
|
||||
**설명:** Stripe 계정에서 잔액 거래를 조회합니다.
|
||||
|
||||
**매개변수:**
|
||||
- `balanceTransactionType` (string, 선택 사항): 거래 유형별 필터 - 옵션: charge, refund, payment, payment_refund
|
||||
- `paginationParameters` (object, 선택 사항): 페이지네이션 설정
|
||||
- `pageCursor` (string, 선택 사항): 페이지네이션을 위한 페이지 커서
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="STRIPE_GET_PLANS">
|
||||
**설명:** Stripe 계정에서 구독 플랜을 조회합니다.
|
||||
|
||||
**매개변수:**
|
||||
- `isPlanActive` (boolean, 선택 사항): 플랜 상태별 필터 - true는 활성 플랜, false는 비활성 플랜
|
||||
- `paginationParameters` (object, 선택 사항): 페이지네이션 설정
|
||||
- `pageCursor` (string, 선택 사항): 페이지네이션을 위한 페이지 커서
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
## 사용 예시
|
||||
|
||||
### 기본 Stripe 에이전트 설정
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
# Get enterprise tools (Stripe tools will be included)
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token"
|
||||
)
|
||||
|
||||
# Create an agent with Stripe capabilities
|
||||
stripe_agent = Agent(
|
||||
role="Payment Manager",
|
||||
goal="Manage customer payments, subscriptions, and billing operations efficiently",
|
||||
backstory="An AI assistant specialized in payment processing and subscription management.",
|
||||
tools=[enterprise_tools]
|
||||
)
|
||||
|
||||
# Task to create a new customer
|
||||
create_customer_task = Task(
|
||||
description="Create a new premium customer John Doe with email john.doe@example.com",
|
||||
agent=stripe_agent,
|
||||
expected_output="Customer created successfully with customer ID"
|
||||
)
|
||||
|
||||
# Run the task
|
||||
crew = Crew(
|
||||
agents=[stripe_agent],
|
||||
tasks=[create_customer_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### 특정 Stripe 도구 필터링
|
||||
|
||||
```python
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
# Get only specific Stripe tools
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token",
|
||||
actions_list=["stripe_create_customer", "stripe_create_subscription", "stripe_get_balance_transactions"]
|
||||
)
|
||||
|
||||
billing_manager = Agent(
|
||||
role="Billing Manager",
|
||||
goal="Handle customer billing, subscriptions, and payment processing",
|
||||
backstory="An experienced billing manager who handles subscription lifecycle and payment operations.",
|
||||
tools=enterprise_tools
|
||||
)
|
||||
|
||||
# Task to manage billing operations
|
||||
billing_task = Task(
|
||||
description="Create a new customer and set up their premium subscription plan",
|
||||
agent=billing_manager,
|
||||
expected_output="Customer created and subscription activated successfully"
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[billing_manager],
|
||||
tasks=[billing_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### 구독 관리
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token"
|
||||
)
|
||||
|
||||
subscription_manager = Agent(
|
||||
role="Subscription Manager",
|
||||
goal="Manage customer subscriptions and optimize recurring revenue",
|
||||
backstory="An AI assistant that specializes in subscription lifecycle management and customer retention.",
|
||||
tools=[enterprise_tools]
|
||||
)
|
||||
|
||||
# Task to manage subscription operations
|
||||
subscription_task = Task(
|
||||
description="""
|
||||
1. 고급 기능이 포함된 새로운 제품 "Premium Service Plan" 생성
|
||||
2. 다양한 등급의 구독 플랜 설정
|
||||
3. 고객을 생성하고 적절한 플랜에 할당
|
||||
4. 구독 상태를 모니터링하고 결제 문제 처리
|
||||
""",
|
||||
agent=subscription_manager,
|
||||
expected_output="고객과 활성 플랜이 구성된 구독 관리 시스템"
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[subscription_manager],
|
||||
tasks=[subscription_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### 금융 분석 및 보고
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token"
|
||||
)
|
||||
|
||||
financial_analyst = Agent(
|
||||
role="Financial Analyst",
|
||||
goal="Analyze payment data and generate financial insights",
|
||||
backstory="An analytical AI that excels at extracting insights from payment and subscription data.",
|
||||
tools=[enterprise_tools]
|
||||
)
|
||||
|
||||
# Complex task involving financial analysis
|
||||
analytics_task = Task(
|
||||
description="""
|
||||
1. Retrieve balance transactions for the current month
|
||||
2. Analyze customer payment patterns and subscription trends
|
||||
3. Identify high-value customers and subscription performance
|
||||
4. Generate monthly financial performance report
|
||||
""",
|
||||
agent=financial_analyst,
|
||||
expected_output="Comprehensive financial analysis with payment insights and recommendations"
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[financial_analyst],
|
||||
tasks=[analytics_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
## 구독 상태 참조
|
||||
|
||||
구독 상태 이해하기:
|
||||
|
||||
- **incomplete** - 결제 수단 또는 결제 확인이 필요한 구독
|
||||
- **incomplete_expired** - 결제가 확인되기 전에 만료된 구독
|
||||
- **trialing** - 체험 기간 중인 구독
|
||||
- **active** - 활성화되어 현재 사용 중인 구독
|
||||
- **past_due** - 결제에 실패했지만 여전히 활성화된 구독
|
||||
- **canceled** - 취소된 구독
|
||||
- **unpaid** - 결제에 실패하여 더 이상 활성화되지 않은 구독
|
||||
|
||||
## 메타데이터 사용
|
||||
|
||||
메타데이터를 사용하면 고객, 구독, 제품에 대한 추가 정보를 저장할 수 있습니다:
|
||||
|
||||
```json
|
||||
{
|
||||
"customer_segment": "enterprise",
|
||||
"acquisition_source": "google_ads",
|
||||
"lifetime_value": "high",
|
||||
"custom_field_1": "value1"
|
||||
}
|
||||
```
|
||||
|
||||
이 통합을 통해 결제 및 구독 관리 자동화를 포괄적으로 구현할 수 있으며, AI 에이전트가 Stripe 생태계 내에서 청구 작업을 원활하게 처리할 수 있습니다.
|
||||
343
docs/ko/enterprise/integrations/zendesk.mdx
Normal file
343
docs/ko/enterprise/integrations/zendesk.mdx
Normal file
@@ -0,0 +1,343 @@
|
||||
---
|
||||
title: Zendesk 통합
|
||||
description: "CrewAI를 위한 Zendesk 통합으로 고객 지원 및 헬프데스크 관리."
|
||||
icon: "headset"
|
||||
---
|
||||
|
||||
## 개요
|
||||
|
||||
에이전트가 Zendesk를 통해 고객 지원 운영을 관리할 수 있도록 지원합니다. 티켓 생성 및 업데이트, 사용자 관리, 지원 지표 추적, 그리고 AI 기반 자동화를 통해 고객 서비스 워크플로우를 간소화할 수 있습니다.
|
||||
|
||||
## 사전 준비 사항
|
||||
|
||||
Zendesk 통합을 사용하기 전에 다음을 확인하세요.
|
||||
|
||||
- 활성 구독이 있는 [CrewAI Enterprise](https://app.crewai.com) 계정
|
||||
- 적절한 API 권한이 있는 Zendesk 계정
|
||||
- [통합 페이지](https://app.crewai.com/integrations)를 통해 Zendesk 계정 연결
|
||||
|
||||
## 사용 가능한 도구
|
||||
|
||||
### **티켓 관리**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="ZENDESK_CREATE_TICKET">
|
||||
**설명:** Zendesk에 새로운 지원 티켓을 생성합니다.
|
||||
|
||||
**매개변수:**
|
||||
- `ticketSubject` (string, 필수): 티켓 제목 줄 (예: "도와주세요, 프린터에 불이 났어요!")
|
||||
- `ticketDescription` (string, 필수): 티켓에 표시될 첫 번째 댓글 (예: "연기가 정말 화려하네요.")
|
||||
- `requesterName` (string, 필수): 지원 요청자의 이름 (예: "Jane Customer")
|
||||
- `requesterEmail` (string, 필수): 지원 요청자의 이메일 (예: "jane@example.com")
|
||||
- `assigneeId` (string, 선택): 이 티켓에 할당된 Zendesk 에이전트 ID - 사용자가 담당자를 선택할 수 있도록 Connect Portal Workflow Settings 를 사용하세요
|
||||
- `ticketType` (string, 선택): 티켓 유형 - 옵션: problem, incident, question, task
|
||||
- `ticketPriority` (string, 선택): 우선순위 수준 - 옵션: urgent, high, normal, low
|
||||
- `ticketStatus` (string, 선택): 티켓 상태 - 옵션: new, open, pending, hold, solved, closed
|
||||
- `ticketDueAt` (string, 선택): task 유형 티켓의 마감일 (ISO 8601 타임스탬프)
|
||||
- `ticketTags` (string, 선택): 적용할 태그 배열 (예: `["enterprise", "other_tag"]`)
|
||||
- `ticketExternalId` (string, 선택): 티켓을 로컬 레코드와 연결할 외부 ID
|
||||
- `ticketCustomFields` (object, 선택): JSON 형식의 사용자 정의 필드 값
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="ZENDESK_UPDATE_TICKET">
|
||||
**설명:** Zendesk의 기존 지원 티켓을 업데이트합니다.
|
||||
|
||||
**매개변수:**
|
||||
- `ticketId` (string, 필수): 업데이트할 티켓의 ID (예: "35436")
|
||||
- `ticketSubject` (string, 선택): 업데이트된 티켓 제목
|
||||
- `requesterName` (string, 필수): 이 티켓을 요청한 사용자의 이름
|
||||
- `requesterEmail` (string, 필수): 이 티켓을 요청한 사용자의 이메일
|
||||
- `assigneeId` (string, 선택): 업데이트된 담당자 ID - Connect Portal Workflow Settings 를 사용하세요
|
||||
- `ticketType` (string, 선택): 업데이트된 티켓 유형 - 옵션: problem, incident, question, task
|
||||
- `ticketPriority` (string, 선택): 업데이트된 우선순위 - 옵션: urgent, high, normal, low
|
||||
- `ticketStatus` (string, 선택): 업데이트된 상태 - 옵션: new, open, pending, hold, solved, closed
|
||||
- `ticketDueAt` (string, 선택): 업데이트된 마감일 (ISO 8601 타임스탬프)
|
||||
- `ticketTags` (string, 선택): 업데이트된 태그 배열
|
||||
- `ticketExternalId` (string, 선택): 업데이트된 외부 ID
|
||||
- `ticketCustomFields` (object, 선택): 업데이트된 사용자 정의 필드 값
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="ZENDESK_GET_TICKET_BY_ID">
|
||||
**설명:** ID로 특정 티켓을 조회합니다.
|
||||
|
||||
**매개변수:**
|
||||
- `ticketId` (string, 필수): 조회할 티켓의 ID (예: "35436")
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="ZENDESK_ADD_COMMENT_TO_TICKET">
|
||||
**설명:** 기존 티켓에 댓글이나 내부 노트를 추가합니다.
|
||||
|
||||
**매개변수:**
|
||||
- `ticketId` (string, 필수): 댓글을 추가할 티켓의 ID (예: "35436")
|
||||
- `commentBody` (string, 필수): 댓글 메시지 (일반 텍스트 또는 HTML 지원, 예: "도움을 주셔서 감사합니다!")
|
||||
- `isInternalNote` (boolean, 선택): 공개 답글 대신 내부 노트로 설정하려면 true (기본값: false)
|
||||
- `isPublic` (boolean, 선택): 공개 댓글이면 true, 내부 노트이면 false
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="ZENDESK_SEARCH_TICKETS">
|
||||
**설명:** 다양한 필터 및 조건을 사용하여 티켓을 검색합니다.
|
||||
|
||||
**매개변수:**
|
||||
- `ticketSubject` (string, 선택): 티켓 제목 내 텍스트로 필터링
|
||||
- `ticketDescription` (string, 선택): 티켓 설명 및 댓글 내 텍스트로 필터링
|
||||
- `ticketStatus` (string, 선택): 상태로 필터링 - 옵션: new, open, pending, hold, solved, closed
|
||||
- `ticketType` (string, 선택): 유형으로 필터링 - 옵션: problem, incident, question, task, no_type
|
||||
- `ticketPriority` (string, 선택): 우선순위로 필터링 - 옵션: urgent, high, normal, low, no_priority
|
||||
- `requesterId` (string, 선택): 요청자 사용자 ID로 필터링
|
||||
- `assigneeId` (string, 선택): 담당 에이전트 ID로 필터링
|
||||
- `recipientEmail` (string, 선택): 원래 수신자 이메일 주소로 필터링
|
||||
- `ticketTags` (string, 선택): 티켓 태그로 필터링
|
||||
- `ticketExternalId` (string, 선택): 외부 ID로 필터링
|
||||
- `createdDate` (object, 선택): 생성일로 필터링 (연산자: EQUALS, LESS_THAN_EQUALS, GREATER_THAN_EQUALS, 값)
|
||||
- `updatedDate` (object, 선택): 업데이트 날짜로 필터링 (연산자와 값)
|
||||
- `dueDate` (object, 선택): 마감일로 필터링 (연산자와 값)
|
||||
- `sort_by` (string, 선택): 정렬 필드 - 옵션: created_at, updated_at, priority, status, ticket_type
|
||||
- `sort_order` (string, 선택): 정렬 방향 - 옵션: asc, desc
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
### **사용자 관리**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="ZENDESK_CREATE_USER">
|
||||
**설명:** Zendesk에서 새로운 사용자를 생성합니다.
|
||||
|
||||
**매개변수:**
|
||||
- `name` (string, 필수): 사용자의 전체 이름
|
||||
- `email` (string, 선택): 사용자의 이메일 주소 (예: "jane@example.com")
|
||||
- `phone` (string, 선택): 사용자의 전화번호
|
||||
- `role` (string, 선택): 사용자 역할 - 옵션: admin, agent, end-user
|
||||
- `externalId` (string, 선택): 다른 시스템의 고유 식별자
|
||||
- `details` (string, 선택): 추가 사용자 정보
|
||||
- `notes` (string, 선택): 사용자에 대한 내부 메모
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="ZENDESK_UPDATE_USER">
|
||||
**설명:** 기존 사용자의 정보를 업데이트합니다.
|
||||
|
||||
**매개변수:**
|
||||
- `userId` (string, 필수): 업데이트할 사용자의 ID
|
||||
- `name` (string, 선택): 업데이트할 사용자 이름
|
||||
- `email` (string, 선택): 업데이트할 이메일 (업데이트 시 보조 이메일로 추가됨)
|
||||
- `phone` (string, 선택): 업데이트할 전화번호
|
||||
- `role` (string, 선택): 업데이트할 역할 - 옵션: admin, agent, end-user
|
||||
- `externalId` (string, 선택): 업데이트된 외부 ID
|
||||
- `details` (string, 선택): 업데이트된 사용자 상세 정보
|
||||
- `notes` (string, 선택): 업데이트된 내부 메모
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="ZENDESK_GET_USER_BY_ID">
|
||||
**설명:** ID로 특정 사용자를 조회합니다.
|
||||
|
||||
**매개변수:**
|
||||
- `userId` (string, 필수): 조회할 사용자 ID
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="ZENDESK_SEARCH_USERS">
|
||||
**설명:** 다양한 기준으로 사용자를 검색합니다.
|
||||
|
||||
**매개변수:**
|
||||
- `name` (string, 선택): 사용자 이름으로 필터링
|
||||
- `email` (string, 선택): 사용자 이메일로 필터링 (예: "jane@example.com")
|
||||
- `role` (string, 선택): 역할로 필터링 - 옵션: admin, agent, end-user
|
||||
- `externalId` (string, 선택): 외부 ID로 필터링
|
||||
- `sort_by` (string, 선택): 정렬 필드 - 옵션: created_at, updated_at
|
||||
- `sort_order` (string, 선택): 정렬 방향 - 옵션: asc, desc
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
### **관리 도구**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="ZENDESK_GET_TICKET_FIELDS">
|
||||
**설명:** 티켓에 사용할 수 있는 모든 표준 및 맞춤 필드를 검색합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `paginationParameters` (object, 선택 사항): 페이지네이션 설정
|
||||
- `pageCursor` (string, 선택 사항): 페이지네이션을 위한 페이지 커서
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="ZENDESK_GET_TICKET_AUDITS">
|
||||
**설명:** 티켓의 감사 기록(읽기 전용 이력)을 가져옵니다.
|
||||
|
||||
**파라미터:**
|
||||
- `ticketId` (string, 선택 사항): 특정 티켓의 감사를 조회합니다(비워두면 모든 비보관된 티켓의 감사를 조회, 예: "1234")
|
||||
- `paginationParameters` (object, 선택 사항): 페이지네이션 설정
|
||||
- `pageCursor` (string, 선택 사항): 페이지네이션을 위한 페이지 커서
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
## 커스텀 필드
|
||||
|
||||
커스텀 필드를 사용하면 조직에 특화된 추가 정보를 저장할 수 있습니다:
|
||||
|
||||
```json
|
||||
[
|
||||
{ "id": 27642, "value": "745" },
|
||||
{ "id": 27648, "value": "yes" }
|
||||
]
|
||||
```
|
||||
|
||||
## 티켓 우선순위 레벨
|
||||
|
||||
우선순위 레벨 이해하기:
|
||||
|
||||
- **긴급** - 즉각적인 조치가 필요한 치명적 이슈
|
||||
- **높음** - 신속하게 해결해야 하는 중요한 이슈
|
||||
- **보통** - 대부분의 티켓에 해당하는 표준 우선순위
|
||||
- **낮음** - 여유가 있을 때 처리해도 되는 사소한 이슈
|
||||
|
||||
## 티켓 상태 워크플로우
|
||||
|
||||
표준 티켓 상태 진행:
|
||||
|
||||
- **new** - 최근에 생성됨, 아직 할당되지 않음
|
||||
- **open** - 현재 작업 중
|
||||
- **pending** - 고객 응답 또는 외부 조치 대기 중
|
||||
- **hold** - 일시 중지됨
|
||||
- **solved** - 문제가 해결되어 고객 확인 대기 중
|
||||
- **closed** - 티켓이 완료되어 종료됨
|
||||
|
||||
## 사용 예시
|
||||
|
||||
### 기본 Zendesk 에이전트 설정
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
# Get enterprise tools (Zendesk tools will be included)
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token"
|
||||
)
|
||||
|
||||
# Create an agent with Zendesk capabilities
|
||||
zendesk_agent = Agent(
|
||||
role="Support Manager",
|
||||
goal="Manage customer support tickets and provide excellent customer service",
|
||||
backstory="An AI assistant specialized in customer support operations and ticket management.",
|
||||
tools=[enterprise_tools]
|
||||
)
|
||||
|
||||
# Task to create a new support ticket
|
||||
create_ticket_task = Task(
|
||||
description="Create a high-priority support ticket for John Smith who is unable to access his account after password reset",
|
||||
agent=zendesk_agent,
|
||||
expected_output="Support ticket created successfully with ticket ID"
|
||||
)
|
||||
|
||||
# Run the task
|
||||
crew = Crew(
|
||||
agents=[zendesk_agent],
|
||||
tasks=[create_ticket_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### 특정 Zendesk 도구 필터링
|
||||
|
||||
```python
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
# Get only specific Zendesk tools
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token",
|
||||
actions_list=["zendesk_create_ticket", "zendesk_update_ticket", "zendesk_add_comment_to_ticket"]
|
||||
)
|
||||
|
||||
support_agent = Agent(
|
||||
role="Customer Support Agent",
|
||||
goal="Handle customer inquiries and resolve support issues efficiently",
|
||||
backstory="An experienced support agent who specializes in ticket resolution and customer communication.",
|
||||
tools=enterprise_tools
|
||||
)
|
||||
|
||||
# Task to manage support workflow
|
||||
support_task = Task(
|
||||
description="Create a ticket for login issues, add troubleshooting comments, and update status to resolved",
|
||||
agent=support_agent,
|
||||
expected_output="Support ticket managed through complete resolution workflow"
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[support_agent],
|
||||
tasks=[support_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### 고급 티켓 관리
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token"
|
||||
)
|
||||
|
||||
ticket_manager = Agent(
|
||||
role="Ticket Manager",
|
||||
goal="Manage support ticket workflows and ensure timely resolution",
|
||||
backstory="An AI assistant that specializes in support ticket triage and workflow optimization.",
|
||||
tools=[enterprise_tools]
|
||||
)
|
||||
|
||||
# Task to manage ticket lifecycle
|
||||
ticket_workflow = Task(
|
||||
description="""
|
||||
1. 계정 접근 문제에 대한 새로운 지원 티켓을 생성합니다.
|
||||
2. 문제 해결 단계를 내부 노트에 추가합니다.
|
||||
3. 고객 등급에 따라 티켓 우선순위를 업데이트합니다.
|
||||
4. 해결 코멘트를 추가하고 티켓을 종료합니다.
|
||||
""",
|
||||
agent=ticket_manager,
|
||||
expected_output="티켓 생성부터 해결까지 전체 생명주기 관리"
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[ticket_manager],
|
||||
tasks=[ticket_workflow]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### 지원 분석 및 보고
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token"
|
||||
)
|
||||
|
||||
support_analyst = Agent(
|
||||
role="Support Analyst",
|
||||
goal="Analyze support metrics and generate insights for team performance",
|
||||
backstory="An analytical AI that excels at extracting insights from support data and ticket patterns.",
|
||||
tools=[enterprise_tools]
|
||||
)
|
||||
|
||||
# Complex task involving analytics and reporting
|
||||
analytics_task = Task(
|
||||
description="""
|
||||
1. Search for all open tickets from the last 30 days
|
||||
2. Analyze ticket resolution times and customer satisfaction
|
||||
3. Identify common issues and support patterns
|
||||
4. Generate weekly support performance report
|
||||
""",
|
||||
agent=support_analyst,
|
||||
expected_output="Comprehensive support analytics report with performance insights and recommendations"
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[support_analyst],
|
||||
tasks=[analytics_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
Reference in New Issue
Block a user