mirror of
https://github.com/crewAIInc/crewAI.git
synced 2025-12-16 20:38:29 +00:00
Compare commits
43 Commits
fix/unsafe
...
1.0.0a4
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0648e88f22 | ||
|
|
abe1f40bc2 | ||
|
|
06f7d224c0 | ||
|
|
faddcd0de7 | ||
|
|
2f4fdf9a90 | ||
|
|
28a8a7e6fa | ||
|
|
51e8fb1f90 | ||
|
|
f094df6015 | ||
|
|
458f56fb33 | ||
|
|
11f6b34aa3 | ||
|
|
47b6baee01 | ||
|
|
f9992d8d7a | ||
|
|
79d4e42e62 | ||
|
|
8b9186311f | ||
|
|
29a0ac483f | ||
|
|
38bc5a9dc4 | ||
|
|
0b305dabc9 | ||
|
|
ebeed0b752 | ||
|
|
2a0018a99b | ||
|
|
5865d39137 | ||
|
|
e529ebff2b | ||
|
|
126b91eab3 | ||
|
|
428810bd6f | ||
|
|
610bc4b3f5 | ||
|
|
e73c5887d9 | ||
|
|
c5ac5fa78a | ||
|
|
5456c80556 | ||
|
|
df754dbcc8 | ||
|
|
e8356b777c | ||
|
|
ade425a543 | ||
|
|
d7f6f07a5d | ||
|
|
9e1dae0746 | ||
|
|
b5161c320d | ||
|
|
c793c829ea | ||
|
|
0fe9352149 | ||
|
|
548170e989 | ||
|
|
417a4e3d91 | ||
|
|
68dce92003 | ||
|
|
289b90f00a | ||
|
|
c591c1ac87 | ||
|
|
86f0dfc2d7 | ||
|
|
74b5c88834 | ||
|
|
13e5ec711d |
4
.github/workflows/codeql.yml
vendored
4
.github/workflows/codeql.yml
vendored
@@ -15,11 +15,11 @@ on:
|
||||
push:
|
||||
branches: [ "main" ]
|
||||
paths-ignore:
|
||||
- "src/crewai/cli/templates/**"
|
||||
- "lib/crewai/src/crewai/cli/templates/**"
|
||||
pull_request:
|
||||
branches: [ "main" ]
|
||||
paths-ignore:
|
||||
- "src/crewai/cli/templates/**"
|
||||
- "lib/crewai/src/crewai/cli/templates/**"
|
||||
|
||||
jobs:
|
||||
analyze:
|
||||
|
||||
9
.github/workflows/linter.yml
vendored
9
.github/workflows/linter.yml
vendored
@@ -52,10 +52,11 @@ jobs:
|
||||
- name: Run Ruff on Changed Files
|
||||
if: ${{ steps.changed-files.outputs.files != '' }}
|
||||
run: |
|
||||
echo "${{ steps.changed-files.outputs.files }}" \
|
||||
| tr ' ' '\n' \
|
||||
| grep -v 'src/crewai/cli/templates/' \
|
||||
| xargs -I{} uv run ruff check "{}"
|
||||
echo "${{ steps.changed-files.outputs.files }}" \
|
||||
| tr ' ' '\n' \
|
||||
| grep -v 'src/crewai/cli/templates/' \
|
||||
| grep -v '/tests/' \
|
||||
| xargs -I{} uv run ruff check "{}"
|
||||
|
||||
- name: Save uv caches
|
||||
if: steps.cache-restore.outputs.cache-hit != 'true'
|
||||
|
||||
83
.github/workflows/publish.yml
vendored
Normal file
83
.github/workflows/publish.yml
vendored
Normal file
@@ -0,0 +1,83 @@
|
||||
name: Publish to PyPI
|
||||
|
||||
on:
|
||||
release:
|
||||
types: [ published ]
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
build:
|
||||
if: github.event.release.prerelease == true
|
||||
name: Build packages
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: "3.12"
|
||||
|
||||
- name: Install uv
|
||||
uses: astral-sh/setup-uv@v4
|
||||
|
||||
- name: Build packages
|
||||
run: |
|
||||
uv build --prerelease="allow" --all-packages
|
||||
rm dist/.gitignore
|
||||
|
||||
- name: Upload artifacts
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: dist
|
||||
path: dist/
|
||||
|
||||
publish:
|
||||
if: github.event.release.prerelease == true
|
||||
name: Publish to PyPI
|
||||
needs: build
|
||||
runs-on: ubuntu-latest
|
||||
environment:
|
||||
name: pypi
|
||||
url: https://pypi.org/p/crewai
|
||||
permissions:
|
||||
id-token: write
|
||||
contents: read
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Install uv
|
||||
uses: astral-sh/setup-uv@v6
|
||||
with:
|
||||
version: "0.8.4"
|
||||
python-version: "3.12"
|
||||
enable-cache: false
|
||||
|
||||
- name: Download artifacts
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: dist
|
||||
path: dist
|
||||
|
||||
- name: Publish to PyPI
|
||||
env:
|
||||
UV_PUBLISH_TOKEN: ${{ secrets.PYPI_API_TOKEN }}
|
||||
run: |
|
||||
failed=0
|
||||
for package in dist/*; do
|
||||
if [[ "$package" == *"crewai_devtools"* ]]; then
|
||||
echo "Skipping private package: $package"
|
||||
continue
|
||||
fi
|
||||
echo "Publishing $package"
|
||||
if ! uv publish "$package"; then
|
||||
echo "Failed to publish $package"
|
||||
failed=1
|
||||
fi
|
||||
done
|
||||
if [ $failed -eq 1 ]; then
|
||||
echo "Some packages failed to publish"
|
||||
exit 1
|
||||
fi
|
||||
31
.github/workflows/tests.yml
vendored
31
.github/workflows/tests.yml
vendored
@@ -8,6 +8,14 @@ permissions:
|
||||
env:
|
||||
OPENAI_API_KEY: fake-api-key
|
||||
PYTHONUNBUFFERED: 1
|
||||
BRAVE_API_KEY: fake-brave-key
|
||||
SNOWFLAKE_USER: fake-snowflake-user
|
||||
SNOWFLAKE_PASSWORD: fake-snowflake-password
|
||||
SNOWFLAKE_ACCOUNT: fake-snowflake-account
|
||||
SNOWFLAKE_WAREHOUSE: fake-snowflake-warehouse
|
||||
SNOWFLAKE_DATABASE: fake-snowflake-database
|
||||
SNOWFLAKE_SCHEMA: fake-snowflake-schema
|
||||
EMBEDCHAIN_DB_URI: sqlite:///test.db
|
||||
|
||||
jobs:
|
||||
tests:
|
||||
@@ -56,13 +64,13 @@ jobs:
|
||||
- name: Run tests (group ${{ matrix.group }} of 8)
|
||||
run: |
|
||||
PYTHON_VERSION_SAFE=$(echo "${{ matrix.python-version }}" | tr '.' '_')
|
||||
DURATION_FILE=".test_durations_py${PYTHON_VERSION_SAFE}"
|
||||
|
||||
DURATION_FILE="../../.test_durations_py${PYTHON_VERSION_SAFE}"
|
||||
|
||||
# Temporarily always skip cached durations to fix test splitting
|
||||
# When durations don't match, pytest-split runs duplicate tests instead of splitting
|
||||
echo "Using even test splitting (duration cache disabled until fix merged)"
|
||||
DURATIONS_ARG=""
|
||||
|
||||
|
||||
# Original logic (disabled temporarily):
|
||||
# if [ ! -f "$DURATION_FILE" ]; then
|
||||
# echo "No cached durations found, tests will be split evenly"
|
||||
@@ -74,8 +82,8 @@ jobs:
|
||||
# echo "No test changes detected, using cached test durations for optimal splitting"
|
||||
# DURATIONS_ARG="--durations-path=${DURATION_FILE}"
|
||||
# fi
|
||||
|
||||
uv run pytest \
|
||||
|
||||
cd lib/crewai && uv run pytest \
|
||||
--block-network \
|
||||
--timeout=30 \
|
||||
-vv \
|
||||
@@ -86,6 +94,19 @@ jobs:
|
||||
-n auto \
|
||||
--maxfail=3
|
||||
|
||||
- name: Run tool tests (group ${{ matrix.group }} of 8)
|
||||
run: |
|
||||
cd lib/crewai-tools && uv run pytest \
|
||||
--block-network \
|
||||
--timeout=30 \
|
||||
-vv \
|
||||
--splits 8 \
|
||||
--group ${{ matrix.group }} \
|
||||
--durations=10 \
|
||||
-n auto \
|
||||
--maxfail=3
|
||||
|
||||
|
||||
- name: Save uv caches
|
||||
if: steps.cache-restore.outputs.cache-hit != 'true'
|
||||
uses: actions/cache/save@v4
|
||||
|
||||
1
.gitignore
vendored
1
.gitignore
vendored
@@ -2,7 +2,6 @@
|
||||
.pytest_cache
|
||||
__pycache__
|
||||
dist/
|
||||
lib/
|
||||
.env
|
||||
assets/*
|
||||
.idea
|
||||
|
||||
@@ -6,14 +6,16 @@ repos:
|
||||
entry: uv run ruff check
|
||||
language: system
|
||||
types: [python]
|
||||
exclude: ^lib/crewai/
|
||||
- id: ruff-format
|
||||
name: ruff-format
|
||||
entry: uv run ruff format
|
||||
language: system
|
||||
types: [python]
|
||||
exclude: ^lib/crewai/
|
||||
- id: mypy
|
||||
name: mypy
|
||||
entry: uv run mypy
|
||||
language: system
|
||||
types: [python]
|
||||
exclude: ^tests/
|
||||
exclude: ^lib/crewai/
|
||||
|
||||
@@ -361,10 +361,20 @@
|
||||
"en/enterprise/integrations/github",
|
||||
"en/enterprise/integrations/gmail",
|
||||
"en/enterprise/integrations/google_calendar",
|
||||
"en/enterprise/integrations/google_contacts",
|
||||
"en/enterprise/integrations/google_docs",
|
||||
"en/enterprise/integrations/google_drive",
|
||||
"en/enterprise/integrations/google_sheets",
|
||||
"en/enterprise/integrations/google_slides",
|
||||
"en/enterprise/integrations/hubspot",
|
||||
"en/enterprise/integrations/jira",
|
||||
"en/enterprise/integrations/linear",
|
||||
"en/enterprise/integrations/microsoft_excel",
|
||||
"en/enterprise/integrations/microsoft_onedrive",
|
||||
"en/enterprise/integrations/microsoft_outlook",
|
||||
"en/enterprise/integrations/microsoft_sharepoint",
|
||||
"en/enterprise/integrations/microsoft_teams",
|
||||
"en/enterprise/integrations/microsoft_word",
|
||||
"en/enterprise/integrations/notion",
|
||||
"en/enterprise/integrations/salesforce",
|
||||
"en/enterprise/integrations/shopify",
|
||||
@@ -773,10 +783,20 @@
|
||||
"pt-BR/enterprise/integrations/github",
|
||||
"pt-BR/enterprise/integrations/gmail",
|
||||
"pt-BR/enterprise/integrations/google_calendar",
|
||||
"pt-BR/enterprise/integrations/google_contacts",
|
||||
"pt-BR/enterprise/integrations/google_docs",
|
||||
"pt-BR/enterprise/integrations/google_drive",
|
||||
"pt-BR/enterprise/integrations/google_sheets",
|
||||
"pt-BR/enterprise/integrations/google_slides",
|
||||
"pt-BR/enterprise/integrations/hubspot",
|
||||
"pt-BR/enterprise/integrations/jira",
|
||||
"pt-BR/enterprise/integrations/linear",
|
||||
"pt-BR/enterprise/integrations/microsoft_excel",
|
||||
"pt-BR/enterprise/integrations/microsoft_onedrive",
|
||||
"pt-BR/enterprise/integrations/microsoft_outlook",
|
||||
"pt-BR/enterprise/integrations/microsoft_sharepoint",
|
||||
"pt-BR/enterprise/integrations/microsoft_teams",
|
||||
"pt-BR/enterprise/integrations/microsoft_word",
|
||||
"pt-BR/enterprise/integrations/notion",
|
||||
"pt-BR/enterprise/integrations/salesforce",
|
||||
"pt-BR/enterprise/integrations/shopify",
|
||||
@@ -1188,10 +1208,20 @@
|
||||
"ko/enterprise/integrations/github",
|
||||
"ko/enterprise/integrations/gmail",
|
||||
"ko/enterprise/integrations/google_calendar",
|
||||
"ko/enterprise/integrations/google_contacts",
|
||||
"ko/enterprise/integrations/google_docs",
|
||||
"ko/enterprise/integrations/google_drive",
|
||||
"ko/enterprise/integrations/google_sheets",
|
||||
"ko/enterprise/integrations/google_slides",
|
||||
"ko/enterprise/integrations/hubspot",
|
||||
"ko/enterprise/integrations/jira",
|
||||
"ko/enterprise/integrations/linear",
|
||||
"ko/enterprise/integrations/microsoft_excel",
|
||||
"ko/enterprise/integrations/microsoft_onedrive",
|
||||
"ko/enterprise/integrations/microsoft_outlook",
|
||||
"ko/enterprise/integrations/microsoft_sharepoint",
|
||||
"ko/enterprise/integrations/microsoft_teams",
|
||||
"ko/enterprise/integrations/microsoft_word",
|
||||
"ko/enterprise/integrations/notion",
|
||||
"ko/enterprise/integrations/salesforce",
|
||||
"ko/enterprise/integrations/shopify",
|
||||
|
||||
@@ -43,7 +43,7 @@ Tools & Integrations is the central hub for connecting third‑party apps and ma
|
||||
1. Go to <Link href="https://app.crewai.com/crewai_plus/connectors">Integrations</Link>
|
||||
2. Click <b>Connect</b> on the desired service
|
||||
3. Complete the OAuth flow and grant scopes
|
||||
4. Copy your Enterprise Token from the <b>Integration</b> tab
|
||||
4. Copy your Enterprise Token from <Link href="https://app.crewai.com/crewai_plus/settings/integrations">Integration Settings</Link>
|
||||
|
||||
<Frame>
|
||||

|
||||
@@ -60,26 +60,18 @@ Tools & Integrations is the central hub for connecting third‑party apps and ma
|
||||
### Usage Example
|
||||
|
||||
<Tip>
|
||||
All services you have authenticated will be available as tools. Add `CrewaiEnterpriseTools` to your agent and you’re set.
|
||||
Use the new streamlined approach to integrate enterprise apps. Simply specify the app and its actions directly in the Agent configuration.
|
||||
</Tip>
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
# Get enterprise tools (Gmail tool will be included)
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token"
|
||||
)
|
||||
# print the tools
|
||||
print(enterprise_tools)
|
||||
|
||||
# Create an agent with Gmail capabilities
|
||||
email_agent = Agent(
|
||||
role="Email Manager",
|
||||
goal="Manage and organize email communications",
|
||||
backstory="An AI assistant specialized in email management and communication.",
|
||||
tools=enterprise_tools
|
||||
apps=['gmail', 'gmail/send_email'] # Using canonical name 'gmail'
|
||||
)
|
||||
|
||||
# Task to send an email
|
||||
@@ -102,21 +94,14 @@ Tools & Integrations is the central hub for connecting third‑party apps and ma
|
||||
### Filtering Tools
|
||||
|
||||
```python
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
actions_list=["gmail_find_email"] # only gmail_find_email tool will be available
|
||||
)
|
||||
|
||||
|
||||
gmail_tool = enterprise_tools["gmail_find_email"]
|
||||
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
# Create agent with specific Gmail actions only
|
||||
gmail_agent = Agent(
|
||||
role="Gmail Manager",
|
||||
goal="Manage gmail communications and notifications",
|
||||
backstory="An AI assistant that helps coordinate gmail communications.",
|
||||
tools=[gmail_tool]
|
||||
apps=['gmail/fetch_emails'] # Using canonical name with specific action
|
||||
)
|
||||
|
||||
notification_task = Task(
|
||||
|
||||
@@ -151,3 +151,5 @@ You can check the security check status of a tool at:
|
||||
<Card title="Need Help?" icon="headset" href="mailto:support@crewai.com">
|
||||
Contact our support team for assistance with API integration or troubleshooting.
|
||||
</Card>
|
||||
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@ Before using the Asana integration, ensure you have:
|
||||
2. Find **Asana** in the Authentication Integrations section
|
||||
3. Click **Connect** and complete the OAuth flow
|
||||
4. Grant the necessary permissions for task and project management
|
||||
5. Copy your Enterprise Token from [Account Settings](https://app.crewai.com/crewai_plus/settings/account)
|
||||
5. Copy your Enterprise Token from [Integration Settings](https://app.crewai.com/crewai_plus/settings/integrations)
|
||||
|
||||
### 2. Install Required Package
|
||||
|
||||
@@ -36,7 +36,7 @@ uv add crewai-tools
|
||||
## Available Actions
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="ASANA_CREATE_COMMENT">
|
||||
<Accordion title="asana/create_comment">
|
||||
**Description:** Create a comment in Asana.
|
||||
|
||||
**Parameters:**
|
||||
@@ -44,7 +44,7 @@ uv add crewai-tools
|
||||
- `text` (string, required): Text (example: "This is a comment.").
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="ASANA_CREATE_PROJECT">
|
||||
<Accordion title="asana/create_project">
|
||||
**Description:** Create a project in Asana.
|
||||
|
||||
**Parameters:**
|
||||
@@ -54,7 +54,7 @@ uv add crewai-tools
|
||||
- `notes` (string, optional): Notes (example: "These are things we need to purchase.").
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="ASANA_GET_PROJECTS">
|
||||
<Accordion title="asana/get_projects">
|
||||
**Description:** Get a list of projects in Asana.
|
||||
|
||||
**Parameters:**
|
||||
@@ -62,14 +62,14 @@ uv add crewai-tools
|
||||
- Options: `default`, `true`, `false`
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="ASANA_GET_PROJECT_BY_ID">
|
||||
<Accordion title="asana/get_project_by_id">
|
||||
**Description:** Get a project by ID in Asana.
|
||||
|
||||
**Parameters:**
|
||||
- `projectFilterId` (string, required): Project ID.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="ASANA_CREATE_TASK">
|
||||
<Accordion title="asana/create_task">
|
||||
**Description:** Create a task in Asana.
|
||||
|
||||
**Parameters:**
|
||||
@@ -83,7 +83,7 @@ uv add crewai-tools
|
||||
- `gid` (string, optional): External ID - An ID from your application to associate this task with. You can use this ID to sync updates to this task later.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="ASANA_UPDATE_TASK">
|
||||
<Accordion title="asana/update_task">
|
||||
**Description:** Update a task in Asana.
|
||||
|
||||
**Parameters:**
|
||||
@@ -98,7 +98,7 @@ uv add crewai-tools
|
||||
- `gid` (string, optional): External ID - An ID from your application to associate this task with. You can use this ID to sync updates to this task later.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="ASANA_GET_TASKS">
|
||||
<Accordion title="asana/get_tasks">
|
||||
**Description:** Get a list of tasks in Asana.
|
||||
|
||||
**Parameters:**
|
||||
@@ -108,21 +108,21 @@ uv add crewai-tools
|
||||
- `completedSince` (string, optional): Completed since - Only return tasks that are either incomplete or that have been completed since this time (ISO or Unix timestamp). (example: "2014-04-25T16:15:47-04:00").
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="ASANA_GET_TASKS_BY_ID">
|
||||
<Accordion title="asana/get_tasks_by_id">
|
||||
**Description:** Get a list of tasks by ID in Asana.
|
||||
|
||||
**Parameters:**
|
||||
- `taskId` (string, required): Task ID.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="ASANA_GET_TASK_BY_EXTERNAL_ID">
|
||||
<Accordion title="asana/get_task_by_external_id">
|
||||
**Description:** Get a task by external ID in Asana.
|
||||
|
||||
**Parameters:**
|
||||
- `gid` (string, required): External ID - The ID that this task is associated or synced with, from your application.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="ASANA_ADD_TASK_TO_SECTION">
|
||||
<Accordion title="asana/add_task_to_section">
|
||||
**Description:** Add a task to a section in Asana.
|
||||
|
||||
**Parameters:**
|
||||
@@ -132,14 +132,14 @@ uv add crewai-tools
|
||||
- `afterTaskId` (string, optional): After Task ID - The ID of a task in this section that this task will be inserted after. Cannot be used with Before Task ID. (example: "1204619611402340").
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="ASANA_GET_TEAMS">
|
||||
<Accordion title="asana/get_teams">
|
||||
**Description:** Get a list of teams in Asana.
|
||||
|
||||
**Parameters:**
|
||||
- `workspace` (string, required): Workspace - Returns the teams in this workspace visible to the authorized user.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="ASANA_GET_WORKSPACES">
|
||||
<Accordion title="asana/get_workspaces">
|
||||
**Description:** Get a list of workspaces in Asana.
|
||||
|
||||
**Parameters:** None required.
|
||||
@@ -152,19 +152,13 @@ uv add crewai-tools
|
||||
|
||||
```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]
|
||||
apps=['asana'] # All Asana actions will be available
|
||||
)
|
||||
|
||||
# Task to create a new project
|
||||
@@ -186,19 +180,18 @@ crew.kickoff()
|
||||
### Filtering Specific Asana Tools
|
||||
|
||||
```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"]
|
||||
)
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
# Create agent with specific Asana actions only
|
||||
task_manager_agent = Agent(
|
||||
role="Task Manager",
|
||||
goal="Create and manage tasks efficiently",
|
||||
backstory="An AI assistant that focuses on task creation and management.",
|
||||
tools=enterprise_tools
|
||||
apps=[
|
||||
'asana/create_task',
|
||||
'asana/update_task',
|
||||
'asana/get_tasks'
|
||||
] # Specific Asana actions
|
||||
)
|
||||
|
||||
# Task to create and assign a task
|
||||
@@ -220,17 +213,12 @@ 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]
|
||||
apps=['asana']
|
||||
)
|
||||
|
||||
# Complex task involving multiple Asana operations
|
||||
|
||||
@@ -25,7 +25,7 @@ Before using the Box integration, ensure you have:
|
||||
2. Find **Box** in the Authentication Integrations section
|
||||
3. Click **Connect** and complete the OAuth flow
|
||||
4. Grant the necessary permissions for file and folder management
|
||||
5. Copy your Enterprise Token from [Account Settings](https://app.crewai.com/crewai_plus/settings/account)
|
||||
5. Copy your Enterprise Token from [Integration Settings](https://app.crewai.com/crewai_plus/settings/integrations)
|
||||
|
||||
### 2. Install Required Package
|
||||
|
||||
@@ -36,7 +36,7 @@ uv add crewai-tools
|
||||
## Available Actions
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="BOX_SAVE_FILE">
|
||||
<Accordion title="box/save_file">
|
||||
**Description:** Save a file from URL in Box.
|
||||
|
||||
**Parameters:**
|
||||
@@ -52,7 +52,7 @@ uv add crewai-tools
|
||||
- `file` (string, required): File URL - Files must be smaller than 50MB in size. (example: "https://picsum.photos/200/300").
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="BOX_SAVE_FILE_FROM_OBJECT">
|
||||
<Accordion title="box/save_file_from_object">
|
||||
**Description:** Save a file in Box.
|
||||
|
||||
**Parameters:**
|
||||
@@ -61,14 +61,14 @@ uv add crewai-tools
|
||||
- `folder` (string, optional): Folder - Use Connect Portal Workflow Settings to allow users to select the File's Folder destination. Defaults to the user's root folder if left blank.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="BOX_GET_FILE_BY_ID">
|
||||
<Accordion title="box/get_file_by_id">
|
||||
**Description:** Get a file by ID in Box.
|
||||
|
||||
**Parameters:**
|
||||
- `fileId` (string, required): File ID - The unique identifier that represents a file. (example: "12345").
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="BOX_LIST_FILES">
|
||||
<Accordion title="box/list_files">
|
||||
**Description:** List files in Box.
|
||||
|
||||
**Parameters:**
|
||||
@@ -93,7 +93,7 @@ uv add crewai-tools
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="BOX_CREATE_FOLDER">
|
||||
<Accordion title="box/create_folder">
|
||||
**Description:** Create a folder in Box.
|
||||
|
||||
**Parameters:**
|
||||
@@ -106,7 +106,7 @@ uv add crewai-tools
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="BOX_MOVE_FOLDER">
|
||||
<Accordion title="box/move_folder">
|
||||
**Description:** Move a folder in Box.
|
||||
|
||||
**Parameters:**
|
||||
@@ -120,14 +120,14 @@ uv add crewai-tools
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="BOX_GET_FOLDER_BY_ID">
|
||||
<Accordion title="box/get_folder_by_id">
|
||||
**Description:** Get a folder by ID in Box.
|
||||
|
||||
**Parameters:**
|
||||
- `folderId` (string, required): Folder ID - The unique identifier that represents a folder. (example: "0").
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="BOX_SEARCH_FOLDERS">
|
||||
<Accordion title="box/search_folders">
|
||||
**Description:** Search folders in Box.
|
||||
|
||||
**Parameters:**
|
||||
@@ -152,7 +152,7 @@ uv add crewai-tools
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="BOX_DELETE_FOLDER">
|
||||
<Accordion title="box/delete_folder">
|
||||
**Description:** Delete a folder in Box.
|
||||
|
||||
**Parameters:**
|
||||
@@ -167,19 +167,14 @@ uv add crewai-tools
|
||||
|
||||
```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"
|
||||
)
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
# 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]
|
||||
apps=['box'] # All Box actions will be available
|
||||
)
|
||||
|
||||
# Task to create a folder structure
|
||||
@@ -201,19 +196,14 @@ crew.kickoff()
|
||||
### Filtering Specific Box Tools
|
||||
|
||||
```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"]
|
||||
)
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
# Create agent with specific Box actions only
|
||||
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
|
||||
apps=['box/create_folder', 'box/save_file', 'box/list_files'] # Specific Box actions
|
||||
)
|
||||
|
||||
# Task to organize files
|
||||
@@ -235,17 +225,12 @@ 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]
|
||||
apps=['box']
|
||||
)
|
||||
|
||||
# Complex task involving multiple Box operations
|
||||
|
||||
@@ -25,7 +25,7 @@ Before using the ClickUp integration, ensure you have:
|
||||
2. Find **ClickUp** in the Authentication Integrations section
|
||||
3. Click **Connect** and complete the OAuth flow
|
||||
4. Grant the necessary permissions for task and project management
|
||||
5. Copy your Enterprise Token from [Account Settings](https://app.crewai.com/crewai_plus/settings/account)
|
||||
5. Copy your Enterprise Token from [Integration Settings](https://app.crewai.com/crewai_plus/settings/integrations)
|
||||
|
||||
### 2. Install Required Package
|
||||
|
||||
@@ -36,7 +36,7 @@ uv add crewai-tools
|
||||
## Available Actions
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="CLICKUP_SEARCH_TASKS">
|
||||
<Accordion title="clickup/search_tasks">
|
||||
**Description:** Search for tasks in ClickUp using advanced filters.
|
||||
|
||||
**Parameters:**
|
||||
@@ -61,7 +61,7 @@ uv add crewai-tools
|
||||
Available fields: `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">
|
||||
<Accordion title="clickup/get_task_in_list">
|
||||
**Description:** Get tasks in a specific list in ClickUp.
|
||||
|
||||
**Parameters:**
|
||||
@@ -69,7 +69,7 @@ uv add crewai-tools
|
||||
- `taskFilterFormula` (string, optional): Search for tasks that match specified filters. For example: name=task1.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="CLICKUP_CREATE_TASK">
|
||||
<Accordion title="clickup/create_task">
|
||||
**Description:** Create a task in ClickUp.
|
||||
|
||||
**Parameters:**
|
||||
@@ -82,7 +82,7 @@ uv add crewai-tools
|
||||
- `additionalFields` (string, optional): Additional Fields - Specify additional fields to include on this task as JSON.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="CLICKUP_UPDATE_TASK">
|
||||
<Accordion title="clickup/update_task">
|
||||
**Description:** Update a task in ClickUp.
|
||||
|
||||
**Parameters:**
|
||||
@@ -96,49 +96,49 @@ uv add crewai-tools
|
||||
- `additionalFields` (string, optional): Additional Fields - Specify additional fields to include on this task as JSON.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="CLICKUP_DELETE_TASK">
|
||||
<Accordion title="clickup/delete_task">
|
||||
**Description:** Delete a task in ClickUp.
|
||||
|
||||
**Parameters:**
|
||||
- `taskId` (string, required): Task ID - The ID of the task to delete.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="CLICKUP_GET_LIST">
|
||||
<Accordion title="clickup/get_list">
|
||||
**Description:** Get List information in ClickUp.
|
||||
|
||||
**Parameters:**
|
||||
- `spaceId` (string, required): Space ID - The ID of the space containing the lists.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="CLICKUP_GET_CUSTOM_FIELDS_IN_LIST">
|
||||
<Accordion title="clickup/get_custom_fields_in_list">
|
||||
**Description:** Get Custom Fields in a List in ClickUp.
|
||||
|
||||
**Parameters:**
|
||||
- `listId` (string, required): List ID - The ID of the list to get custom fields from.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="CLICKUP_GET_ALL_FIELDS_IN_LIST">
|
||||
<Accordion title="clickup/get_all_fields_in_list">
|
||||
**Description:** Get All Fields in a List in ClickUp.
|
||||
|
||||
**Parameters:**
|
||||
- `listId` (string, required): List ID - The ID of the list to get all fields from.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="CLICKUP_GET_SPACE">
|
||||
<Accordion title="clickup/get_space">
|
||||
**Description:** Get Space information in ClickUp.
|
||||
|
||||
**Parameters:**
|
||||
- `spaceId` (string, optional): Space ID - The ID of the space to retrieve.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="CLICKUP_GET_FOLDERS">
|
||||
<Accordion title="clickup/get_folders">
|
||||
**Description:** Get Folders in ClickUp.
|
||||
|
||||
**Parameters:**
|
||||
- `spaceId` (string, required): Space ID - The ID of the space containing the folders.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="CLICKUP_GET_MEMBER">
|
||||
<Accordion title="clickup/get_member">
|
||||
**Description:** Get Member information in ClickUp.
|
||||
|
||||
**Parameters:** None required.
|
||||
@@ -151,19 +151,14 @@ uv add crewai-tools
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
# Get enterprise tools (ClickUp tools will be included)
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token"
|
||||
)
|
||||
|
||||
# Create an agent with ClickUp capabilities
|
||||
# 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]
|
||||
apps=['clickup'] # All Clickup actions will be available
|
||||
)
|
||||
|
||||
# Task to create a new task
|
||||
@@ -185,19 +180,12 @@ crew.kickoff()
|
||||
### Filtering Specific ClickUp Tools
|
||||
|
||||
```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
|
||||
apps=['clickup/create_task']
|
||||
)
|
||||
|
||||
# Task to manage task workflow
|
||||
@@ -219,17 +207,12 @@ 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]
|
||||
apps=['clickup']
|
||||
)
|
||||
|
||||
# Complex task involving multiple ClickUp operations
|
||||
@@ -256,17 +239,12 @@ 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]
|
||||
apps=['clickup']
|
||||
)
|
||||
|
||||
# Task to analyze and optimize task distribution
|
||||
|
||||
@@ -25,7 +25,7 @@ Before using the GitHub integration, ensure you have:
|
||||
2. Find **GitHub** in the Authentication Integrations section
|
||||
3. Click **Connect** and complete the OAuth flow
|
||||
4. Grant the necessary permissions for repository and issue management
|
||||
5. Copy your Enterprise Token from [Account Settings](https://app.crewai.com/crewai_plus/settings/account)
|
||||
5. Copy your Enterprise Token from [Integration Settings](https://app.crewai.com/crewai_plus/settings/integrations)
|
||||
|
||||
### 2. Install Required Package
|
||||
|
||||
@@ -36,7 +36,7 @@ uv add crewai-tools
|
||||
## Available Actions
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="GITHUB_CREATE_ISSUE">
|
||||
<Accordion title="github/create_issue">
|
||||
**Description:** Create an issue in GitHub.
|
||||
|
||||
**Parameters:**
|
||||
@@ -47,7 +47,7 @@ uv add crewai-tools
|
||||
- `assignees` (string, optional): Assignees - Specify the assignee(s)' GitHub login as an array of strings for this issue. (example: `["octocat"]`).
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GITHUB_UPDATE_ISSUE">
|
||||
<Accordion title="github/update_issue">
|
||||
**Description:** Update an issue in GitHub.
|
||||
|
||||
**Parameters:**
|
||||
@@ -61,7 +61,7 @@ uv add crewai-tools
|
||||
- Options: `open`, `closed`
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GITHUB_GET_ISSUE_BY_NUMBER">
|
||||
<Accordion title="github/get_issue_by_number">
|
||||
**Description:** Get an issue by number in GitHub.
|
||||
|
||||
**Parameters:**
|
||||
@@ -70,7 +70,7 @@ uv add crewai-tools
|
||||
- `issue_number` (string, required): Issue Number - Specify the number of the issue to fetch.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GITHUB_LOCK_ISSUE">
|
||||
<Accordion title="github/lock_issue">
|
||||
**Description:** Lock an issue in GitHub.
|
||||
|
||||
**Parameters:**
|
||||
@@ -81,7 +81,7 @@ uv add crewai-tools
|
||||
- Options: `off-topic`, `too heated`, `resolved`, `spam`
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GITHUB_SEARCH_ISSUE">
|
||||
<Accordion title="github/search_issue">
|
||||
**Description:** Search for issues in GitHub.
|
||||
|
||||
**Parameters:**
|
||||
@@ -108,7 +108,7 @@ uv add crewai-tools
|
||||
Available fields: `assignee`, `creator`, `mentioned`, `labels`
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GITHUB_CREATE_RELEASE">
|
||||
<Accordion title="github/create_release">
|
||||
**Description:** Create a release in GitHub.
|
||||
|
||||
**Parameters:**
|
||||
@@ -126,7 +126,7 @@ uv add crewai-tools
|
||||
- Options: `true`, `false`
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GITHUB_UPDATE_RELEASE">
|
||||
<Accordion title="github/update_release">
|
||||
**Description:** Update a release in GitHub.
|
||||
|
||||
**Parameters:**
|
||||
@@ -145,7 +145,7 @@ uv add crewai-tools
|
||||
- Options: `true`, `false`
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GITHUB_GET_RELEASE_BY_ID">
|
||||
<Accordion title="github/get_release_by_id">
|
||||
**Description:** Get a release by ID in GitHub.
|
||||
|
||||
**Parameters:**
|
||||
@@ -154,7 +154,7 @@ uv add crewai-tools
|
||||
- `id` (string, required): Release ID - Specify the release ID of the release to fetch.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GITHUB_GET_RELEASE_BY_TAG_NAME">
|
||||
<Accordion title="github/get_release_by_tag_name">
|
||||
**Description:** Get a release by tag name in GitHub.
|
||||
|
||||
**Parameters:**
|
||||
@@ -163,7 +163,7 @@ uv add crewai-tools
|
||||
- `tag_name` (string, required): Name - Specify the tag of the release to fetch. (example: "v1.0.0").
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GITHUB_DELETE_RELEASE">
|
||||
<Accordion title="github/delete_release">
|
||||
**Description:** Delete a release in GitHub.
|
||||
|
||||
**Parameters:**
|
||||
@@ -179,19 +179,14 @@ uv add crewai-tools
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
# Get enterprise tools (GitHub tools will be included)
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token"
|
||||
)
|
||||
|
||||
# Create an agent with GitHub capabilities
|
||||
# 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]
|
||||
apps=['github'] # All Github actions will be available
|
||||
)
|
||||
|
||||
# Task to create a new issue
|
||||
@@ -213,19 +208,12 @@ crew.kickoff()
|
||||
### Filtering Specific GitHub Tools
|
||||
|
||||
```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
|
||||
apps=['github/create_issue']
|
||||
)
|
||||
|
||||
# Task to manage issue workflow
|
||||
@@ -247,17 +235,12 @@ 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]
|
||||
apps=['github']
|
||||
)
|
||||
|
||||
# Task to create a new release
|
||||
@@ -284,17 +267,12 @@ 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]
|
||||
apps=['github']
|
||||
)
|
||||
|
||||
# Complex task involving multiple GitHub operations
|
||||
|
||||
@@ -25,7 +25,7 @@ Before using the Gmail integration, ensure you have:
|
||||
2. Find **Gmail** in the Authentication Integrations section
|
||||
3. Click **Connect** and complete the OAuth flow
|
||||
4. Grant the necessary permissions for email and contact management
|
||||
5. Copy your Enterprise Token from [Account Settings](https://app.crewai.com/crewai_plus/settings/account)
|
||||
5. Copy your Enterprise Token from [Integration Settings](https://app.crewai.com/crewai_plus/settings/integrations)
|
||||
|
||||
### 2. Install Required Package
|
||||
|
||||
@@ -36,138 +36,103 @@ uv add crewai-tools
|
||||
## Available Actions
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="GMAIL_SEND_EMAIL">
|
||||
**Description:** Send an email in Gmail.
|
||||
<Accordion title="gmail/fetch_emails">
|
||||
**Description:** Retrieve a list of messages.
|
||||
|
||||
**Parameters:**
|
||||
- `toRecipients` (array, required): To - Specify the recipients as either a single string or a JSON array.
|
||||
```json
|
||||
[
|
||||
"recipient1@domain.com",
|
||||
"recipient2@domain.com"
|
||||
]
|
||||
```
|
||||
- `from` (string, required): From - Specify the email of the sender.
|
||||
- `subject` (string, required): Subject - Specify the subject of the message.
|
||||
- `messageContent` (string, required): Message Content - Specify the content of the email message as plain text or HTML.
|
||||
- `attachments` (string, optional): Attachments - Accepts either a single file object or a JSON array of file objects.
|
||||
- `additionalHeaders` (object, optional): Additional Headers - Specify any additional header fields here.
|
||||
```json
|
||||
{
|
||||
"reply-to": "Sender Name <sender@domain.com>"
|
||||
}
|
||||
```
|
||||
- `userId` (string, required): The user's email address or 'me' for the authenticated user. (default: "me")
|
||||
- `q` (string, optional): Search query to filter messages (e.g., 'from:someone@example.com is:unread').
|
||||
- `maxResults` (integer, optional): Maximum number of messages to return (1-500). (default: 100)
|
||||
- `pageToken` (string, optional): Page token to retrieve a specific page of results.
|
||||
- `labelIds` (array, optional): Only return messages with labels that match all of the specified label IDs.
|
||||
- `includeSpamTrash` (boolean, optional): Include messages from SPAM and TRASH in the results. (default: false)
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GMAIL_GET_EMAIL_BY_ID">
|
||||
**Description:** Get an email by ID in Gmail.
|
||||
<Accordion title="gmail/send_email">
|
||||
**Description:** Send an email.
|
||||
|
||||
**Parameters:**
|
||||
- `userId` (string, required): User ID - Specify the user's email address. (example: "user@domain.com").
|
||||
- `messageId` (string, required): Message ID - Specify the ID of the message to retrieve.
|
||||
- `to` (string, required): Recipient email address.
|
||||
- `subject` (string, required): Email subject line.
|
||||
- `body` (string, required): Email message content.
|
||||
- `userId` (string, optional): The user's email address or 'me' for the authenticated user. (default: "me")
|
||||
- `cc` (string, optional): CC email addresses (comma-separated).
|
||||
- `bcc` (string, optional): BCC email addresses (comma-separated).
|
||||
- `from` (string, optional): Sender email address (if different from authenticated user).
|
||||
- `replyTo` (string, optional): Reply-to email address.
|
||||
- `threadId` (string, optional): Thread ID if replying to an existing conversation.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GMAIL_SEARCH_FOR_EMAIL">
|
||||
**Description:** Search for emails in Gmail using advanced filters.
|
||||
<Accordion title="gmail/delete_email">
|
||||
**Description:** Delete an email by ID.
|
||||
|
||||
**Parameters:**
|
||||
- `emailFilterFormula` (object, optional): A filter in disjunctive normal form - OR of AND groups of single conditions.
|
||||
```json
|
||||
{
|
||||
"operator": "OR",
|
||||
"conditions": [
|
||||
{
|
||||
"operator": "AND",
|
||||
"conditions": [
|
||||
{
|
||||
"field": "from",
|
||||
"operator": "$stringContains",
|
||||
"value": "example@domain.com"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
Available fields: `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, optional): Pagination Parameters.
|
||||
```json
|
||||
{
|
||||
"pageCursor": "page_cursor_string"
|
||||
}
|
||||
```
|
||||
- `userId` (string, required): The user's email address or 'me' for the authenticated user.
|
||||
- `id` (string, required): The ID of the message to delete.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GMAIL_DELETE_EMAIL">
|
||||
**Description:** Delete an email in Gmail.
|
||||
<Accordion title="gmail/create_draft">
|
||||
**Description:** Create a new draft email.
|
||||
|
||||
**Parameters:**
|
||||
- `userId` (string, required): User ID - Specify the user's email address. (example: "user@domain.com").
|
||||
- `messageId` (string, required): Message ID - Specify the ID of the message to trash.
|
||||
- `userId` (string, required): The user's email address or 'me' for the authenticated user.
|
||||
- `message` (object, required): Message object containing the draft content.
|
||||
- `raw` (string, required): Base64url encoded email message.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GMAIL_CREATE_A_CONTACT">
|
||||
**Description:** Create a contact in Gmail.
|
||||
<Accordion title="gmail/get_message">
|
||||
**Description:** Retrieve a specific message by ID.
|
||||
|
||||
**Parameters:**
|
||||
- `givenName` (string, required): Given Name - Specify the Given Name of the Contact to create. (example: "John").
|
||||
- `familyName` (string, required): Family Name - Specify the Family Name of the Contact to create. (example: "Doe").
|
||||
- `email` (string, required): Email - Specify the Email Address of the Contact to create.
|
||||
- `additionalFields` (object, optional): Additional Fields - Additional contact information.
|
||||
```json
|
||||
{
|
||||
"addresses": [
|
||||
{
|
||||
"streetAddress": "1000 North St.",
|
||||
"city": "Los Angeles"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
- `userId` (string, required): The user's email address or 'me' for the authenticated user. (default: "me")
|
||||
- `id` (string, required): The ID of the message to retrieve.
|
||||
- `format` (string, optional): The format to return the message in. Options: "full", "metadata", "minimal", "raw". (default: "full")
|
||||
- `metadataHeaders` (array, optional): When given and format is METADATA, only include headers specified.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GMAIL_GET_CONTACT_BY_RESOURCE_NAME">
|
||||
**Description:** Get a contact by resource name in Gmail.
|
||||
<Accordion title="gmail/get_attachment">
|
||||
**Description:** Retrieve a message attachment.
|
||||
|
||||
**Parameters:**
|
||||
- `resourceName` (string, required): Resource Name - Specify the resource name of the contact to fetch.
|
||||
- `userId` (string, required): The user's email address or 'me' for the authenticated user. (default: "me")
|
||||
- `messageId` (string, required): The ID of the message containing the attachment.
|
||||
- `id` (string, required): The ID of the attachment to retrieve.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GMAIL_SEARCH_FOR_CONTACT">
|
||||
**Description:** Search for a contact in Gmail.
|
||||
<Accordion title="gmail/fetch_thread">
|
||||
**Description:** Retrieve a specific email thread by ID.
|
||||
|
||||
**Parameters:**
|
||||
- `searchTerm` (string, required): Term - Specify a search term to search for near or exact matches on the names, nickNames, emailAddresses, phoneNumbers, or organizations Contact properties.
|
||||
- `userId` (string, required): The user's email address or 'me' for the authenticated user. (default: "me")
|
||||
- `id` (string, required): The ID of the thread to retrieve.
|
||||
- `format` (string, optional): The format to return the messages in. Options: "full", "metadata", "minimal". (default: "full")
|
||||
- `metadataHeaders` (array, optional): When given and format is METADATA, only include headers specified.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GMAIL_DELETE_CONTACT">
|
||||
**Description:** Delete a contact in Gmail.
|
||||
<Accordion title="gmail/modify_thread">
|
||||
**Description:** Modify the labels applied to a thread.
|
||||
|
||||
**Parameters:**
|
||||
- `resourceName` (string, required): Resource Name - Specify the resource name of the contact to delete.
|
||||
- `userId` (string, required): The user's email address or 'me' for the authenticated user. (default: "me")
|
||||
- `id` (string, required): The ID of the thread to modify.
|
||||
- `addLabelIds` (array, optional): A list of IDs of labels to add to this thread.
|
||||
- `removeLabelIds` (array, optional): A list of IDs of labels to remove from this thread.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GMAIL_CREATE_DRAFT">
|
||||
**Description:** Create a draft in Gmail.
|
||||
<Accordion title="gmail/trash_thread">
|
||||
**Description:** Move a thread to the trash.
|
||||
|
||||
**Parameters:**
|
||||
- `toRecipients` (array, optional): To - Specify the recipients as either a single string or a JSON array.
|
||||
```json
|
||||
[
|
||||
"recipient1@domain.com",
|
||||
"recipient2@domain.com"
|
||||
]
|
||||
```
|
||||
- `from` (string, optional): From - Specify the email of the sender.
|
||||
- `subject` (string, optional): Subject - Specify the subject of the message.
|
||||
- `messageContent` (string, optional): Message Content - Specify the content of the email message as plain text or HTML.
|
||||
- `attachments` (string, optional): Attachments - Accepts either a single file object or a JSON array of file objects.
|
||||
- `additionalHeaders` (object, optional): Additional Headers - Specify any additional header fields here.
|
||||
```json
|
||||
{
|
||||
"reply-to": "Sender Name <sender@domain.com>"
|
||||
}
|
||||
```
|
||||
- `userId` (string, required): The user's email address or 'me' for the authenticated user. (default: "me")
|
||||
- `id` (string, required): The ID of the thread to trash.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="gmail/untrash_thread">
|
||||
**Description:** Remove a thread from the trash.
|
||||
|
||||
**Parameters:**
|
||||
- `userId` (string, required): The user's email address or 'me' for the authenticated user. (default: "me")
|
||||
- `id` (string, required): The ID of the thread to untrash.
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
@@ -177,19 +142,13 @@ uv add crewai-tools
|
||||
|
||||
```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",
|
||||
goal="Manage email communications and messages efficiently",
|
||||
backstory="An AI assistant specialized in email management and communication.",
|
||||
tools=[enterprise_tools]
|
||||
apps=['gmail'] # All Gmail actions will be available
|
||||
)
|
||||
|
||||
# Task to send a follow-up email
|
||||
@@ -211,19 +170,18 @@ crew.kickoff()
|
||||
### Filtering Specific Gmail Tools
|
||||
|
||||
```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"]
|
||||
)
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
# Create agent with specific Gmail actions only
|
||||
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
|
||||
apps=[
|
||||
'gmail/send_email',
|
||||
'gmail/fetch_emails',
|
||||
'gmail/create_draft'
|
||||
]
|
||||
)
|
||||
|
||||
# Task to prepare and send emails
|
||||
@@ -241,57 +199,17 @@ crew = Crew(
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### Contact Management
|
||||
|
||||
```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. Search for contacts from the 'example.com' domain
|
||||
2. Create new contacts for recent email senders not in the contact list
|
||||
3. Update contact information with recent interaction data
|
||||
""",
|
||||
agent=contact_manager,
|
||||
expected_output="Contact database updated with new contacts and recent interactions"
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[contact_manager],
|
||||
tasks=[contact_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### Email Search and Analysis
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token"
|
||||
)
|
||||
|
||||
# Create agent with Gmail search and analysis capabilities
|
||||
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]
|
||||
apps=['gmail/fetch_emails', 'gmail/get_message'] # Specific actions for email analysis
|
||||
)
|
||||
|
||||
# Task to analyze email patterns
|
||||
@@ -313,38 +231,37 @@ crew = Crew(
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### Automated Email Workflows
|
||||
### Thread Management
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token"
|
||||
# Create agent with Gmail thread management capabilities
|
||||
thread_manager = Agent(
|
||||
role="Thread Manager",
|
||||
goal="Organize and manage email threads efficiently",
|
||||
backstory="An AI assistant that specializes in email thread organization and management.",
|
||||
apps=[
|
||||
'gmail/fetch_thread',
|
||||
'gmail/modify_thread',
|
||||
'gmail/trash_thread'
|
||||
]
|
||||
)
|
||||
|
||||
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(
|
||||
# Task to organize email threads
|
||||
thread_task = Task(
|
||||
description="""
|
||||
1. Search for emails with 'urgent' in the subject from the last 24 hours
|
||||
2. Create draft responses for each urgent email
|
||||
3. Send automated acknowledgment emails to senders
|
||||
4. Create a summary report of urgent items requiring attention
|
||||
1. Fetch all threads from the last month
|
||||
2. Apply appropriate labels to organize threads by project
|
||||
3. Archive or trash threads that are no longer relevant
|
||||
""",
|
||||
agent=workflow_manager,
|
||||
expected_output="Urgent emails processed with automated responses and summary report"
|
||||
agent=thread_manager,
|
||||
expected_output="Email threads organized with appropriate labels and cleanup completed"
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[workflow_manager],
|
||||
tasks=[workflow_task]
|
||||
agents=[thread_manager],
|
||||
tasks=[thread_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
|
||||
@@ -24,8 +24,8 @@ Before using the Google Calendar integration, ensure you have:
|
||||
1. Navigate to [CrewAI AMP Integrations](https://app.crewai.com/crewai_plus/connectors)
|
||||
2. Find **Google Calendar** in the Authentication Integrations section
|
||||
3. Click **Connect** and complete the OAuth flow
|
||||
4. Grant the necessary permissions for calendar and contact access
|
||||
5. Copy your Enterprise Token from [Account Settings](https://app.crewai.com/crewai_plus/settings/account)
|
||||
4. Grant the necessary permissions for calendar access
|
||||
5. Copy your Enterprise Token from [Integration Settings](https://app.crewai.com/crewai_plus/settings/integrations)
|
||||
|
||||
### 2. Install Required Package
|
||||
|
||||
@@ -36,141 +36,121 @@ uv add crewai-tools
|
||||
## Available Actions
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="GOOGLE_CALENDAR_CREATE_EVENT">
|
||||
**Description:** Create an event in Google Calendar.
|
||||
<Accordion title="google_calendar/get_availability">
|
||||
**Description:** Get calendar availability (free/busy information).
|
||||
|
||||
**Parameters:**
|
||||
- `eventName` (string, required): Event name.
|
||||
- `startTime` (string, required): Start time - Accepts Unix timestamp or ISO8601 date formats.
|
||||
- `endTime` (string, optional): End time - Defaults to one hour after the start time if left blank.
|
||||
- `calendar` (string, optional): Calendar - Use Connect Portal Workflow Settings to allow users to select which calendar the event will be added to. Defaults to the user's primary calendar if left blank.
|
||||
- `attendees` (string, optional): Attendees - Accepts an array of email addresses or email addresses separated by commas.
|
||||
- `eventLocation` (string, optional): Event location.
|
||||
- `eventDescription` (string, optional): Event description.
|
||||
- `eventId` (string, optional): Event ID - An ID from your application to associate this event with. You can use this ID to sync updates to this event later.
|
||||
- `includeMeetLink` (boolean, optional): Include Google Meet link? - Automatically creates Google Meet conference link for this event.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GOOGLE_CALENDAR_UPDATE_EVENT">
|
||||
**Description:** Update an existing event in Google Calendar.
|
||||
|
||||
**Parameters:**
|
||||
- `eventId` (string, required): Event ID - The ID of the event to update.
|
||||
- `eventName` (string, optional): Event name.
|
||||
- `startTime` (string, optional): Start time - Accepts Unix timestamp or ISO8601 date formats.
|
||||
- `endTime` (string, optional): End time - Defaults to one hour after the start time if left blank.
|
||||
- `calendar` (string, optional): Calendar - Use Connect Portal Workflow Settings to allow users to select which calendar the event will be added to. Defaults to the user's primary calendar if left blank.
|
||||
- `attendees` (string, optional): Attendees - Accepts an array of email addresses or email addresses separated by commas.
|
||||
- `eventLocation` (string, optional): Event location.
|
||||
- `eventDescription` (string, optional): Event description.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GOOGLE_CALENDAR_LIST_EVENTS">
|
||||
**Description:** List events from Google Calendar.
|
||||
|
||||
**Parameters:**
|
||||
- `calendar` (string, optional): Calendar - Use Connect Portal Workflow Settings to allow users to select which calendar the event will be added to. Defaults to the user's primary calendar if left blank.
|
||||
- `after` (string, optional): After - Filters events that start after the provided date (Unix in milliseconds or ISO timestamp). (example: "2025-04-12T10:00:00Z or 1712908800000").
|
||||
- `before` (string, optional): Before - Filters events that end before the provided date (Unix in milliseconds or ISO timestamp). (example: "2025-04-12T10:00:00Z or 1712908800000").
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GOOGLE_CALENDAR_GET_EVENT_BY_ID">
|
||||
**Description:** Get a specific event by ID from Google Calendar.
|
||||
|
||||
**Parameters:**
|
||||
- `eventId` (string, required): Event ID.
|
||||
- `calendar` (string, optional): Calendar - Use Connect Portal Workflow Settings to allow users to select which calendar the event will be added to. Defaults to the user's primary calendar if left blank.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GOOGLE_CALENDAR_DELETE_EVENT">
|
||||
**Description:** Delete an event from Google Calendar.
|
||||
|
||||
**Parameters:**
|
||||
- `eventId` (string, required): Event ID - The ID of the calendar event to be deleted.
|
||||
- `calendar` (string, optional): Calendar - Use Connect Portal Workflow Settings to allow users to select which calendar the event will be added to. Defaults to the user's primary calendar if left blank.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GOOGLE_CALENDAR_GET_CONTACTS">
|
||||
**Description:** Get contacts from Google Calendar.
|
||||
|
||||
**Parameters:**
|
||||
- `paginationParameters` (object, optional): Pagination Parameters.
|
||||
```json
|
||||
{
|
||||
"pageCursor": "page_cursor_string"
|
||||
}
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GOOGLE_CALENDAR_SEARCH_CONTACTS">
|
||||
**Description:** Search for contacts in Google Calendar.
|
||||
|
||||
**Parameters:**
|
||||
- `query` (string, optional): Search query to search contacts.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GOOGLE_CALENDAR_LIST_DIRECTORY_PEOPLE">
|
||||
**Description:** List directory people.
|
||||
|
||||
**Parameters:**
|
||||
- `paginationParameters` (object, optional): Pagination Parameters.
|
||||
```json
|
||||
{
|
||||
"pageCursor": "page_cursor_string"
|
||||
}
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GOOGLE_CALENDAR_SEARCH_DIRECTORY_PEOPLE">
|
||||
**Description:** Search directory people.
|
||||
|
||||
**Parameters:**
|
||||
- `query` (string, required): Search query to search contacts.
|
||||
- `paginationParameters` (object, optional): Pagination Parameters.
|
||||
```json
|
||||
{
|
||||
"pageCursor": "page_cursor_string"
|
||||
}
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GOOGLE_CALENDAR_LIST_OTHER_CONTACTS">
|
||||
**Description:** List other contacts.
|
||||
|
||||
**Parameters:**
|
||||
- `paginationParameters` (object, optional): Pagination Parameters.
|
||||
```json
|
||||
{
|
||||
"pageCursor": "page_cursor_string"
|
||||
}
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GOOGLE_CALENDAR_SEARCH_OTHER_CONTACTS">
|
||||
**Description:** Search other contacts.
|
||||
|
||||
**Parameters:**
|
||||
- `query` (string, optional): Search query to search contacts.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GOOGLE_CALENDAR_GET_AVAILABILITY">
|
||||
**Description:** Get availability information for calendars.
|
||||
|
||||
**Parameters:**
|
||||
- `timeMin` (string, required): The start of the interval. In ISO format.
|
||||
- `timeMax` (string, required): The end of the interval. In ISO format.
|
||||
- `timeZone` (string, optional): Time zone used in the response. Optional. The default is UTC.
|
||||
- `items` (array, optional): List of calendars and/or groups to query. Defaults to the user default calendar.
|
||||
- `timeMin` (string, required): Start time (RFC3339 format)
|
||||
- `timeMax` (string, required): End time (RFC3339 format)
|
||||
- `items` (array, required): Calendar IDs to check
|
||||
```json
|
||||
[
|
||||
{
|
||||
"id": "calendar_id_1"
|
||||
},
|
||||
{
|
||||
"id": "calendar_id_2"
|
||||
"id": "calendar_id"
|
||||
}
|
||||
]
|
||||
```
|
||||
- `timeZone` (string, optional): Time zone used in the response. The default is UTC.
|
||||
- `groupExpansionMax` (integer, optional): Maximal number of calendar identifiers to be provided for a single group. Maximum: 100
|
||||
- `calendarExpansionMax` (integer, optional): Maximal number of calendars for which FreeBusy information is to be provided. Maximum: 50
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_calendar/create_event">
|
||||
**Description:** Create a new event in the specified calendar.
|
||||
|
||||
**Parameters:**
|
||||
- `calendarId` (string, required): Calendar ID (use 'primary' for main calendar)
|
||||
- `summary` (string, required): Event title/summary
|
||||
- `start_dateTime` (string, required): Start time in RFC3339 format (e.g., 2024-01-20T10:00:00-07:00)
|
||||
- `end_dateTime` (string, required): End time in RFC3339 format
|
||||
- `description` (string, optional): Event description
|
||||
- `timeZone` (string, optional): Time zone (e.g., America/Los_Angeles)
|
||||
- `location` (string, optional): Geographic location of the event as free-form text.
|
||||
- `attendees` (array, optional): List of attendees for the event.
|
||||
```json
|
||||
[
|
||||
{
|
||||
"email": "attendee@example.com",
|
||||
"displayName": "Attendee Name",
|
||||
"optional": false
|
||||
}
|
||||
]
|
||||
```
|
||||
- `reminders` (object, optional): Information about the event's reminders.
|
||||
```json
|
||||
{
|
||||
"useDefault": true,
|
||||
"overrides": [
|
||||
{
|
||||
"method": "email",
|
||||
"minutes": 15
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
- `conferenceData` (object, optional): The conference-related information, such as details of a Google Meet conference.
|
||||
```json
|
||||
{
|
||||
"createRequest": {
|
||||
"requestId": "unique-request-id",
|
||||
"conferenceSolutionKey": {
|
||||
"type": "hangoutsMeet"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
- `visibility` (string, optional): Visibility of the event. Options: default, public, private, confidential. Default: default
|
||||
- `transparency` (string, optional): Whether the event blocks time on the calendar. Options: opaque, transparent. Default: opaque
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_calendar/view_events">
|
||||
**Description:** Retrieve events for the specified calendar.
|
||||
|
||||
**Parameters:**
|
||||
- `calendarId` (string, required): Calendar ID (use 'primary' for main calendar)
|
||||
- `timeMin` (string, optional): Lower bound for events (RFC3339)
|
||||
- `timeMax` (string, optional): Upper bound for events (RFC3339)
|
||||
- `maxResults` (integer, optional): Maximum number of events (default 10). Minimum: 1, Maximum: 2500
|
||||
- `orderBy` (string, optional): The order of the events returned in the result. Options: startTime, updated. Default: startTime
|
||||
- `singleEvents` (boolean, optional): Whether to expand recurring events into instances and only return single one-off events and instances of recurring events. Default: true
|
||||
- `showDeleted` (boolean, optional): Whether to include deleted events (with status equals cancelled) in the result. Default: false
|
||||
- `showHiddenInvitations` (boolean, optional): Whether to include hidden invitations in the result. Default: false
|
||||
- `q` (string, optional): Free text search terms to find events that match these terms in any field.
|
||||
- `pageToken` (string, optional): Token specifying which result page to return.
|
||||
- `timeZone` (string, optional): Time zone used in the response.
|
||||
- `updatedMin` (string, optional): Lower bound for an event's last modification time (RFC3339) to filter by.
|
||||
- `iCalUID` (string, optional): Specifies an event ID in the iCalendar format to be provided in the response.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_calendar/update_event">
|
||||
**Description:** Update an existing event.
|
||||
|
||||
**Parameters:**
|
||||
- `calendarId` (string, required): Calendar ID
|
||||
- `eventId` (string, required): Event ID to update
|
||||
- `summary` (string, optional): Updated event title
|
||||
- `description` (string, optional): Updated event description
|
||||
- `start_dateTime` (string, optional): Updated start time
|
||||
- `end_dateTime` (string, optional): Updated end time
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_calendar/delete_event">
|
||||
**Description:** Delete a specified event.
|
||||
|
||||
**Parameters:**
|
||||
- `calendarId` (string, required): Calendar ID
|
||||
- `eventId` (string, required): Event ID to delete
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_calendar/view_calendar_list">
|
||||
**Description:** Retrieve user's calendar list.
|
||||
|
||||
**Parameters:**
|
||||
- `maxResults` (integer, optional): Maximum number of entries returned on one result page. Minimum: 1
|
||||
- `pageToken` (string, optional): Token specifying which result page to return.
|
||||
- `showDeleted` (boolean, optional): Whether to include deleted calendar list entries in the result. Default: false
|
||||
- `showHidden` (boolean, optional): Whether to show hidden entries. Default: false
|
||||
- `minAccessRole` (string, optional): The minimum access role for the user in the returned entries. Options: freeBusyReader, owner, reader, writer
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
@@ -180,19 +160,13 @@ uv add crewai-tools
|
||||
|
||||
```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]
|
||||
apps=['google_calendar'] # All Google Calendar actions will be available
|
||||
)
|
||||
|
||||
# Task to create a meeting
|
||||
@@ -214,19 +188,11 @@ crew.kickoff()
|
||||
### Filtering Specific Calendar Tools
|
||||
|
||||
```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
|
||||
apps=['google_calendar/create_event', 'google_calendar/get_availability']
|
||||
)
|
||||
|
||||
# Task to schedule a meeting with availability check
|
||||
@@ -248,17 +214,12 @@ 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]
|
||||
apps=['google_calendar']
|
||||
)
|
||||
|
||||
# Task to manage event updates
|
||||
@@ -266,10 +227,10 @@ 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
|
||||
3. Check availability for upcoming meetings
|
||||
""",
|
||||
agent=event_manager,
|
||||
expected_output="Weekly events updated with proper locations and new attendees added"
|
||||
expected_output="Weekly events updated with proper locations and availability checked"
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
@@ -280,33 +241,28 @@ crew = Crew(
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### Contact and Availability Management
|
||||
### Availability and Calendar Management
|
||||
|
||||
```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]
|
||||
goal="Coordinate availability and manage calendars for scheduling",
|
||||
backstory="An AI assistant that specializes in availability management and calendar coordination.",
|
||||
apps=['google_calendar']
|
||||
)
|
||||
|
||||
# Task to coordinate availability
|
||||
availability_task = Task(
|
||||
description="""
|
||||
1. Search for contacts in the engineering department
|
||||
2. Check availability for all engineers next Friday afternoon
|
||||
1. Get the list of available calendars
|
||||
2. Check availability for all calendars next Friday afternoon
|
||||
3. Create a team meeting for the first available 2-hour slot
|
||||
4. Include Google Meet link and send invitations
|
||||
""",
|
||||
agent=availability_coordinator,
|
||||
expected_output="Team meeting scheduled based on availability with all engineers invited"
|
||||
expected_output="Team meeting scheduled based on availability with all team members invited"
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
@@ -321,17 +277,12 @@ 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]
|
||||
apps=['google_calendar']
|
||||
)
|
||||
|
||||
# Complex scheduling automation task
|
||||
@@ -365,21 +316,16 @@ crew.kickoff()
|
||||
- Check if calendar sharing settings allow the required access level
|
||||
|
||||
**Event Creation Issues**
|
||||
- Verify that time formats are correct (ISO8601 or Unix timestamps)
|
||||
- Verify that time formats are correct (RFC3339 format)
|
||||
- Ensure attendee email addresses are properly formatted
|
||||
- Check that the target calendar exists and is accessible
|
||||
- Verify time zones are correctly specified
|
||||
|
||||
**Availability and Time Conflicts**
|
||||
- Use proper ISO format for time ranges when checking availability
|
||||
- Use proper RFC3339 format for time ranges when checking availability
|
||||
- Ensure time zones are consistent across all operations
|
||||
- Verify that calendar IDs are correct when checking multiple calendars
|
||||
|
||||
**Contact and People Search**
|
||||
- Ensure search queries are properly formatted
|
||||
- Check that directory access permissions are granted
|
||||
- Verify that contact information is up to date and accessible
|
||||
|
||||
**Event Updates and Deletions**
|
||||
- Verify that event IDs are correct and events exist
|
||||
- Ensure you have edit permissions for the events
|
||||
|
||||
402
docs/en/enterprise/integrations/google_contacts.mdx
Normal file
402
docs/en/enterprise/integrations/google_contacts.mdx
Normal file
@@ -0,0 +1,402 @@
|
||||
---
|
||||
title: Google Contacts Integration
|
||||
description: "Contact and directory management with Google Contacts integration for CrewAI."
|
||||
icon: "address-book"
|
||||
mode: "wide"
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
Enable your agents to manage contacts and directory information through Google Contacts. Access personal contacts, search directory people, create and update contact information, and manage contact groups with AI-powered automation.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
Before using the Google Contacts integration, ensure you have:
|
||||
|
||||
- A [CrewAI AMP](https://app.crewai.com) account with an active subscription
|
||||
- A Google account with Google Contacts access
|
||||
- Connected your Google account through the [Integrations page](https://app.crewai.com/crewai_plus/connectors)
|
||||
|
||||
## Setting Up Google Contacts Integration
|
||||
|
||||
### 1. Connect Your Google Account
|
||||
|
||||
1. Navigate to [CrewAI AMP Integrations](https://app.crewai.com/crewai_plus/connectors)
|
||||
2. Find **Google Contacts** in the Authentication Integrations section
|
||||
3. Click **Connect** and complete the OAuth flow
|
||||
4. Grant the necessary permissions for contacts and directory access
|
||||
5. Copy your Enterprise Token from [Integration Settings](https://app.crewai.com/crewai_plus/settings/integrations)
|
||||
|
||||
### 2. Install Required Package
|
||||
|
||||
```bash
|
||||
uv add crewai-tools
|
||||
```
|
||||
|
||||
## Available Actions
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="google_contacts/get_contacts">
|
||||
**Description:** Retrieve user's contacts from Google Contacts.
|
||||
|
||||
**Parameters:**
|
||||
- `pageSize` (integer, optional): Number of contacts to return (max 1000). Minimum: 1, Maximum: 1000
|
||||
- `pageToken` (string, optional): The token of the page to retrieve.
|
||||
- `personFields` (string, optional): Fields to include (e.g., 'names,emailAddresses,phoneNumbers'). Default: names,emailAddresses,phoneNumbers
|
||||
- `requestSyncToken` (boolean, optional): Whether the response should include a sync token. Default: false
|
||||
- `sortOrder` (string, optional): The order in which the connections should be sorted. Options: LAST_MODIFIED_ASCENDING, LAST_MODIFIED_DESCENDING, FIRST_NAME_ASCENDING, LAST_NAME_ASCENDING
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_contacts/search_contacts">
|
||||
**Description:** Search for contacts using a query string.
|
||||
|
||||
**Parameters:**
|
||||
- `query` (string, required): Search query string
|
||||
- `readMask` (string, required): Fields to read (e.g., 'names,emailAddresses,phoneNumbers')
|
||||
- `pageSize` (integer, optional): Number of results to return. Minimum: 1, Maximum: 30
|
||||
- `pageToken` (string, optional): Token specifying which result page to return.
|
||||
- `sources` (array, optional): The sources to search in. Options: READ_SOURCE_TYPE_CONTACT, READ_SOURCE_TYPE_PROFILE. Default: READ_SOURCE_TYPE_CONTACT
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_contacts/list_directory_people">
|
||||
**Description:** List people in the authenticated user's directory.
|
||||
|
||||
**Parameters:**
|
||||
- `sources` (array, required): Directory sources to search within. Options: DIRECTORY_SOURCE_TYPE_DOMAIN_PROFILE, DIRECTORY_SOURCE_TYPE_DOMAIN_CONTACT. Default: DIRECTORY_SOURCE_TYPE_DOMAIN_PROFILE
|
||||
- `pageSize` (integer, optional): Number of people to return. Minimum: 1, Maximum: 1000
|
||||
- `pageToken` (string, optional): Token specifying which result page to return.
|
||||
- `readMask` (string, optional): Fields to read (e.g., 'names,emailAddresses')
|
||||
- `requestSyncToken` (boolean, optional): Whether the response should include a sync token. Default: false
|
||||
- `mergeSources` (array, optional): Additional data to merge into the directory people responses. Options: CONTACT
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_contacts/search_directory_people">
|
||||
**Description:** Search for people in the directory.
|
||||
|
||||
**Parameters:**
|
||||
- `query` (string, required): Search query
|
||||
- `sources` (string, required): Directory sources (use 'DIRECTORY_SOURCE_TYPE_DOMAIN_PROFILE')
|
||||
- `pageSize` (integer, optional): Number of results to return
|
||||
- `readMask` (string, optional): Fields to read
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_contacts/list_other_contacts">
|
||||
**Description:** List other contacts (not in user's personal contacts).
|
||||
|
||||
**Parameters:**
|
||||
- `pageSize` (integer, optional): Number of contacts to return. Minimum: 1, Maximum: 1000
|
||||
- `pageToken` (string, optional): Token specifying which result page to return.
|
||||
- `readMask` (string, optional): Fields to read
|
||||
- `requestSyncToken` (boolean, optional): Whether the response should include a sync token. Default: false
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_contacts/search_other_contacts">
|
||||
**Description:** Search other contacts.
|
||||
|
||||
**Parameters:**
|
||||
- `query` (string, required): Search query
|
||||
- `readMask` (string, required): Fields to read (e.g., 'names,emailAddresses')
|
||||
- `pageSize` (integer, optional): Number of results
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_contacts/get_person">
|
||||
**Description:** Get a single person's contact information by resource name.
|
||||
|
||||
**Parameters:**
|
||||
- `resourceName` (string, required): The resource name of the person to get (e.g., 'people/c123456789')
|
||||
- `personFields` (string, optional): Fields to include (e.g., 'names,emailAddresses,phoneNumbers'). Default: names,emailAddresses,phoneNumbers
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_contacts/create_contact">
|
||||
**Description:** Create a new contact in the user's address book.
|
||||
|
||||
**Parameters:**
|
||||
- `names` (array, optional): Person's names
|
||||
```json
|
||||
[
|
||||
{
|
||||
"givenName": "John",
|
||||
"familyName": "Doe",
|
||||
"displayName": "John Doe"
|
||||
}
|
||||
]
|
||||
```
|
||||
- `emailAddresses` (array, optional): Email addresses
|
||||
```json
|
||||
[
|
||||
{
|
||||
"value": "john.doe@example.com",
|
||||
"type": "work"
|
||||
}
|
||||
]
|
||||
```
|
||||
- `phoneNumbers` (array, optional): Phone numbers
|
||||
```json
|
||||
[
|
||||
{
|
||||
"value": "+1234567890",
|
||||
"type": "mobile"
|
||||
}
|
||||
]
|
||||
```
|
||||
- `addresses` (array, optional): Postal addresses
|
||||
```json
|
||||
[
|
||||
{
|
||||
"formattedValue": "123 Main St, City, State 12345",
|
||||
"type": "home"
|
||||
}
|
||||
]
|
||||
```
|
||||
- `organizations` (array, optional): Organizations/companies
|
||||
```json
|
||||
[
|
||||
{
|
||||
"name": "Company Name",
|
||||
"title": "Job Title",
|
||||
"type": "work"
|
||||
}
|
||||
]
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_contacts/update_contact">
|
||||
**Description:** Update an existing contact's information.
|
||||
|
||||
**Parameters:**
|
||||
- `resourceName` (string, required): The resource name of the person to update (e.g., 'people/c123456789')
|
||||
- `updatePersonFields` (string, required): Fields to update (e.g., 'names,emailAddresses,phoneNumbers')
|
||||
- `names` (array, optional): Person's names
|
||||
- `emailAddresses` (array, optional): Email addresses
|
||||
- `phoneNumbers` (array, optional): Phone numbers
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_contacts/delete_contact">
|
||||
**Description:** Delete a contact from the user's address book.
|
||||
|
||||
**Parameters:**
|
||||
- `resourceName` (string, required): The resource name of the person to delete (e.g., 'people/c123456789')
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_contacts/batch_get_people">
|
||||
**Description:** Get information about multiple people in a single request.
|
||||
|
||||
**Parameters:**
|
||||
- `resourceNames` (array, required): Resource names of people to get. Maximum: 200 items
|
||||
- `personFields` (string, optional): Fields to include (e.g., 'names,emailAddresses,phoneNumbers'). Default: names,emailAddresses,phoneNumbers
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_contacts/list_contact_groups">
|
||||
**Description:** List the user's contact groups (labels).
|
||||
|
||||
**Parameters:**
|
||||
- `pageSize` (integer, optional): Number of contact groups to return. Minimum: 1, Maximum: 1000
|
||||
- `pageToken` (string, optional): Token specifying which result page to return.
|
||||
- `groupFields` (string, optional): Fields to include (e.g., 'name,memberCount,clientData'). Default: name,memberCount
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
## Usage Examples
|
||||
|
||||
### Basic Google Contacts Agent Setup
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
# Create an agent with Google Contacts capabilities
|
||||
contacts_agent = Agent(
|
||||
role="Contact Manager",
|
||||
goal="Manage contacts and directory information efficiently",
|
||||
backstory="An AI assistant specialized in contact management and directory operations.",
|
||||
apps=['google_contacts'] # All Google Contacts actions will be available
|
||||
)
|
||||
|
||||
# Task to retrieve and organize contacts
|
||||
contact_management_task = Task(
|
||||
description="Retrieve all contacts and organize them by company affiliation",
|
||||
agent=contacts_agent,
|
||||
expected_output="Contacts retrieved and organized by company with summary report"
|
||||
)
|
||||
|
||||
# Run the task
|
||||
crew = Crew(
|
||||
agents=[contacts_agent],
|
||||
tasks=[contact_management_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### Directory Search and Management
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
directory_manager = Agent(
|
||||
role="Directory Manager",
|
||||
goal="Search and manage directory people and contacts",
|
||||
backstory="An AI assistant that specializes in directory management and people search.",
|
||||
apps=[
|
||||
'google_contacts/search_directory_people',
|
||||
'google_contacts/list_directory_people',
|
||||
'google_contacts/search_contacts'
|
||||
]
|
||||
)
|
||||
|
||||
# Task to search and manage directory
|
||||
directory_task = Task(
|
||||
description="Search for team members in the company directory and create a team contact list",
|
||||
agent=directory_manager,
|
||||
expected_output="Team directory compiled with contact information"
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[directory_manager],
|
||||
tasks=[directory_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### Contact Creation and Updates
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
contact_curator = Agent(
|
||||
role="Contact Curator",
|
||||
goal="Create and update contact information systematically",
|
||||
backstory="An AI assistant that maintains accurate and up-to-date contact information.",
|
||||
apps=['google_contacts']
|
||||
)
|
||||
|
||||
# Task to create and update contacts
|
||||
curation_task = Task(
|
||||
description="""
|
||||
1. Search for existing contacts related to new business partners
|
||||
2. Create new contacts for partners not in the system
|
||||
3. Update existing contact information with latest details
|
||||
4. Organize contacts into appropriate groups
|
||||
""",
|
||||
agent=contact_curator,
|
||||
expected_output="Contact database updated with new partners and organized groups"
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[contact_curator],
|
||||
tasks=[curation_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### Contact Group Management
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
group_organizer = Agent(
|
||||
role="Contact Group Organizer",
|
||||
goal="Organize contacts into meaningful groups and categories",
|
||||
backstory="An AI assistant that specializes in contact organization and group management.",
|
||||
apps=['google_contacts']
|
||||
)
|
||||
|
||||
# Task to organize contact groups
|
||||
organization_task = Task(
|
||||
description="""
|
||||
1. List all existing contact groups
|
||||
2. Analyze contact distribution across groups
|
||||
3. Create new groups for better organization
|
||||
4. Move contacts to appropriate groups based on their information
|
||||
""",
|
||||
agent=group_organizer,
|
||||
expected_output="Contacts organized into logical groups with improved structure"
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[group_organizer],
|
||||
tasks=[organization_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### Comprehensive Contact Management
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
contact_specialist = Agent(
|
||||
role="Contact Management Specialist",
|
||||
goal="Provide comprehensive contact management across all sources",
|
||||
backstory="An AI assistant that handles all aspects of contact management including personal, directory, and other contacts.",
|
||||
apps=['google_contacts']
|
||||
)
|
||||
|
||||
# Complex contact management task
|
||||
comprehensive_task = Task(
|
||||
description="""
|
||||
1. Retrieve contacts from all sources (personal, directory, other)
|
||||
2. Search for duplicate contacts and merge information
|
||||
3. Update outdated contact information
|
||||
4. Create missing contacts for important stakeholders
|
||||
5. Organize contacts into meaningful groups
|
||||
6. Generate a comprehensive contact report
|
||||
""",
|
||||
agent=contact_specialist,
|
||||
expected_output="Complete contact management performed with unified contact database and detailed report"
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[contact_specialist],
|
||||
tasks=[comprehensive_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Common Issues
|
||||
|
||||
**Permission Errors**
|
||||
- Ensure your Google account has appropriate permissions for contacts access
|
||||
- Verify that the OAuth connection includes required scopes for Google Contacts API
|
||||
- Check that directory access permissions are granted for organization contacts
|
||||
|
||||
**Resource Name Format Issues**
|
||||
- Ensure resource names follow the correct format (e.g., 'people/c123456789' for contacts)
|
||||
- Verify that contact group resource names use the format 'contactGroups/groupId'
|
||||
- Check that resource names exist and are accessible
|
||||
|
||||
**Search and Query Issues**
|
||||
- Ensure search queries are properly formatted and not empty
|
||||
- Use appropriate readMask fields for the data you need
|
||||
- Verify that search sources are correctly specified (contacts vs profiles)
|
||||
|
||||
**Contact Creation and Updates**
|
||||
- Ensure required fields are provided when creating contacts
|
||||
- Verify that email addresses and phone numbers are properly formatted
|
||||
- Check that updatePersonFields parameter includes all fields being updated
|
||||
|
||||
**Directory Access Issues**
|
||||
- Ensure you have appropriate permissions to access organization directory
|
||||
- Verify that directory sources are correctly specified
|
||||
- Check that your organization allows API access to directory information
|
||||
|
||||
**Pagination and Limits**
|
||||
- Be mindful of page size limits (varies by endpoint)
|
||||
- Use pageToken for pagination through large result sets
|
||||
- Respect API rate limits and implement appropriate delays
|
||||
|
||||
**Contact Groups and Organization**
|
||||
- Ensure contact group names are unique when creating new groups
|
||||
- Verify that contacts exist before adding them to groups
|
||||
- Check that you have permissions to modify contact groups
|
||||
|
||||
### Getting Help
|
||||
|
||||
<Card title="Need Help?" icon="headset" href="mailto:support@crewai.com">
|
||||
Contact our support team for assistance with Google Contacts integration setup or troubleshooting.
|
||||
</Card>
|
||||
228
docs/en/enterprise/integrations/google_docs.mdx
Normal file
228
docs/en/enterprise/integrations/google_docs.mdx
Normal file
@@ -0,0 +1,228 @@
|
||||
---
|
||||
title: Google Docs Integration
|
||||
description: "Document creation and editing with Google Docs integration for CrewAI."
|
||||
icon: "file-lines"
|
||||
mode: "wide"
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
Enable your agents to create, edit, and manage Google Docs documents with text manipulation and formatting. Automate document creation, insert and replace text, manage content ranges, and streamline your document workflows with AI-powered automation.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
Before using the Google Docs integration, ensure you have:
|
||||
|
||||
- A [CrewAI AMP](https://app.crewai.com) account with an active subscription
|
||||
- A Google account with Google Docs access
|
||||
- Connected your Google account through the [Integrations page](https://app.crewai.com/crewai_plus/connectors)
|
||||
|
||||
## Setting Up Google Docs Integration
|
||||
|
||||
### 1. Connect Your Google Account
|
||||
|
||||
1. Navigate to [CrewAI AMP Integrations](https://app.crewai.com/crewai_plus/connectors)
|
||||
2. Find **Google Docs** in the Authentication Integrations section
|
||||
3. Click **Connect** and complete the OAuth flow
|
||||
4. Grant the necessary permissions for document access
|
||||
5. Copy your Enterprise Token from [Integration Settings](https://app.crewai.com/crewai_plus/settings/integrations)
|
||||
|
||||
### 2. Install Required Package
|
||||
|
||||
```bash
|
||||
uv add crewai-tools
|
||||
```
|
||||
|
||||
## Available Actions
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="google_docs/create_document">
|
||||
**Description:** Create a new Google Document.
|
||||
|
||||
**Parameters:**
|
||||
- `title` (string, optional): The title for the new document.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_docs/get_document">
|
||||
**Description:** Get the contents and metadata of a Google Document.
|
||||
|
||||
**Parameters:**
|
||||
- `documentId` (string, required): The ID of the document to retrieve.
|
||||
- `includeTabsContent` (boolean, optional): Whether to include tab content. Default is `false`.
|
||||
- `suggestionsViewMode` (string, optional): The suggestions view mode to apply to the document. Enum: `DEFAULT_FOR_CURRENT_ACCESS`, `PREVIEW_SUGGESTIONS_ACCEPTED`, `PREVIEW_WITHOUT_SUGGESTIONS`. Default is `DEFAULT_FOR_CURRENT_ACCESS`.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_docs/batch_update">
|
||||
**Description:** Apply one or more updates to a Google Document.
|
||||
|
||||
**Parameters:**
|
||||
- `documentId` (string, required): The ID of the document to update.
|
||||
- `requests` (array, required): A list of updates to apply to the document. Each item is an object representing a request.
|
||||
- `writeControl` (object, optional): Provides control over how write requests are executed. Contains `requiredRevisionId` (string) and `targetRevisionId` (string).
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_docs/insert_text">
|
||||
**Description:** Insert text into a Google Document at a specific location.
|
||||
|
||||
**Parameters:**
|
||||
- `documentId` (string, required): The ID of the document to update.
|
||||
- `text` (string, required): The text to insert.
|
||||
- `index` (integer, optional): The zero-based index where to insert the text. Default is `1`.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_docs/replace_text">
|
||||
**Description:** Replace all instances of text in a Google Document.
|
||||
|
||||
**Parameters:**
|
||||
- `documentId` (string, required): The ID of the document to update.
|
||||
- `containsText` (string, required): The text to find and replace.
|
||||
- `replaceText` (string, required): The text to replace it with.
|
||||
- `matchCase` (boolean, optional): Whether the search should respect case. Default is `false`.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_docs/delete_content_range">
|
||||
**Description:** Delete content from a specific range in a Google Document.
|
||||
|
||||
**Parameters:**
|
||||
- `documentId` (string, required): The ID of the document to update.
|
||||
- `startIndex` (integer, required): The start index of the range to delete.
|
||||
- `endIndex` (integer, required): The end index of the range to delete.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_docs/insert_page_break">
|
||||
**Description:** Insert a page break at a specific location in a Google Document.
|
||||
|
||||
**Parameters:**
|
||||
- `documentId` (string, required): The ID of the document to update.
|
||||
- `index` (integer, optional): The zero-based index where to insert the page break. Default is `1`.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_docs/create_named_range">
|
||||
**Description:** Create a named range in a Google Document.
|
||||
|
||||
**Parameters:**
|
||||
- `documentId` (string, required): The ID of the document to update.
|
||||
- `name` (string, required): The name for the named range.
|
||||
- `startIndex` (integer, required): The start index of the range.
|
||||
- `endIndex` (integer, required): The end index of the range.
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
## Usage Examples
|
||||
|
||||
### Basic Google Docs Agent Setup
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
# Create an agent with Google Docs capabilities
|
||||
docs_agent = Agent(
|
||||
role="Document Creator",
|
||||
goal="Create and manage Google Docs documents efficiently",
|
||||
backstory="An AI assistant specialized in Google Docs document creation and editing.",
|
||||
apps=['google_docs'] # All Google Docs actions will be available
|
||||
)
|
||||
|
||||
# Task to create a new document
|
||||
create_doc_task = Task(
|
||||
description="Create a new Google Document titled 'Project Status Report'",
|
||||
agent=docs_agent,
|
||||
expected_output="New Google Document 'Project Status Report' created successfully"
|
||||
)
|
||||
|
||||
# Run the task
|
||||
crew = Crew(
|
||||
agents=[docs_agent],
|
||||
tasks=[create_doc_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### Text Editing and Content Management
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
# Create an agent focused on text editing
|
||||
text_editor = Agent(
|
||||
role="Document Editor",
|
||||
goal="Edit and update content in Google Docs documents",
|
||||
backstory="An AI assistant skilled in precise text editing and content management.",
|
||||
apps=['google_docs/insert_text', 'google_docs/replace_text', 'google_docs/delete_content_range']
|
||||
)
|
||||
|
||||
# Task to edit document content
|
||||
edit_content_task = Task(
|
||||
description="In document 'your_document_id', insert the text 'Executive Summary: ' at the beginning, then replace all instances of 'TODO' with 'COMPLETED'.",
|
||||
agent=text_editor,
|
||||
expected_output="Document updated with new text inserted and TODO items replaced."
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[text_editor],
|
||||
tasks=[edit_content_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### Advanced Document Operations
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
# Create an agent for advanced document operations
|
||||
document_formatter = Agent(
|
||||
role="Document Formatter",
|
||||
goal="Apply advanced formatting and structure to Google Docs",
|
||||
backstory="An AI assistant that handles complex document formatting and organization.",
|
||||
apps=['google_docs/batch_update', 'google_docs/insert_page_break', 'google_docs/create_named_range']
|
||||
)
|
||||
|
||||
# Task to format document
|
||||
format_doc_task = Task(
|
||||
description="In document 'your_document_id', insert a page break at position 100, create a named range called 'Introduction' for characters 1-50, and apply batch formatting updates.",
|
||||
agent=document_formatter,
|
||||
expected_output="Document formatted with page break, named range, and styling applied."
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[document_formatter],
|
||||
tasks=[format_doc_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Common Issues
|
||||
|
||||
**Authentication Errors**
|
||||
- Ensure your Google account has the necessary permissions for Google Docs access.
|
||||
- Verify that the OAuth connection includes all required scopes (`https://www.googleapis.com/auth/documents`).
|
||||
|
||||
**Document ID Issues**
|
||||
- Double-check document IDs for correctness.
|
||||
- Ensure the document exists and is accessible to your account.
|
||||
- Document IDs can be found in the Google Docs URL.
|
||||
|
||||
**Text Insertion and Range Operations**
|
||||
- When using `insert_text` or `delete_content_range`, ensure index positions are valid.
|
||||
- Remember that Google Docs uses zero-based indexing.
|
||||
- The document must have content at the specified index positions.
|
||||
|
||||
**Batch Update Request Formatting**
|
||||
- When using `batch_update`, ensure the `requests` array is correctly formatted according to the Google Docs API documentation.
|
||||
- Complex updates require specific JSON structures for each request type.
|
||||
|
||||
**Replace Text Operations**
|
||||
- For `replace_text`, ensure the `containsText` parameter exactly matches the text you want to replace.
|
||||
- Use `matchCase` parameter to control case sensitivity.
|
||||
|
||||
### Getting Help
|
||||
|
||||
<Card title="Need Help?" icon="headset" href="mailto:support@crewai.com">
|
||||
Contact our support team for assistance with Google Docs integration setup or troubleshooting.
|
||||
</Card>
|
||||
213
docs/en/enterprise/integrations/google_drive.mdx
Normal file
213
docs/en/enterprise/integrations/google_drive.mdx
Normal file
@@ -0,0 +1,213 @@
|
||||
---
|
||||
title: Google Drive Integration
|
||||
description: "File storage and management with Google Drive integration for CrewAI."
|
||||
icon: "google"
|
||||
mode: "wide"
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
Enable your agents to manage files and folders through Google Drive. Upload, download, organize, and share files, create folders, and streamline your document management workflows with AI-powered automation.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
Before using the Google Drive integration, ensure you have:
|
||||
|
||||
- A [CrewAI AMP](https://app.crewai.com) account with an active subscription
|
||||
- A Google account with Google Drive access
|
||||
- Connected your Google account through the [Integrations page](https://app.crewai.com/crewai_plus/connectors)
|
||||
|
||||
## Setting Up Google Drive Integration
|
||||
|
||||
### 1. Connect Your Google Account
|
||||
|
||||
1. Navigate to [CrewAI AMP Integrations](https://app.crewai.com/crewai_plus/connectors)
|
||||
2. Find **Google Drive** in the Authentication Integrations section
|
||||
3. Click **Connect** and complete the OAuth flow
|
||||
4. Grant the necessary permissions for file and folder management
|
||||
5. Copy your Enterprise Token from [Integration Settings](https://app.crewai.com/crewai_plus/settings/integrations)
|
||||
|
||||
### 2. Install Required Package
|
||||
|
||||
```bash
|
||||
uv add crewai-tools
|
||||
```
|
||||
|
||||
## Available Actions
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="google_drive/get_file">
|
||||
**Description:** Get a file by ID from Google Drive.
|
||||
|
||||
**Parameters:**
|
||||
- `file_id` (string, required): The ID of the file to retrieve.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_drive/list_files">
|
||||
**Description:** List files in Google Drive.
|
||||
|
||||
**Parameters:**
|
||||
- `q` (string, optional): Query string to filter files (example: "name contains 'report'").
|
||||
- `page_size` (integer, optional): Maximum number of files to return (default: 100, max: 1000).
|
||||
- `page_token` (string, optional): Token for retrieving the next page of results.
|
||||
- `order_by` (string, optional): Sort order (example: "name", "createdTime desc", "modifiedTime").
|
||||
- `spaces` (string, optional): Comma-separated list of spaces to query (drive, appDataFolder, photos).
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_drive/upload_file">
|
||||
**Description:** Upload a file to Google Drive.
|
||||
|
||||
**Parameters:**
|
||||
- `name` (string, required): Name of the file to create.
|
||||
- `content` (string, required): Content of the file to upload.
|
||||
- `mime_type` (string, optional): MIME type of the file (example: "text/plain", "application/pdf").
|
||||
- `parent_folder_id` (string, optional): ID of the parent folder where the file should be created.
|
||||
- `description` (string, optional): Description of the file.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_drive/download_file">
|
||||
**Description:** Download a file from Google Drive.
|
||||
|
||||
**Parameters:**
|
||||
- `file_id` (string, required): The ID of the file to download.
|
||||
- `mime_type` (string, optional): MIME type for export (required for Google Workspace documents).
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_drive/create_folder">
|
||||
**Description:** Create a new folder in Google Drive.
|
||||
|
||||
**Parameters:**
|
||||
- `name` (string, required): Name of the folder to create.
|
||||
- `parent_folder_id` (string, optional): ID of the parent folder where the new folder should be created.
|
||||
- `description` (string, optional): Description of the folder.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_drive/delete_file">
|
||||
**Description:** Delete a file from Google Drive.
|
||||
|
||||
**Parameters:**
|
||||
- `file_id` (string, required): The ID of the file to delete.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_drive/share_file">
|
||||
**Description:** Share a file in Google Drive with specific users or make it public.
|
||||
|
||||
**Parameters:**
|
||||
- `file_id` (string, required): The ID of the file to share.
|
||||
- `role` (string, required): The role granted by this permission (reader, writer, commenter, owner).
|
||||
- `type` (string, required): The type of the grantee (user, group, domain, anyone).
|
||||
- `email_address` (string, optional): The email address of the user or group to share with (required for user/group types).
|
||||
- `domain` (string, optional): The domain to share with (required for domain type).
|
||||
- `send_notification_email` (boolean, optional): Whether to send a notification email (default: true).
|
||||
- `email_message` (string, optional): A plain text custom message to include in the notification email.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_drive/update_file">
|
||||
**Description:** Update an existing file in Google Drive.
|
||||
|
||||
**Parameters:**
|
||||
- `file_id` (string, required): The ID of the file to update.
|
||||
- `name` (string, optional): New name for the file.
|
||||
- `content` (string, optional): New content for the file.
|
||||
- `mime_type` (string, optional): New MIME type for the file.
|
||||
- `description` (string, optional): New description for the file.
|
||||
- `add_parents` (string, optional): Comma-separated list of parent folder IDs to add.
|
||||
- `remove_parents` (string, optional): Comma-separated list of parent folder IDs to remove.
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
## Usage Examples
|
||||
|
||||
### Basic Google Drive Agent Setup
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
# Create an agent with Google Drive capabilities
|
||||
drive_agent = Agent(
|
||||
role="File Manager",
|
||||
goal="Manage files and folders in Google Drive efficiently",
|
||||
backstory="An AI assistant specialized in document and file management.",
|
||||
apps=['google_drive'] # All Google Drive actions will be available
|
||||
)
|
||||
|
||||
# Task to organize files
|
||||
organize_files_task = Task(
|
||||
description="List all files in the root directory and organize them into appropriate folders",
|
||||
agent=drive_agent,
|
||||
expected_output="Summary of files organized with folder structure"
|
||||
)
|
||||
|
||||
# Run the task
|
||||
crew = Crew(
|
||||
agents=[drive_agent],
|
||||
tasks=[organize_files_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### Filtering Specific Google Drive Tools
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
# Create agent with specific Google Drive actions only
|
||||
file_manager_agent = Agent(
|
||||
role="Document Manager",
|
||||
goal="Upload and manage documents efficiently",
|
||||
backstory="An AI assistant that focuses on document upload and organization.",
|
||||
apps=[
|
||||
'google_drive/upload_file',
|
||||
'google_drive/create_folder',
|
||||
'google_drive/share_file'
|
||||
] # Specific Google Drive actions
|
||||
)
|
||||
|
||||
# Task to upload and share documents
|
||||
document_task = Task(
|
||||
description="Upload the quarterly report and share it with the finance team",
|
||||
agent=file_manager_agent,
|
||||
expected_output="Document uploaded and sharing permissions configured"
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[file_manager_agent],
|
||||
tasks=[document_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### Advanced File Management
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
file_organizer = Agent(
|
||||
role="File Organizer",
|
||||
goal="Maintain organized file structure and manage permissions",
|
||||
backstory="An experienced file manager who ensures proper organization and access control.",
|
||||
apps=['google_drive']
|
||||
)
|
||||
|
||||
# Complex task involving multiple Google Drive operations
|
||||
organization_task = Task(
|
||||
description="""
|
||||
1. List all files in the shared folder
|
||||
2. Create folders for different document types (Reports, Presentations, Spreadsheets)
|
||||
3. Move files to appropriate folders based on their type
|
||||
4. Set appropriate sharing permissions for each folder
|
||||
5. Create a summary document of the organization changes
|
||||
""",
|
||||
agent=file_organizer,
|
||||
expected_output="Files organized into categorized folders with proper permissions and summary report"
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[file_organizer],
|
||||
tasks=[organization_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
@@ -26,7 +26,7 @@ Before using the Google Sheets integration, ensure you have:
|
||||
2. Find **Google Sheets** in the Authentication Integrations section
|
||||
3. Click **Connect** and complete the OAuth flow
|
||||
4. Grant the necessary permissions for spreadsheet access
|
||||
5. Copy your Enterprise Token from [Account Settings](https://app.crewai.com/crewai_plus/settings/account)
|
||||
5. Copy your Enterprise Token from [Integration Settings](https://app.crewai.com/crewai_plus/settings/integrations)
|
||||
|
||||
### 2. Install Required Package
|
||||
|
||||
@@ -37,64 +37,74 @@ uv add crewai-tools
|
||||
## Available Actions
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="GOOGLE_SHEETS_GET_ROW">
|
||||
**Description:** Get rows from a Google Sheets spreadsheet.
|
||||
<Accordion title="google_sheets/get_spreadsheet">
|
||||
**Description:** Retrieve properties and data of a spreadsheet.
|
||||
|
||||
**Parameters:**
|
||||
- `spreadsheetId` (string, required): Spreadsheet - Use Connect Portal Workflow Settings to allow users to select a spreadsheet. Defaults to using the first worksheet in the selected spreadsheet.
|
||||
- `limit` (string, optional): Limit rows - Limit the maximum number of rows to return.
|
||||
- `spreadsheetId` (string, required): The ID of the spreadsheet to retrieve.
|
||||
- `ranges` (array, optional): The ranges to retrieve from the spreadsheet.
|
||||
- `includeGridData` (boolean, optional): True if grid data should be returned. Default: false
|
||||
- `fields` (string, optional): The fields to include in the response. Use this to improve performance by only returning needed data.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GOOGLE_SHEETS_CREATE_ROW">
|
||||
**Description:** Create a new row in a Google Sheets spreadsheet.
|
||||
<Accordion title="google_sheets/get_values">
|
||||
**Description:** Returns a range of values from a spreadsheet.
|
||||
|
||||
**Parameters:**
|
||||
- `spreadsheetId` (string, required): Spreadsheet - Use Connect Portal Workflow Settings to allow users to select a spreadsheet. Defaults to using the first worksheet in the selected spreadsheet..
|
||||
- `worksheet` (string, required): Worksheet - Your worksheet must have column headers.
|
||||
- `additionalFields` (object, required): Fields - Include fields to create this row with, as an object with keys of Column Names. Use Connect Portal Workflow Settings to allow users to select a Column Mapping.
|
||||
- `spreadsheetId` (string, required): The ID of the spreadsheet to retrieve data from.
|
||||
- `range` (string, required): The A1 notation or R1C1 notation of the range to retrieve values from.
|
||||
- `valueRenderOption` (string, optional): How values should be represented in the output. Options: FORMATTED_VALUE, UNFORMATTED_VALUE, FORMULA. Default: FORMATTED_VALUE
|
||||
- `dateTimeRenderOption` (string, optional): How dates, times, and durations should be represented in the output. Options: SERIAL_NUMBER, FORMATTED_STRING. Default: SERIAL_NUMBER
|
||||
- `majorDimension` (string, optional): The major dimension that results should use. Options: ROWS, COLUMNS. Default: ROWS
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_sheets/update_values">
|
||||
**Description:** Sets values in a range of a spreadsheet.
|
||||
|
||||
**Parameters:**
|
||||
- `spreadsheetId` (string, required): The ID of the spreadsheet to update.
|
||||
- `range` (string, required): The A1 notation of the range to update.
|
||||
- `values` (array, required): The data to be written. Each array represents a row.
|
||||
```json
|
||||
{
|
||||
"columnName1": "columnValue1",
|
||||
"columnName2": "columnValue2",
|
||||
"columnName3": "columnValue3",
|
||||
"columnName4": "columnValue4"
|
||||
}
|
||||
[
|
||||
["Value1", "Value2", "Value3"],
|
||||
["Value4", "Value5", "Value6"]
|
||||
]
|
||||
```
|
||||
- `valueInputOption` (string, optional): How the input data should be interpreted. Options: RAW, USER_ENTERED. Default: USER_ENTERED
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GOOGLE_SHEETS_UPDATE_ROW">
|
||||
**Description:** Update existing rows in a Google Sheets spreadsheet.
|
||||
<Accordion title="google_sheets/append_values">
|
||||
**Description:** Appends values to a spreadsheet.
|
||||
|
||||
**Parameters:**
|
||||
- `spreadsheetId` (string, required): Spreadsheet - Use Connect Portal Workflow Settings to allow users to select a spreadsheet. Defaults to using the first worksheet in the selected spreadsheet.
|
||||
- `worksheet` (string, required): Worksheet - Your worksheet must have column headers.
|
||||
- `filterFormula` (object, optional): A filter in disjunctive normal form - OR of AND groups of single conditions to identify which rows to update.
|
||||
- `spreadsheetId` (string, required): The ID of the spreadsheet to update.
|
||||
- `range` (string, required): The A1 notation of a range to search for a logical table of data.
|
||||
- `values` (array, required): The data to append. Each array represents a row.
|
||||
```json
|
||||
{
|
||||
"operator": "OR",
|
||||
"conditions": [
|
||||
{
|
||||
"operator": "AND",
|
||||
"conditions": [
|
||||
{
|
||||
"field": "status",
|
||||
"operator": "$stringExactlyMatches",
|
||||
"value": "pending"
|
||||
}
|
||||
]
|
||||
[
|
||||
["Value1", "Value2", "Value3"],
|
||||
["Value4", "Value5", "Value6"]
|
||||
]
|
||||
```
|
||||
- `valueInputOption` (string, optional): How the input data should be interpreted. Options: RAW, USER_ENTERED. Default: USER_ENTERED
|
||||
- `insertDataOption` (string, optional): How the input data should be inserted. Options: OVERWRITE, INSERT_ROWS. Default: INSERT_ROWS
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_sheets/create_spreadsheet">
|
||||
**Description:** Creates a new spreadsheet.
|
||||
|
||||
**Parameters:**
|
||||
- `title` (string, required): The title of the new spreadsheet.
|
||||
- `sheets` (array, optional): The sheets that are part of the spreadsheet.
|
||||
```json
|
||||
[
|
||||
{
|
||||
"properties": {
|
||||
"title": "Sheet1"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
Available operators: `$stringContains`, `$stringDoesNotContain`, `$stringExactlyMatches`, `$stringDoesNotExactlyMatch`, `$stringStartsWith`, `$stringDoesNotStartWith`, `$stringEndsWith`, `$stringDoesNotEndWith`, `$numberGreaterThan`, `$numberLessThan`, `$numberEquals`, `$numberDoesNotEqual`, `$dateTimeAfter`, `$dateTimeBefore`, `$dateTimeEquals`, `$booleanTrue`, `$booleanFalse`, `$exists`, `$doesNotExist`
|
||||
- `additionalFields` (object, required): Fields - Include fields to update, as an object with keys of Column Names. Use Connect Portal Workflow Settings to allow users to select a Column Mapping.
|
||||
```json
|
||||
{
|
||||
"columnName1": "newValue1",
|
||||
"columnName2": "newValue2",
|
||||
"columnName3": "newValue3",
|
||||
"columnName4": "newValue4"
|
||||
}
|
||||
}
|
||||
]
|
||||
```
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
@@ -105,19 +115,13 @@ uv add crewai-tools
|
||||
|
||||
```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]
|
||||
apps=['google_sheets']
|
||||
)
|
||||
|
||||
# Task to add new data to a spreadsheet
|
||||
@@ -139,19 +143,17 @@ crew.kickoff()
|
||||
### Filtering Specific Google Sheets Tools
|
||||
|
||||
```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"]
|
||||
)
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
# Create agent with specific Google Sheets actions only
|
||||
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
|
||||
apps=[
|
||||
'google_sheets/get_values',
|
||||
'google_sheets/update_values'
|
||||
]
|
||||
)
|
||||
|
||||
# Task to collect and organize data
|
||||
@@ -173,17 +175,12 @@ 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]
|
||||
apps=['google_sheets']
|
||||
)
|
||||
|
||||
# Task to analyze data and create reports
|
||||
@@ -205,33 +202,59 @@ crew = Crew(
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### Spreadsheet Creation and Management
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
spreadsheet_manager = Agent(
|
||||
role="Spreadsheet Manager",
|
||||
goal="Create and manage spreadsheets efficiently",
|
||||
backstory="An AI assistant that specializes in creating and organizing spreadsheets.",
|
||||
apps=['google_sheets']
|
||||
)
|
||||
|
||||
# Task to create and set up new spreadsheets
|
||||
setup_task = Task(
|
||||
description="""
|
||||
1. Create a new spreadsheet for quarterly reports
|
||||
2. Set up proper headers and structure
|
||||
3. Add initial data and formatting
|
||||
""",
|
||||
agent=spreadsheet_manager,
|
||||
expected_output="New quarterly report spreadsheet created and properly structured"
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[spreadsheet_manager],
|
||||
tasks=[setup_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### Automated Data Updates
|
||||
|
||||
```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]
|
||||
apps=['google_sheets']
|
||||
)
|
||||
|
||||
# Task to update data based on conditions
|
||||
update_task = Task(
|
||||
description="""
|
||||
1. Find all pending orders in the orders spreadsheet
|
||||
2. Update their status to 'processing'
|
||||
3. Add a timestamp for when the status was updated
|
||||
4. Log the changes in a separate tracking sheet
|
||||
1. Get spreadsheet properties and structure
|
||||
2. Read current data from specific ranges
|
||||
3. Update values in target ranges with new data
|
||||
4. Append new records to the bottom of the sheet
|
||||
""",
|
||||
agent=data_updater,
|
||||
expected_output="All pending orders updated to processing status with timestamps logged"
|
||||
expected_output="Spreadsheet data updated successfully with new values and records"
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
@@ -246,30 +269,25 @@ 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]
|
||||
apps=['google_sheets']
|
||||
)
|
||||
|
||||
# Complex workflow task
|
||||
workflow_task = Task(
|
||||
description="""
|
||||
1. Get all customer data from the main customer spreadsheet
|
||||
2. Create monthly summary entries for active customers
|
||||
3. Update customer status based on activity in the last 30 days
|
||||
4. Generate a monthly report with customer metrics
|
||||
5. Archive inactive customer records to a separate sheet
|
||||
2. Create a new monthly summary spreadsheet
|
||||
3. Append summary data to the new spreadsheet
|
||||
4. Update customer status based on activity metrics
|
||||
5. Generate reports with proper formatting
|
||||
""",
|
||||
agent=workflow_manager,
|
||||
expected_output="Monthly customer workflow completed with updated statuses and generated reports"
|
||||
expected_output="Monthly customer workflow completed with new spreadsheet and updated data"
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
@@ -291,29 +309,28 @@ crew.kickoff()
|
||||
|
||||
**Spreadsheet Structure Issues**
|
||||
- Ensure worksheets have proper column headers before creating or updating rows
|
||||
- Verify that column names in `additionalFields` match the actual column headers
|
||||
- Check that the specified worksheet exists in the spreadsheet
|
||||
- Verify that range notation (A1 format) is correct for the target cells
|
||||
- Check that the specified spreadsheet ID exists and is accessible
|
||||
|
||||
**Data Type and Format Issues**
|
||||
- Ensure data values match the expected format for each column
|
||||
- Use proper date formats for date columns (ISO format recommended)
|
||||
- Verify that numeric values are properly formatted for number columns
|
||||
|
||||
**Filter Formula Issues**
|
||||
- Ensure filter formulas follow the correct JSON structure for disjunctive normal form
|
||||
- Use valid field names that match actual column headers
|
||||
- Test simple filters before building complex multi-condition queries
|
||||
- Verify that operator types match the data types in the columns
|
||||
**Range and Cell Reference Issues**
|
||||
- Use proper A1 notation for ranges (e.g., "A1:C10", "Sheet1!A1:B5")
|
||||
- Ensure range references don't exceed the actual spreadsheet dimensions
|
||||
- Verify that sheet names in range references match actual sheet names
|
||||
|
||||
**Row Limits and Performance**
|
||||
- Be mindful of row limits when using `GOOGLE_SHEETS_GET_ROW`
|
||||
- Consider pagination for large datasets
|
||||
- Use specific filters to reduce the amount of data processed
|
||||
**Value Input and Rendering Options**
|
||||
- Choose appropriate `valueInputOption` (RAW vs USER_ENTERED) for your data
|
||||
- Select proper `valueRenderOption` based on how you want data formatted
|
||||
- Consider `dateTimeRenderOption` for consistent date/time handling
|
||||
|
||||
**Update Operations**
|
||||
- Ensure filter conditions properly identify the intended rows for updates
|
||||
- Test filter conditions with small datasets before large updates
|
||||
- Verify that all required fields are included in update operations
|
||||
**Spreadsheet Creation Issues**
|
||||
- Ensure spreadsheet titles are unique and follow naming conventions
|
||||
- Verify that sheet properties are properly structured when creating sheets
|
||||
- Check that you have permissions to create new spreadsheets in your account
|
||||
|
||||
### Getting Help
|
||||
|
||||
|
||||
371
docs/en/enterprise/integrations/google_slides.mdx
Normal file
371
docs/en/enterprise/integrations/google_slides.mdx
Normal file
@@ -0,0 +1,371 @@
|
||||
---
|
||||
title: Google Slides Integration
|
||||
description: "Presentation creation and management with Google Slides integration for CrewAI."
|
||||
icon: "chart-bar"
|
||||
mode: "wide"
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
Enable your agents to create, edit, and manage Google Slides presentations. Create presentations, update content, import data from Google Sheets, manage pages and thumbnails, and streamline your presentation workflows with AI-powered automation.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
Before using the Google Slides integration, ensure you have:
|
||||
|
||||
- A [CrewAI AMP](https://app.crewai.com) account with an active subscription
|
||||
- A Google account with Google Slides access
|
||||
- Connected your Google account through the [Integrations page](https://app.crewai.com/crewai_plus/connectors)
|
||||
|
||||
## Setting Up Google Slides Integration
|
||||
|
||||
### 1. Connect Your Google Account
|
||||
|
||||
1. Navigate to [CrewAI AMP Integrations](https://app.crewai.com/crewai_plus/connectors)
|
||||
2. Find **Google Slides** in the Authentication Integrations section
|
||||
3. Click **Connect** and complete the OAuth flow
|
||||
4. Grant the necessary permissions for presentations, spreadsheets, and drive access
|
||||
5. Copy your Enterprise Token from [Integration Settings](https://app.crewai.com/crewai_plus/settings/integrations)
|
||||
|
||||
### 2. Install Required Package
|
||||
|
||||
```bash
|
||||
uv add crewai-tools
|
||||
```
|
||||
|
||||
## Available Actions
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="google_slides/create_blank_presentation">
|
||||
**Description:** Creates a blank presentation with no content.
|
||||
|
||||
**Parameters:**
|
||||
- `title` (string, required): The title of the presentation.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_slides/get_presentation">
|
||||
**Description:** Retrieves a presentation by ID.
|
||||
|
||||
**Parameters:**
|
||||
- `presentationId` (string, required): The ID of the presentation to retrieve.
|
||||
- `fields` (string, optional): The fields to include in the response. Use this to improve performance by only returning needed data.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_slides/batch_update_presentation">
|
||||
**Description:** Applies updates, add content, or remove content from a presentation.
|
||||
|
||||
**Parameters:**
|
||||
- `presentationId` (string, required): The ID of the presentation to update.
|
||||
- `requests` (array, required): A list of updates to apply to the presentation.
|
||||
```json
|
||||
[
|
||||
{
|
||||
"insertText": {
|
||||
"objectId": "slide_id",
|
||||
"text": "Your text content here"
|
||||
}
|
||||
}
|
||||
]
|
||||
```
|
||||
- `writeControl` (object, optional): Provides control over how write requests are executed.
|
||||
```json
|
||||
{
|
||||
"requiredRevisionId": "revision_id_string"
|
||||
}
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_slides/get_page">
|
||||
**Description:** Retrieves a specific page by its ID.
|
||||
|
||||
**Parameters:**
|
||||
- `presentationId` (string, required): The ID of the presentation.
|
||||
- `pageObjectId` (string, required): The ID of the page to retrieve.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_slides/get_thumbnail">
|
||||
**Description:** Generates a page thumbnail.
|
||||
|
||||
**Parameters:**
|
||||
- `presentationId` (string, required): The ID of the presentation.
|
||||
- `pageObjectId` (string, required): The ID of the page for thumbnail generation.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_slides/import_data_from_sheet">
|
||||
**Description:** Imports data from a Google Sheet into a presentation.
|
||||
|
||||
**Parameters:**
|
||||
- `presentationId` (string, required): The ID of the presentation.
|
||||
- `sheetId` (string, required): The ID of the Google Sheet to import from.
|
||||
- `dataRange` (string, required): The range of data to import from the sheet.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_slides/upload_file_to_drive">
|
||||
**Description:** Uploads a file to Google Drive associated with the presentation.
|
||||
|
||||
**Parameters:**
|
||||
- `file` (string, required): The file data to upload.
|
||||
- `presentationId` (string, required): The ID of the presentation to link the uploaded file.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_slides/link_file_to_presentation">
|
||||
**Description:** Links a file in Google Drive to a presentation.
|
||||
|
||||
**Parameters:**
|
||||
- `presentationId` (string, required): The ID of the presentation.
|
||||
- `fileId` (string, required): The ID of the file to link.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_slides/get_all_presentations">
|
||||
**Description:** Lists all presentations accessible to the user.
|
||||
|
||||
**Parameters:**
|
||||
- `pageSize` (integer, optional): The number of presentations to return per page.
|
||||
- `pageToken` (string, optional): A token for pagination.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_slides/delete_presentation">
|
||||
**Description:** Deletes a presentation by ID.
|
||||
|
||||
**Parameters:**
|
||||
- `presentationId` (string, required): The ID of the presentation to delete.
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
## Usage Examples
|
||||
|
||||
### Basic Google Slides Agent Setup
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
# Create an agent with Google Slides capabilities
|
||||
slides_agent = Agent(
|
||||
role="Presentation Manager",
|
||||
goal="Create and manage presentations efficiently",
|
||||
backstory="An AI assistant specialized in presentation creation and content management.",
|
||||
apps=['google_slides'] # All Google Slides actions will be available
|
||||
)
|
||||
|
||||
# Task to create a presentation
|
||||
create_presentation_task = Task(
|
||||
description="Create a new presentation for the quarterly business review with key slides",
|
||||
agent=slides_agent,
|
||||
expected_output="Quarterly business review presentation created with structured content"
|
||||
)
|
||||
|
||||
# Run the task
|
||||
crew = Crew(
|
||||
agents=[slides_agent],
|
||||
tasks=[create_presentation_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### Presentation Content Management
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
content_manager = Agent(
|
||||
role="Content Manager",
|
||||
goal="Manage presentation content and updates",
|
||||
backstory="An AI assistant that focuses on content creation and presentation updates.",
|
||||
apps=[
|
||||
'google_slides/create_blank_presentation',
|
||||
'google_slides/batch_update_presentation',
|
||||
'google_slides/get_presentation'
|
||||
]
|
||||
)
|
||||
|
||||
# Task to create and update presentations
|
||||
content_task = Task(
|
||||
description="Create a new presentation and add content slides with charts and text",
|
||||
agent=content_manager,
|
||||
expected_output="Presentation created with updated content and visual elements"
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[content_manager],
|
||||
tasks=[content_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### Data Integration and Visualization
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
data_visualizer = Agent(
|
||||
role="Data Visualizer",
|
||||
goal="Create presentations with data imported from spreadsheets",
|
||||
backstory="An AI assistant that specializes in data visualization and presentation integration.",
|
||||
apps=['google_slides']
|
||||
)
|
||||
|
||||
# Task to create data-driven presentations
|
||||
visualization_task = Task(
|
||||
description="""
|
||||
1. Create a new presentation for monthly sales report
|
||||
2. Import data from the sales spreadsheet
|
||||
3. Create charts and visualizations from the imported data
|
||||
4. Generate thumbnails for slide previews
|
||||
""",
|
||||
agent=data_visualizer,
|
||||
expected_output="Data-driven presentation created with imported spreadsheet data and visualizations"
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[data_visualizer],
|
||||
tasks=[visualization_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### Presentation Library Management
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
library_manager = Agent(
|
||||
role="Presentation Library Manager",
|
||||
goal="Manage and organize presentation libraries",
|
||||
backstory="An AI assistant that manages presentation collections and file organization.",
|
||||
apps=['google_slides']
|
||||
)
|
||||
|
||||
# Task to manage presentation library
|
||||
library_task = Task(
|
||||
description="""
|
||||
1. List all existing presentations
|
||||
2. Generate thumbnails for presentation previews
|
||||
3. Upload supporting files to Drive and link to presentations
|
||||
4. Organize presentations by topic and date
|
||||
""",
|
||||
agent=library_manager,
|
||||
expected_output="Presentation library organized with thumbnails and linked supporting files"
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[library_manager],
|
||||
tasks=[library_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### Automated Presentation Workflows
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
presentation_automator = Agent(
|
||||
role="Presentation Automator",
|
||||
goal="Automate presentation creation and management workflows",
|
||||
backstory="An AI assistant that automates complex presentation workflows and content generation.",
|
||||
apps=['google_slides']
|
||||
)
|
||||
|
||||
# Complex presentation automation task
|
||||
automation_task = Task(
|
||||
description="""
|
||||
1. Create multiple presentations for different departments
|
||||
2. Import relevant data from various spreadsheets
|
||||
3. Update existing presentations with new content
|
||||
4. Generate thumbnails for all presentations
|
||||
5. Link supporting documents from Drive
|
||||
6. Create a master index presentation with links to all others
|
||||
""",
|
||||
agent=presentation_automator,
|
||||
expected_output="Automated presentation workflow completed with multiple presentations and organized structure"
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[presentation_automator],
|
||||
tasks=[automation_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### Template and Content Creation
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
template_creator = Agent(
|
||||
role="Template Creator",
|
||||
goal="Create presentation templates and standardized content",
|
||||
backstory="An AI assistant that creates consistent presentation templates and content standards.",
|
||||
apps=['google_slides']
|
||||
)
|
||||
|
||||
# Task to create templates
|
||||
template_task = Task(
|
||||
description="""
|
||||
1. Create blank presentation templates for different use cases
|
||||
2. Add standard layouts and content placeholders
|
||||
3. Create sample presentations with best practices
|
||||
4. Generate thumbnails for template previews
|
||||
5. Upload template assets to Drive and link appropriately
|
||||
""",
|
||||
agent=template_creator,
|
||||
expected_output="Presentation templates created with standardized layouts and linked assets"
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[template_creator],
|
||||
tasks=[template_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Common Issues
|
||||
|
||||
**Permission Errors**
|
||||
- Ensure your Google account has appropriate permissions for Google Slides
|
||||
- Verify that the OAuth connection includes required scopes for presentations, spreadsheets, and drive access
|
||||
- Check that presentations are shared with the authenticated account
|
||||
|
||||
**Presentation ID Issues**
|
||||
- Verify that presentation IDs are correct and presentations exist
|
||||
- Ensure you have access permissions to the presentations you're trying to modify
|
||||
- Check that presentation IDs are properly formatted
|
||||
|
||||
**Content Update Issues**
|
||||
- Ensure batch update requests are properly formatted according to Google Slides API specifications
|
||||
- Verify that object IDs for slides and elements exist in the presentation
|
||||
- Check that write control revision IDs are current if using optimistic concurrency
|
||||
|
||||
**Data Import Issues**
|
||||
- Verify that Google Sheet IDs are correct and accessible
|
||||
- Ensure data ranges are properly specified using A1 notation
|
||||
- Check that you have read permissions for the source spreadsheets
|
||||
|
||||
**File Upload and Linking Issues**
|
||||
- Ensure file data is properly encoded for upload
|
||||
- Verify that Drive file IDs are correct when linking files
|
||||
- Check that you have appropriate Drive permissions for file operations
|
||||
|
||||
**Page and Thumbnail Operations**
|
||||
- Verify that page object IDs exist in the specified presentation
|
||||
- Ensure presentations have content before attempting to generate thumbnails
|
||||
- Check that page structure is valid for thumbnail generation
|
||||
|
||||
**Pagination and Listing Issues**
|
||||
- Use appropriate page sizes for listing presentations
|
||||
- Implement proper pagination using page tokens for large result sets
|
||||
- Handle empty result sets gracefully
|
||||
|
||||
### Getting Help
|
||||
|
||||
<Card title="Need Help?" icon="headset" href="mailto:support@crewai.com">
|
||||
Contact our support team for assistance with Google Slides integration setup or troubleshooting.
|
||||
</Card>
|
||||
@@ -25,7 +25,7 @@ Before using the HubSpot integration, ensure you have:
|
||||
2. Find **HubSpot** in the Authentication Integrations section.
|
||||
3. Click **Connect** and complete the OAuth flow.
|
||||
4. Grant the necessary permissions for company and contact management.
|
||||
5. Copy your Enterprise Token from [Account Settings](https://app.crewai.com/crewai_plus/settings/account).
|
||||
5. Copy your Enterprise Token from [Integration Settings](https://app.crewai.com/crewai_plus/settings/integrations)
|
||||
|
||||
### 2. Install Required Package
|
||||
|
||||
@@ -36,7 +36,7 @@ uv add crewai-tools
|
||||
## Available Actions
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="HUBSPOT_CREATE_RECORD_COMPANIES">
|
||||
<Accordion title="hubspot/create_company">
|
||||
**Description:** Create a new company record in HubSpot.
|
||||
|
||||
**Parameters:**
|
||||
@@ -101,7 +101,7 @@ uv add crewai-tools
|
||||
- `founded_year` (string, optional): Year Founded.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_CREATE_RECORD_CONTACTS">
|
||||
<Accordion title="hubspot/create_contact">
|
||||
**Description:** Create a new contact record in HubSpot.
|
||||
|
||||
**Parameters:**
|
||||
@@ -200,7 +200,7 @@ uv add crewai-tools
|
||||
- `hs_googleplusid` (string, optional): googleplus ID.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_CREATE_RECORD_DEALS">
|
||||
<Accordion title="hubspot/create_deal">
|
||||
**Description:** Create a new deal record in HubSpot.
|
||||
|
||||
**Parameters:**
|
||||
@@ -215,7 +215,7 @@ uv add crewai-tools
|
||||
- `hs_priority` (string, optional): The priority of the deal. Available values: `low`, `medium`, `high`.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_CREATE_RECORD_ENGAGEMENTS">
|
||||
<Accordion title="hubspot/create_record_engagements">
|
||||
**Description:** Create a new engagement (e.g., note, email, call, meeting, task) in HubSpot.
|
||||
|
||||
**Parameters:**
|
||||
@@ -232,7 +232,7 @@ uv add crewai-tools
|
||||
- `hs_meeting_end_time` (string, optional): The end time of the meeting. (Used for `MEETING`)
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_UPDATE_RECORD_COMPANIES">
|
||||
<Accordion title="hubspot/update_company">
|
||||
**Description:** Update an existing company record in HubSpot.
|
||||
|
||||
**Parameters:**
|
||||
@@ -249,7 +249,7 @@ uv add crewai-tools
|
||||
- `description` (string, optional): Description.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_CREATE_RECORD_ANY">
|
||||
<Accordion title="hubspot/create_record_any">
|
||||
**Description:** Create a record for a specified object type in HubSpot.
|
||||
|
||||
**Parameters:**
|
||||
@@ -257,7 +257,7 @@ uv add crewai-tools
|
||||
- Additional parameters depend on the custom object's schema.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_UPDATE_RECORD_CONTACTS">
|
||||
<Accordion title="hubspot/update_contact">
|
||||
**Description:** Update an existing contact record in HubSpot.
|
||||
|
||||
**Parameters:**
|
||||
@@ -271,7 +271,7 @@ uv add crewai-tools
|
||||
- `lifecyclestage` (string, optional): Lifecycle Stage.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_UPDATE_RECORD_DEALS">
|
||||
<Accordion title="hubspot/update_deal">
|
||||
**Description:** Update an existing deal record in HubSpot.
|
||||
|
||||
**Parameters:**
|
||||
@@ -284,7 +284,7 @@ uv add crewai-tools
|
||||
- `dealtype` (string, optional): The type of deal.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_UPDATE_RECORD_ENGAGEMENTS">
|
||||
<Accordion title="hubspot/update_record_engagements">
|
||||
**Description:** Update an existing engagement in HubSpot.
|
||||
|
||||
**Parameters:**
|
||||
@@ -295,7 +295,7 @@ uv add crewai-tools
|
||||
- `hs_task_status` (string, optional): The status of the task.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_UPDATE_RECORD_ANY">
|
||||
<Accordion title="hubspot/update_record_any">
|
||||
**Description:** Update a record for a specified object type in HubSpot.
|
||||
|
||||
**Parameters:**
|
||||
@@ -304,28 +304,28 @@ uv add crewai-tools
|
||||
- Additional parameters depend on the custom object's schema.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_GET_RECORDS_COMPANIES">
|
||||
<Accordion title="hubspot/list_companies">
|
||||
**Description:** Get a list of company records from HubSpot.
|
||||
|
||||
**Parameters:**
|
||||
- `paginationParameters` (object, optional): Use `pageCursor` to fetch subsequent pages.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_GET_RECORDS_CONTACTS">
|
||||
<Accordion title="hubspot/list_contacts">
|
||||
**Description:** Get a list of contact records from HubSpot.
|
||||
|
||||
**Parameters:**
|
||||
- `paginationParameters` (object, optional): Use `pageCursor` to fetch subsequent pages.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_GET_RECORDS_DEALS">
|
||||
<Accordion title="hubspot/list_deals">
|
||||
**Description:** Get a list of deal records from HubSpot.
|
||||
|
||||
**Parameters:**
|
||||
- `paginationParameters` (object, optional): Use `pageCursor` to fetch subsequent pages.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_GET_RECORDS_ENGAGEMENTS">
|
||||
<Accordion title="hubspot/get_records_engagements">
|
||||
**Description:** Get a list of engagement records from HubSpot.
|
||||
|
||||
**Parameters:**
|
||||
@@ -333,7 +333,7 @@ uv add crewai-tools
|
||||
- `paginationParameters` (object, optional): Use `pageCursor` to fetch subsequent pages.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_GET_RECORDS_ANY">
|
||||
<Accordion title="hubspot/get_records_any">
|
||||
**Description:** Get a list of records for any specified object type in HubSpot.
|
||||
|
||||
**Parameters:**
|
||||
@@ -341,35 +341,35 @@ uv add crewai-tools
|
||||
- `paginationParameters` (object, optional): Use `pageCursor` to fetch subsequent pages.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_GET_RECORD_BY_ID_COMPANIES">
|
||||
<Accordion title="hubspot/get_company">
|
||||
**Description:** Get a single company record by its ID.
|
||||
|
||||
**Parameters:**
|
||||
- `recordId` (string, required): The ID of the company to retrieve.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_GET_RECORD_BY_ID_CONTACTS">
|
||||
<Accordion title="hubspot/get_contact">
|
||||
**Description:** Get a single contact record by its ID.
|
||||
|
||||
**Parameters:**
|
||||
- `recordId` (string, required): The ID of the contact to retrieve.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_GET_RECORD_BY_ID_DEALS">
|
||||
<Accordion title="hubspot/get_deal">
|
||||
**Description:** Get a single deal record by its ID.
|
||||
|
||||
**Parameters:**
|
||||
- `recordId` (string, required): The ID of the deal to retrieve.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_GET_RECORD_BY_ID_ENGAGEMENTS">
|
||||
<Accordion title="hubspot/get_record_by_id_engagements">
|
||||
**Description:** Get a single engagement record by its ID.
|
||||
|
||||
**Parameters:**
|
||||
- `recordId` (string, required): The ID of the engagement to retrieve.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_GET_RECORD_BY_ID_ANY">
|
||||
<Accordion title="hubspot/get_record_by_id_any">
|
||||
**Description:** Get a single record of any specified object type by its ID.
|
||||
|
||||
**Parameters:**
|
||||
@@ -377,7 +377,7 @@ uv add crewai-tools
|
||||
- `recordId` (string, required): The ID of the record to retrieve.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_SEARCH_RECORDS_COMPANIES">
|
||||
<Accordion title="hubspot/search_companies">
|
||||
**Description:** Search for company records in HubSpot using a filter formula.
|
||||
|
||||
**Parameters:**
|
||||
@@ -385,7 +385,7 @@ uv add crewai-tools
|
||||
- `paginationParameters` (object, optional): Use `pageCursor` to fetch subsequent pages.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_SEARCH_RECORDS_CONTACTS">
|
||||
<Accordion title="hubspot/search_contacts">
|
||||
**Description:** Search for contact records in HubSpot using a filter formula.
|
||||
|
||||
**Parameters:**
|
||||
@@ -393,7 +393,7 @@ uv add crewai-tools
|
||||
- `paginationParameters` (object, optional): Use `pageCursor` to fetch subsequent pages.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_SEARCH_RECORDS_DEALS">
|
||||
<Accordion title="hubspot/search_deals">
|
||||
**Description:** Search for deal records in HubSpot using a filter formula.
|
||||
|
||||
**Parameters:**
|
||||
@@ -401,7 +401,7 @@ uv add crewai-tools
|
||||
- `paginationParameters` (object, optional): Use `pageCursor` to fetch subsequent pages.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_SEARCH_RECORDS_ENGAGEMENTS">
|
||||
<Accordion title="hubspot/search_records_engagements">
|
||||
**Description:** Search for engagement records in HubSpot using a filter formula.
|
||||
|
||||
**Parameters:**
|
||||
@@ -409,7 +409,7 @@ uv add crewai-tools
|
||||
- `paginationParameters` (object, optional): Use `pageCursor` to fetch subsequent pages.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_SEARCH_RECORDS_ANY">
|
||||
<Accordion title="hubspot/search_records_any">
|
||||
**Description:** Search for records of any specified object type in HubSpot.
|
||||
|
||||
**Parameters:**
|
||||
@@ -418,35 +418,35 @@ uv add crewai-tools
|
||||
- `paginationParameters` (object, optional): Use `pageCursor` to fetch subsequent pages.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_DELETE_RECORD_COMPANIES">
|
||||
<Accordion title="hubspot/delete_record_companies">
|
||||
**Description:** Delete a company record by its ID.
|
||||
|
||||
**Parameters:**
|
||||
- `recordId` (string, required): The ID of the company to delete.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_DELETE_RECORD_CONTACTS">
|
||||
<Accordion title="hubspot/delete_record_contacts">
|
||||
**Description:** Delete a contact record by its ID.
|
||||
|
||||
**Parameters:**
|
||||
- `recordId` (string, required): The ID of the contact to delete.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_DELETE_RECORD_DEALS">
|
||||
<Accordion title="hubspot/delete_record_deals">
|
||||
**Description:** Delete a deal record by its ID.
|
||||
|
||||
**Parameters:**
|
||||
- `recordId` (string, required): The ID of the deal to delete.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_DELETE_RECORD_ENGAGEMENTS">
|
||||
<Accordion title="hubspot/delete_record_engagements">
|
||||
**Description:** Delete an engagement record by its ID.
|
||||
|
||||
**Parameters:**
|
||||
- `recordId` (string, required): The ID of the engagement to delete.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_DELETE_RECORD_ANY">
|
||||
<Accordion title="hubspot/delete_record_any">
|
||||
**Description:** Delete a record of any specified object type by its ID.
|
||||
|
||||
**Parameters:**
|
||||
@@ -454,7 +454,7 @@ uv add crewai-tools
|
||||
- `recordId` (string, required): The ID of the record to delete.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_GET_CONTACTS_BY_LIST_ID">
|
||||
<Accordion title="hubspot/get_contacts_by_list_id">
|
||||
**Description:** Get contacts from a specific list by its ID.
|
||||
|
||||
**Parameters:**
|
||||
@@ -462,7 +462,7 @@ uv add crewai-tools
|
||||
- `paginationParameters` (object, optional): Use `pageCursor` for subsequent pages.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_DESCRIBE_ACTION_SCHEMA">
|
||||
<Accordion title="hubspot/describe_action_schema">
|
||||
**Description:** Get the expected schema for a given object type and operation.
|
||||
|
||||
**Parameters:**
|
||||
@@ -477,19 +477,13 @@ uv add crewai-tools
|
||||
|
||||
```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]
|
||||
apps=['hubspot'] # All HubSpot actions will be available
|
||||
)
|
||||
|
||||
# Task to create a new company
|
||||
@@ -511,19 +505,14 @@ crew.kickoff()
|
||||
### Filtering Specific HubSpot Tools
|
||||
|
||||
```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"]
|
||||
)
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
# Create agent with specific HubSpot actions only
|
||||
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]
|
||||
apps=['hubspot/create_contact'] # Only contact creation action
|
||||
)
|
||||
|
||||
# Task to create a contact
|
||||
@@ -545,17 +534,13 @@ crew.kickoff()
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token"
|
||||
)
|
||||
|
||||
# Create agent with HubSpot contact management capabilities
|
||||
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]
|
||||
apps=['hubspot'] # All HubSpot actions including contact management
|
||||
)
|
||||
|
||||
# Task to manage contacts
|
||||
|
||||
@@ -25,7 +25,7 @@ Before using the Jira integration, ensure you have:
|
||||
2. Find **Jira** in the Authentication Integrations section
|
||||
3. Click **Connect** and complete the OAuth flow
|
||||
4. Grant the necessary permissions for issue and project management
|
||||
5. Copy your Enterprise Token from [Account Settings](https://app.crewai.com/crewai_plus/settings/account)
|
||||
5. Copy your Enterprise Token from [Integration Settings](https://app.crewai.com/crewai_plus/settings/integrations)
|
||||
|
||||
### 2. Install Required Package
|
||||
|
||||
@@ -36,7 +36,7 @@ uv add crewai-tools
|
||||
## Available Actions
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="JIRA_CREATE_ISSUE">
|
||||
<Accordion title="jira/create_issue">
|
||||
**Description:** Create an issue in Jira.
|
||||
|
||||
**Parameters:**
|
||||
@@ -56,7 +56,7 @@ uv add crewai-tools
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="JIRA_UPDATE_ISSUE">
|
||||
<Accordion title="jira/update_issue">
|
||||
**Description:** Update an issue in Jira.
|
||||
|
||||
**Parameters:**
|
||||
@@ -71,14 +71,14 @@ uv add crewai-tools
|
||||
- `additionalFields` (string, optional): Additional Fields - Specify any other fields that should be included in JSON format.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="JIRA_GET_ISSUE_BY_KEY">
|
||||
<Accordion title="jira/get_issue_by_key">
|
||||
**Description:** Get an issue by key in Jira.
|
||||
|
||||
**Parameters:**
|
||||
- `issueKey` (string, required): Issue Key (example: "TEST-1234").
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="JIRA_FILTER_ISSUES">
|
||||
<Accordion title="jira/filter_issues">
|
||||
**Description:** Search issues in Jira using filters.
|
||||
|
||||
**Parameters:**
|
||||
@@ -104,7 +104,7 @@ uv add crewai-tools
|
||||
- `limit` (string, optional): Limit results - Limit the maximum number of issues to return. Defaults to 10 if left blank.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="JIRA_SEARCH_BY_JQL">
|
||||
<Accordion title="jira/search_by_jql">
|
||||
**Description:** Search issues by JQL in Jira.
|
||||
|
||||
**Parameters:**
|
||||
@@ -117,13 +117,13 @@ uv add crewai-tools
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="JIRA_UPDATE_ISSUE_ANY">
|
||||
<Accordion title="jira/update_issue_any">
|
||||
**Description:** Update any issue in Jira. Use DESCRIBE_ACTION_SCHEMA to get properties schema for this function.
|
||||
|
||||
**Parameters:** No specific parameters - use JIRA_DESCRIBE_ACTION_SCHEMA first to get the expected schema.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="JIRA_DESCRIBE_ACTION_SCHEMA">
|
||||
<Accordion title="jira/describe_action_schema">
|
||||
**Description:** Get the expected schema for an issue type. Use this function first if no other function matches the issue type you want to operate on.
|
||||
|
||||
**Parameters:**
|
||||
@@ -132,7 +132,7 @@ uv add crewai-tools
|
||||
- `operation` (string, required): Operation Type value, for example CREATE_ISSUE or UPDATE_ISSUE.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="JIRA_GET_PROJECTS">
|
||||
<Accordion title="jira/get_projects">
|
||||
**Description:** Get Projects in Jira.
|
||||
|
||||
**Parameters:**
|
||||
@@ -144,27 +144,27 @@ uv add crewai-tools
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="JIRA_GET_ISSUE_TYPES_BY_PROJECT">
|
||||
<Accordion title="jira/get_issue_types_by_project">
|
||||
**Description:** Get Issue Types by project in Jira.
|
||||
|
||||
**Parameters:**
|
||||
- `project` (string, required): Project key.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="JIRA_GET_ISSUE_TYPES">
|
||||
<Accordion title="jira/get_issue_types">
|
||||
**Description:** Get all Issue Types in Jira.
|
||||
|
||||
**Parameters:** None required.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="JIRA_GET_ISSUE_STATUS_BY_PROJECT">
|
||||
<Accordion title="jira/get_issue_status_by_project">
|
||||
**Description:** Get issue statuses for a given project.
|
||||
|
||||
**Parameters:**
|
||||
- `project` (string, required): Project key.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="JIRA_GET_ALL_ASSIGNEES_BY_PROJECT">
|
||||
<Accordion title="jira/get_all_assignees_by_project">
|
||||
**Description:** Get assignees for a given project.
|
||||
|
||||
**Parameters:**
|
||||
@@ -178,19 +178,14 @@ uv add crewai-tools
|
||||
|
||||
```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"
|
||||
)
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
# 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]
|
||||
apps=['jira'] # All Jira actions will be available
|
||||
)
|
||||
|
||||
# Task to create a bug report
|
||||
@@ -212,19 +207,12 @@ crew.kickoff()
|
||||
### Filtering Specific Jira Tools
|
||||
|
||||
```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
|
||||
apps=['jira']
|
||||
)
|
||||
|
||||
# Task to manage issue workflow
|
||||
@@ -246,17 +234,12 @@ 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]
|
||||
apps=['jira']
|
||||
)
|
||||
|
||||
# Task to analyze project status
|
||||
@@ -283,17 +266,12 @@ 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]
|
||||
apps=['jira']
|
||||
)
|
||||
|
||||
# Task to automate issue management
|
||||
@@ -321,17 +299,12 @@ 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]
|
||||
apps=['jira']
|
||||
)
|
||||
|
||||
# Task using schema-based operations
|
||||
|
||||
@@ -25,7 +25,7 @@ Before using the Linear integration, ensure you have:
|
||||
2. Find **Linear** in the Authentication Integrations section
|
||||
3. Click **Connect** and complete the OAuth flow
|
||||
4. Grant the necessary permissions for issue and project management
|
||||
5. Copy your Enterprise Token from [Account Settings](https://app.crewai.com/crewai_plus/settings/account)
|
||||
5. Copy your Enterprise Token from [Integration Settings](https://app.crewai.com/crewai_plus/settings/integrations)
|
||||
|
||||
### 2. Install Required Package
|
||||
|
||||
@@ -36,7 +36,7 @@ uv add crewai-tools
|
||||
## Available Actions
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="LINEAR_CREATE_ISSUE">
|
||||
<Accordion title="linear/create_issue">
|
||||
**Description:** Create a new issue in Linear.
|
||||
|
||||
**Parameters:**
|
||||
@@ -56,7 +56,7 @@ uv add crewai-tools
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="LINEAR_UPDATE_ISSUE">
|
||||
<Accordion title="linear/update_issue">
|
||||
**Description:** Update an issue in Linear.
|
||||
|
||||
**Parameters:**
|
||||
@@ -76,21 +76,21 @@ uv add crewai-tools
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="LINEAR_GET_ISSUE_BY_ID">
|
||||
<Accordion title="linear/get_issue_by_id">
|
||||
**Description:** Get an issue by ID in Linear.
|
||||
|
||||
**Parameters:**
|
||||
- `issueId` (string, required): Issue ID - Specify the record ID of the issue to fetch. (example: "90fbc706-18cd-42c9-ae66-6bd344cc8977").
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="LINEAR_GET_ISSUE_BY_ISSUE_IDENTIFIER">
|
||||
<Accordion title="linear/get_issue_by_issue_identifier">
|
||||
**Description:** Get an issue by issue identifier in Linear.
|
||||
|
||||
**Parameters:**
|
||||
- `externalId` (string, required): External ID - Specify the human-readable Issue identifier of the issue to fetch. (example: "ABC-1").
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="LINEAR_SEARCH_ISSUE">
|
||||
<Accordion title="linear/search_issue">
|
||||
**Description:** Search issues in Linear.
|
||||
|
||||
**Parameters:**
|
||||
@@ -117,21 +117,21 @@ uv add crewai-tools
|
||||
Available operators: `$stringExactlyMatches`, `$stringDoesNotExactlyMatch`, `$stringIsIn`, `$stringIsNotIn`, `$stringStartsWith`, `$stringDoesNotStartWith`, `$stringEndsWith`, `$stringDoesNotEndWith`, `$stringContains`, `$stringDoesNotContain`, `$stringGreaterThan`, `$stringLessThan`, `$numberGreaterThanOrEqualTo`, `$numberLessThanOrEqualTo`, `$numberGreaterThan`, `$numberLessThan`, `$dateTimeAfter`, `$dateTimeBefore`
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="LINEAR_DELETE_ISSUE">
|
||||
<Accordion title="linear/delete_issue">
|
||||
**Description:** Delete an issue in Linear.
|
||||
|
||||
**Parameters:**
|
||||
- `issueId` (string, required): Issue ID - Specify the record ID of the issue to delete. (example: "90fbc706-18cd-42c9-ae66-6bd344cc8977").
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="LINEAR_ARCHIVE_ISSUE">
|
||||
<Accordion title="linear/archive_issue">
|
||||
**Description:** Archive an issue in Linear.
|
||||
|
||||
**Parameters:**
|
||||
- `issueId` (string, required): Issue ID - Specify the record ID of the issue to archive. (example: "90fbc706-18cd-42c9-ae66-6bd344cc8977").
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="LINEAR_CREATE_SUB_ISSUE">
|
||||
<Accordion title="linear/create_sub_issue">
|
||||
**Description:** Create a sub-issue in Linear.
|
||||
|
||||
**Parameters:**
|
||||
@@ -147,7 +147,7 @@ uv add crewai-tools
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="LINEAR_CREATE_PROJECT">
|
||||
<Accordion title="linear/create_project">
|
||||
**Description:** Create a new project in Linear.
|
||||
|
||||
**Parameters:**
|
||||
@@ -169,7 +169,7 @@ uv add crewai-tools
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="LINEAR_UPDATE_PROJECT">
|
||||
<Accordion title="linear/update_project">
|
||||
**Description:** Update a project in Linear.
|
||||
|
||||
**Parameters:**
|
||||
@@ -185,21 +185,21 @@ uv add crewai-tools
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="LINEAR_GET_PROJECT_BY_ID">
|
||||
<Accordion title="linear/get_project_by_id">
|
||||
**Description:** Get a project by ID in Linear.
|
||||
|
||||
**Parameters:**
|
||||
- `projectId` (string, required): Project ID - Specify the Project ID of the project to fetch. (example: "a6634484-6061-4ac7-9739-7dc5e52c796b").
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="LINEAR_DELETE_PROJECT">
|
||||
<Accordion title="linear/delete_project">
|
||||
**Description:** Delete a project in Linear.
|
||||
|
||||
**Parameters:**
|
||||
- `projectId` (string, required): Project ID - Specify the Project ID of the project to delete. (example: "a6634484-6061-4ac7-9739-7dc5e52c796b").
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="LINEAR_SEARCH_TEAMS">
|
||||
<Accordion title="linear/search_teams">
|
||||
**Description:** Search teams in Linear.
|
||||
|
||||
**Parameters:**
|
||||
@@ -231,19 +231,14 @@ uv add crewai-tools
|
||||
|
||||
```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"
|
||||
)
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
# 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]
|
||||
apps=['linear'] # All Linear actions will be available
|
||||
)
|
||||
|
||||
# Task to create a bug report
|
||||
@@ -265,19 +260,12 @@ crew.kickoff()
|
||||
### Filtering Specific Linear Tools
|
||||
|
||||
```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
|
||||
apps=['linear/create_issue']
|
||||
)
|
||||
|
||||
# Task to manage issue workflow
|
||||
@@ -299,17 +287,12 @@ 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]
|
||||
apps=['linear']
|
||||
)
|
||||
|
||||
# Task to coordinate project setup
|
||||
@@ -336,17 +319,12 @@ 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]
|
||||
apps=['linear']
|
||||
)
|
||||
|
||||
# Task to create issue hierarchy
|
||||
@@ -373,17 +351,12 @@ 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]
|
||||
apps=['linear']
|
||||
)
|
||||
|
||||
# Complex workflow automation task
|
||||
|
||||
446
docs/en/enterprise/integrations/microsoft_excel.mdx
Normal file
446
docs/en/enterprise/integrations/microsoft_excel.mdx
Normal file
@@ -0,0 +1,446 @@
|
||||
---
|
||||
title: Microsoft Excel Integration
|
||||
description: "Workbook and data management with Microsoft Excel integration for CrewAI."
|
||||
icon: "table"
|
||||
mode: "wide"
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
Enable your agents to create and manage Excel workbooks, worksheets, tables, and charts in OneDrive or SharePoint. Manipulate data ranges, create visualizations, manage tables, and streamline your spreadsheet workflows with AI-powered automation.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
Before using the Microsoft Excel integration, ensure you have:
|
||||
|
||||
- A [CrewAI AMP](https://app.crewai.com) account with an active subscription
|
||||
- A Microsoft 365 account with Excel and OneDrive/SharePoint access
|
||||
- Connected your Microsoft account through the [Integrations page](https://app.crewai.com/crewai_plus/connectors)
|
||||
|
||||
## Setting Up Microsoft Excel Integration
|
||||
|
||||
### 1. Connect Your Microsoft Account
|
||||
|
||||
1. Navigate to [CrewAI AMP Integrations](https://app.crewai.com/crewai_plus/connectors)
|
||||
2. Find **Microsoft Excel** in the Authentication Integrations section
|
||||
3. Click **Connect** and complete the OAuth flow
|
||||
4. Grant the necessary permissions for files and Excel workbook access
|
||||
5. Copy your Enterprise Token from [Integration Settings](https://app.crewai.com/crewai_plus/settings/integrations)
|
||||
|
||||
### 2. Install Required Package
|
||||
|
||||
```bash
|
||||
uv add crewai-tools
|
||||
```
|
||||
|
||||
## Available Actions
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="microsoft_excel/create_workbook">
|
||||
**Description:** Create a new Excel workbook in OneDrive or SharePoint.
|
||||
|
||||
**Parameters:**
|
||||
- `file_path` (string, required): Path where to create the workbook (e.g., 'MyWorkbook.xlsx')
|
||||
- `worksheets` (array, optional): Initial worksheets to create
|
||||
```json
|
||||
[
|
||||
{
|
||||
"name": "Sheet1"
|
||||
},
|
||||
{
|
||||
"name": "Data"
|
||||
}
|
||||
]
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_excel/get_workbooks">
|
||||
**Description:** Get all Excel workbooks from OneDrive or SharePoint.
|
||||
|
||||
**Parameters:**
|
||||
- `select` (string, optional): Select specific properties to return
|
||||
- `filter` (string, optional): Filter results using OData syntax
|
||||
- `expand` (string, optional): Expand related resources inline
|
||||
- `top` (integer, optional): Number of items to return. Minimum: 1, Maximum: 999
|
||||
- `orderby` (string, optional): Order results by specified properties
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_excel/get_worksheets">
|
||||
**Description:** Get all worksheets in an Excel workbook.
|
||||
|
||||
**Parameters:**
|
||||
- `file_id` (string, required): The ID of the Excel file
|
||||
- `select` (string, optional): Select specific properties to return (e.g., 'id,name,position')
|
||||
- `filter` (string, optional): Filter results using OData syntax
|
||||
- `expand` (string, optional): Expand related resources inline
|
||||
- `top` (integer, optional): Number of items to return. Minimum: 1, Maximum: 999
|
||||
- `orderby` (string, optional): Order results by specified properties
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_excel/create_worksheet">
|
||||
**Description:** Create a new worksheet in an Excel workbook.
|
||||
|
||||
**Parameters:**
|
||||
- `file_id` (string, required): The ID of the Excel file
|
||||
- `name` (string, required): Name of the new worksheet
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_excel/get_range_data">
|
||||
**Description:** Get data from a specific range in an Excel worksheet.
|
||||
|
||||
**Parameters:**
|
||||
- `file_id` (string, required): The ID of the Excel file
|
||||
- `worksheet_name` (string, required): Name of the worksheet
|
||||
- `range` (string, required): Range address (e.g., 'A1:C10')
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_excel/update_range_data">
|
||||
**Description:** Update data in a specific range in an Excel worksheet.
|
||||
|
||||
**Parameters:**
|
||||
- `file_id` (string, required): The ID of the Excel file
|
||||
- `worksheet_name` (string, required): Name of the worksheet
|
||||
- `range` (string, required): Range address (e.g., 'A1:C10')
|
||||
- `values` (array, required): 2D array of values to set in the range
|
||||
```json
|
||||
[
|
||||
["Name", "Age", "City"],
|
||||
["John", 30, "New York"],
|
||||
["Jane", 25, "Los Angeles"]
|
||||
]
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_excel/add_table">
|
||||
**Description:** Create a table in an Excel worksheet.
|
||||
|
||||
**Parameters:**
|
||||
- `file_id` (string, required): The ID of the Excel file
|
||||
- `worksheet_name` (string, required): Name of the worksheet
|
||||
- `range` (string, required): Range for the table (e.g., 'A1:D10')
|
||||
- `has_headers` (boolean, optional): Whether the first row contains headers. Default: true
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_excel/get_tables">
|
||||
**Description:** Get all tables in an Excel worksheet.
|
||||
|
||||
**Parameters:**
|
||||
- `file_id` (string, required): The ID of the Excel file
|
||||
- `worksheet_name` (string, required): Name of the worksheet
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_excel/add_table_row">
|
||||
**Description:** Add a new row to an Excel table.
|
||||
|
||||
**Parameters:**
|
||||
- `file_id` (string, required): The ID of the Excel file
|
||||
- `worksheet_name` (string, required): Name of the worksheet
|
||||
- `table_name` (string, required): Name of the table
|
||||
- `values` (array, required): Array of values for the new row
|
||||
```json
|
||||
["John Doe", 35, "Manager", "Sales"]
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_excel/create_chart">
|
||||
**Description:** Create a chart in an Excel worksheet.
|
||||
|
||||
**Parameters:**
|
||||
- `file_id` (string, required): The ID of the Excel file
|
||||
- `worksheet_name` (string, required): Name of the worksheet
|
||||
- `chart_type` (string, required): Type of chart (e.g., 'ColumnClustered', 'Line', 'Pie')
|
||||
- `source_data` (string, required): Range of data for the chart (e.g., 'A1:B10')
|
||||
- `series_by` (string, optional): How to interpret the data ('Auto', 'Columns', or 'Rows'). Default: Auto
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_excel/get_cell">
|
||||
**Description:** Get the value of a single cell in an Excel worksheet.
|
||||
|
||||
**Parameters:**
|
||||
- `file_id` (string, required): The ID of the Excel file
|
||||
- `worksheet_name` (string, required): Name of the worksheet
|
||||
- `row` (integer, required): Row number (0-based)
|
||||
- `column` (integer, required): Column number (0-based)
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_excel/get_used_range">
|
||||
**Description:** Get the used range of an Excel worksheet (contains all data).
|
||||
|
||||
**Parameters:**
|
||||
- `file_id` (string, required): The ID of the Excel file
|
||||
- `worksheet_name` (string, required): Name of the worksheet
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_excel/list_charts">
|
||||
**Description:** Get all charts in an Excel worksheet.
|
||||
|
||||
**Parameters:**
|
||||
- `file_id` (string, required): The ID of the Excel file
|
||||
- `worksheet_name` (string, required): Name of the worksheet
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_excel/delete_worksheet">
|
||||
**Description:** Delete a worksheet from an Excel workbook.
|
||||
|
||||
**Parameters:**
|
||||
- `file_id` (string, required): The ID of the Excel file
|
||||
- `worksheet_name` (string, required): Name of the worksheet to delete
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_excel/delete_table">
|
||||
**Description:** Delete a table from an Excel worksheet.
|
||||
|
||||
**Parameters:**
|
||||
- `file_id` (string, required): The ID of the Excel file
|
||||
- `worksheet_name` (string, required): Name of the worksheet
|
||||
- `table_name` (string, required): Name of the table to delete
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_excel/list_names">
|
||||
**Description:** Get all named ranges in an Excel workbook.
|
||||
|
||||
**Parameters:**
|
||||
- `file_id` (string, required): The ID of the Excel file
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
## Usage Examples
|
||||
|
||||
### Basic Excel Agent Setup
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
# Create an agent with Excel capabilities
|
||||
excel_agent = Agent(
|
||||
role="Excel Data Manager",
|
||||
goal="Manage Excel workbooks and data efficiently",
|
||||
backstory="An AI assistant specialized in Excel data management and analysis.",
|
||||
apps=['microsoft_excel'] # All Excel actions will be available
|
||||
)
|
||||
|
||||
# Task to create and populate a workbook
|
||||
data_management_task = Task(
|
||||
description="Create a new sales report workbook with data analysis and charts",
|
||||
agent=excel_agent,
|
||||
expected_output="Excel workbook created with sales data, analysis, and visualizations"
|
||||
)
|
||||
|
||||
# Run the task
|
||||
crew = Crew(
|
||||
agents=[excel_agent],
|
||||
tasks=[data_management_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### Data Analysis and Reporting
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
data_analyst = Agent(
|
||||
role="Data Analyst",
|
||||
goal="Analyze data in Excel and create comprehensive reports",
|
||||
backstory="An AI assistant that specializes in data analysis and Excel reporting.",
|
||||
apps=[
|
||||
'microsoft_excel/get_workbooks',
|
||||
'microsoft_excel/get_range_data',
|
||||
'microsoft_excel/create_chart',
|
||||
'microsoft_excel/add_table'
|
||||
]
|
||||
)
|
||||
|
||||
# Task to analyze existing data
|
||||
analysis_task = Task(
|
||||
description="Analyze sales data in existing workbooks and create summary charts and tables",
|
||||
agent=data_analyst,
|
||||
expected_output="Data analyzed with summary charts and tables created"
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[data_analyst],
|
||||
tasks=[analysis_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### Workbook Creation and Structure
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
workbook_creator = Agent(
|
||||
role="Workbook Creator",
|
||||
goal="Create structured Excel workbooks with multiple worksheets and data organization",
|
||||
backstory="An AI assistant that creates well-organized Excel workbooks for various business needs.",
|
||||
apps=['microsoft_excel']
|
||||
)
|
||||
|
||||
# Task to create structured workbooks
|
||||
creation_task = Task(
|
||||
description="""
|
||||
1. Create a new quarterly report workbook
|
||||
2. Add multiple worksheets for different departments
|
||||
3. Create tables with headers for data organization
|
||||
4. Set up charts for key metrics visualization
|
||||
""",
|
||||
agent=workbook_creator,
|
||||
expected_output="Structured workbook created with multiple worksheets, tables, and charts"
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[workbook_creator],
|
||||
tasks=[creation_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### Data Manipulation and Updates
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
data_manipulator = Agent(
|
||||
role="Data Manipulator",
|
||||
goal="Update and manipulate data in Excel worksheets efficiently",
|
||||
backstory="An AI assistant that handles data updates, table management, and range operations.",
|
||||
apps=['microsoft_excel']
|
||||
)
|
||||
|
||||
# Task to manipulate data
|
||||
manipulation_task = Task(
|
||||
description="""
|
||||
1. Get data from existing worksheets
|
||||
2. Update specific ranges with new information
|
||||
3. Add new rows to existing tables
|
||||
4. Create additional charts based on updated data
|
||||
5. Organize data across multiple worksheets
|
||||
""",
|
||||
agent=data_manipulator,
|
||||
expected_output="Data updated across worksheets with new charts and organized structure"
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[data_manipulator],
|
||||
tasks=[manipulation_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### Advanced Excel Automation
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
excel_automator = Agent(
|
||||
role="Excel Automator",
|
||||
goal="Automate complex Excel workflows and data processing",
|
||||
backstory="An AI assistant that automates sophisticated Excel operations and data workflows.",
|
||||
apps=['microsoft_excel']
|
||||
)
|
||||
|
||||
# Complex automation task
|
||||
automation_task = Task(
|
||||
description="""
|
||||
1. Scan all Excel workbooks for specific data patterns
|
||||
2. Create consolidated reports from multiple workbooks
|
||||
3. Generate charts and tables for trend analysis
|
||||
4. Set up named ranges for easy data reference
|
||||
5. Create dashboard worksheets with key metrics
|
||||
6. Clean up unused worksheets and tables
|
||||
""",
|
||||
agent=excel_automator,
|
||||
expected_output="Automated Excel workflow completed with consolidated reports and dashboards"
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[excel_automator],
|
||||
tasks=[automation_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### Financial Modeling and Analysis
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
financial_modeler = Agent(
|
||||
role="Financial Modeler",
|
||||
goal="Create financial models and analysis in Excel",
|
||||
backstory="An AI assistant specialized in financial modeling and analysis using Excel.",
|
||||
apps=['microsoft_excel']
|
||||
)
|
||||
|
||||
# Task for financial modeling
|
||||
modeling_task = Task(
|
||||
description="""
|
||||
1. Create financial model workbooks with multiple scenarios
|
||||
2. Set up input tables for assumptions and variables
|
||||
3. Create calculation worksheets with formulas and logic
|
||||
4. Generate charts for financial projections and trends
|
||||
5. Add summary tables for key financial metrics
|
||||
6. Create sensitivity analysis tables
|
||||
""",
|
||||
agent=financial_modeler,
|
||||
expected_output="Financial model created with scenarios, calculations, and analysis charts"
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[financial_modeler],
|
||||
tasks=[modeling_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Common Issues
|
||||
|
||||
**Permission Errors**
|
||||
- Ensure your Microsoft account has appropriate permissions for Excel and OneDrive/SharePoint
|
||||
- Verify that the OAuth connection includes required scopes (Files.Read.All, Files.ReadWrite.All)
|
||||
- Check that you have access to the specific workbooks you're trying to modify
|
||||
|
||||
**File ID and Path Issues**
|
||||
- Verify that file IDs are correct and files exist in your OneDrive or SharePoint
|
||||
- Ensure file paths are properly formatted when creating new workbooks
|
||||
- Check that workbook files have the correct .xlsx extension
|
||||
|
||||
**Worksheet and Range Issues**
|
||||
- Verify that worksheet names exist in the specified workbook
|
||||
- Ensure range addresses are properly formatted (e.g., 'A1:C10')
|
||||
- Check that ranges don't exceed worksheet boundaries
|
||||
|
||||
**Data Format Issues**
|
||||
- Ensure data values are properly formatted for Excel (strings, numbers, integers)
|
||||
- Verify that 2D arrays for ranges have consistent row and column counts
|
||||
- Check that table data includes proper headers when has_headers is true
|
||||
|
||||
**Chart Creation Issues**
|
||||
- Verify that chart types are supported (ColumnClustered, Line, Pie, etc.)
|
||||
- Ensure source data ranges contain appropriate data for the chart type
|
||||
- Check that the source data range exists and contains data
|
||||
|
||||
**Table Management Issues**
|
||||
- Ensure table names are unique within worksheets
|
||||
- Verify that table ranges don't overlap with existing tables
|
||||
- Check that new row data matches the table's column structure
|
||||
|
||||
**Cell and Range Operations**
|
||||
- Verify that row and column indices are 0-based for cell operations
|
||||
- Ensure ranges contain data when using get_used_range
|
||||
- Check that named ranges exist before referencing them
|
||||
|
||||
### Getting Help
|
||||
|
||||
<Card title="Need Help?" icon="headset" href="mailto:support@crewai.com">
|
||||
Contact our support team for assistance with Microsoft Excel integration setup or troubleshooting.
|
||||
</Card>
|
||||
250
docs/en/enterprise/integrations/microsoft_onedrive.mdx
Normal file
250
docs/en/enterprise/integrations/microsoft_onedrive.mdx
Normal file
@@ -0,0 +1,250 @@
|
||||
---
|
||||
title: Microsoft OneDrive Integration
|
||||
description: "File and folder management with Microsoft OneDrive integration for CrewAI."
|
||||
icon: "cloud"
|
||||
mode: "wide"
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
Enable your agents to upload, download, and manage files and folders in Microsoft OneDrive. Automate file operations, organize content, create sharing links, and streamline your cloud storage workflows with AI-powered automation.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
Before using the Microsoft OneDrive integration, ensure you have:
|
||||
|
||||
- A [CrewAI AMP](https://app.crewai.com) account with an active subscription
|
||||
- A Microsoft account with OneDrive access
|
||||
- Connected your Microsoft account through the [Integrations page](https://app.crewai.com/crewai_plus/connectors)
|
||||
|
||||
## Setting Up Microsoft OneDrive Integration
|
||||
|
||||
### 1. Connect Your Microsoft Account
|
||||
|
||||
1. Navigate to [CrewAI AMP Integrations](https://app.crewai.com/crewai_plus/connectors)
|
||||
2. Find **Microsoft OneDrive** in the Authentication Integrations section
|
||||
3. Click **Connect** and complete the OAuth flow
|
||||
4. Grant the necessary permissions for file access
|
||||
5. Copy your Enterprise Token from [Integration Settings](https://app.crewai.com/crewai_plus/settings/integrations)
|
||||
|
||||
### 2. Install Required Package
|
||||
|
||||
```bash
|
||||
uv add crewai-tools
|
||||
```
|
||||
|
||||
## Available Actions
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="microsoft_onedrive/list_files">
|
||||
**Description:** List files and folders in OneDrive.
|
||||
|
||||
**Parameters:**
|
||||
- `top` (integer, optional): Number of items to retrieve (max 1000). Default is `50`.
|
||||
- `orderby` (string, optional): Order by field (e.g., "name asc", "lastModifiedDateTime desc"). Default is "name asc".
|
||||
- `filter` (string, optional): OData filter expression.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_onedrive/get_file_info">
|
||||
**Description:** Get information about a specific file or folder.
|
||||
|
||||
**Parameters:**
|
||||
- `item_id` (string, required): The ID of the file or folder.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_onedrive/download_file">
|
||||
**Description:** Download a file from OneDrive.
|
||||
|
||||
**Parameters:**
|
||||
- `item_id` (string, required): The ID of the file to download.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_onedrive/upload_file">
|
||||
**Description:** Upload a file to OneDrive.
|
||||
|
||||
**Parameters:**
|
||||
- `file_name` (string, required): Name of the file to upload.
|
||||
- `content` (string, required): Base64 encoded file content.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_onedrive/create_folder">
|
||||
**Description:** Create a new folder in OneDrive.
|
||||
|
||||
**Parameters:**
|
||||
- `folder_name` (string, required): Name of the folder to create.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_onedrive/delete_item">
|
||||
**Description:** Delete a file or folder from OneDrive.
|
||||
|
||||
**Parameters:**
|
||||
- `item_id` (string, required): The ID of the file or folder to delete.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_onedrive/copy_item">
|
||||
**Description:** Copy a file or folder in OneDrive.
|
||||
|
||||
**Parameters:**
|
||||
- `item_id` (string, required): The ID of the file or folder to copy.
|
||||
- `parent_id` (string, optional): The ID of the destination folder (optional, defaults to root).
|
||||
- `new_name` (string, optional): New name for the copied item (optional).
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_onedrive/move_item">
|
||||
**Description:** Move a file or folder in OneDrive.
|
||||
|
||||
**Parameters:**
|
||||
- `item_id` (string, required): The ID of the file or folder to move.
|
||||
- `parent_id` (string, required): The ID of the destination folder.
|
||||
- `new_name` (string, optional): New name for the item (optional).
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_onedrive/search_files">
|
||||
**Description:** Search for files and folders in OneDrive.
|
||||
|
||||
**Parameters:**
|
||||
- `query` (string, required): Search query string.
|
||||
- `top` (integer, optional): Number of results to return (max 1000). Default is `50`.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_onedrive/share_item">
|
||||
**Description:** Create a sharing link for a file or folder.
|
||||
|
||||
**Parameters:**
|
||||
- `item_id` (string, required): The ID of the file or folder to share.
|
||||
- `type` (string, optional): Type of sharing link. Enum: `view`, `edit`, `embed`. Default is `view`.
|
||||
- `scope` (string, optional): Scope of the sharing link. Enum: `anonymous`, `organization`. Default is `anonymous`.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_onedrive/get_thumbnails">
|
||||
**Description:** Get thumbnails for a file.
|
||||
|
||||
**Parameters:**
|
||||
- `item_id` (string, required): The ID of the file.
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
## Usage Examples
|
||||
|
||||
### Basic Microsoft OneDrive Agent Setup
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
# Create an agent with Microsoft OneDrive capabilities
|
||||
onedrive_agent = Agent(
|
||||
role="File Manager",
|
||||
goal="Manage files and folders in OneDrive efficiently",
|
||||
backstory="An AI assistant specialized in Microsoft OneDrive file operations and organization.",
|
||||
apps=['microsoft_onedrive'] # All OneDrive actions will be available
|
||||
)
|
||||
|
||||
# Task to list files and create a folder
|
||||
organize_files_task = Task(
|
||||
description="List all files in my OneDrive root directory and create a new folder called 'Project Documents'.",
|
||||
agent=onedrive_agent,
|
||||
expected_output="List of files displayed and new folder 'Project Documents' created."
|
||||
)
|
||||
|
||||
# Run the task
|
||||
crew = Crew(
|
||||
agents=[onedrive_agent],
|
||||
tasks=[organize_files_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### File Upload and Management
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
# Create an agent focused on file operations
|
||||
file_operator = Agent(
|
||||
role="File Operator",
|
||||
goal="Upload, download, and manage files with precision",
|
||||
backstory="An AI assistant skilled in file handling and content management.",
|
||||
apps=['microsoft_onedrive/upload_file', 'microsoft_onedrive/download_file', 'microsoft_onedrive/get_file_info']
|
||||
)
|
||||
|
||||
# Task to upload and manage a file
|
||||
file_management_task = Task(
|
||||
description="Upload a text file named 'report.txt' with content 'This is a sample report for the project.' Then get information about the uploaded file.",
|
||||
agent=file_operator,
|
||||
expected_output="File uploaded successfully and file information retrieved."
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[file_operator],
|
||||
tasks=[file_management_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### File Organization and Sharing
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
# Create an agent for file organization and sharing
|
||||
file_organizer = Agent(
|
||||
role="File Organizer",
|
||||
goal="Organize files and create sharing links for collaboration",
|
||||
backstory="An AI assistant that excels at organizing files and managing sharing permissions.",
|
||||
apps=['microsoft_onedrive/search_files', 'microsoft_onedrive/move_item', 'microsoft_onedrive/share_item', 'microsoft_onedrive/create_folder']
|
||||
)
|
||||
|
||||
# Task to organize and share files
|
||||
organize_share_task = Task(
|
||||
description="Search for files containing 'presentation' in the name, create a folder called 'Presentations', move the found files to this folder, and create a view-only sharing link for the folder.",
|
||||
agent=file_organizer,
|
||||
expected_output="Files organized into 'Presentations' folder and sharing link created."
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[file_organizer],
|
||||
tasks=[organize_share_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Common Issues
|
||||
|
||||
**Authentication Errors**
|
||||
- Ensure your Microsoft account has the necessary permissions for file access (e.g., `Files.Read`, `Files.ReadWrite`).
|
||||
- Verify that the OAuth connection includes all required scopes.
|
||||
|
||||
**File Upload Issues**
|
||||
- Ensure `file_name` and `content` are provided for file uploads.
|
||||
- Content must be Base64 encoded for binary files.
|
||||
- Check that you have write permissions to OneDrive.
|
||||
|
||||
**File/Folder ID Issues**
|
||||
- Double-check item IDs for correctness when accessing specific files or folders.
|
||||
- Item IDs are returned by other operations like `list_files` or `search_files`.
|
||||
- Ensure the referenced items exist and are accessible.
|
||||
|
||||
**Search and Filter Operations**
|
||||
- Use appropriate search terms for `search_files` operations.
|
||||
- For `filter` parameters, use proper OData syntax.
|
||||
|
||||
**File Operations (Copy/Move)**
|
||||
- For `move_item`, ensure both `item_id` and `parent_id` are provided.
|
||||
- For `copy_item`, only `item_id` is required; `parent_id` defaults to root if not specified.
|
||||
- Verify that destination folders exist and are accessible.
|
||||
|
||||
**Sharing Link Creation**
|
||||
- Ensure the item exists before creating sharing links.
|
||||
- Choose appropriate `type` and `scope` based on your sharing requirements.
|
||||
- `anonymous` scope allows access without sign-in; `organization` requires organizational account.
|
||||
|
||||
### Getting Help
|
||||
|
||||
<Card title="Need Help?" icon="headset" href="mailto:support@crewai.com">
|
||||
Contact our support team for assistance with Microsoft OneDrive integration setup or troubleshooting.
|
||||
</Card>
|
||||
232
docs/en/enterprise/integrations/microsoft_outlook.mdx
Normal file
232
docs/en/enterprise/integrations/microsoft_outlook.mdx
Normal file
@@ -0,0 +1,232 @@
|
||||
---
|
||||
title: Microsoft Outlook Integration
|
||||
description: "Email, calendar, and contact management with Microsoft Outlook integration for CrewAI."
|
||||
icon: "envelope"
|
||||
mode: "wide"
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
Enable your agents to access and manage Outlook emails, calendar events, and contacts. Send emails, retrieve messages, manage calendar events, and organize contacts with AI-powered automation.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
Before using the Microsoft Outlook integration, ensure you have:
|
||||
|
||||
- A [CrewAI AMP](https://app.crewai.com) account with an active subscription
|
||||
- A Microsoft account with Outlook access
|
||||
- Connected your Microsoft account through the [Integrations page](https://app.crewai.com/crewai_plus/connectors)
|
||||
|
||||
## Setting Up Microsoft Outlook Integration
|
||||
|
||||
### 1. Connect Your Microsoft Account
|
||||
|
||||
1. Navigate to [CrewAI AMP Integrations](https://app.crewai.com/crewai_plus/connectors)
|
||||
2. Find **Microsoft Outlook** in the Authentication Integrations section
|
||||
3. Click **Connect** and complete the OAuth flow
|
||||
4. Grant the necessary permissions for mail, calendar, and contact access
|
||||
5. Copy your Enterprise Token from [Integration Settings](https://app.crewai.com/crewai_plus/settings/integrations)
|
||||
|
||||
### 2. Install Required Package
|
||||
|
||||
```bash
|
||||
uv add crewai-tools
|
||||
```
|
||||
|
||||
## Available Actions
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="microsoft_outlook/get_messages">
|
||||
**Description:** Get email messages from the user's mailbox.
|
||||
|
||||
**Parameters:**
|
||||
- `top` (integer, optional): Number of messages to retrieve (max 1000). Default is `10`.
|
||||
- `filter` (string, optional): OData filter expression (e.g., "isRead eq false").
|
||||
- `search` (string, optional): Search query string.
|
||||
- `orderby` (string, optional): Order by field (e.g., "receivedDateTime desc"). Default is "receivedDateTime desc".
|
||||
- `select` (string, optional): Select specific properties to return.
|
||||
- `expand` (string, optional): Expand related resources inline.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_outlook/send_email">
|
||||
**Description:** Send an email message.
|
||||
|
||||
**Parameters:**
|
||||
- `to_recipients` (array, required): Array of recipient email addresses.
|
||||
- `cc_recipients` (array, optional): Array of CC recipient email addresses.
|
||||
- `bcc_recipients` (array, optional): Array of BCC recipient email addresses.
|
||||
- `subject` (string, required): Email subject.
|
||||
- `body` (string, required): Email body content.
|
||||
- `body_type` (string, optional): Body content type. Enum: `Text`, `HTML`. Default is `HTML`.
|
||||
- `importance` (string, optional): Message importance level. Enum: `low`, `normal`, `high`. Default is `normal`.
|
||||
- `reply_to` (array, optional): Array of reply-to email addresses.
|
||||
- `save_to_sent_items` (boolean, optional): Whether to save the message to Sent Items folder. Default is `true`.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_outlook/get_calendar_events">
|
||||
**Description:** Get calendar events from the user's calendar.
|
||||
|
||||
**Parameters:**
|
||||
- `top` (integer, optional): Number of events to retrieve (max 1000). Default is `10`.
|
||||
- `skip` (integer, optional): Number of events to skip. Default is `0`.
|
||||
- `filter` (string, optional): OData filter expression (e.g., "start/dateTime ge '2024-01-01T00:00:00Z'").
|
||||
- `orderby` (string, optional): Order by field (e.g., "start/dateTime asc"). Default is "start/dateTime asc".
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_outlook/create_calendar_event">
|
||||
**Description:** Create a new calendar event.
|
||||
|
||||
**Parameters:**
|
||||
- `subject` (string, required): Event subject/title.
|
||||
- `body` (string, optional): Event body/description.
|
||||
- `start_datetime` (string, required): Start date and time in ISO 8601 format (e.g., '2024-01-20T10:00:00').
|
||||
- `end_datetime` (string, required): End date and time in ISO 8601 format.
|
||||
- `timezone` (string, optional): Time zone (e.g., 'Pacific Standard Time'). Default is `UTC`.
|
||||
- `location` (string, optional): Event location.
|
||||
- `attendees` (array, optional): Array of attendee email addresses.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_outlook/get_contacts">
|
||||
**Description:** Get contacts from the user's address book.
|
||||
|
||||
**Parameters:**
|
||||
- `top` (integer, optional): Number of contacts to retrieve (max 1000). Default is `10`.
|
||||
- `skip` (integer, optional): Number of contacts to skip. Default is `0`.
|
||||
- `filter` (string, optional): OData filter expression.
|
||||
- `orderby` (string, optional): Order by field (e.g., "displayName asc"). Default is "displayName asc".
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_outlook/create_contact">
|
||||
**Description:** Create a new contact in the user's address book.
|
||||
|
||||
**Parameters:**
|
||||
- `displayName` (string, required): Contact's display name.
|
||||
- `givenName` (string, optional): Contact's first name.
|
||||
- `surname` (string, optional): Contact's last name.
|
||||
- `emailAddresses` (array, optional): Array of email addresses. Each item is an object with `address` (string) and `name` (string).
|
||||
- `businessPhones` (array, optional): Array of business phone numbers.
|
||||
- `homePhones` (array, optional): Array of home phone numbers.
|
||||
- `jobTitle` (string, optional): Contact's job title.
|
||||
- `companyName` (string, optional): Contact's company name.
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
## Usage Examples
|
||||
|
||||
### Basic Microsoft Outlook Agent Setup
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
# Create an agent with Microsoft Outlook capabilities
|
||||
outlook_agent = Agent(
|
||||
role="Email Assistant",
|
||||
goal="Manage emails, calendar events, and contacts efficiently",
|
||||
backstory="An AI assistant specialized in Microsoft Outlook operations and communication management.",
|
||||
apps=['microsoft_outlook'] # All Outlook actions will be available
|
||||
)
|
||||
|
||||
# Task to send an email
|
||||
send_email_task = Task(
|
||||
description="Send an email to 'colleague@example.com' with subject 'Project Update' and body 'Hi, here is the latest project update. Best regards.'",
|
||||
agent=outlook_agent,
|
||||
expected_output="Email sent successfully to colleague@example.com"
|
||||
)
|
||||
|
||||
# Run the task
|
||||
crew = Crew(
|
||||
agents=[outlook_agent],
|
||||
tasks=[send_email_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### Email Management and Search
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
# Create an agent focused on email management
|
||||
email_manager = Agent(
|
||||
role="Email Manager",
|
||||
goal="Retrieve, search, and organize email messages",
|
||||
backstory="An AI assistant skilled in email organization and management.",
|
||||
apps=['microsoft_outlook/get_messages']
|
||||
)
|
||||
|
||||
# Task to search and retrieve emails
|
||||
search_emails_task = Task(
|
||||
description="Get the latest 20 unread emails and provide a summary of the most important ones.",
|
||||
agent=email_manager,
|
||||
expected_output="Summary of the most important unread emails with key details."
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[email_manager],
|
||||
tasks=[search_emails_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### Calendar and Contact Management
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
# Create an agent for calendar and contact management
|
||||
scheduler = Agent(
|
||||
role="Calendar and Contact Manager",
|
||||
goal="Manage calendar events and maintain contact information",
|
||||
backstory="An AI assistant that handles scheduling and contact organization.",
|
||||
apps=['microsoft_outlook/create_calendar_event', 'microsoft_outlook/get_calendar_events', 'microsoft_outlook/create_contact']
|
||||
)
|
||||
|
||||
# Task to create a meeting and add a contact
|
||||
schedule_task = Task(
|
||||
description="Create a calendar event for tomorrow at 2 PM titled 'Team Meeting' with location 'Conference Room A', and create a new contact for 'John Smith' with email 'john.smith@example.com' and job title 'Project Manager'.",
|
||||
agent=scheduler,
|
||||
expected_output="Calendar event created and new contact added successfully."
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[scheduler],
|
||||
tasks=[schedule_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Common Issues
|
||||
|
||||
**Authentication Errors**
|
||||
- Ensure your Microsoft account has the necessary permissions for mail, calendar, and contact access.
|
||||
- Required scopes include: `Mail.Read`, `Mail.Send`, `Calendars.Read`, `Calendars.ReadWrite`, `Contacts.Read`, `Contacts.ReadWrite`.
|
||||
- Verify that the OAuth connection includes all required scopes.
|
||||
|
||||
**Email Sending Issues**
|
||||
- Ensure `to_recipients`, `subject`, and `body` are provided for `send_email`.
|
||||
- Check that email addresses are properly formatted.
|
||||
- Verify that the account has `Mail.Send` permissions.
|
||||
|
||||
**Calendar Event Creation**
|
||||
- Ensure `subject`, `start_datetime`, and `end_datetime` are provided.
|
||||
- Use proper ISO 8601 format for datetime fields (e.g., '2024-01-20T10:00:00').
|
||||
- Verify timezone settings if events appear at incorrect times.
|
||||
|
||||
**Contact Management**
|
||||
- For `create_contact`, ensure `displayName` is provided as it's required.
|
||||
- When providing `emailAddresses`, use the proper object format with `address` and `name` properties.
|
||||
|
||||
**Search and Filter Issues**
|
||||
- Use proper OData syntax for `filter` parameters.
|
||||
- For date filters, use ISO 8601 format (e.g., "receivedDateTime ge '2024-01-01T00:00:00Z'").
|
||||
|
||||
### Getting Help
|
||||
|
||||
<Card title="Need Help?" icon="headset" href="mailto:support@crewai.com">
|
||||
Contact our support team for assistance with Microsoft Outlook integration setup or troubleshooting.
|
||||
</Card>
|
||||
388
docs/en/enterprise/integrations/microsoft_sharepoint.mdx
Normal file
388
docs/en/enterprise/integrations/microsoft_sharepoint.mdx
Normal file
@@ -0,0 +1,388 @@
|
||||
---
|
||||
title: Microsoft SharePoint Integration
|
||||
description: "Site, list, and document management with Microsoft SharePoint integration for CrewAI."
|
||||
icon: "folder-tree"
|
||||
mode: "wide"
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
Enable your agents to access and manage SharePoint sites, lists, and document libraries. Retrieve site information, manage list items, upload and organize files, and streamline your SharePoint workflows with AI-powered automation.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
Before using the Microsoft SharePoint integration, ensure you have:
|
||||
|
||||
- A [CrewAI AMP](https://app.crewai.com) account with an active subscription
|
||||
- A Microsoft 365 account with SharePoint access
|
||||
- Connected your Microsoft account through the [Integrations page](https://app.crewai.com/crewai_plus/connectors)
|
||||
|
||||
## Setting Up Microsoft SharePoint Integration
|
||||
|
||||
### 1. Connect Your Microsoft Account
|
||||
|
||||
1. Navigate to [CrewAI AMP Integrations](https://app.crewai.com/crewai_plus/connectors)
|
||||
2. Find **Microsoft SharePoint** in the Authentication Integrations section
|
||||
3. Click **Connect** and complete the OAuth flow
|
||||
4. Grant the necessary permissions for SharePoint sites and content access
|
||||
5. Copy your Enterprise Token from [Integration Settings](https://app.crewai.com/crewai_plus/settings/integrations)
|
||||
|
||||
### 2. Install Required Package
|
||||
|
||||
```bash
|
||||
uv add crewai-tools
|
||||
```
|
||||
|
||||
## Available Actions
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="microsoft_sharepoint/get_sites">
|
||||
**Description:** Get all SharePoint sites the user has access to.
|
||||
|
||||
**Parameters:**
|
||||
- `search` (string, optional): Search query to filter sites
|
||||
- `select` (string, optional): Select specific properties to return (e.g., 'displayName,id,webUrl')
|
||||
- `filter` (string, optional): Filter results using OData syntax
|
||||
- `expand` (string, optional): Expand related resources inline
|
||||
- `top` (integer, optional): Number of items to return. Minimum: 1, Maximum: 999
|
||||
- `skip` (integer, optional): Number of items to skip. Minimum: 0
|
||||
- `orderby` (string, optional): Order results by specified properties (e.g., 'displayName desc')
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_sharepoint/get_site">
|
||||
**Description:** Get information about a specific SharePoint site.
|
||||
|
||||
**Parameters:**
|
||||
- `site_id` (string, required): The ID of the SharePoint site
|
||||
- `select` (string, optional): Select specific properties to return (e.g., 'displayName,id,webUrl,drives')
|
||||
- `expand` (string, optional): Expand related resources inline (e.g., 'drives,lists')
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_sharepoint/get_site_lists">
|
||||
**Description:** Get all lists in a SharePoint site.
|
||||
|
||||
**Parameters:**
|
||||
- `site_id` (string, required): The ID of the SharePoint site
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_sharepoint/get_list">
|
||||
**Description:** Get information about a specific list.
|
||||
|
||||
**Parameters:**
|
||||
- `site_id` (string, required): The ID of the SharePoint site
|
||||
- `list_id` (string, required): The ID of the list
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_sharepoint/get_list_items">
|
||||
**Description:** Get items from a SharePoint list.
|
||||
|
||||
**Parameters:**
|
||||
- `site_id` (string, required): The ID of the SharePoint site
|
||||
- `list_id` (string, required): The ID of the list
|
||||
- `expand` (string, optional): Expand related data (e.g., 'fields')
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_sharepoint/create_list_item">
|
||||
**Description:** Create a new item in a SharePoint list.
|
||||
|
||||
**Parameters:**
|
||||
- `site_id` (string, required): The ID of the SharePoint site
|
||||
- `list_id` (string, required): The ID of the list
|
||||
- `fields` (object, required): The field values for the new item
|
||||
```json
|
||||
{
|
||||
"Title": "New Item Title",
|
||||
"Description": "Item description",
|
||||
"Status": "Active"
|
||||
}
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_sharepoint/update_list_item">
|
||||
**Description:** Update an item in a SharePoint list.
|
||||
|
||||
**Parameters:**
|
||||
- `site_id` (string, required): The ID of the SharePoint site
|
||||
- `list_id` (string, required): The ID of the list
|
||||
- `item_id` (string, required): The ID of the item to update
|
||||
- `fields` (object, required): The field values to update
|
||||
```json
|
||||
{
|
||||
"Title": "Updated Title",
|
||||
"Status": "Completed"
|
||||
}
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_sharepoint/delete_list_item">
|
||||
**Description:** Delete an item from a SharePoint list.
|
||||
|
||||
**Parameters:**
|
||||
- `site_id` (string, required): The ID of the SharePoint site
|
||||
- `list_id` (string, required): The ID of the list
|
||||
- `item_id` (string, required): The ID of the item to delete
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_sharepoint/upload_file_to_library">
|
||||
**Description:** Upload a file to a SharePoint document library.
|
||||
|
||||
**Parameters:**
|
||||
- `site_id` (string, required): The ID of the SharePoint site
|
||||
- `file_path` (string, required): The path where to upload the file (e.g., 'folder/filename.txt')
|
||||
- `content` (string, required): The file content to upload
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_sharepoint/get_drive_items">
|
||||
**Description:** Get files and folders from a SharePoint document library.
|
||||
|
||||
**Parameters:**
|
||||
- `site_id` (string, required): The ID of the SharePoint site
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_sharepoint/delete_drive_item">
|
||||
**Description:** Delete a file or folder from SharePoint document library.
|
||||
|
||||
**Parameters:**
|
||||
- `site_id` (string, required): The ID of the SharePoint site
|
||||
- `item_id` (string, required): The ID of the file or folder to delete
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
## Usage Examples
|
||||
|
||||
### Basic SharePoint Agent Setup
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
# Create an agent with SharePoint capabilities
|
||||
sharepoint_agent = Agent(
|
||||
role="SharePoint Manager",
|
||||
goal="Manage SharePoint sites, lists, and documents efficiently",
|
||||
backstory="An AI assistant specialized in SharePoint content management and collaboration.",
|
||||
apps=['microsoft_sharepoint'] # All SharePoint actions will be available
|
||||
)
|
||||
|
||||
# Task to organize SharePoint content
|
||||
content_organization_task = Task(
|
||||
description="List all accessible SharePoint sites and organize content by department",
|
||||
agent=sharepoint_agent,
|
||||
expected_output="SharePoint sites listed and content organized by department"
|
||||
)
|
||||
|
||||
# Run the task
|
||||
crew = Crew(
|
||||
agents=[sharepoint_agent],
|
||||
tasks=[content_organization_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### List Management and Data Operations
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
list_manager = Agent(
|
||||
role="List Manager",
|
||||
goal="Manage SharePoint lists and data efficiently",
|
||||
backstory="An AI assistant that focuses on SharePoint list management and data operations.",
|
||||
apps=[
|
||||
'microsoft_sharepoint/get_site_lists',
|
||||
'microsoft_sharepoint/get_list_items',
|
||||
'microsoft_sharepoint/create_list_item',
|
||||
'microsoft_sharepoint/update_list_item'
|
||||
]
|
||||
)
|
||||
|
||||
# Task to manage list data
|
||||
list_management_task = Task(
|
||||
description="Get all lists from the project site, review items, and update status for completed tasks",
|
||||
agent=list_manager,
|
||||
expected_output="SharePoint lists reviewed and task statuses updated"
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[list_manager],
|
||||
tasks=[list_management_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### Document Library Management
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
document_manager = Agent(
|
||||
role="Document Manager",
|
||||
goal="Manage SharePoint document libraries and files",
|
||||
backstory="An AI assistant that specializes in document organization and file management.",
|
||||
apps=['microsoft_sharepoint']
|
||||
)
|
||||
|
||||
# Task to manage documents
|
||||
document_task = Task(
|
||||
description="""
|
||||
1. Get all files from the main document library
|
||||
2. Upload new policy documents to the appropriate folders
|
||||
3. Organize files by department and date
|
||||
4. Remove outdated documents
|
||||
""",
|
||||
agent=document_manager,
|
||||
expected_output="Document library organized with new files uploaded and outdated files removed"
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[document_manager],
|
||||
tasks=[document_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### Site Administration and Analysis
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
site_administrator = Agent(
|
||||
role="Site Administrator",
|
||||
goal="Administer and analyze SharePoint sites",
|
||||
backstory="An AI assistant that handles site administration and provides insights on site usage.",
|
||||
apps=['microsoft_sharepoint']
|
||||
)
|
||||
|
||||
# Task for site administration
|
||||
admin_task = Task(
|
||||
description="""
|
||||
1. Get information about all accessible SharePoint sites
|
||||
2. Analyze site structure and content organization
|
||||
3. Identify sites with low activity or outdated content
|
||||
4. Generate recommendations for site optimization
|
||||
""",
|
||||
agent=site_administrator,
|
||||
expected_output="Site analysis completed with optimization recommendations"
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[site_administrator],
|
||||
tasks=[admin_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### Automated Content Workflows
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
workflow_automator = Agent(
|
||||
role="Workflow Automator",
|
||||
goal="Automate SharePoint content workflows and processes",
|
||||
backstory="An AI assistant that automates complex SharePoint workflows and content management processes.",
|
||||
apps=['microsoft_sharepoint']
|
||||
)
|
||||
|
||||
# Complex workflow automation task
|
||||
automation_task = Task(
|
||||
description="""
|
||||
1. Monitor project lists across multiple sites
|
||||
2. Create status reports based on list data
|
||||
3. Upload reports to designated document libraries
|
||||
4. Update project tracking lists with completion status
|
||||
5. Archive completed project documents
|
||||
6. Send notifications for overdue items
|
||||
""",
|
||||
agent=workflow_automator,
|
||||
expected_output="Automated workflow completed with status reports generated and project tracking updated"
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[workflow_automator],
|
||||
tasks=[automation_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### Data Integration and Reporting
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
data_integrator = Agent(
|
||||
role="Data Integrator",
|
||||
goal="Integrate and analyze data across SharePoint sites and lists",
|
||||
backstory="An AI assistant that specializes in data integration and cross-site analysis.",
|
||||
apps=['microsoft_sharepoint']
|
||||
)
|
||||
|
||||
# Task for data integration
|
||||
integration_task = Task(
|
||||
description="""
|
||||
1. Get data from multiple SharePoint lists across different sites
|
||||
2. Consolidate information into comprehensive reports
|
||||
3. Create new list items with aggregated data
|
||||
4. Upload analytical reports to executive document library
|
||||
5. Update dashboard lists with key metrics
|
||||
""",
|
||||
agent=data_integrator,
|
||||
expected_output="Data integrated across sites with comprehensive reports and updated dashboards"
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[data_integrator],
|
||||
tasks=[integration_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Common Issues
|
||||
|
||||
**Permission Errors**
|
||||
- Ensure your Microsoft account has appropriate permissions for SharePoint sites
|
||||
- Verify that the OAuth connection includes required scopes (Sites.Read.All, Sites.ReadWrite.All)
|
||||
- Check that you have access to the specific sites and lists you're trying to access
|
||||
|
||||
**Site and List ID Issues**
|
||||
- Verify that site IDs and list IDs are correct and properly formatted
|
||||
- Ensure that sites and lists exist and are accessible to your account
|
||||
- Use the get_sites and get_site_lists actions to discover valid IDs
|
||||
|
||||
**Field and Schema Issues**
|
||||
- Ensure field names match exactly with the SharePoint list schema
|
||||
- Verify that required fields are included when creating or updating list items
|
||||
- Check that field types and values are compatible with the list column definitions
|
||||
|
||||
**File Upload Issues**
|
||||
- Ensure file paths are properly formatted and don't contain invalid characters
|
||||
- Verify that you have write permissions to the target document library
|
||||
- Check that file content is properly encoded for upload
|
||||
|
||||
**OData Query Issues**
|
||||
- Use proper OData syntax for filter, select, expand, and orderby parameters
|
||||
- Verify that property names used in queries exist in the target resources
|
||||
- Test simple queries before building complex filter expressions
|
||||
|
||||
**Pagination and Performance**
|
||||
- Use top and skip parameters appropriately for large result sets
|
||||
- Implement proper pagination for lists with many items
|
||||
- Consider using select parameters to return only needed properties
|
||||
|
||||
**Document Library Operations**
|
||||
- Ensure you have proper permissions for document library operations
|
||||
- Verify that drive item IDs are correct when deleting files or folders
|
||||
- Check that file paths don't conflict with existing content
|
||||
|
||||
### Getting Help
|
||||
|
||||
<Card title="Need Help?" icon="headset" href="mailto:support@crewai.com">
|
||||
Contact our support team for assistance with Microsoft SharePoint integration setup or troubleshooting.
|
||||
</Card>
|
||||
212
docs/en/enterprise/integrations/microsoft_teams.mdx
Normal file
212
docs/en/enterprise/integrations/microsoft_teams.mdx
Normal file
@@ -0,0 +1,212 @@
|
||||
---
|
||||
title: Microsoft Teams Integration
|
||||
description: "Team collaboration and communication with Microsoft Teams integration for CrewAI."
|
||||
icon: "users"
|
||||
mode: "wide"
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
Enable your agents to access Teams data, send messages, create meetings, and manage channels. Automate team communication, schedule meetings, retrieve messages, and streamline your collaboration workflows with AI-powered automation.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
Before using the Microsoft Teams integration, ensure you have:
|
||||
|
||||
- A [CrewAI AMP](https://app.crewai.com) account with an active subscription
|
||||
- A Microsoft account with Teams access
|
||||
- Connected your Microsoft account through the [Integrations page](https://app.crewai.com/crewai_plus/connectors)
|
||||
|
||||
## Setting Up Microsoft Teams Integration
|
||||
|
||||
### 1. Connect Your Microsoft Account
|
||||
|
||||
1. Navigate to [CrewAI AMP Integrations](https://app.crewai.com/crewai_plus/connectors)
|
||||
2. Find **Microsoft Teams** in the Authentication Integrations section
|
||||
3. Click **Connect** and complete the OAuth flow
|
||||
4. Grant the necessary permissions for Teams access
|
||||
5. Copy your Enterprise Token from [Integration Settings](https://app.crewai.com/crewai_plus/settings/integrations)
|
||||
|
||||
### 2. Install Required Package
|
||||
|
||||
```bash
|
||||
uv add crewai-tools
|
||||
```
|
||||
|
||||
## Available Actions
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="microsoft_teams/get_teams">
|
||||
**Description:** Get all teams the user is a member of.
|
||||
|
||||
**Parameters:**
|
||||
- No parameters required.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_teams/get_channels">
|
||||
**Description:** Get channels in a specific team.
|
||||
|
||||
**Parameters:**
|
||||
- `team_id` (string, required): The ID of the team.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_teams/send_message">
|
||||
**Description:** Send a message to a Teams channel.
|
||||
|
||||
**Parameters:**
|
||||
- `team_id` (string, required): The ID of the team.
|
||||
- `channel_id` (string, required): The ID of the channel.
|
||||
- `message` (string, required): The message content.
|
||||
- `content_type` (string, optional): Content type (html or text). Enum: `html`, `text`. Default is `text`.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_teams/get_messages">
|
||||
**Description:** Get messages from a Teams channel.
|
||||
|
||||
**Parameters:**
|
||||
- `team_id` (string, required): The ID of the team.
|
||||
- `channel_id` (string, required): The ID of the channel.
|
||||
- `top` (integer, optional): Number of messages to retrieve (max 50). Default is `20`.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_teams/create_meeting">
|
||||
**Description:** Create a Teams meeting.
|
||||
|
||||
**Parameters:**
|
||||
- `subject` (string, required): Meeting subject/title.
|
||||
- `startDateTime` (string, required): Meeting start time (ISO 8601 format with timezone).
|
||||
- `endDateTime` (string, required): Meeting end time (ISO 8601 format with timezone).
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_teams/search_online_meetings_by_join_url">
|
||||
**Description:** Search online meetings by Join Web URL.
|
||||
|
||||
**Parameters:**
|
||||
- `join_web_url` (string, required): The join web URL of the meeting to search for.
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
## Usage Examples
|
||||
|
||||
### Basic Microsoft Teams Agent Setup
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
# Create an agent with Microsoft Teams capabilities
|
||||
teams_agent = Agent(
|
||||
role="Teams Coordinator",
|
||||
goal="Manage Teams communication and meetings efficiently",
|
||||
backstory="An AI assistant specialized in Microsoft Teams operations and team collaboration.",
|
||||
apps=['microsoft_teams'] # All Teams actions will be available
|
||||
)
|
||||
|
||||
# Task to list teams and channels
|
||||
explore_teams_task = Task(
|
||||
description="List all teams I'm a member of and then get the channels for the first team.",
|
||||
agent=teams_agent,
|
||||
expected_output="List of teams and channels displayed."
|
||||
)
|
||||
|
||||
# Run the task
|
||||
crew = Crew(
|
||||
agents=[teams_agent],
|
||||
tasks=[explore_teams_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### Messaging and Communication
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
# Create an agent focused on messaging
|
||||
messenger = Agent(
|
||||
role="Teams Messenger",
|
||||
goal="Send and retrieve messages in Teams channels",
|
||||
backstory="An AI assistant skilled in team communication and message management.",
|
||||
apps=['microsoft_teams/send_message', 'microsoft_teams/get_messages']
|
||||
)
|
||||
|
||||
# Task to send a message and retrieve recent messages
|
||||
messaging_task = Task(
|
||||
description="Send a message 'Hello team! This is an automated update from our AI assistant.' to the General channel of team 'your_team_id', then retrieve the last 10 messages from that channel.",
|
||||
agent=messenger,
|
||||
expected_output="Message sent successfully and recent messages retrieved."
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[messenger],
|
||||
tasks=[messaging_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### Meeting Management
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
# Create an agent for meeting management
|
||||
meeting_scheduler = Agent(
|
||||
role="Meeting Scheduler",
|
||||
goal="Create and manage Teams meetings",
|
||||
backstory="An AI assistant that handles meeting scheduling and organization.",
|
||||
apps=['microsoft_teams/create_meeting', 'microsoft_teams/search_online_meetings_by_join_url']
|
||||
)
|
||||
|
||||
# Task to create a meeting
|
||||
schedule_meeting_task = Task(
|
||||
description="Create a Teams meeting titled 'Weekly Team Sync' scheduled for tomorrow at 10:00 AM lasting for 1 hour (use proper ISO 8601 format with timezone).",
|
||||
agent=meeting_scheduler,
|
||||
expected_output="Teams meeting created successfully with meeting details."
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[meeting_scheduler],
|
||||
tasks=[schedule_meeting_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Common Issues
|
||||
|
||||
**Authentication Errors**
|
||||
- Ensure your Microsoft account has the necessary permissions for Teams access.
|
||||
- Required scopes include: `Team.ReadBasic.All`, `Channel.ReadBasic.All`, `ChannelMessage.Send`, `ChannelMessage.Read.All`, `OnlineMeetings.ReadWrite`, `OnlineMeetings.Read`.
|
||||
- Verify that the OAuth connection includes all required scopes.
|
||||
|
||||
**Team and Channel Access**
|
||||
- Ensure you are a member of the teams you're trying to access.
|
||||
- Double-check team IDs and channel IDs for correctness.
|
||||
- Team and channel IDs can be obtained using the `get_teams` and `get_channels` actions.
|
||||
|
||||
**Message Sending Issues**
|
||||
- Ensure `team_id`, `channel_id`, and `message` are provided for `send_message`.
|
||||
- Verify that you have permissions to send messages to the specified channel.
|
||||
- Choose appropriate `content_type` (text or html) based on your message format.
|
||||
|
||||
**Meeting Creation**
|
||||
- Ensure `subject`, `startDateTime`, and `endDateTime` are provided.
|
||||
- Use proper ISO 8601 format with timezone for datetime fields (e.g., '2024-01-20T10:00:00-08:00').
|
||||
- Verify that the meeting times are in the future.
|
||||
|
||||
**Message Retrieval Limitations**
|
||||
- The `get_messages` action can retrieve a maximum of 50 messages per request.
|
||||
- Messages are returned in reverse chronological order (newest first).
|
||||
|
||||
**Meeting Search**
|
||||
- For `search_online_meetings_by_join_url`, ensure the join URL is exact and properly formatted.
|
||||
- The URL should be the complete Teams meeting join URL.
|
||||
|
||||
### Getting Help
|
||||
|
||||
<Card title="Need Help?" icon="headset" href="mailto:support@crewai.com">
|
||||
Contact our support team for assistance with Microsoft Teams integration setup or troubleshooting.
|
||||
</Card>
|
||||
192
docs/en/enterprise/integrations/microsoft_word.mdx
Normal file
192
docs/en/enterprise/integrations/microsoft_word.mdx
Normal file
@@ -0,0 +1,192 @@
|
||||
---
|
||||
title: Microsoft Word Integration
|
||||
description: "Document creation and management with Microsoft Word integration for CrewAI."
|
||||
icon: "file-word"
|
||||
mode: "wide"
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
Enable your agents to create, read, and manage Word documents and text files in OneDrive or SharePoint. Automate document creation, retrieve content, manage document properties, and streamline your document workflows with AI-powered automation.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
Before using the Microsoft Word integration, ensure you have:
|
||||
|
||||
- A [CrewAI AMP](https://app.crewai.com) account with an active subscription
|
||||
- A Microsoft account with Word and OneDrive/SharePoint access
|
||||
- Connected your Microsoft account through the [Integrations page](https://app.crewai.com/crewai_plus/connectors)
|
||||
|
||||
## Setting Up Microsoft Word Integration
|
||||
|
||||
### 1. Connect Your Microsoft Account
|
||||
|
||||
1. Navigate to [CrewAI AMP Integrations](https://app.crewai.com/crewai_plus/connectors)
|
||||
2. Find **Microsoft Word** in the Authentication Integrations section
|
||||
3. Click **Connect** and complete the OAuth flow
|
||||
4. Grant the necessary permissions for file access
|
||||
5. Copy your Enterprise Token from [Integration Settings](https://app.crewai.com/crewai_plus/settings/integrations)
|
||||
|
||||
### 2. Install Required Package
|
||||
|
||||
```bash
|
||||
uv add crewai-tools
|
||||
```
|
||||
|
||||
## Available Actions
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="microsoft_word/get_documents">
|
||||
**Description:** Get all Word documents from OneDrive or SharePoint.
|
||||
|
||||
**Parameters:**
|
||||
- `select` (string, optional): Select specific properties to return.
|
||||
- `filter` (string, optional): Filter results using OData syntax.
|
||||
- `expand` (string, optional): Expand related resources inline.
|
||||
- `top` (integer, optional): Number of items to return (min 1, max 999).
|
||||
- `orderby` (string, optional): Order results by specified properties.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_word/create_text_document">
|
||||
**Description:** Create a text document (.txt) with content. RECOMMENDED for programmatic content creation that needs to be readable and editable.
|
||||
|
||||
**Parameters:**
|
||||
- `file_name` (string, required): Name of the text document (should end with .txt).
|
||||
- `content` (string, optional): Text content for the document. Default is "This is a new text document created via API."
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_word/get_document_content">
|
||||
**Description:** Get the content of a document (works best with text files).
|
||||
|
||||
**Parameters:**
|
||||
- `file_id` (string, required): The ID of the document.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_word/get_document_properties">
|
||||
**Description:** Get properties and metadata of a document.
|
||||
|
||||
**Parameters:**
|
||||
- `file_id` (string, required): The ID of the document.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_word/delete_document">
|
||||
**Description:** Delete a document.
|
||||
|
||||
**Parameters:**
|
||||
- `file_id` (string, required): The ID of the document to delete.
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
## Usage Examples
|
||||
|
||||
### Basic Microsoft Word Agent Setup
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
# Create an agent with Microsoft Word capabilities
|
||||
word_agent = Agent(
|
||||
role="Document Manager",
|
||||
goal="Manage Word documents and text files efficiently",
|
||||
backstory="An AI assistant specialized in Microsoft Word document operations and content management.",
|
||||
apps=['microsoft_word'] # All Word actions will be available
|
||||
)
|
||||
|
||||
# Task to create a new text document
|
||||
create_doc_task = Task(
|
||||
description="Create a new text document named 'meeting_notes.txt' with content 'Meeting Notes from January 2024: Key discussion points and action items.'",
|
||||
agent=word_agent,
|
||||
expected_output="New text document 'meeting_notes.txt' created successfully."
|
||||
)
|
||||
|
||||
# Run the task
|
||||
crew = Crew(
|
||||
agents=[word_agent],
|
||||
tasks=[create_doc_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### Reading and Managing Documents
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
# Create an agent focused on document operations
|
||||
document_reader = Agent(
|
||||
role="Document Reader",
|
||||
goal="Retrieve and analyze document content and properties",
|
||||
backstory="An AI assistant skilled in reading and analyzing document content.",
|
||||
apps=['microsoft_word/get_documents', 'microsoft_word/get_document_content', 'microsoft_word/get_document_properties']
|
||||
)
|
||||
|
||||
# Task to list and read documents
|
||||
read_docs_task = Task(
|
||||
description="List all Word documents in my OneDrive, then get the content and properties of the first document found.",
|
||||
agent=document_reader,
|
||||
expected_output="List of documents with content and properties of the first document."
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[document_reader],
|
||||
tasks=[read_docs_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### Document Cleanup and Organization
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
# Create an agent for document management
|
||||
document_organizer = Agent(
|
||||
role="Document Organizer",
|
||||
goal="Organize and clean up document collections",
|
||||
backstory="An AI assistant that helps maintain organized document libraries.",
|
||||
apps=['microsoft_word/get_documents', 'microsoft_word/get_document_properties', 'microsoft_word/delete_document']
|
||||
)
|
||||
|
||||
# Task to organize documents
|
||||
organize_task = Task(
|
||||
description="List all documents, check their properties, and identify any documents that might be duplicates or outdated for potential cleanup.",
|
||||
agent=document_organizer,
|
||||
expected_output="Analysis of document library with recommendations for organization."
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[document_organizer],
|
||||
tasks=[organize_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Common Issues
|
||||
|
||||
**Authentication Errors**
|
||||
- Ensure your Microsoft account has the necessary permissions for file access (e.g., `Files.Read.All`, `Files.ReadWrite.All`).
|
||||
- Verify that the OAuth connection includes all required scopes.
|
||||
|
||||
**File Creation Issues**
|
||||
- When creating text documents, ensure the `file_name` ends with `.txt` extension.
|
||||
- Verify that you have write permissions to the target location (OneDrive/SharePoint).
|
||||
|
||||
**Document Access Issues**
|
||||
- Double-check document IDs for correctness when accessing specific documents.
|
||||
- Ensure the referenced documents exist and are accessible.
|
||||
- Note that this integration works best with text files (.txt) for content operations.
|
||||
|
||||
**Content Retrieval Limitations**
|
||||
- The `get_document_content` action works best with text files (.txt).
|
||||
- For complex Word documents (.docx), consider using the document properties action to get metadata.
|
||||
|
||||
### Getting Help
|
||||
|
||||
<Card title="Need Help?" icon="headset" href="mailto:support@crewai.com">
|
||||
Contact our support team for assistance with Microsoft Word integration setup or troubleshooting.
|
||||
</Card>
|
||||
@@ -1,13 +1,13 @@
|
||||
---
|
||||
title: Notion Integration
|
||||
description: "Page and database management with Notion integration for CrewAI."
|
||||
description: "User management and commenting with Notion integration for CrewAI."
|
||||
icon: "book"
|
||||
mode: "wide"
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
Enable your agents to manage pages, databases, and content through Notion. Create and update pages, manage content blocks, organize knowledge bases, and streamline your documentation workflows with AI-powered automation.
|
||||
Enable your agents to manage users and create comments through Notion. Access workspace user information and create comments on pages and discussions, streamlining your collaboration workflows with AI-powered automation.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
@@ -24,8 +24,8 @@ Before using the Notion integration, ensure you have:
|
||||
1. Navigate to [CrewAI AMP Integrations](https://app.crewai.com/crewai_plus/connectors)
|
||||
2. Find **Notion** in the Authentication Integrations section
|
||||
3. Click **Connect** and complete the OAuth flow
|
||||
4. Grant the necessary permissions for page and database management
|
||||
5. Copy your Enterprise Token from [Account Settings](https://app.crewai.com/crewai_plus/settings/account)
|
||||
4. Grant the necessary permissions for user access and comment creation
|
||||
5. Copy your Enterprise Token from [Integration Settings](https://app.crewai.com/crewai_plus/settings/integrations)
|
||||
|
||||
### 2. Install Required Package
|
||||
|
||||
@@ -36,242 +36,50 @@ uv add crewai-tools
|
||||
## Available Actions
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="NOTION_CREATE_PAGE">
|
||||
**Description:** Create a page in Notion.
|
||||
<Accordion title="notion/list_users">
|
||||
**Description:** List all users in the workspace.
|
||||
|
||||
**Parameters:**
|
||||
- `parent` (object, required): Parent - The parent page or database where the new page is inserted, represented as a JSON object with a page_id or database_id key.
|
||||
- `page_size` (integer, optional): Number of items returned in the response. Minimum: 1, Maximum: 100, Default: 100
|
||||
- `start_cursor` (string, optional): Cursor for pagination. Return results after this cursor.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="notion/get_user">
|
||||
**Description:** Retrieve a specific user by ID.
|
||||
|
||||
**Parameters:**
|
||||
- `user_id` (string, required): The ID of the user to retrieve.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="notion/create_comment">
|
||||
**Description:** Create a comment on a page or discussion.
|
||||
|
||||
**Parameters:**
|
||||
- `parent` (object, required): The parent page or discussion to comment on.
|
||||
```json
|
||||
{
|
||||
"database_id": "DATABASE_ID"
|
||||
"type": "page_id",
|
||||
"page_id": "PAGE_ID_HERE"
|
||||
}
|
||||
```
|
||||
- `properties` (object, required): Properties - The values of the page's properties. If the parent is a database, then the schema must match the parent database's properties.
|
||||
or
|
||||
```json
|
||||
{
|
||||
"title": [
|
||||
{
|
||||
"text": {
|
||||
"content": "My Page"
|
||||
}
|
||||
}
|
||||
]
|
||||
"type": "discussion_id",
|
||||
"discussion_id": "DISCUSSION_ID_HERE"
|
||||
}
|
||||
```
|
||||
- `icon` (object, required): Icon - The page icon.
|
||||
```json
|
||||
{
|
||||
"emoji": "🥬"
|
||||
}
|
||||
```
|
||||
- `children` (object, optional): Children - Content blocks to add to the page.
|
||||
- `rich_text` (array, required): The rich text content of the comment.
|
||||
```json
|
||||
[
|
||||
{
|
||||
"object": "block",
|
||||
"type": "heading_2",
|
||||
"heading_2": {
|
||||
"rich_text": [
|
||||
{
|
||||
"type": "text",
|
||||
"text": {
|
||||
"content": "Lacinato kale"
|
||||
}
|
||||
}
|
||||
]
|
||||
"type": "text",
|
||||
"text": {
|
||||
"content": "This is my comment text"
|
||||
}
|
||||
}
|
||||
]
|
||||
```
|
||||
- `cover` (object, optional): Cover - The page cover image.
|
||||
```json
|
||||
{
|
||||
"external": {
|
||||
"url": "https://upload.wikimedia.org/wikipedia/commons/6/62/Tuscankale.jpg"
|
||||
}
|
||||
}
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="NOTION_UPDATE_PAGE">
|
||||
**Description:** Update a page in Notion.
|
||||
|
||||
**Parameters:**
|
||||
- `pageId` (string, required): Page ID - Specify the ID of the Page to Update. (example: "59833787-2cf9-4fdf-8782-e53db20768a5").
|
||||
- `icon` (object, required): Icon - The page icon.
|
||||
```json
|
||||
{
|
||||
"emoji": "🥬"
|
||||
}
|
||||
```
|
||||
- `archived` (boolean, optional): Archived - Whether the page is archived (deleted). Set to true to archive a page. Set to false to un-archive (restore) a page.
|
||||
- `properties` (object, optional): Properties - The property values to update for the page.
|
||||
```json
|
||||
{
|
||||
"title": [
|
||||
{
|
||||
"text": {
|
||||
"content": "My Updated Page"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
- `cover` (object, optional): Cover - The page cover image.
|
||||
```json
|
||||
{
|
||||
"external": {
|
||||
"url": "https://upload.wikimedia.org/wikipedia/commons/6/62/Tuscankale.jpg"
|
||||
}
|
||||
}
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="NOTION_GET_PAGE_BY_ID">
|
||||
**Description:** Get a page by ID in Notion.
|
||||
|
||||
**Parameters:**
|
||||
- `pageId` (string, required): Page ID - Specify the ID of the Page to Get. (example: "59833787-2cf9-4fdf-8782-e53db20768a5").
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="NOTION_ARCHIVE_PAGE">
|
||||
**Description:** Archive a page in Notion.
|
||||
|
||||
**Parameters:**
|
||||
- `pageId` (string, required): Page ID - Specify the ID of the Page to Archive. (example: "59833787-2cf9-4fdf-8782-e53db20768a5").
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="NOTION_SEARCH_PAGES">
|
||||
**Description:** Search pages in Notion using filters.
|
||||
|
||||
**Parameters:**
|
||||
- `searchByTitleFilterSearch` (object, optional): A filter in disjunctive normal form - OR of AND groups of single conditions.
|
||||
```json
|
||||
{
|
||||
"operator": "OR",
|
||||
"conditions": [
|
||||
{
|
||||
"operator": "AND",
|
||||
"conditions": [
|
||||
{
|
||||
"field": "query",
|
||||
"operator": "$stringExactlyMatches",
|
||||
"value": "meeting notes"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
Available fields: `query`, `filter.value`, `direction`, `page_size`
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="NOTION_GET_PAGE_CONTENT">
|
||||
**Description:** Get page content (blocks) in Notion.
|
||||
|
||||
**Parameters:**
|
||||
- `blockId` (string, required): Page ID - Specify a Block or Page ID to receive all of its block's children in order. (example: "59833787-2cf9-4fdf-8782-e53db20768a5").
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="NOTION_UPDATE_BLOCK">
|
||||
**Description:** Update a block in Notion.
|
||||
|
||||
**Parameters:**
|
||||
- `blockId` (string, required): Block ID - Specify the ID of the Block to Update. (example: "9bc30ad4-9373-46a5-84ab-0a7845ee52e6").
|
||||
- `archived` (boolean, optional): Archived - Set to true to archive (delete) a block. Set to false to un-archive (restore) a block.
|
||||
- `paragraph` (object, optional): Paragraph content.
|
||||
```json
|
||||
{
|
||||
"rich_text": [
|
||||
{
|
||||
"type": "text",
|
||||
"text": {
|
||||
"content": "Lacinato kale",
|
||||
"link": null
|
||||
}
|
||||
}
|
||||
],
|
||||
"color": "default"
|
||||
}
|
||||
```
|
||||
- `image` (object, optional): Image block.
|
||||
```json
|
||||
{
|
||||
"type": "external",
|
||||
"external": {
|
||||
"url": "https://website.domain/images/image.png"
|
||||
}
|
||||
}
|
||||
```
|
||||
- `bookmark` (object, optional): Bookmark block.
|
||||
```json
|
||||
{
|
||||
"caption": [],
|
||||
"url": "https://companywebsite.com"
|
||||
}
|
||||
```
|
||||
- `code` (object, optional): Code block.
|
||||
```json
|
||||
{
|
||||
"rich_text": [
|
||||
{
|
||||
"type": "text",
|
||||
"text": {
|
||||
"content": "const a = 3"
|
||||
}
|
||||
}
|
||||
],
|
||||
"language": "javascript"
|
||||
}
|
||||
```
|
||||
- `pdf` (object, optional): PDF block.
|
||||
```json
|
||||
{
|
||||
"type": "external",
|
||||
"external": {
|
||||
"url": "https://website.domain/files/doc.pdf"
|
||||
}
|
||||
}
|
||||
```
|
||||
- `table` (object, optional): Table block.
|
||||
```json
|
||||
{
|
||||
"table_width": 2,
|
||||
"has_column_header": false,
|
||||
"has_row_header": false
|
||||
}
|
||||
```
|
||||
- `tableOfContent` (object, optional): Table of Contents block.
|
||||
```json
|
||||
{
|
||||
"color": "default"
|
||||
}
|
||||
```
|
||||
- `additionalFields` (object, optional): Additional block types.
|
||||
```json
|
||||
{
|
||||
"child_page": {
|
||||
"title": "Lacinato kale"
|
||||
},
|
||||
"child_database": {
|
||||
"title": "My database"
|
||||
}
|
||||
}
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="NOTION_GET_BLOCK_BY_ID">
|
||||
**Description:** Get a block by ID in Notion.
|
||||
|
||||
**Parameters:**
|
||||
- `blockId` (string, required): Block ID - Specify the ID of the Block to Get. (example: "9bc30ad4-9373-46a5-84ab-0a7845ee52e6").
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="NOTION_DELETE_BLOCK">
|
||||
**Description:** Delete a block in Notion.
|
||||
|
||||
**Parameters:**
|
||||
- `blockId` (string, required): Block ID - Specify the ID of the Block to Delete. (example: "9bc30ad4-9373-46a5-84ab-0a7845ee52e6").
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
@@ -281,32 +89,26 @@ uv add crewai-tools
|
||||
|
||||
```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]
|
||||
role="Workspace Manager",
|
||||
goal="Manage workspace users and facilitate collaboration through comments",
|
||||
backstory="An AI assistant specialized in user management and team collaboration.",
|
||||
apps=['notion'] # All Notion actions will be available
|
||||
)
|
||||
|
||||
# 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",
|
||||
# Task to list workspace users
|
||||
user_management_task = Task(
|
||||
description="List all users in the workspace and provide a summary of team members",
|
||||
agent=notion_agent,
|
||||
expected_output="Meeting notes page created successfully with structured content"
|
||||
expected_output="Complete list of workspace users with their details"
|
||||
)
|
||||
|
||||
# Run the task
|
||||
crew = Crew(
|
||||
agents=[notion_agent],
|
||||
tasks=[create_notes_task]
|
||||
tasks=[user_management_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
@@ -315,144 +117,116 @@ crew.kickoff()
|
||||
### Filtering Specific Notion Tools
|
||||
|
||||
```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"]
|
||||
comment_manager = Agent(
|
||||
role="Comment Manager",
|
||||
goal="Create and manage comments on Notion pages",
|
||||
backstory="An AI assistant that focuses on facilitating discussions through comments.",
|
||||
apps=['notion/create_comment']
|
||||
)
|
||||
|
||||
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"
|
||||
# Task to create comments on pages
|
||||
comment_task = Task(
|
||||
description="Create a summary comment on the project status page with key updates",
|
||||
agent=comment_manager,
|
||||
expected_output="Comment created successfully with project status updates"
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[content_manager],
|
||||
tasks=[content_workflow]
|
||||
agents=[comment_manager],
|
||||
tasks=[comment_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### Knowledge Base Management
|
||||
### User Information and Team Management
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token"
|
||||
team_coordinator = Agent(
|
||||
role="Team Coordinator",
|
||||
goal="Coordinate team activities and manage user information",
|
||||
backstory="An AI assistant that helps coordinate team activities and manages user information.",
|
||||
apps=['notion']
|
||||
)
|
||||
|
||||
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(
|
||||
# Task to coordinate team activities
|
||||
coordination_task = Task(
|
||||
description="""
|
||||
1. Search for existing documentation pages related to our new product feature
|
||||
2. Create a comprehensive feature documentation page with proper structure
|
||||
3. Add code examples, images, and links to related resources
|
||||
4. Update existing pages with cross-references to the new documentation
|
||||
1. List all users in the workspace
|
||||
2. Get detailed information for specific team members
|
||||
3. Create comments on relevant pages to notify team members about updates
|
||||
""",
|
||||
agent=knowledge_curator,
|
||||
expected_output="Feature documentation created and integrated with existing knowledge base"
|
||||
agent=team_coordinator,
|
||||
expected_output="Team coordination completed with user information gathered and notifications sent"
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[knowledge_curator],
|
||||
tasks=[curation_task]
|
||||
agents=[team_coordinator],
|
||||
tasks=[coordination_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### Content Structure and Organization
|
||||
### Collaboration and Communication
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token"
|
||||
collaboration_facilitator = Agent(
|
||||
role="Collaboration Facilitator",
|
||||
goal="Facilitate team collaboration through comments and user management",
|
||||
backstory="An AI assistant that specializes in team collaboration and communication.",
|
||||
apps=['notion']
|
||||
)
|
||||
|
||||
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(
|
||||
# Task to facilitate collaboration
|
||||
collaboration_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
|
||||
1. Identify active users in the workspace
|
||||
2. Create contextual comments on project pages to facilitate discussions
|
||||
3. Provide status updates and feedback through comments
|
||||
""",
|
||||
agent=content_organizer,
|
||||
expected_output="Content reorganized with improved structure and navigation"
|
||||
agent=collaboration_facilitator,
|
||||
expected_output="Collaboration facilitated with comments created and team members notified"
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[content_organizer],
|
||||
tasks=[organization_task]
|
||||
agents=[collaboration_facilitator],
|
||||
tasks=[collaboration_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### Automated Documentation Workflows
|
||||
### Automated Team Communication
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token"
|
||||
communication_automator = Agent(
|
||||
role="Communication Automator",
|
||||
goal="Automate team communication and user management workflows",
|
||||
backstory="An AI assistant that automates communication workflows and manages user interactions.",
|
||||
apps=['notion']
|
||||
)
|
||||
|
||||
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
|
||||
# Complex communication automation task
|
||||
automation_task = Task(
|
||||
description="""
|
||||
1. Search for pages that haven't been updated in the last 30 days
|
||||
2. Review and update outdated content blocks
|
||||
3. Create weekly team update pages with consistent formatting
|
||||
4. Add status indicators and progress tracking to project pages
|
||||
5. Generate monthly documentation health reports
|
||||
6. Archive completed project pages and organize them in archive sections
|
||||
1. List all workspace users and identify team roles
|
||||
2. Get specific user information for project stakeholders
|
||||
3. Create automated status update comments on key project pages
|
||||
4. Facilitate team communication through targeted comments
|
||||
""",
|
||||
agent=doc_automator,
|
||||
expected_output="Documentation automated with updated content, weekly reports, and organized archives"
|
||||
agent=communication_automator,
|
||||
expected_output="Automated communication workflow completed with user management and comments"
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[doc_automator],
|
||||
agents=[communication_automator],
|
||||
tasks=[automation_task]
|
||||
)
|
||||
|
||||
@@ -464,44 +238,29 @@ crew.kickoff()
|
||||
### Common Issues
|
||||
|
||||
**Permission Errors**
|
||||
- Ensure your Notion account has edit access to the target workspace
|
||||
- Verify that the OAuth connection includes required scopes for Notion API
|
||||
- Check that pages and databases are shared with the authenticated integration
|
||||
- Ensure your Notion account has appropriate permissions to read user information
|
||||
- Verify that the OAuth connection includes required scopes for user access and comment creation
|
||||
- Check that you have permissions to comment on the target pages or discussions
|
||||
|
||||
**Invalid Page and Block IDs**
|
||||
- Double-check page IDs and block IDs for correct UUID format
|
||||
- Ensure referenced pages and blocks exist and are accessible
|
||||
- Verify that parent page or database IDs are valid when creating new pages
|
||||
**User Access Issues**
|
||||
- Ensure you have workspace admin permissions to list all users
|
||||
- Verify that user IDs are correct and users exist in the workspace
|
||||
- Check that the workspace allows API access to user information
|
||||
|
||||
**Property Schema Issues**
|
||||
- Ensure page properties match the database schema when creating pages in databases
|
||||
- Verify that property names and types are correct for the target database
|
||||
- Check that required properties are included when creating or updating pages
|
||||
**Comment Creation Issues**
|
||||
- Verify that page IDs or discussion IDs are correct and accessible
|
||||
- Ensure that rich text content follows Notion's API format specifications
|
||||
- Check that you have comment permissions on the target pages or discussions
|
||||
|
||||
**Content Block Structure**
|
||||
- Ensure block content follows Notion's rich text format specifications
|
||||
- Verify that nested block structures are properly formatted
|
||||
- Check that media URLs are accessible and properly formatted
|
||||
**API Rate Limits**
|
||||
- Be mindful of Notion's API rate limits when making multiple requests
|
||||
- Implement appropriate delays between requests if needed
|
||||
- Consider pagination for large user lists
|
||||
|
||||
**Search and Filter Issues**
|
||||
- Ensure search queries are properly formatted and not empty
|
||||
- Use valid field names in filter formulas: `query`, `filter.value`, `direction`, `page_size`
|
||||
- Test simple searches before building complex filter conditions
|
||||
|
||||
**Parent-Child Relationships**
|
||||
- Verify that parent page or database exists before creating child pages
|
||||
- Ensure proper permissions exist for the parent container
|
||||
- Check that database schemas allow the properties you're trying to set
|
||||
|
||||
**Rich Text and Media Content**
|
||||
- Ensure URLs for external images, PDFs, and bookmarks are accessible
|
||||
- Verify that rich text formatting follows Notion's API specifications
|
||||
- Check that code block language types are supported by Notion
|
||||
|
||||
**Archive and Deletion Operations**
|
||||
- Understand the difference between archiving (reversible) and deleting (permanent)
|
||||
- Verify that you have permissions to archive or delete the target content
|
||||
- Be cautious with bulk operations that might affect multiple pages or blocks
|
||||
**Parent Object Specification**
|
||||
- Ensure parent object type is correctly specified (page_id or discussion_id)
|
||||
- Verify that the parent page or discussion exists and is accessible
|
||||
- Check that the parent object ID format is correct
|
||||
|
||||
### Getting Help
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@ Before using the Salesforce integration, ensure you have:
|
||||
### **Record Management**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="SALESFORCE_CREATE_RECORD_CONTACT">
|
||||
<Accordion title="salesforce/create_record_contact">
|
||||
**Description:** Create a new Contact record in Salesforce.
|
||||
|
||||
**Parameters:**
|
||||
@@ -35,7 +35,7 @@ Before using the Salesforce integration, ensure you have:
|
||||
- `additionalFields` (object, optional): Additional fields in JSON format for custom Contact fields
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_CREATE_RECORD_LEAD">
|
||||
<Accordion title="salesforce/create_record_lead">
|
||||
**Description:** Create a new Lead record in Salesforce.
|
||||
|
||||
**Parameters:**
|
||||
@@ -51,7 +51,7 @@ Before using the Salesforce integration, ensure you have:
|
||||
- `additionalFields` (object, optional): Additional fields in JSON format for custom Lead fields
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_CREATE_RECORD_OPPORTUNITY">
|
||||
<Accordion title="salesforce/create_record_opportunity">
|
||||
**Description:** Create a new Opportunity record in Salesforce.
|
||||
|
||||
**Parameters:**
|
||||
@@ -66,7 +66,7 @@ Before using the Salesforce integration, ensure you have:
|
||||
- `additionalFields` (object, optional): Additional fields in JSON format for custom Opportunity fields
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_CREATE_RECORD_TASK">
|
||||
<Accordion title="salesforce/create_record_task">
|
||||
**Description:** Create a new Task record in Salesforce.
|
||||
|
||||
**Parameters:**
|
||||
@@ -84,7 +84,7 @@ Before using the Salesforce integration, ensure you have:
|
||||
- `additionalFields` (object, optional): Additional fields in JSON format for custom Task fields
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_CREATE_RECORD_ACCOUNT">
|
||||
<Accordion title="salesforce/create_record_account">
|
||||
**Description:** Create a new Account record in Salesforce.
|
||||
|
||||
**Parameters:**
|
||||
@@ -96,7 +96,7 @@ Before using the Salesforce integration, ensure you have:
|
||||
- `additionalFields` (object, optional): Additional fields in JSON format for custom Account fields
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_CREATE_RECORD_ANY">
|
||||
<Accordion title="salesforce/create_record_any">
|
||||
**Description:** Create a record of any object type in Salesforce.
|
||||
|
||||
**Note:** This is a flexible tool for creating records of custom or unknown object types.
|
||||
@@ -106,7 +106,7 @@ Before using the Salesforce integration, ensure you have:
|
||||
### **Record Updates**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="SALESFORCE_UPDATE_RECORD_CONTACT">
|
||||
<Accordion title="salesforce/update_record_contact">
|
||||
**Description:** Update an existing Contact record in Salesforce.
|
||||
|
||||
**Parameters:**
|
||||
@@ -120,7 +120,7 @@ Before using the Salesforce integration, ensure you have:
|
||||
- `additionalFields` (object, optional): Additional fields in JSON format for custom Contact fields
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_UPDATE_RECORD_LEAD">
|
||||
<Accordion title="salesforce/update_record_lead">
|
||||
**Description:** Update an existing Lead record in Salesforce.
|
||||
|
||||
**Parameters:**
|
||||
@@ -137,7 +137,7 @@ Before using the Salesforce integration, ensure you have:
|
||||
- `additionalFields` (object, optional): Additional fields in JSON format for custom Lead fields
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_UPDATE_RECORD_OPPORTUNITY">
|
||||
<Accordion title="salesforce/update_record_opportunity">
|
||||
**Description:** Update an existing Opportunity record in Salesforce.
|
||||
|
||||
**Parameters:**
|
||||
@@ -153,7 +153,7 @@ Before using the Salesforce integration, ensure you have:
|
||||
- `additionalFields` (object, optional): Additional fields in JSON format for custom Opportunity fields
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_UPDATE_RECORD_TASK">
|
||||
<Accordion title="salesforce/update_record_task">
|
||||
**Description:** Update an existing Task record in Salesforce.
|
||||
|
||||
**Parameters:**
|
||||
@@ -171,7 +171,7 @@ Before using the Salesforce integration, ensure you have:
|
||||
- `additionalFields` (object, optional): Additional fields in JSON format for custom Task fields
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_UPDATE_RECORD_ACCOUNT">
|
||||
<Accordion title="salesforce/update_record_account">
|
||||
**Description:** Update an existing Account record in Salesforce.
|
||||
|
||||
**Parameters:**
|
||||
@@ -184,7 +184,7 @@ Before using the Salesforce integration, ensure you have:
|
||||
- `additionalFields` (object, optional): Additional fields in JSON format for custom Account fields
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_UPDATE_RECORD_ANY">
|
||||
<Accordion title="salesforce/update_record_any">
|
||||
**Description:** Update a record of any object type in Salesforce.
|
||||
|
||||
**Note:** This is a flexible tool for updating records of custom or unknown object types.
|
||||
@@ -194,42 +194,42 @@ Before using the Salesforce integration, ensure you have:
|
||||
### **Record Retrieval**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="SALESFORCE_GET_RECORD_BY_ID_CONTACT">
|
||||
<Accordion title="salesforce/get_record_by_id_contact">
|
||||
**Description:** Get a Contact record by its ID.
|
||||
|
||||
**Parameters:**
|
||||
- `recordId` (string, required): Record ID of the Contact
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_GET_RECORD_BY_ID_LEAD">
|
||||
<Accordion title="salesforce/get_record_by_id_lead">
|
||||
**Description:** Get a Lead record by its ID.
|
||||
|
||||
**Parameters:**
|
||||
- `recordId` (string, required): Record ID of the Lead
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_GET_RECORD_BY_ID_OPPORTUNITY">
|
||||
<Accordion title="salesforce/get_record_by_id_opportunity">
|
||||
**Description:** Get an Opportunity record by its ID.
|
||||
|
||||
**Parameters:**
|
||||
- `recordId` (string, required): Record ID of the Opportunity
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_GET_RECORD_BY_ID_TASK">
|
||||
<Accordion title="salesforce/get_record_by_id_task">
|
||||
**Description:** Get a Task record by its ID.
|
||||
|
||||
**Parameters:**
|
||||
- `recordId` (string, required): Record ID of the Task
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_GET_RECORD_BY_ID_ACCOUNT">
|
||||
<Accordion title="salesforce/get_record_by_id_account">
|
||||
**Description:** Get an Account record by its ID.
|
||||
|
||||
**Parameters:**
|
||||
- `recordId` (string, required): Record ID of the Account
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_GET_RECORD_BY_ID_ANY">
|
||||
<Accordion title="salesforce/get_record_by_id_any">
|
||||
**Description:** Get a record of any object type by its ID.
|
||||
|
||||
**Parameters:**
|
||||
@@ -241,7 +241,7 @@ Before using the Salesforce integration, ensure you have:
|
||||
### **Record Search**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="SALESFORCE_SEARCH_RECORDS_CONTACT">
|
||||
<Accordion title="salesforce/search_records_contact">
|
||||
**Description:** Search for Contact records with advanced filtering.
|
||||
|
||||
**Parameters:**
|
||||
@@ -252,7 +252,7 @@ Before using the Salesforce integration, ensure you have:
|
||||
- `paginationParameters` (object, optional): Pagination settings with pageCursor
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_SEARCH_RECORDS_LEAD">
|
||||
<Accordion title="salesforce/search_records_lead">
|
||||
**Description:** Search for Lead records with advanced filtering.
|
||||
|
||||
**Parameters:**
|
||||
@@ -263,7 +263,7 @@ Before using the Salesforce integration, ensure you have:
|
||||
- `paginationParameters` (object, optional): Pagination settings with pageCursor
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_SEARCH_RECORDS_OPPORTUNITY">
|
||||
<Accordion title="salesforce/search_records_opportunity">
|
||||
**Description:** Search for Opportunity records with advanced filtering.
|
||||
|
||||
**Parameters:**
|
||||
@@ -274,7 +274,7 @@ Before using the Salesforce integration, ensure you have:
|
||||
- `paginationParameters` (object, optional): Pagination settings with pageCursor
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_SEARCH_RECORDS_TASK">
|
||||
<Accordion title="salesforce/search_records_task">
|
||||
**Description:** Search for Task records with advanced filtering.
|
||||
|
||||
**Parameters:**
|
||||
@@ -285,7 +285,7 @@ Before using the Salesforce integration, ensure you have:
|
||||
- `paginationParameters` (object, optional): Pagination settings with pageCursor
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_SEARCH_RECORDS_ACCOUNT">
|
||||
<Accordion title="salesforce/search_records_account">
|
||||
**Description:** Search for Account records with advanced filtering.
|
||||
|
||||
**Parameters:**
|
||||
@@ -296,7 +296,7 @@ Before using the Salesforce integration, ensure you have:
|
||||
- `paginationParameters` (object, optional): Pagination settings with pageCursor
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_SEARCH_RECORDS_ANY">
|
||||
<Accordion title="salesforce/search_records_any">
|
||||
**Description:** Search for records of any object type.
|
||||
|
||||
**Parameters:**
|
||||
@@ -310,7 +310,7 @@ Before using the Salesforce integration, ensure you have:
|
||||
### **List View Retrieval**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="SALESFORCE_GET_RECORD_BY_VIEW_ID_CONTACT">
|
||||
<Accordion title="salesforce/get_record_by_view_id_contact">
|
||||
**Description:** Get Contact records from a specific List View.
|
||||
|
||||
**Parameters:**
|
||||
@@ -318,7 +318,7 @@ Before using the Salesforce integration, ensure you have:
|
||||
- `paginationParameters` (object, optional): Pagination settings with pageCursor
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_GET_RECORD_BY_VIEW_ID_LEAD">
|
||||
<Accordion title="salesforce/get_record_by_view_id_lead">
|
||||
**Description:** Get Lead records from a specific List View.
|
||||
|
||||
**Parameters:**
|
||||
@@ -326,7 +326,7 @@ Before using the Salesforce integration, ensure you have:
|
||||
- `paginationParameters` (object, optional): Pagination settings with pageCursor
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_GET_RECORD_BY_VIEW_ID_OPPORTUNITY">
|
||||
<Accordion title="salesforce/get_record_by_view_id_opportunity">
|
||||
**Description:** Get Opportunity records from a specific List View.
|
||||
|
||||
**Parameters:**
|
||||
@@ -334,7 +334,7 @@ Before using the Salesforce integration, ensure you have:
|
||||
- `paginationParameters` (object, optional): Pagination settings with pageCursor
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_GET_RECORD_BY_VIEW_ID_TASK">
|
||||
<Accordion title="salesforce/get_record_by_view_id_task">
|
||||
**Description:** Get Task records from a specific List View.
|
||||
|
||||
**Parameters:**
|
||||
@@ -342,7 +342,7 @@ Before using the Salesforce integration, ensure you have:
|
||||
- `paginationParameters` (object, optional): Pagination settings with pageCursor
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_GET_RECORD_BY_VIEW_ID_ACCOUNT">
|
||||
<Accordion title="salesforce/get_record_by_view_id_account">
|
||||
**Description:** Get Account records from a specific List View.
|
||||
|
||||
**Parameters:**
|
||||
@@ -350,7 +350,7 @@ Before using the Salesforce integration, ensure you have:
|
||||
- `paginationParameters` (object, optional): Pagination settings with pageCursor
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_GET_RECORD_BY_VIEW_ID_ANY">
|
||||
<Accordion title="salesforce/get_record_by_view_id_any">
|
||||
**Description:** Get records of any object type from a specific List View.
|
||||
|
||||
**Parameters:**
|
||||
@@ -363,7 +363,7 @@ Before using the Salesforce integration, ensure you have:
|
||||
### **Custom Fields**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="SALESFORCE_CREATE_CUSTOM_FIELD_CONTACT">
|
||||
<Accordion title="salesforce/create_custom_field_contact">
|
||||
**Description:** Deploy custom fields for Contact objects.
|
||||
|
||||
**Parameters:**
|
||||
@@ -379,7 +379,7 @@ Before using the Salesforce integration, ensure you have:
|
||||
- `defaultFieldValue` (string, optional): Default field value
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_CREATE_CUSTOM_FIELD_LEAD">
|
||||
<Accordion title="salesforce/create_custom_field_lead">
|
||||
**Description:** Deploy custom fields for Lead objects.
|
||||
|
||||
**Parameters:**
|
||||
@@ -395,7 +395,7 @@ Before using the Salesforce integration, ensure you have:
|
||||
- `defaultFieldValue` (string, optional): Default field value
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_CREATE_CUSTOM_FIELD_OPPORTUNITY">
|
||||
<Accordion title="salesforce/create_custom_field_opportunity">
|
||||
**Description:** Deploy custom fields for Opportunity objects.
|
||||
|
||||
**Parameters:**
|
||||
@@ -411,7 +411,7 @@ Before using the Salesforce integration, ensure you have:
|
||||
- `defaultFieldValue` (string, optional): Default field value
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_CREATE_CUSTOM_FIELD_TASK">
|
||||
<Accordion title="salesforce/create_custom_field_task">
|
||||
**Description:** Deploy custom fields for Task objects.
|
||||
|
||||
**Parameters:**
|
||||
@@ -427,7 +427,7 @@ Before using the Salesforce integration, ensure you have:
|
||||
- `defaultFieldValue` (string, optional): Default field value
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_CREATE_CUSTOM_FIELD_ACCOUNT">
|
||||
<Accordion title="salesforce/create_custom_field_account">
|
||||
**Description:** Deploy custom fields for Account objects.
|
||||
|
||||
**Parameters:**
|
||||
@@ -443,7 +443,7 @@ Before using the Salesforce integration, ensure you have:
|
||||
- `defaultFieldValue` (string, optional): Default field value
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_CREATE_CUSTOM_FIELD_ANY">
|
||||
<Accordion title="salesforce/create_custom_field_any">
|
||||
**Description:** Deploy custom fields for any object type.
|
||||
|
||||
**Note:** This is a flexible tool for creating custom fields on custom or unknown object types.
|
||||
@@ -453,14 +453,14 @@ Before using the Salesforce integration, ensure you have:
|
||||
### **Advanced Operations**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="SALESFORCE_WRITE_SOQL_QUERY">
|
||||
<Accordion title="salesforce/write_soql_query">
|
||||
**Description:** Execute custom SOQL queries against your Salesforce data.
|
||||
|
||||
**Parameters:**
|
||||
- `query` (string, required): SOQL Query (e.g., "SELECT Id, Name FROM Account WHERE Name = 'Example'")
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_CREATE_CUSTOM_OBJECT">
|
||||
<Accordion title="salesforce/create_custom_object">
|
||||
**Description:** Deploy a new custom object in Salesforce.
|
||||
|
||||
**Parameters:**
|
||||
@@ -470,7 +470,7 @@ Before using the Salesforce integration, ensure you have:
|
||||
- `recordName` (string, required): Record Name that appears in layouts and searches (e.g., "Account Name")
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_DESCRIBE_ACTION_SCHEMA">
|
||||
<Accordion title="salesforce/describe_action_schema">
|
||||
**Description:** Get the expected schema for operations on specific object types.
|
||||
|
||||
**Parameters:**
|
||||
@@ -487,19 +487,14 @@ Before using the Salesforce integration, ensure you have:
|
||||
|
||||
```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"
|
||||
)
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
# 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]
|
||||
apps=['salesforce'] # All Salesforce actions will be available
|
||||
)
|
||||
|
||||
# Task to create a new lead
|
||||
@@ -521,19 +516,12 @@ crew.kickoff()
|
||||
### Filtering Specific Salesforce Tools
|
||||
|
||||
```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
|
||||
apps=['salesforce/create_record_lead']
|
||||
)
|
||||
|
||||
# Task to manage sales pipeline
|
||||
@@ -555,17 +543,12 @@ 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]
|
||||
apps=['salesforce']
|
||||
)
|
||||
|
||||
# Task to manage customer accounts
|
||||
@@ -591,17 +574,12 @@ 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="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]
|
||||
apps=['salesforce']
|
||||
)
|
||||
|
||||
# Complex task involving SOQL queries and data analysis
|
||||
|
||||
@@ -22,7 +22,7 @@ Before using the Shopify integration, ensure you have:
|
||||
### **Customer Management**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="SHOPIFY_GET_CUSTOMERS">
|
||||
<Accordion title="shopify/get_customers">
|
||||
**Description:** Retrieve a list of customers from your Shopify store.
|
||||
|
||||
**Parameters:**
|
||||
@@ -34,7 +34,7 @@ Before using the Shopify integration, ensure you have:
|
||||
- `limit` (string, optional): Maximum number of customers to return (defaults to 250)
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SHOPIFY_SEARCH_CUSTOMERS">
|
||||
<Accordion title="shopify/search_customers">
|
||||
**Description:** Search for customers using advanced filtering criteria.
|
||||
|
||||
**Parameters:**
|
||||
@@ -42,7 +42,7 @@ Before using the Shopify integration, ensure you have:
|
||||
- `limit` (string, optional): Maximum number of customers to return (defaults to 250)
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SHOPIFY_CREATE_CUSTOMER">
|
||||
<Accordion title="shopify/create_customer">
|
||||
**Description:** Create a new customer in your Shopify store.
|
||||
|
||||
**Parameters:**
|
||||
@@ -63,7 +63,7 @@ Before using the Shopify integration, ensure you have:
|
||||
- `metafields` (object, optional): Additional metafields in JSON format
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SHOPIFY_UPDATE_CUSTOMER">
|
||||
<Accordion title="shopify/update_customer">
|
||||
**Description:** Update an existing customer in your Shopify store.
|
||||
|
||||
**Parameters:**
|
||||
@@ -89,7 +89,7 @@ Before using the Shopify integration, ensure you have:
|
||||
### **Order Management**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="SHOPIFY_GET_ORDERS">
|
||||
<Accordion title="shopify/get_orders">
|
||||
**Description:** Retrieve a list of orders from your Shopify store.
|
||||
|
||||
**Parameters:**
|
||||
@@ -101,7 +101,7 @@ Before using the Shopify integration, ensure you have:
|
||||
- `limit` (string, optional): Maximum number of orders to return (defaults to 250)
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SHOPIFY_CREATE_ORDER">
|
||||
<Accordion title="shopify/create_order">
|
||||
**Description:** Create a new order in your Shopify store.
|
||||
|
||||
**Parameters:**
|
||||
@@ -114,7 +114,7 @@ Before using the Shopify integration, ensure you have:
|
||||
- `note` (string, optional): Order note
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SHOPIFY_UPDATE_ORDER">
|
||||
<Accordion title="shopify/update_order">
|
||||
**Description:** Update an existing order in your Shopify store.
|
||||
|
||||
**Parameters:**
|
||||
@@ -128,7 +128,7 @@ Before using the Shopify integration, ensure you have:
|
||||
- `note` (string, optional): Order note
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SHOPIFY_GET_ABANDONED_CARTS">
|
||||
<Accordion title="shopify/get_abandoned_carts">
|
||||
**Description:** Retrieve abandoned carts from your Shopify store.
|
||||
|
||||
**Parameters:**
|
||||
@@ -144,7 +144,7 @@ Before using the Shopify integration, ensure you have:
|
||||
### **Product Management (REST API)**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="SHOPIFY_GET_PRODUCTS">
|
||||
<Accordion title="shopify/get_products">
|
||||
**Description:** Retrieve a list of products from your Shopify store using REST API.
|
||||
|
||||
**Parameters:**
|
||||
@@ -160,7 +160,7 @@ Before using the Shopify integration, ensure you have:
|
||||
- `limit` (string, optional): Maximum number of products to return (defaults to 250)
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SHOPIFY_CREATE_PRODUCT">
|
||||
<Accordion title="shopify/create_product">
|
||||
**Description:** Create a new product in your Shopify store using REST API.
|
||||
|
||||
**Parameters:**
|
||||
@@ -176,7 +176,7 @@ Before using the Shopify integration, ensure you have:
|
||||
- `publishToPointToSale` (boolean, optional): Whether to publish to point of sale
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SHOPIFY_UPDATE_PRODUCT">
|
||||
<Accordion title="shopify/update_product">
|
||||
**Description:** Update an existing product in your Shopify store using REST API.
|
||||
|
||||
**Parameters:**
|
||||
@@ -197,14 +197,14 @@ Before using the Shopify integration, ensure you have:
|
||||
### **Product Management (GraphQL)**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="SHOPIFY_GET_PRODUCTS_GRAPHQL">
|
||||
<Accordion title="shopify/get_products_graphql">
|
||||
**Description:** Retrieve products using advanced GraphQL filtering capabilities.
|
||||
|
||||
**Parameters:**
|
||||
- `productFilterFormula` (object, optional): Advanced filter in disjunctive normal form with support for fields like id, title, vendor, status, handle, tag, created_at, updated_at, published_at
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SHOPIFY_CREATE_PRODUCT_GRAPHQL">
|
||||
<Accordion title="shopify/create_product_graphql">
|
||||
**Description:** Create a new product using GraphQL API with enhanced media support.
|
||||
|
||||
**Parameters:**
|
||||
@@ -217,7 +217,7 @@ Before using the Shopify integration, ensure you have:
|
||||
- `additionalFields` (object, optional): Additional product fields like status, requiresSellingPlan, giftCard
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SHOPIFY_UPDATE_PRODUCT_GRAPHQL">
|
||||
<Accordion title="shopify/update_product_graphql">
|
||||
**Description:** Update an existing product using GraphQL API with enhanced media support.
|
||||
|
||||
**Parameters:**
|
||||
@@ -238,19 +238,14 @@ Before using the Shopify integration, ensure you have:
|
||||
|
||||
```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"
|
||||
)
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
# 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]
|
||||
apps=['shopify'] # All Shopify actions will be available
|
||||
)
|
||||
|
||||
# Task to create a new customer
|
||||
@@ -272,19 +267,12 @@ crew.kickoff()
|
||||
### Filtering Specific Shopify Tools
|
||||
|
||||
```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
|
||||
apps=['shopify/create_customer']
|
||||
)
|
||||
|
||||
# Task to manage store operations
|
||||
@@ -306,17 +294,12 @@ crew.kickoff()
|
||||
|
||||
```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]
|
||||
apps=['shopify']
|
||||
)
|
||||
|
||||
# Task to manage product catalog
|
||||
@@ -343,17 +326,12 @@ 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]
|
||||
apps=['shopify']
|
||||
)
|
||||
|
||||
# Complex task involving multiple operations
|
||||
|
||||
@@ -22,21 +22,21 @@ Before using the Slack integration, ensure you have:
|
||||
### **User Management**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="SLACK_LIST_MEMBERS">
|
||||
<Accordion title="slack/list_members">
|
||||
**Description:** List all members in a Slack channel.
|
||||
|
||||
**Parameters:**
|
||||
- No parameters required - retrieves all channel members
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SLACK_GET_USER_BY_EMAIL">
|
||||
<Accordion title="slack/get_user_by_email">
|
||||
**Description:** Find a user in your Slack workspace by their email address.
|
||||
|
||||
**Parameters:**
|
||||
- `email` (string, required): The email address of a user in the workspace
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SLACK_GET_USERS_BY_NAME">
|
||||
<Accordion title="slack/get_users_by_name">
|
||||
**Description:** Search for users by their name or display name.
|
||||
|
||||
**Parameters:**
|
||||
@@ -50,7 +50,7 @@ Before using the Slack integration, ensure you have:
|
||||
### **Channel Management**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="SLACK_LIST_CHANNELS">
|
||||
<Accordion title="slack/list_channels">
|
||||
**Description:** List all channels in your Slack workspace.
|
||||
|
||||
**Parameters:**
|
||||
@@ -61,7 +61,7 @@ Before using the Slack integration, ensure you have:
|
||||
### **Messaging**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="SLACK_SEND_MESSAGE">
|
||||
<Accordion title="slack/send_message">
|
||||
**Description:** Send a message to a Slack channel.
|
||||
|
||||
**Parameters:**
|
||||
@@ -73,7 +73,7 @@ Before using the Slack integration, ensure you have:
|
||||
- `authenticatedUser` (boolean, optional): If true, message appears to come from your authenticated Slack user instead of the application (defaults to false)
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SLACK_SEND_DIRECT_MESSAGE">
|
||||
<Accordion title="slack/send_direct_message">
|
||||
**Description:** Send a direct message to a specific user in Slack.
|
||||
|
||||
**Parameters:**
|
||||
@@ -89,7 +89,7 @@ Before using the Slack integration, ensure you have:
|
||||
### **Search & Discovery**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="SLACK_SEARCH_MESSAGES">
|
||||
<Accordion title="slack/search_messages">
|
||||
**Description:** Search for messages across your Slack workspace.
|
||||
|
||||
**Parameters:**
|
||||
@@ -150,19 +150,13 @@ Slack's Block Kit allows you to create rich, interactive messages. Here are some
|
||||
|
||||
```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]
|
||||
apps=['slack'] # All Slack actions will be available
|
||||
)
|
||||
|
||||
# Task to send project updates
|
||||
@@ -184,19 +178,18 @@ crew.kickoff()
|
||||
### Filtering Specific Slack Tools
|
||||
|
||||
```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"]
|
||||
)
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
# Create agent with specific Slack actions only
|
||||
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
|
||||
apps=[
|
||||
'slack/send_message',
|
||||
'slack/send_direct_message',
|
||||
'slack/search_messages'
|
||||
] # Using canonical action names from canonical_integrations.yml
|
||||
)
|
||||
|
||||
# Task to coordinate team communication
|
||||
@@ -218,17 +211,13 @@ crew.kickoff()
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token"
|
||||
)
|
||||
|
||||
# Create agent with Slack messaging capabilities
|
||||
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]
|
||||
apps=['slack/send_message'] # Specific action for sending messages
|
||||
)
|
||||
|
||||
# Task to send rich notifications
|
||||
@@ -254,17 +243,17 @@ crew.kickoff()
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token"
|
||||
)
|
||||
|
||||
# Create agent with Slack search and user management capabilities
|
||||
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]
|
||||
apps=[
|
||||
'slack/search_messages',
|
||||
'slack/get_user_by_email',
|
||||
'slack/list_members'
|
||||
] # Using canonical action names from canonical_integrations.yml
|
||||
)
|
||||
|
||||
# Complex task involving search and analysis
|
||||
|
||||
@@ -22,7 +22,7 @@ Before using the Stripe integration, ensure you have:
|
||||
### **Customer Management**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="STRIPE_CREATE_CUSTOMER">
|
||||
<Accordion title="stripe/create_customer">
|
||||
**Description:** Create a new customer in your Stripe account.
|
||||
|
||||
**Parameters:**
|
||||
@@ -32,14 +32,14 @@ Before using the Stripe integration, ensure you have:
|
||||
- `metadataCreateCustomer` (object, optional): Additional metadata as key-value pairs (e.g., `{"field1": 1, "field2": 2}`)
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="STRIPE_GET_CUSTOMER_BY_ID">
|
||||
<Accordion title="stripe/get_customer_by_id">
|
||||
**Description:** Retrieve a specific customer by their Stripe customer ID.
|
||||
|
||||
**Parameters:**
|
||||
- `idGetCustomer` (string, required): The Stripe customer ID to retrieve
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="STRIPE_GET_CUSTOMERS">
|
||||
<Accordion title="stripe/get_customers">
|
||||
**Description:** Retrieve a list of customers with optional filtering.
|
||||
|
||||
**Parameters:**
|
||||
@@ -49,7 +49,7 @@ Before using the Stripe integration, ensure you have:
|
||||
- `limitGetCustomers` (string, optional): Maximum number of customers to return (defaults to 10)
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="STRIPE_UPDATE_CUSTOMER">
|
||||
<Accordion title="stripe/update_customer">
|
||||
**Description:** Update an existing customer's information.
|
||||
|
||||
**Parameters:**
|
||||
@@ -64,7 +64,7 @@ Before using the Stripe integration, ensure you have:
|
||||
### **Subscription Management**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="STRIPE_CREATE_SUBSCRIPTION">
|
||||
<Accordion title="stripe/create_subscription">
|
||||
**Description:** Create a new subscription for a customer.
|
||||
|
||||
**Parameters:**
|
||||
@@ -73,7 +73,7 @@ Before using the Stripe integration, ensure you have:
|
||||
- `metadataCreateSubscription` (object, optional): Additional metadata for the subscription
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="STRIPE_GET_SUBSCRIPTIONS">
|
||||
<Accordion title="stripe/get_subscriptions">
|
||||
**Description:** Retrieve subscriptions with optional filtering.
|
||||
|
||||
**Parameters:**
|
||||
@@ -86,7 +86,7 @@ Before using the Stripe integration, ensure you have:
|
||||
### **Product Management**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="STRIPE_CREATE_PRODUCT">
|
||||
<Accordion title="stripe/create_product">
|
||||
**Description:** Create a new product in your Stripe catalog.
|
||||
|
||||
**Parameters:**
|
||||
@@ -95,14 +95,14 @@ Before using the Stripe integration, ensure you have:
|
||||
- `metadataProduct` (object, optional): Additional product metadata as key-value pairs
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="STRIPE_GET_PRODUCT_BY_ID">
|
||||
<Accordion title="stripe/get_product_by_id">
|
||||
**Description:** Retrieve a specific product by its Stripe product ID.
|
||||
|
||||
**Parameters:**
|
||||
- `productId` (string, required): The Stripe product ID to retrieve
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="STRIPE_GET_PRODUCTS">
|
||||
<Accordion title="stripe/get_products">
|
||||
**Description:** Retrieve a list of products with optional filtering.
|
||||
|
||||
**Parameters:**
|
||||
@@ -115,7 +115,7 @@ Before using the Stripe integration, ensure you have:
|
||||
### **Financial Operations**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="STRIPE_GET_BALANCE_TRANSACTIONS">
|
||||
<Accordion title="stripe/get_balance_transactions">
|
||||
**Description:** Retrieve balance transactions from your Stripe account.
|
||||
|
||||
**Parameters:**
|
||||
@@ -124,7 +124,7 @@ Before using the Stripe integration, ensure you have:
|
||||
- `pageCursor` (string, optional): Page cursor for pagination
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="STRIPE_GET_PLANS">
|
||||
<Accordion title="stripe/get_plans">
|
||||
**Description:** Retrieve subscription plans from your Stripe account.
|
||||
|
||||
**Parameters:**
|
||||
@@ -140,19 +140,14 @@ Before using the Stripe integration, ensure you have:
|
||||
|
||||
```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"
|
||||
)
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
# 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]
|
||||
apps=['stripe'] # All Stripe actions will be available
|
||||
)
|
||||
|
||||
# Task to create a new customer
|
||||
@@ -174,19 +169,12 @@ crew.kickoff()
|
||||
### Filtering Specific Stripe Tools
|
||||
|
||||
```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
|
||||
apps=['stripe']
|
||||
)
|
||||
|
||||
# Task to manage billing operations
|
||||
@@ -208,17 +196,12 @@ 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]
|
||||
apps=['stripe']
|
||||
)
|
||||
|
||||
# Task to manage subscription operations
|
||||
@@ -245,17 +228,12 @@ 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]
|
||||
apps=['stripe']
|
||||
)
|
||||
|
||||
# Complex task involving financial analysis
|
||||
|
||||
@@ -22,7 +22,7 @@ Before using the Zendesk integration, ensure you have:
|
||||
### **Ticket Management**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="ZENDESK_CREATE_TICKET">
|
||||
<Accordion title="zendesk/create_ticket">
|
||||
**Description:** Create a new support ticket in Zendesk.
|
||||
|
||||
**Parameters:**
|
||||
@@ -40,7 +40,7 @@ Before using the Zendesk integration, ensure you have:
|
||||
- `ticketCustomFields` (object, optional): Custom field values in JSON format
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="ZENDESK_UPDATE_TICKET">
|
||||
<Accordion title="zendesk/update_ticket">
|
||||
**Description:** Update an existing support ticket in Zendesk.
|
||||
|
||||
**Parameters:**
|
||||
@@ -58,14 +58,14 @@ Before using the Zendesk integration, ensure you have:
|
||||
- `ticketCustomFields` (object, optional): Updated custom field values
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="ZENDESK_GET_TICKET_BY_ID">
|
||||
<Accordion title="zendesk/get_ticket_by_id">
|
||||
**Description:** Retrieve a specific ticket by its ID.
|
||||
|
||||
**Parameters:**
|
||||
- `ticketId` (string, required): The ticket ID to retrieve (e.g., "35436")
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="ZENDESK_ADD_COMMENT_TO_TICKET">
|
||||
<Accordion title="zendesk/add_comment_to_ticket">
|
||||
**Description:** Add a comment or internal note to an existing ticket.
|
||||
|
||||
**Parameters:**
|
||||
@@ -75,7 +75,7 @@ Before using the Zendesk integration, ensure you have:
|
||||
- `isPublic` (boolean, optional): True for public comments, false for internal notes
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="ZENDESK_SEARCH_TICKETS">
|
||||
<Accordion title="zendesk/search_tickets">
|
||||
**Description:** Search for tickets using various filters and criteria.
|
||||
|
||||
**Parameters:**
|
||||
@@ -100,7 +100,7 @@ Before using the Zendesk integration, ensure you have:
|
||||
### **User Management**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="ZENDESK_CREATE_USER">
|
||||
<Accordion title="zendesk/create_user">
|
||||
**Description:** Create a new user in Zendesk.
|
||||
|
||||
**Parameters:**
|
||||
@@ -113,7 +113,7 @@ Before using the Zendesk integration, ensure you have:
|
||||
- `notes` (string, optional): Internal notes about the user
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="ZENDESK_UPDATE_USER">
|
||||
<Accordion title="zendesk/update_user">
|
||||
**Description:** Update an existing user's information.
|
||||
|
||||
**Parameters:**
|
||||
@@ -127,14 +127,14 @@ Before using the Zendesk integration, ensure you have:
|
||||
- `notes` (string, optional): Updated internal notes
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="ZENDESK_GET_USER_BY_ID">
|
||||
<Accordion title="zendesk/get_user_by_id">
|
||||
**Description:** Retrieve a specific user by their ID.
|
||||
|
||||
**Parameters:**
|
||||
- `userId` (string, required): The user ID to retrieve
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="ZENDESK_SEARCH_USERS">
|
||||
<Accordion title="zendesk/search_users">
|
||||
**Description:** Search for users using various criteria.
|
||||
|
||||
**Parameters:**
|
||||
@@ -150,7 +150,7 @@ Before using the Zendesk integration, ensure you have:
|
||||
### **Administrative Tools**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="ZENDESK_GET_TICKET_FIELDS">
|
||||
<Accordion title="zendesk/get_ticket_fields">
|
||||
**Description:** Retrieve all standard and custom fields available for tickets.
|
||||
|
||||
**Parameters:**
|
||||
@@ -158,7 +158,7 @@ Before using the Zendesk integration, ensure you have:
|
||||
- `pageCursor` (string, optional): Page cursor for pagination
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="ZENDESK_GET_TICKET_AUDITS">
|
||||
<Accordion title="zendesk/get_ticket_audits">
|
||||
**Description:** Get audit records (read-only history) for tickets.
|
||||
|
||||
**Parameters:**
|
||||
@@ -205,19 +205,14 @@ Standard ticket status progression:
|
||||
|
||||
```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"
|
||||
)
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
# 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]
|
||||
apps=['zendesk'] # All Zendesk actions will be available
|
||||
)
|
||||
|
||||
# Task to create a new support ticket
|
||||
@@ -239,19 +234,14 @@ crew.kickoff()
|
||||
### Filtering Specific Zendesk Tools
|
||||
|
||||
```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"]
|
||||
)
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
# Create agent with specific Zendesk actions only
|
||||
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
|
||||
apps=['zendesk/create_ticket'] # Specific Zendesk actions
|
||||
)
|
||||
|
||||
# Task to manage support workflow
|
||||
@@ -273,17 +263,12 @@ 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]
|
||||
apps=['zendesk']
|
||||
)
|
||||
|
||||
# Task to manage ticket lifecycle
|
||||
@@ -310,17 +295,12 @@ 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]
|
||||
apps=['zendesk']
|
||||
)
|
||||
|
||||
# Complex task involving analytics and reporting
|
||||
|
||||
@@ -43,7 +43,7 @@ mode: "wide"
|
||||
1. <Link href="https://app.crewai.com/crewai_plus/connectors">Integrations</Link>로 이동
|
||||
2. 원하는 서비스에서 <b>Connect</b> 클릭
|
||||
3. OAuth 플로우 완료 및 스코프 승인
|
||||
4. <b>Integration</b> 탭에서 Enterprise Token 복사
|
||||
4. <Link href="https://app.crewai.com/crewai_plus/settings/integrations">통합 설정</Link>에서 Enterprise Token 복사
|
||||
|
||||
<Frame>
|
||||

|
||||
@@ -60,23 +60,18 @@ mode: "wide"
|
||||
### 사용 예시
|
||||
|
||||
<Tip>
|
||||
인증된 모든 서비스는 도구로 제공됩니다. 에이전트에 `CrewaiEnterpriseTools`를 추가하세요.
|
||||
새로운 간소화된 접근 방식을 사용하여 엔터프라이즈 앱을 통합하세요. Agent 구성에서 앱과 해당 액션을 직접 지정하기만 하면 됩니다.
|
||||
</Tip>
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token"
|
||||
)
|
||||
print(enterprise_tools)
|
||||
|
||||
# Gmail 기능을 가진 에이전트 생성
|
||||
email_agent = Agent(
|
||||
role="이메일 매니저",
|
||||
goal="이메일 커뮤니케이션 관리",
|
||||
backstory="이메일 관리에 특화된 AI 어시스턴트",
|
||||
tools=enterprise_tools
|
||||
apps=['gmail', 'gmail/send_email'] # 정식 이름 'gmail' 사용
|
||||
)
|
||||
|
||||
email_task = Task(
|
||||
@@ -92,19 +87,14 @@ mode: "wide"
|
||||
### 도구 필터링
|
||||
|
||||
```python
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
actions_list=["gmail_find_email"]
|
||||
)
|
||||
|
||||
gmail_tool = enterprise_tools["gmail_find_email"]
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
# 특정 Gmail 액션만 사용하는 에이전트 생성
|
||||
gmail_agent = Agent(
|
||||
role="Gmail 매니저",
|
||||
goal="Gmail 커뮤니케이션 및 알림 관리",
|
||||
backstory="Gmail 커뮤니케이션 조율 AI 어시스턴트",
|
||||
tools=[gmail_tool]
|
||||
apps=['gmail/fetch_emails'] # 정식 이름과 특정 액션 사용
|
||||
)
|
||||
|
||||
notification_task = Task(
|
||||
|
||||
@@ -25,7 +25,7 @@ Asana 연동을 사용하기 전에 다음을 확인하세요:
|
||||
2. 인증 통합 섹션에서 **Asana**를 찾습니다.
|
||||
3. **Connect**를 클릭하고 OAuth 플로우를 완료합니다.
|
||||
4. 작업 및 프로젝트 관리를 위한 필요한 권한을 부여합니다.
|
||||
5. [계정 설정](https://app.crewai.com/crewai_plus/settings/account)에서 Enterprise Token을 복사합니다.
|
||||
5. [통합 설정](https://app.crewai.com/crewai_plus/settings/integrations)에서 Enterprise Token을 복사합니다.
|
||||
|
||||
### 2. 필수 패키지 설치
|
||||
|
||||
@@ -36,7 +36,7 @@ uv add crewai-tools
|
||||
## 사용 가능한 작업
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="ASANA_CREATE_COMMENT">
|
||||
<Accordion title="asana/create_comment">
|
||||
**설명:** Asana에 댓글을 생성합니다.
|
||||
|
||||
**매개변수:**
|
||||
@@ -44,7 +44,7 @@ uv add crewai-tools
|
||||
- `text` (string, 필수): 텍스트 (예: "This is a comment.").
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="ASANA_CREATE_PROJECT">
|
||||
<Accordion title="asana/create_project">
|
||||
**설명:** Asana에 프로젝트를 생성합니다.
|
||||
|
||||
**매개변수:**
|
||||
@@ -54,7 +54,7 @@ uv add crewai-tools
|
||||
- `notes` (string, 선택): 노트 (예: "These are things we need to purchase.").
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="ASANA_GET_PROJECTS">
|
||||
<Accordion title="asana/get_projects">
|
||||
**설명:** Asana의 프로젝트 목록을 가져옵니다.
|
||||
|
||||
**매개변수:**
|
||||
@@ -62,14 +62,14 @@ uv add crewai-tools
|
||||
- 옵션: `default`, `true`, `false`
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="ASANA_GET_PROJECT_BY_ID">
|
||||
<Accordion title="asana/get_project_by_id">
|
||||
**설명:** Asana에서 ID로 프로젝트를 가져옵니다.
|
||||
|
||||
**매개변수:**
|
||||
- `projectFilterId` (string, 필수): 프로젝트 ID.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="ASANA_CREATE_TASK">
|
||||
<Accordion title="asana/create_task">
|
||||
**설명:** Asana에 작업을 생성합니다.
|
||||
|
||||
**매개변수:**
|
||||
@@ -83,7 +83,7 @@ uv add crewai-tools
|
||||
- `gid` (string, 선택): 외부 ID - 이 작업과 연결할 애플리케이션의 ID입니다. 이 ID를 사용하여 이후 작업 업데이트를 동기화할 수 있습니다.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="ASANA_UPDATE_TASK">
|
||||
<Accordion title="asana/update_task">
|
||||
**설명:** Asana의 작업을 업데이트합니다.
|
||||
|
||||
**매개변수:**
|
||||
@@ -98,7 +98,7 @@ uv add crewai-tools
|
||||
- `gid` (string, 선택): 외부 ID - 이 작업과 연결할 애플리케이션의 ID입니다. 이 ID를 사용하여 이후 작업 업데이트를 동기화할 수 있습니다.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="ASANA_GET_TASKS">
|
||||
<Accordion title="asana/get_tasks">
|
||||
**설명:** Asana의 작업 목록을 가져옵니다.
|
||||
|
||||
**매개변수:**
|
||||
@@ -108,21 +108,21 @@ uv add crewai-tools
|
||||
- `completedSince` (string, 선택): 이후 완료됨 - 미완료이거나 해당 시간(ISO 또는 Unix 타임스탬프) 이후에 완료된 작업만 반환합니다. (예: "2014-04-25T16:15:47-04:00").
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="ASANA_GET_TASKS_BY_ID">
|
||||
<Accordion title="asana/get_tasks_by_id">
|
||||
**설명:** Asana에서 ID로 작업 목록을 가져옵니다.
|
||||
|
||||
**매개변수:**
|
||||
- `taskId` (string, 필수): 작업 ID.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="ASANA_GET_TASK_BY_EXTERNAL_ID">
|
||||
<Accordion title="asana/get_task_by_external_id">
|
||||
**설명:** Asana에서 외부 ID로 작업을 가져옵니다.
|
||||
|
||||
**매개변수:**
|
||||
- `gid` (string, 필수): 외부 ID - 이 작업이 애플리케이션과 연동(또는 동기화)된 ID입니다.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="ASANA_ADD_TASK_TO_SECTION">
|
||||
<Accordion title="asana/add_task_to_section">
|
||||
**설명:** Asana에서 섹션에 작업을 추가합니다.
|
||||
|
||||
**매개변수:**
|
||||
@@ -132,14 +132,14 @@ uv add crewai-tools
|
||||
- `afterTaskId` (string, 선택): 이후 작업 ID - 이 작업이 삽입될 섹션 내의 작업 ID입니다. 이전 작업 ID와 함께 사용할 수 없습니다. (예: "1204619611402340").
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="ASANA_GET_TEAMS">
|
||||
<Accordion title="asana/get_teams">
|
||||
**설명:** Asana에서 팀 목록을 가져옵니다.
|
||||
|
||||
**매개변수:**
|
||||
- `workspace` (string, 필수): 워크스페이스 - 인증된 사용자가 볼 수 있는 이 워크스페이스 내의 팀을 반환합니다.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="ASANA_GET_WORKSPACES">
|
||||
<Accordion title="asana/get_workspaces">
|
||||
**설명:** Asana에서 워크스페이스 목록을 가져옵니다.
|
||||
|
||||
**매개변수:** 필요 없음.
|
||||
@@ -152,19 +152,13 @@ uv add crewai-tools
|
||||
|
||||
```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]
|
||||
apps=['asana']
|
||||
)
|
||||
|
||||
# Task to create a new project
|
||||
@@ -186,19 +180,12 @@ 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
|
||||
apps=['asana']
|
||||
)
|
||||
|
||||
# Task to create and assign a task
|
||||
@@ -220,17 +207,12 @@ 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]
|
||||
apps=['asana']
|
||||
)
|
||||
|
||||
# Complex task involving multiple Asana operations
|
||||
|
||||
@@ -25,7 +25,7 @@ Box 통합을 사용하기 전에 다음을 확인하세요:
|
||||
2. 인증 통합 섹션에서 **Box**를 찾습니다.
|
||||
3. **Connect**를 클릭하고 OAuth 흐름을 완료합니다.
|
||||
4. 파일 및 폴더 관리를 위한 필요한 권한을 부여합니다.
|
||||
5. [Account Settings](https://app.crewai.com/crewai_plus/settings/account)에서 Enterprise Token을 복사합니다.
|
||||
5. [통합 설정](https://app.crewai.com/crewai_plus/settings/integrations)에서 Enterprise Token을 복사합니다.
|
||||
|
||||
### 2. 필수 패키지 설치
|
||||
|
||||
@@ -36,7 +36,7 @@ uv add crewai-tools
|
||||
## 사용 가능한 액션
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="BOX_SAVE_FILE">
|
||||
<Accordion title="box/save_file">
|
||||
**설명:** Box에서 URL로부터 파일을 저장합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -52,7 +52,7 @@ uv add crewai-tools
|
||||
- `file` (string, 필수): 파일 URL - 파일 크기는 50MB 미만이어야 합니다. (예시: "https://picsum.photos/200/300").
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="BOX_SAVE_FILE_FROM_OBJECT">
|
||||
<Accordion title="box/save_file_from_object">
|
||||
**설명:** Box에 파일을 저장합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -61,14 +61,14 @@ uv add crewai-tools
|
||||
- `folder` (string, 선택): 폴더 - Connect Portal Workflow Settings를 사용하여 사용자가 파일의 폴더 목적지를 선택할 수 있도록 합니다. 비워두면 기본적으로 사용자의 루트 폴더에 저장됩니다.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="BOX_GET_FILE_BY_ID">
|
||||
<Accordion title="box/get_file_by_id">
|
||||
**설명:** Box에서 ID로 파일을 가져옵니다.
|
||||
|
||||
**파라미터:**
|
||||
- `fileId` (string, 필수): 파일 ID - 파일을 나타내는 고유 식별자. (예시: "12345").
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="BOX_LIST_FILES">
|
||||
<Accordion title="box/list_files">
|
||||
**설명:** Box에서 파일 목록을 조회합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -93,7 +93,7 @@ uv add crewai-tools
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="BOX_CREATE_FOLDER">
|
||||
<Accordion title="box/create_folder">
|
||||
**설명:** Box에 폴더를 생성합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -106,7 +106,7 @@ uv add crewai-tools
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="BOX_MOVE_FOLDER">
|
||||
<Accordion title="box/move_folder">
|
||||
**설명:** Box에서 폴더를 이동합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -120,14 +120,14 @@ uv add crewai-tools
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="BOX_GET_FOLDER_BY_ID">
|
||||
<Accordion title="box/get_folder_by_id">
|
||||
**설명:** Box에서 ID로 폴더를 가져옵니다.
|
||||
|
||||
**파라미터:**
|
||||
- `folderId` (string, 필수): 폴더 ID - 폴더를 나타내는 고유 식별자. (예시: "0").
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="BOX_SEARCH_FOLDERS">
|
||||
<Accordion title="box/search_folders">
|
||||
**설명:** Box에서 폴더를 검색합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -152,7 +152,7 @@ uv add crewai-tools
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="BOX_DELETE_FOLDER">
|
||||
<Accordion title="box/delete_folder">
|
||||
**설명:** Box에서 폴더를 삭제합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -167,19 +167,13 @@ uv add crewai-tools
|
||||
|
||||
```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]
|
||||
apps=['box']
|
||||
)
|
||||
|
||||
# Task to create a folder structure
|
||||
@@ -201,19 +195,12 @@ 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
|
||||
apps=['box']
|
||||
)
|
||||
|
||||
# Task to organize files
|
||||
@@ -235,17 +222,12 @@ 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]
|
||||
apps=['box']
|
||||
)
|
||||
|
||||
# Complex task involving multiple Box operations
|
||||
|
||||
@@ -25,7 +25,7 @@ ClickUp 통합을 사용하기 전에 다음을 준비해야 합니다:
|
||||
2. 인증 통합 섹션에서 **ClickUp**을 찾습니다.
|
||||
3. **Connect**를 클릭하고 OAuth 과정을 완료합니다.
|
||||
4. 작업 및 프로젝트 관리에 필요한 권한을 부여합니다.
|
||||
5. [계정 설정](https://app.crewai.com/crewai_plus/settings/account)에서 Enterprise Token을 복사합니다.
|
||||
5. [통합 설정](https://app.crewai.com/crewai_plus/settings/integrations)에서 Enterprise Token을 복사합니다.
|
||||
|
||||
### 2. 필수 패키지 설치
|
||||
|
||||
@@ -36,7 +36,7 @@ uv add crewai-tools
|
||||
## 사용 가능한 동작
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="CLICKUP_SEARCH_TASKS">
|
||||
<Accordion title="clickup/search_tasks">
|
||||
**설명:** 고급 필터를 사용하여 ClickUp에서 작업을 검색합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -61,7 +61,7 @@ uv add crewai-tools
|
||||
사용 가능한 필드: `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">
|
||||
<Accordion title="clickup/get_task_in_list">
|
||||
**설명:** ClickUp의 특정 목록에서 작업을 가져옵니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -69,7 +69,7 @@ uv add crewai-tools
|
||||
- `taskFilterFormula` (string, 선택): 지정된 필터와 일치하는 작업을 검색합니다. 예: name=task1.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="CLICKUP_CREATE_TASK">
|
||||
<Accordion title="clickup/create_task">
|
||||
**설명:** ClickUp에 작업을 생성합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -82,7 +82,7 @@ uv add crewai-tools
|
||||
- `additionalFields` (string, 선택): 추가 필드 - 이 작업에 포함할 추가 필드를 JSON으로 지정합니다.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="CLICKUP_UPDATE_TASK">
|
||||
<Accordion title="clickup/update_task">
|
||||
**설명:** ClickUp의 작업을 업데이트합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -96,49 +96,49 @@ uv add crewai-tools
|
||||
- `additionalFields` (string, 선택): 추가 필드 - 이 작업에 포함할 추가 필드를 JSON으로 지정합니다.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="CLICKUP_DELETE_TASK">
|
||||
<Accordion title="clickup/delete_task">
|
||||
**설명:** ClickUp에서 작업을 삭제합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `taskId` (string, 필수): 작업 ID - 삭제할 작업의 ID입니다.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="CLICKUP_GET_LIST">
|
||||
<Accordion title="clickup/get_list">
|
||||
**설명:** ClickUp에서 목록 정보를 가져옵니다.
|
||||
|
||||
**파라미터:**
|
||||
- `spaceId` (string, 필수): 스페이스 ID - 목록이 포함된 스페이스의 ID입니다.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="CLICKUP_GET_CUSTOM_FIELDS_IN_LIST">
|
||||
<Accordion title="clickup/get_custom_fields_in_list">
|
||||
**설명:** ClickUp에서 목록의 사용자 정의 필드를 가져옵니다.
|
||||
|
||||
**파라미터:**
|
||||
- `listId` (string, 필수): 목록 ID - 사용자 정의 필드를 가져올 목록의 ID입니다.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="CLICKUP_GET_ALL_FIELDS_IN_LIST">
|
||||
<Accordion title="clickup/get_all_fields_in_list">
|
||||
**설명:** ClickUp에서 목록의 모든 필드를 가져옵니다.
|
||||
|
||||
**파라미터:**
|
||||
- `listId` (string, 필수): 목록 ID - 모든 필드를 가져올 목록의 ID입니다.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="CLICKUP_GET_SPACE">
|
||||
<Accordion title="clickup/get_space">
|
||||
**설명:** ClickUp에서 스페이스 정보를 가져옵니다.
|
||||
|
||||
**파라미터:**
|
||||
- `spaceId` (string, 선택): 스페이스 ID - 조회할 스페이스의 ID입니다.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="CLICKUP_GET_FOLDERS">
|
||||
<Accordion title="clickup/get_folders">
|
||||
**설명:** ClickUp에서 폴더를 가져옵니다.
|
||||
|
||||
**파라미터:**
|
||||
- `spaceId` (string, 필수): 스페이스 ID - 폴더가 포함된 스페이스의 ID입니다.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="CLICKUP_GET_MEMBER">
|
||||
<Accordion title="clickup/get_member">
|
||||
**설명:** ClickUp에서 멤버 정보를 가져옵니다.
|
||||
|
||||
**파라미터:** 필요 없음.
|
||||
@@ -151,19 +151,13 @@ uv add crewai-tools
|
||||
|
||||
```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]
|
||||
apps=['clickup']
|
||||
)
|
||||
|
||||
# Task to create a new task
|
||||
@@ -185,19 +179,12 @@ 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
|
||||
apps=['clickup']
|
||||
)
|
||||
|
||||
# Task to manage task workflow
|
||||
@@ -219,17 +206,12 @@ 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]
|
||||
apps=['clickup']
|
||||
)
|
||||
|
||||
# Complex task involving multiple ClickUp operations
|
||||
@@ -256,17 +238,12 @@ 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]
|
||||
apps=['clickup']
|
||||
)
|
||||
|
||||
# Task to analyze and optimize task distribution
|
||||
|
||||
@@ -25,7 +25,7 @@ GitHub 통합을 사용하기 전에 다음을 확인하세요:
|
||||
2. 인증 통합 섹션에서 **GitHub**을 찾습니다.
|
||||
3. **Connect**를 클릭하고 OAuth 흐름을 완료합니다.
|
||||
4. 리포지토리 및 이슈 관리를 위한 필수 권한을 부여합니다.
|
||||
5. [계정 설정](https://app.crewai.com/crewai_plus/settings/account)에서 Enterprise Token을 복사합니다.
|
||||
5. [통합 설정](https://app.crewai.com/crewai_plus/settings/integrations)에서 Enterprise Token을 복사합니다.
|
||||
|
||||
### 2. 필수 패키지 설치
|
||||
|
||||
@@ -36,7 +36,7 @@ uv add crewai-tools
|
||||
## 사용 가능한 작업
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="GITHUB_CREATE_ISSUE">
|
||||
<Accordion title="github/create_issue">
|
||||
**설명:** GitHub에 이슈를 생성합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -47,7 +47,7 @@ uv add crewai-tools
|
||||
- `assignees` (string, 선택): 담당자 - 이 이슈의 담당자 GitHub 로그인을 문자열 배열로 지정합니다. (예시: `["octocat"]`).
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GITHUB_UPDATE_ISSUE">
|
||||
<Accordion title="github/update_issue">
|
||||
**설명:** GitHub에서 이슈를 업데이트합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -61,7 +61,7 @@ uv add crewai-tools
|
||||
- 옵션: `open`, `closed`
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GITHUB_GET_ISSUE_BY_NUMBER">
|
||||
<Accordion title="github/get_issue_by_number">
|
||||
**설명:** GitHub에서 번호로 이슈를 조회합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -70,7 +70,7 @@ uv add crewai-tools
|
||||
- `issue_number` (string, 필수): 이슈 번호 - 가져올 이슈의 번호를 지정합니다.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GITHUB_LOCK_ISSUE">
|
||||
<Accordion title="github/lock_issue">
|
||||
**설명:** GitHub에서 이슈를 잠급니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -81,7 +81,7 @@ uv add crewai-tools
|
||||
- 옵션: `off-topic`, `too heated`, `resolved`, `spam`
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GITHUB_SEARCH_ISSUE">
|
||||
<Accordion title="github/search_issue">
|
||||
**설명:** GitHub에서 이슈를 검색합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -108,7 +108,7 @@ uv add crewai-tools
|
||||
사용 가능한 필드: `assignee`, `creator`, `mentioned`, `labels`
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GITHUB_CREATE_RELEASE">
|
||||
<Accordion title="github/create_release">
|
||||
**설명:** GitHub에 릴리스를 생성합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -126,7 +126,7 @@ uv add crewai-tools
|
||||
- 옵션: `true`, `false`
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GITHUB_UPDATE_RELEASE">
|
||||
<Accordion title="github/update_release">
|
||||
**설명:** GitHub에서 릴리스를 업데이트합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -145,7 +145,7 @@ uv add crewai-tools
|
||||
- 옵션: `true`, `false`
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GITHUB_GET_RELEASE_BY_ID">
|
||||
<Accordion title="github/get_release_by_id">
|
||||
**설명:** GitHub에서 ID로 릴리스를 조회합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -154,7 +154,7 @@ uv add crewai-tools
|
||||
- `id` (string, 필수): 릴리스 ID - 조회할 릴리스의 ID를 지정합니다.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GITHUB_GET_RELEASE_BY_TAG_NAME">
|
||||
<Accordion title="github/get_release_by_tag_name">
|
||||
**설명:** GitHub에서 태그 이름으로 릴리스를 조회합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -163,7 +163,7 @@ uv add crewai-tools
|
||||
- `tag_name` (string, 필수): 이름 - 가져올 릴리스의 태그를 지정합니다. (예시: "v1.0.0").
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GITHUB_DELETE_RELEASE">
|
||||
<Accordion title="github/delete_release">
|
||||
**설명:** GitHub에서 릴리스를 삭제합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -179,19 +179,13 @@ uv add crewai-tools
|
||||
|
||||
```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]
|
||||
apps=['github']
|
||||
)
|
||||
|
||||
# Task to create a new issue
|
||||
@@ -213,19 +207,12 @@ 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
|
||||
apps=['github']
|
||||
)
|
||||
|
||||
# Task to manage issue workflow
|
||||
@@ -247,17 +234,12 @@ 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]
|
||||
apps=['github']
|
||||
)
|
||||
|
||||
# Task to create a new release
|
||||
@@ -284,17 +266,12 @@ 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]
|
||||
apps=['github']
|
||||
)
|
||||
|
||||
# Complex task involving multiple GitHub operations
|
||||
|
||||
@@ -25,7 +25,7 @@ Gmail 통합을 사용하기 전에 다음을 확인하세요:
|
||||
2. 인증 통합 섹션에서 **Gmail**을 찾습니다.
|
||||
3. **Connect**를 클릭하고 OAuth 흐름을 완료합니다.
|
||||
4. 이메일 및 연락처 관리를 위한 필요한 권한을 부여합니다.
|
||||
5. [Account Settings](https://app.crewai.com/crewai_plus/settings/account)에서 Enterprise Token을 복사합니다.
|
||||
5. [통합 설정](https://app.crewai.com/crewai_plus/settings/integrations)에서 Enterprise Token을 복사합니다.
|
||||
|
||||
### 2. 필수 패키지 설치
|
||||
|
||||
@@ -36,7 +36,7 @@ uv add crewai-tools
|
||||
## 사용 가능한 작업
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="GMAIL_SEND_EMAIL">
|
||||
<Accordion title="gmail/send_email">
|
||||
**설명:** Gmail에서 이메일을 보냅니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -59,7 +59,7 @@ uv add crewai-tools
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GMAIL_GET_EMAIL_BY_ID">
|
||||
<Accordion title="gmail/get_email_by_id">
|
||||
**설명:** Gmail에서 ID로 이메일을 조회합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -67,7 +67,7 @@ uv add crewai-tools
|
||||
- `messageId` (string, 필수): 메시지 ID - 조회할 메시지의 ID를 지정합니다.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GMAIL_SEARCH_FOR_EMAIL">
|
||||
<Accordion title="gmail/fetch_emails">
|
||||
**설명:** 고급 필터를 사용하여 Gmail에서 이메일을 검색합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -98,7 +98,7 @@ uv add crewai-tools
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GMAIL_DELETE_EMAIL">
|
||||
<Accordion title="gmail/delete_email">
|
||||
**설명:** Gmail에서 이메일을 삭제합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -106,7 +106,7 @@ uv add crewai-tools
|
||||
- `messageId` (string, 필수): 메시지 ID - 휴지통으로 보낼 메시지의 ID를 지정합니다.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GMAIL_CREATE_A_CONTACT">
|
||||
<Accordion title="gmail/create_a_contact">
|
||||
**설명:** Gmail에서 연락처를 생성합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -126,28 +126,28 @@ uv add crewai-tools
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GMAIL_GET_CONTACT_BY_RESOURCE_NAME">
|
||||
<Accordion title="gmail/get_contact_by_resource_name">
|
||||
**설명:** Gmail에서 리소스 이름으로 연락처를 조회합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `resourceName` (string, 필수): 리소스 이름 - 조회할 연락처의 리소스 이름을 지정합니다.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GMAIL_SEARCH_FOR_CONTACT">
|
||||
<Accordion title="gmail/search_for_contact">
|
||||
**설명:** Gmail에서 연락처를 검색합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `searchTerm` (string, 필수): 검색어 - 이름, 닉네임, 이메일 주소, 전화번호 또는 조직 연락처 속성에서 유사하거나 정확히 일치하는 항목을 검색할 검색어를 지정합니다.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GMAIL_DELETE_CONTACT">
|
||||
<Accordion title="gmail/delete_contact">
|
||||
**설명:** Gmail에서 연락처를 삭제합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `resourceName` (string, 필수): 리소스 이름 - 삭제할 연락처의 리소스 이름을 지정합니다.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GMAIL_CREATE_DRAFT">
|
||||
<Accordion title="gmail/create_draft">
|
||||
**설명:** Gmail에서 임시 저장 메일을 만듭니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -177,19 +177,13 @@ uv add crewai-tools
|
||||
|
||||
```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]
|
||||
apps=['gmail']
|
||||
)
|
||||
|
||||
# Task to send a follow-up email
|
||||
@@ -211,19 +205,12 @@ 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
|
||||
apps=['gmail']
|
||||
)
|
||||
|
||||
# Task to prepare and send emails
|
||||
@@ -245,17 +232,12 @@ 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]
|
||||
apps=['gmail']
|
||||
)
|
||||
|
||||
# Task to manage contacts
|
||||
@@ -281,17 +263,12 @@ 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]
|
||||
apps=['gmail']
|
||||
)
|
||||
|
||||
# Task to analyze email patterns
|
||||
@@ -317,17 +294,12 @@ 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]
|
||||
apps=['gmail']
|
||||
)
|
||||
|
||||
# Complex task involving multiple Gmail operations
|
||||
|
||||
@@ -25,7 +25,7 @@ Google Calendar 통합을 사용하기 전에 다음을 준비해야 합니다:
|
||||
2. 인증 통합 섹션에서 **Google Calendar**를 찾습니다.
|
||||
3. **Connect**를 클릭하고 OAuth 과정을 완료합니다.
|
||||
4. 캘린더 및 연락처 접근 권한을 허용합니다.
|
||||
5. [Account Settings](https://app.crewai.com/crewai_plus/settings/account)에서 Enterprise Token을 복사합니다.
|
||||
5. [통합 설정](https://app.crewai.com/crewai_plus/settings/integrations)에서 Enterprise Token을 복사합니다.
|
||||
|
||||
### 2. 필수 패키지 설치
|
||||
|
||||
@@ -36,7 +36,7 @@ uv add crewai-tools
|
||||
## 사용 가능한 작업
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="GOOGLE_CALENDAR_CREATE_EVENT">
|
||||
<Accordion title="google_calendar/create_event">
|
||||
**설명:** Google 캘린더에 이벤트를 생성합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -51,7 +51,7 @@ uv add crewai-tools
|
||||
- `includeMeetLink` (boolean, 선택): Google Meet 링크 포함 여부? - 이 이벤트에 대해 Google Meet 컨퍼런스 링크를 자동으로 생성합니다.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GOOGLE_CALENDAR_UPDATE_EVENT">
|
||||
<Accordion title="google_calendar/update_event">
|
||||
**설명:** Google 캘린더에서 기존 이벤트를 업데이트합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -65,7 +65,7 @@ uv add crewai-tools
|
||||
- `eventDescription` (string, 선택): 이벤트 설명.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GOOGLE_CALENDAR_LIST_EVENTS">
|
||||
<Accordion title="google_calendar/view_events">
|
||||
**설명:** Google 캘린더에서 이벤트 목록을 가져옵니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -74,7 +74,7 @@ uv add crewai-tools
|
||||
- `before` (string, 선택): 이전 - 제공된 날짜 이전에 종료되는 이벤트를 필터링합니다 (밀리초 단위의 Unix 또는 ISO 타임스탬프). (예시: "2025-04-12T10:00:00Z 또는 1712908800000").
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GOOGLE_CALENDAR_GET_EVENT_BY_ID">
|
||||
<Accordion title="google_calendar/get_event_by_id">
|
||||
**설명:** Google 캘린더에서 ID로 특정 이벤트를 가져옵니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -82,7 +82,7 @@ uv add crewai-tools
|
||||
- `calendar` (string, 선택): 캘린더 - Connect Portal Workflow Settings를 사용하여 사용자가 이벤트를 추가할 캘린더를 선택할 수 있도록 합니다. 비워두면 사용자의 기본 캘린더로 기본 설정됩니다.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GOOGLE_CALENDAR_DELETE_EVENT">
|
||||
<Accordion title="google_calendar/delete_event">
|
||||
**설명:** Google 캘린더에서 이벤트를 삭제합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -90,7 +90,7 @@ uv add crewai-tools
|
||||
- `calendar` (string, 선택): 캘린더 - Connect Portal Workflow Settings를 사용하여 사용자가 이벤트를 추가할 캘린더를 선택할 수 있도록 합니다. 비워두면 사용자의 기본 캘린더로 기본 설정됩니다.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GOOGLE_CALENDAR_GET_CONTACTS">
|
||||
<Accordion title="google_calendar/get_contacts">
|
||||
**설명:** Google 캘린더에서 연락처를 가져옵니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -102,14 +102,14 @@ uv add crewai-tools
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GOOGLE_CALENDAR_SEARCH_CONTACTS">
|
||||
<Accordion title="google_calendar/search_contacts">
|
||||
**설명:** Google 캘린더에서 연락처를 검색합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `query` (string, 선택): 연락처를 검색할 검색 쿼리.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GOOGLE_CALENDAR_LIST_DIRECTORY_PEOPLE">
|
||||
<Accordion title="google_calendar/list_directory_people">
|
||||
**설명:** 디렉토리 구성원 목록을 가져옵니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -121,7 +121,7 @@ uv add crewai-tools
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GOOGLE_CALENDAR_SEARCH_DIRECTORY_PEOPLE">
|
||||
<Accordion title="google_calendar/search_directory_people">
|
||||
**설명:** 디렉토리 구성원을 검색합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -134,7 +134,7 @@ uv add crewai-tools
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GOOGLE_CALENDAR_LIST_OTHER_CONTACTS">
|
||||
<Accordion title="google_calendar/list_other_contacts">
|
||||
**설명:** 기타 연락처 목록을 가져옵니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -146,14 +146,14 @@ uv add crewai-tools
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GOOGLE_CALENDAR_SEARCH_OTHER_CONTACTS">
|
||||
<Accordion title="google_calendar/search_other_contacts">
|
||||
**설명:** 기타 연락처를 검색합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `query` (string, 선택): 연락처를 검색할 검색 쿼리.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GOOGLE_CALENDAR_GET_AVAILABILITY">
|
||||
<Accordion title="google_calendar/get_availability">
|
||||
**설명:** 캘린더의 가용성 정보를 가져옵니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -180,19 +180,13 @@ uv add crewai-tools
|
||||
|
||||
```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]
|
||||
apps=['google_calendar']
|
||||
)
|
||||
|
||||
# Task to create a meeting
|
||||
@@ -214,19 +208,12 @@ 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
|
||||
apps=['google_calendar']
|
||||
)
|
||||
|
||||
# Task to schedule a meeting with availability check
|
||||
@@ -248,17 +235,12 @@ 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]
|
||||
apps=['google_calendar']
|
||||
)
|
||||
|
||||
# Task to manage event updates
|
||||
@@ -284,17 +266,12 @@ 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]
|
||||
apps=['google_calendar']
|
||||
)
|
||||
|
||||
# Task to coordinate availability
|
||||
@@ -321,17 +298,12 @@ 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]
|
||||
apps=['google_calendar']
|
||||
)
|
||||
|
||||
# Complex scheduling automation task
|
||||
|
||||
221
docs/ko/enterprise/integrations/google_contacts.mdx
Normal file
221
docs/ko/enterprise/integrations/google_contacts.mdx
Normal file
@@ -0,0 +1,221 @@
|
||||
---
|
||||
title: Google Contacts 통합
|
||||
description: "CrewAI를 위한 Google Contacts 통합으로 연락처 및 디렉토리 관리."
|
||||
icon: "address-book"
|
||||
mode: "wide"
|
||||
---
|
||||
|
||||
## 개요
|
||||
|
||||
에이전트가 Google Contacts를 통해 연락처와 디렉토리 정보를 관리할 수 있도록 합니다. 개인 연락처에 액세스하고, 디렉토리 사람들을 검색하고, 연락처 정보를 생성 및 업데이트하고, AI 기반 자동화로 연락처 그룹을 관리합니다.
|
||||
|
||||
## 전제 조건
|
||||
|
||||
Google Contacts 통합을 사용하기 전에 다음 사항을 확인하세요:
|
||||
|
||||
- 활성 구독이 있는 [CrewAI AMP](https://app.crewai.com) 계정
|
||||
- Google Contacts 액세스 권한이 있는 Google 계정
|
||||
- [통합 페이지](https://app.crewai.com/crewai_plus/connectors)를 통해 Google 계정 연결
|
||||
|
||||
## Google Contacts 통합 설정
|
||||
|
||||
### 1. Google 계정 연결
|
||||
|
||||
1. [CrewAI AMP 통합](https://app.crewai.com/crewai_plus/connectors)으로 이동
|
||||
2. 인증 통합 섹션에서 **Google Contacts** 찾기
|
||||
3. **연결**을 클릭하고 OAuth 플로우 완료
|
||||
4. 연락처 및 디렉토리 액세스에 필요한 권한 부여
|
||||
5. [통합 설정](https://app.crewai.com/crewai_plus/settings/integrations)에서 Enterprise Token 복사
|
||||
|
||||
### 2. 필요한 패키지 설치
|
||||
|
||||
```bash
|
||||
uv add crewai-tools
|
||||
```
|
||||
|
||||
## 사용 가능한 작업
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="google_contacts/get_contacts">
|
||||
**설명:** Google Contacts에서 사용자의 연락처를 검색합니다.
|
||||
|
||||
**매개변수:**
|
||||
- `pageSize` (integer, 선택사항): 반환할 연락처 수 (최대 1000). 최소: 1, 최대: 1000
|
||||
- `pageToken` (string, 선택사항): 검색할 페이지의 토큰.
|
||||
- `personFields` (string, 선택사항): 포함할 필드 (예: 'names,emailAddresses,phoneNumbers'). 기본값: names,emailAddresses,phoneNumbers
|
||||
- `requestSyncToken` (boolean, 선택사항): 응답에 동기화 토큰을 포함할지 여부. 기본값: false
|
||||
- `sortOrder` (string, 선택사항): 연결을 정렬할 순서. 옵션: LAST_MODIFIED_ASCENDING, LAST_MODIFIED_DESCENDING, FIRST_NAME_ASCENDING, LAST_NAME_ASCENDING
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_contacts/search_contacts">
|
||||
**설명:** 쿼리 문자열을 사용하여 연락처를 검색합니다.
|
||||
|
||||
**매개변수:**
|
||||
- `query` (string, 필수): 검색 쿼리 문자열
|
||||
- `readMask` (string, 필수): 읽을 필드 (예: 'names,emailAddresses,phoneNumbers')
|
||||
- `pageSize` (integer, 선택사항): 반환할 결과 수. 최소: 1, 최대: 30
|
||||
- `pageToken` (string, 선택사항): 반환할 결과 페이지를 지정하는 토큰.
|
||||
- `sources` (array, 선택사항): 검색할 소스. 옵션: READ_SOURCE_TYPE_CONTACT, READ_SOURCE_TYPE_PROFILE. 기본값: READ_SOURCE_TYPE_CONTACT
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_contacts/list_directory_people">
|
||||
**설명:** 인증된 사용자의 디렉토리에 있는 사람들을 나열합니다.
|
||||
|
||||
**매개변수:**
|
||||
- `sources` (array, 필수): 검색할 디렉토리 소스. 옵션: DIRECTORY_SOURCE_TYPE_DOMAIN_PROFILE, DIRECTORY_SOURCE_TYPE_DOMAIN_CONTACT. 기본값: DIRECTORY_SOURCE_TYPE_DOMAIN_PROFILE
|
||||
- `pageSize` (integer, 선택사항): 반환할 사람 수. 최소: 1, 최대: 1000
|
||||
- `pageToken` (string, 선택사항): 반환할 결과 페이지를 지정하는 토큰.
|
||||
- `readMask` (string, 선택사항): 읽을 필드 (예: 'names,emailAddresses')
|
||||
- `requestSyncToken` (boolean, 선택사항): 응답에 동기화 토큰을 포함할지 여부. 기본값: false
|
||||
- `mergeSources` (array, 선택사항): 디렉토리 사람 응답에 병합할 추가 데이터. 옵션: CONTACT
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_contacts/search_directory_people">
|
||||
**설명:** 디렉토리에서 사람을 검색합니다.
|
||||
|
||||
**매개변수:**
|
||||
- `query` (string, 필수): 검색 쿼리
|
||||
- `sources` (string, 필수): 디렉토리 소스 ('DIRECTORY_SOURCE_TYPE_DOMAIN_PROFILE' 사용)
|
||||
- `pageSize` (integer, 선택사항): 반환할 결과 수
|
||||
- `readMask` (string, 선택사항): 읽을 필드
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_contacts/list_other_contacts">
|
||||
**설명:** 기타 연락처를 나열합니다 (사용자의 개인 연락처에 없는).
|
||||
|
||||
**매개변수:**
|
||||
- `pageSize` (integer, 선택사항): 반환할 연락처 수. 최소: 1, 최대: 1000
|
||||
- `pageToken` (string, 선택사항): 반환할 결과 페이지를 지정하는 토큰.
|
||||
- `readMask` (string, 선택사항): 읽을 필드
|
||||
- `requestSyncToken` (boolean, 선택사항): 응답에 동기화 토큰을 포함할지 여부. 기본값: false
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_contacts/search_other_contacts">
|
||||
**설명:** 기타 연락처를 검색합니다.
|
||||
|
||||
**매개변수:**
|
||||
- `query` (string, 필수): 검색 쿼리
|
||||
- `readMask` (string, 필수): 읽을 필드 (예: 'names,emailAddresses')
|
||||
- `pageSize` (integer, 선택사항): 결과 수
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_contacts/get_person">
|
||||
**설명:** 리소스 이름으로 한 사람의 연락처 정보를 가져옵니다.
|
||||
|
||||
**매개변수:**
|
||||
- `resourceName` (string, 필수): 가져올 사람의 리소스 이름 (예: 'people/c123456789')
|
||||
- `personFields` (string, 선택사항): 포함할 필드 (예: 'names,emailAddresses,phoneNumbers'). 기본값: names,emailAddresses,phoneNumbers
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_contacts/create_contact">
|
||||
**설명:** 사용자의 주소록에 새 연락처를 만듭니다.
|
||||
|
||||
**매개변수:**
|
||||
- `names` (array, 선택사항): 사람의 이름들. 각 항목은 `givenName` (string), `familyName` (string), `displayName` (string)이 있는 객체.
|
||||
- `emailAddresses` (array, 선택사항): 이메일 주소들. 각 항목은 `value` (string, 이메일 주소)와 `type` (string, 'home', 'work', 'other', 기본값 'other')이 있는 객체.
|
||||
- `phoneNumbers` (array, 선택사항): 전화번호들. 각 항목은 `value` (string, 전화번호)와 `type` (string, 'home', 'work', 'mobile', 'other', 기본값 'other')이 있는 객체.
|
||||
- `addresses` (array, 선택사항): 우편 주소들. 각 항목은 `formattedValue` (string, 형식화된 주소)와 `type` (string, 'home', 'work', 'other', 기본값 'other')이 있는 객체.
|
||||
- `organizations` (array, 선택사항): 조직/회사들. 각 항목은 `name` (string, 조직 이름), `title` (string, 직책), `type` (string, 'work', 'other', 기본값 'work')이 있는 객체.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_contacts/update_contact">
|
||||
**설명:** 기존 연락처의 정보를 업데이트합니다.
|
||||
|
||||
**매개변수:**
|
||||
- `resourceName` (string, 필수): 업데이트할 사람의 리소스 이름 (예: 'people/c123456789').
|
||||
- `updatePersonFields` (string, 필수): 업데이트할 필드 (예: 'names,emailAddresses,phoneNumbers').
|
||||
- `names` (array, 선택사항): 사람의 이름들. 각 항목은 `givenName` (string), `familyName` (string), `displayName` (string)이 있는 객체.
|
||||
- `emailAddresses` (array, 선택사항): 이메일 주소들. 각 항목은 `value` (string, 이메일 주소)와 `type` (string, 'home', 'work', 'other')이 있는 객체.
|
||||
- `phoneNumbers` (array, 선택사항): 전화번호들. 각 항목은 `value` (string, 전화번호)와 `type` (string, 'home', 'work', 'mobile', 'other')이 있는 객체.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_contacts/delete_contact">
|
||||
**설명:** 사용자의 주소록에서 연락처를 삭제합니다.
|
||||
|
||||
**매개변수:**
|
||||
- `resourceName` (string, 필수): 삭제할 사람의 리소스 이름 (예: 'people/c123456789').
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_contacts/batch_get_people">
|
||||
**설명:** 한 번의 요청으로 여러 사람에 대한 정보를 가져옵니다.
|
||||
|
||||
**매개변수:**
|
||||
- `resourceNames` (array, 필수): 가져올 사람들의 리소스 이름 (최대 200개 항목).
|
||||
- `personFields` (string, 선택사항): 포함할 필드 (예: 'names,emailAddresses,phoneNumbers'). 기본값: names,emailAddresses,phoneNumbers
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_contacts/list_contact_groups">
|
||||
**설명:** 사용자의 연락처 그룹(라벨)을 나열합니다.
|
||||
|
||||
**매개변수:**
|
||||
- `pageSize` (integer, 선택사항): 반환할 연락처 그룹 수. 최소: 1, 최대: 1000
|
||||
- `pageToken` (string, 선택사항): 반환할 결과 페이지를 지정하는 토큰.
|
||||
- `groupFields` (string, 선택사항): 포함할 필드 (예: 'name,memberCount,clientData'). 기본값: name,memberCount
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_contacts/get_contact_group">
|
||||
**설명:** 리소스 이름으로 특정 연락처 그룹을 가져옵니다.
|
||||
|
||||
**매개변수:**
|
||||
- `resourceName` (string, 필수): 연락처 그룹의 리소스 이름 (예: 'contactGroups/myContactGroup').
|
||||
- `maxMembers` (integer, 선택사항): 포함할 최대 멤버 수. 최소: 0, 최대: 20000
|
||||
- `groupFields` (string, 선택사항): 포함할 필드 (예: 'name,memberCount,clientData'). 기본값: name,memberCount
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_contacts/create_contact_group">
|
||||
**설명:** 새 연락처 그룹(라벨)을 만듭니다.
|
||||
|
||||
**매개변수:**
|
||||
- `name` (string, 필수): 연락처 그룹의 이름.
|
||||
- `clientData` (array, 선택사항): 클라이언트별 데이터. 각 항목은 `key` (string)와 `value` (string)가 있는 객체.
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
## 사용 예제
|
||||
|
||||
### 기본 Google Contacts 에이전트 설정
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
# Google Contacts 기능을 가진 에이전트 생성
|
||||
contacts_agent = Agent(
|
||||
role="연락처 관리자",
|
||||
goal="Google Contacts를 효율적으로 관리",
|
||||
backstory="연락처 관리 및 조직 전문 AI 어시스턴트.",
|
||||
apps=['google_contacts'] # 모든 Google Contacts 작업을 사용할 수 있습니다
|
||||
)
|
||||
|
||||
# 새 연락처 생성 작업
|
||||
create_contact_task = Task(
|
||||
description="'김철수'라는 이름으로 이메일 'kim.chulsoo@example.com'과 전화번호 '010-1234-5678'로 새 연락처를 만드세요",
|
||||
agent=contacts_agent,
|
||||
expected_output="새 연락처가 성공적으로 생성됨"
|
||||
)
|
||||
|
||||
# 작업 실행
|
||||
crew = Crew(
|
||||
agents=[contacts_agent],
|
||||
tasks=[create_contact_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
## 문제 해결
|
||||
|
||||
### 일반적인 문제
|
||||
|
||||
**인증 오류**
|
||||
- Google 계정이 연락처 및 디렉토리 액세스에 필요한 권한을 가지고 있는지 확인하세요.
|
||||
- OAuth 연결이 Google People API에 필요한 모든 범위를 포함하는지 확인하세요.
|
||||
|
||||
**연락처 생성/업데이트 문제**
|
||||
- 연락처 생성 시 `email`과 같은 필수 필드가 제공되는지 확인하세요.
|
||||
- 연락처를 업데이트하거나 삭제할 때 `resourceName`이 올바른지 확인하세요.
|
||||
|
||||
### 도움 받기
|
||||
|
||||
<Card title="도움이 필요하신가요?" icon="headset" href="mailto:support@crewai.com">
|
||||
Google Contacts 통합 설정 또는 문제 해결에 대한 지원이 필요하시면 지원팀에 문의하세요.
|
||||
</Card>
|
||||
158
docs/ko/enterprise/integrations/google_docs.mdx
Normal file
158
docs/ko/enterprise/integrations/google_docs.mdx
Normal file
@@ -0,0 +1,158 @@
|
||||
---
|
||||
title: Google Docs 통합
|
||||
description: "CrewAI를 위한 Google Docs 통합으로 문서 생성 및 편집."
|
||||
icon: "file-lines"
|
||||
mode: "wide"
|
||||
---
|
||||
|
||||
## 개요
|
||||
|
||||
에이전트가 텍스트 조작 및 서식을 사용하여 Google Docs 문서를 생성, 편집 및 관리할 수 있도록 합니다. AI 기반 자동화로 문서 생성을 자동화하고, 텍스트를 삽입 및 교체하고, 콘텐츠 범위를 관리하며, 문서 워크플로를 간소화합니다.
|
||||
|
||||
## 전제 조건
|
||||
|
||||
Google Docs 통합을 사용하기 전에 다음 사항을 확인하세요:
|
||||
|
||||
- 활성 구독이 있는 [CrewAI AMP](https://app.crewai.com) 계정
|
||||
- Google Docs 액세스 권한이 있는 Google 계정
|
||||
- [통합 페이지](https://app.crewai.com/crewai_plus/connectors)를 통해 Google 계정 연결
|
||||
|
||||
## Google Docs 통합 설정
|
||||
|
||||
### 1. Google 계정 연결
|
||||
|
||||
1. [CrewAI AMP 통합](https://app.crewai.com/crewai_plus/connectors)으로 이동
|
||||
2. 인증 통합 섹션에서 **Google Docs** 찾기
|
||||
3. **연결**을 클릭하고 OAuth 플로우 완료
|
||||
4. 문서 액세스에 필요한 권한 부여
|
||||
5. [통합 설정](https://app.crewai.com/crewai_plus/settings/integrations)에서 Enterprise Token 복사
|
||||
|
||||
### 2. 필요한 패키지 설치
|
||||
|
||||
```bash
|
||||
uv add crewai-tools
|
||||
```
|
||||
|
||||
## 사용 가능한 작업
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="google_docs/create_document">
|
||||
**설명:** 새 Google 문서를 만듭니다.
|
||||
|
||||
**매개변수:**
|
||||
- `title` (string, 선택사항): 새 문서의 제목.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_docs/get_document">
|
||||
**설명:** Google 문서의 내용과 메타데이터를 가져옵니다.
|
||||
|
||||
**매개변수:**
|
||||
- `documentId` (string, 필수): 검색할 문서의 ID.
|
||||
- `includeTabsContent` (boolean, 선택사항): 탭 내용을 포함할지 여부. 기본값: false
|
||||
- `suggestionsViewMode` (string, 선택사항): 문서에 적용할 제안 보기 모드. 옵션: DEFAULT_FOR_CURRENT_ACCESS, PREVIEW_SUGGESTIONS_ACCEPTED, PREVIEW_WITHOUT_SUGGESTIONS. 기본값: DEFAULT_FOR_CURRENT_ACCESS
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_docs/batch_update">
|
||||
**설명:** Google 문서에 하나 이상의 업데이트를 적용합니다.
|
||||
|
||||
**매개변수:**
|
||||
- `documentId` (string, 필수): 업데이트할 문서의 ID.
|
||||
- `requests` (array, 필수): 문서에 적용할 업데이트 목록. 각 항목은 요청을 나타내는 객체.
|
||||
- `writeControl` (object, 선택사항): 쓰기 요청이 실행되는 방식을 제어합니다. `requiredRevisionId` (string)와 `targetRevisionId` (string)를 포함.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_docs/insert_text">
|
||||
**설명:** Google 문서의 특정 위치에 텍스트를 삽입합니다.
|
||||
|
||||
**매개변수:**
|
||||
- `documentId` (string, 필수): 업데이트할 문서의 ID.
|
||||
- `text` (string, 필수): 삽입할 텍스트.
|
||||
- `index` (integer, 선택사항): 텍스트를 삽입할 0 기반 인덱스. 기본값: 1
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_docs/replace_text">
|
||||
**설명:** Google 문서에서 텍스트의 모든 인스턴스를 교체합니다.
|
||||
|
||||
**매개변수:**
|
||||
- `documentId` (string, 필수): 업데이트할 문서의 ID.
|
||||
- `containsText` (string, 필수): 찾아서 교체할 텍스트.
|
||||
- `replaceText` (string, 필수): 교체할 텍스트.
|
||||
- `matchCase` (boolean, 선택사항): 검색이 대소문자를 구분할지 여부. 기본값: false
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_docs/delete_content_range">
|
||||
**설명:** Google 문서의 특정 범위에서 내용을 삭제합니다.
|
||||
|
||||
**매개변수:**
|
||||
- `documentId` (string, 필수): 업데이트할 문서의 ID.
|
||||
- `startIndex` (integer, 필수): 삭제할 범위의 시작 인덱스.
|
||||
- `endIndex` (integer, 필수): 삭제할 범위의 끝 인덱스.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_docs/insert_page_break">
|
||||
**설명:** Google 문서의 특정 위치에 페이지 나누기를 삽입합니다.
|
||||
|
||||
**매개변수:**
|
||||
- `documentId` (string, 필수): 업데이트할 문서의 ID.
|
||||
- `index` (integer, 선택사항): 페이지 나누기를 삽입할 0 기반 인덱스. 기본값: 1
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_docs/create_named_range">
|
||||
**설명:** Google 문서에 명명된 범위를 만듭니다.
|
||||
|
||||
**매개변수:**
|
||||
- `documentId` (string, 필수): 업데이트할 문서의 ID.
|
||||
- `name` (string, 필수): 명명된 범위의 이름.
|
||||
- `startIndex` (integer, 필수): 범위의 시작 인덱스.
|
||||
- `endIndex` (integer, 필수): 범위의 끝 인덱스.
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
## 사용 예제
|
||||
|
||||
### 기본 Google Docs 에이전트 설정
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
# Google Docs 기능을 가진 에이전트 생성
|
||||
docs_agent = Agent(
|
||||
role="문서 작성자",
|
||||
goal="Google Docs 문서를 효율적으로 생성하고 관리",
|
||||
backstory="Google Docs 문서 생성 및 편집 전문 AI 어시스턴트.",
|
||||
apps=['google_docs'] # 모든 Google Docs 작업을 사용할 수 있습니다
|
||||
)
|
||||
|
||||
# 새 문서 생성 작업
|
||||
create_doc_task = Task(
|
||||
description="'프로젝트 상태 보고서'라는 제목으로 새 Google 문서를 만드세요",
|
||||
agent=docs_agent,
|
||||
expected_output="새 Google 문서 '프로젝트 상태 보고서'가 성공적으로 생성됨"
|
||||
)
|
||||
|
||||
# 작업 실행
|
||||
crew = Crew(
|
||||
agents=[docs_agent],
|
||||
tasks=[create_doc_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
## 문제 해결
|
||||
|
||||
### 일반적인 문제
|
||||
|
||||
**인증 오류**
|
||||
- Google 계정이 Google Docs 액세스에 필요한 권한을 가지고 있는지 확인하세요.
|
||||
- OAuth 연결이 필요한 모든 범위(`https://www.googleapis.com/auth/documents`)를 포함하는지 확인하세요.
|
||||
|
||||
**문서 ID 문제**
|
||||
- 문서 ID가 올바른지 다시 확인하세요.
|
||||
- 문서가 존재하고 계정에서 액세스할 수 있는지 확인하세요.
|
||||
|
||||
### 도움 받기
|
||||
|
||||
<Card title="도움이 필요하신가요?" icon="headset" href="mailto:support@crewai.com">
|
||||
Google Docs 통합 설정 또는 문제 해결에 대한 지원이 필요하시면 지원팀에 문의하세요.
|
||||
</Card>
|
||||
30
docs/ko/enterprise/integrations/google_drive.mdx
Normal file
30
docs/ko/enterprise/integrations/google_drive.mdx
Normal file
@@ -0,0 +1,30 @@
|
||||
---
|
||||
title: Google Drive 통합
|
||||
description: "CrewAI를 위한 Google Drive 통합으로 파일 및 폴더 관리."
|
||||
icon: "google"
|
||||
mode: "wide"
|
||||
---
|
||||
|
||||
## 개요
|
||||
|
||||
에이전트가 Google Drive의 파일과 폴더에 액세스하고 관리할 수 있도록 합니다. AI 기반 자동화로 파일을 업로드, 다운로드, 콘텐츠 구성, 공유 링크 생성 및 클라우드 스토리지 워크플로를 간소화합니다.
|
||||
|
||||
## 전제 조건
|
||||
|
||||
Google Drive 통합을 사용하기 전에 다음 사항을 확인하세요:
|
||||
|
||||
- 활성 구독이 있는 [CrewAI AMP](https://app.crewai.com) 계정
|
||||
- Google Drive 액세스 권한이 있는 Google 계정
|
||||
- [통합 페이지](https://app.crewai.com/crewai_plus/connectors)를 통해 Google 계정 연결
|
||||
|
||||
## 사용 가능한 작업
|
||||
|
||||
자세한 매개변수 및 사용법은 [영어 문서](../../../en/enterprise/integrations/google_drive)를 참조하세요.
|
||||
|
||||
## 문제 해결
|
||||
|
||||
### 도움 받기
|
||||
|
||||
<Card title="도움이 필요하신가요?" icon="headset" href="mailto:support@crewai.com">
|
||||
Google Drive 통합 설정 또는 문제 해결에 대한 지원이 필요하시면 지원팀에 문의하세요.
|
||||
</Card>
|
||||
@@ -26,7 +26,7 @@ Google Sheets 통합을 사용하기 전에 다음을 확인하세요:
|
||||
2. 인증 통합 섹션에서 **Google Sheets**를 찾습니다.
|
||||
3. **Connect**를 클릭하고 OAuth 흐름을 완료합니다.
|
||||
4. 스프레드시트 접근에 필요한 권한을 허용합니다.
|
||||
5. [Account Settings](https://app.crewai.com/crewai_plus/settings/account)에서 Enterprise Token을 복사합니다.
|
||||
5. [통합 설정](https://app.crewai.com/crewai_plus/settings/integrations)에서 Enterprise Token을 복사합니다.
|
||||
|
||||
### 2. 필수 패키지 설치
|
||||
|
||||
@@ -37,7 +37,7 @@ uv add crewai-tools
|
||||
## 사용 가능한 작업
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="GOOGLE_SHEETS_GET_ROW">
|
||||
<Accordion title="google_sheets/get_values">
|
||||
**설명:** Google Sheets 스프레드시트에서 행을 가져옵니다.
|
||||
|
||||
**매개변수:**
|
||||
@@ -45,7 +45,7 @@ uv add crewai-tools
|
||||
- `limit` (string, 선택): 행 제한 - 반환할 최대 행 수를 제한합니다.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GOOGLE_SHEETS_CREATE_ROW">
|
||||
<Accordion title="google_sheets/append_values">
|
||||
**설명:** Google Sheets 스프레드시트에 새로운 행을 만듭니다.
|
||||
|
||||
**매개변수:**
|
||||
@@ -62,7 +62,7 @@ uv add crewai-tools
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GOOGLE_SHEETS_UPDATE_ROW">
|
||||
<Accordion title="google_sheets/update_values">
|
||||
**설명:** Google Sheets 스프레드시트의 기존 행을 업데이트합니다.
|
||||
|
||||
**매개변수:**
|
||||
@@ -105,19 +105,13 @@ uv add crewai-tools
|
||||
|
||||
```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]
|
||||
apps=['google_sheets']
|
||||
)
|
||||
|
||||
# Task to add new data to a spreadsheet
|
||||
@@ -139,19 +133,12 @@ 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
|
||||
apps=['google_sheets']
|
||||
)
|
||||
|
||||
# Task to collect and organize data
|
||||
@@ -173,17 +160,12 @@ 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]
|
||||
apps=['google_sheets']
|
||||
)
|
||||
|
||||
# Task to analyze data and create reports
|
||||
@@ -209,17 +191,12 @@ 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]
|
||||
apps=['google_sheets']
|
||||
)
|
||||
|
||||
# Task to update data based on conditions
|
||||
@@ -246,17 +223,12 @@ 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]
|
||||
apps=['google_sheets']
|
||||
)
|
||||
|
||||
# Complex workflow task
|
||||
|
||||
167
docs/ko/enterprise/integrations/google_slides.mdx
Normal file
167
docs/ko/enterprise/integrations/google_slides.mdx
Normal file
@@ -0,0 +1,167 @@
|
||||
---
|
||||
title: Google Slides 통합
|
||||
description: "CrewAI를 위한 Google Slides 통합으로 프레젠테이션 생성 및 관리."
|
||||
icon: "chart-bar"
|
||||
mode: "wide"
|
||||
---
|
||||
|
||||
## 개요
|
||||
|
||||
에이전트가 Google Slides 프레젠테이션을 생성, 편집 및 관리할 수 있도록 합니다. AI 기반 자동화로 프레젠테이션 생성을 자동화하고, 콘텐츠를 업데이트하고, Google Sheets에서 데이터를 가져오며, 프레젠테이션 워크플로를 간소화합니다.
|
||||
|
||||
## 전제 조건
|
||||
|
||||
Google Slides 통합을 사용하기 전에 다음 사항을 확인하세요:
|
||||
|
||||
- 활성 구독이 있는 [CrewAI AMP](https://app.crewai.com) 계정
|
||||
- Google Slides 액세스 권한이 있는 Google 계정
|
||||
- [통합 페이지](https://app.crewai.com/crewai_plus/connectors)를 통해 Google 계정 연결
|
||||
|
||||
## Google Slides 통합 설정
|
||||
|
||||
### 1. Google 계정 연결
|
||||
|
||||
1. [CrewAI AMP 통합](https://app.crewai.com/crewai_plus/connectors)으로 이동
|
||||
2. 인증 통합 섹션에서 **Google Slides** 찾기
|
||||
3. **연결**을 클릭하고 OAuth 플로우 완료
|
||||
4. 프레젠테이션, 스프레드시트 및 드라이브 액세스에 필요한 권한 부여
|
||||
5. [통합 설정](https://app.crewai.com/crewai_plus/settings/integrations)에서 Enterprise Token 복사
|
||||
|
||||
### 2. 필요한 패키지 설치
|
||||
|
||||
```bash
|
||||
uv add crewai-tools
|
||||
```
|
||||
|
||||
## 사용 가능한 작업
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="google_slides/create_blank_presentation">
|
||||
**설명:** 내용이 없는 빈 프레젠테이션을 만듭니다.
|
||||
|
||||
**매개변수:**
|
||||
- `title` (string, 필수): 프레젠테이션의 제목.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_slides/get_presentation">
|
||||
**설명:** ID로 프레젠테이션을 검색합니다.
|
||||
|
||||
**매개변수:**
|
||||
- `presentationId` (string, 필수): 검색할 프레젠테이션의 ID.
|
||||
- `fields` (string, 선택사항): 응답에 포함할 필드. 성능 향상을 위해 필요한 데이터만 반환하는 데 사용.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_slides/batch_update_presentation">
|
||||
**설명:** 프레젠테이션에 업데이트를 적용하거나 콘텐츠를 추가하거나 제거합니다.
|
||||
|
||||
**매개변수:**
|
||||
- `presentationId` (string, 필수): 업데이트할 프레젠테이션의 ID.
|
||||
- `requests` (array, 필수): 프레젠테이션에 적용할 업데이트 목록. 각 항목은 요청을 나타내는 객체.
|
||||
- `writeControl` (object, 선택사항): 쓰기 요청이 실행되는 방식을 제어합니다. `requiredRevisionId` (string)를 포함.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_slides/get_page">
|
||||
**설명:** ID로 특정 페이지를 검색합니다.
|
||||
|
||||
**매개변수:**
|
||||
- `presentationId` (string, 필수): 프레젠테이션의 ID.
|
||||
- `pageObjectId` (string, 필수): 검색할 페이지의 ID.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_slides/get_thumbnail">
|
||||
**설명:** 페이지 썸네일을 생성합니다.
|
||||
|
||||
**매개변수:**
|
||||
- `presentationId` (string, 필수): 프레젠테이션의 ID.
|
||||
- `pageObjectId` (string, 필수): 썸네일 생성을 위한 페이지의 ID.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_slides/import_data_from_sheet">
|
||||
**설명:** Google 시트에서 프레젠테이션으로 데이터를 가져옵니다.
|
||||
|
||||
**매개변수:**
|
||||
- `presentationId` (string, 필수): 프레젠테이션의 ID.
|
||||
- `sheetId` (string, 필수): 가져올 Google 시트의 ID.
|
||||
- `dataRange` (string, 필수): 시트에서 가져올 데이터 범위.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_slides/upload_file_to_drive">
|
||||
**설명:** 프레젠테이션과 연결된 Google 드라이브에 파일을 업로드합니다.
|
||||
|
||||
**매개변수:**
|
||||
- `file` (string, 필수): 업로드할 파일 데이터.
|
||||
- `presentationId` (string, 필수): 업로드된 파일을 연결할 프레젠테이션의 ID.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_slides/link_file_to_presentation">
|
||||
**설명:** Google 드라이브의 파일을 프레젠테이션에 연결합니다.
|
||||
|
||||
**매개변수:**
|
||||
- `presentationId` (string, 필수): 프레젠테이션의 ID.
|
||||
- `fileId` (string, 필수): 연결할 파일의 ID.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_slides/get_all_presentations">
|
||||
**설명:** 사용자가 액세스할 수 있는 모든 프레젠테이션을 나열합니다.
|
||||
|
||||
**매개변수:**
|
||||
- `pageSize` (integer, 선택사항): 페이지당 반환할 프레젠테이션 수.
|
||||
- `pageToken` (string, 선택사항): 페이지네이션을 위한 토큰.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_slides/delete_presentation">
|
||||
**설명:** ID로 프레젠테이션을 삭제합니다.
|
||||
|
||||
**매개변수:**
|
||||
- `presentationId` (string, 필수): 삭제할 프레젠테이션의 ID.
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
## 사용 예제
|
||||
|
||||
### 기본 Google Slides 에이전트 설정
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
# Google Slides 기능을 가진 에이전트 생성
|
||||
slides_agent = Agent(
|
||||
role="프레젠테이션 작성자",
|
||||
goal="Google Slides 프레젠테이션을 효율적으로 생성하고 관리",
|
||||
backstory="프레젠테이션 디자인 및 콘텐츠 관리 전문 AI 어시스턴트.",
|
||||
apps=['google_slides'] # 모든 Google Slides 작업을 사용할 수 있습니다
|
||||
)
|
||||
|
||||
# 새 프레젠테이션 생성 작업
|
||||
create_presentation_task = Task(
|
||||
description="'분기별 매출 보고서'라는 제목으로 새 빈 프레젠테이션을 만드세요",
|
||||
agent=slides_agent,
|
||||
expected_output="새 프레젠테이션 '분기별 매출 보고서'가 성공적으로 생성됨"
|
||||
)
|
||||
|
||||
# 작업 실행
|
||||
crew = Crew(
|
||||
agents=[slides_agent],
|
||||
tasks=[create_presentation_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
## 문제 해결
|
||||
|
||||
### 일반적인 문제
|
||||
|
||||
**인증 오류**
|
||||
- Google 계정이 Google Slides 및 Google Drive 액세스에 필요한 권한을 가지고 있는지 확인하세요.
|
||||
- OAuth 연결이 필요한 모든 범위를 포함하는지 확인하세요.
|
||||
|
||||
**프레젠테이션/페이지 ID 문제**
|
||||
- 프레젠테이션 ID와 페이지 객체 ID가 올바른지 다시 확인하세요.
|
||||
- 프레젠테이션이나 페이지가 존재하고 액세스할 수 있는지 확인하세요.
|
||||
|
||||
### 도움 받기
|
||||
|
||||
<Card title="도움이 필요하신가요?" icon="headset" href="mailto:support@crewai.com">
|
||||
Google Slides 통합 설정 또는 문제 해결에 대한 지원이 필요하시면 지원팀에 문의하세요.
|
||||
</Card>
|
||||
@@ -25,7 +25,7 @@ HubSpot 통합을 사용하기 전에 다음을 확인하세요.
|
||||
2. 인증 통합 섹션에서 **HubSpot**을 찾습니다.
|
||||
3. **Connect**를 클릭하고 OAuth 플로우를 완료합니다.
|
||||
4. 회사 및 연락처 관리를 위한 필요한 권한을 부여합니다.
|
||||
5. [계정 설정](https://app.crewai.com/crewai_plus/settings/account)에서 Enterprise Token을 복사합니다.
|
||||
5. [통합 설정](https://app.crewai.com/crewai_plus/settings/integrations)에서 Enterprise Token을 복사합니다.
|
||||
|
||||
### 2. 필수 패키지 설치
|
||||
|
||||
@@ -36,7 +36,7 @@ uv add crewai-tools
|
||||
## 사용 가능한 액션
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="HUBSPOT_CREATE_RECORD_COMPANIES">
|
||||
<Accordion title="hubspot/create_company">
|
||||
**설명:** HubSpot에서 새로운 회사 레코드를 생성합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -101,7 +101,7 @@ uv add crewai-tools
|
||||
- `founded_year` (string, 선택): 설립 연도.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_CREATE_RECORD_CONTACTS">
|
||||
<Accordion title="hubspot/create_contact">
|
||||
**설명:** HubSpot에서 새로운 연락처 레코드를 생성합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -200,7 +200,7 @@ uv add crewai-tools
|
||||
- `hs_googleplusid` (string, 선택): googleplus ID.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_CREATE_RECORD_DEALS">
|
||||
<Accordion title="hubspot/create_deal">
|
||||
**설명:** HubSpot에서 새로운 거래(deal) 레코드를 생성합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -215,7 +215,7 @@ uv add crewai-tools
|
||||
- `hs_priority` (string, 선택): 거래 우선순위. 사용 가능한 값: `low`, `medium`, `high`.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_CREATE_RECORD_ENGAGEMENTS">
|
||||
<Accordion title="hubspot/create_record_engagements">
|
||||
**설명:** HubSpot에서 새로운 참여(예: 노트, 이메일, 통화, 미팅, 작업)를 생성합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -232,7 +232,7 @@ uv add crewai-tools
|
||||
- `hs_meeting_end_time` (string, 선택): 미팅 종료 시간. (`MEETING`에서 사용)
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_UPDATE_RECORD_COMPANIES">
|
||||
<Accordion title="hubspot/update_company">
|
||||
**설명:** HubSpot에서 기존 회사 레코드를 업데이트합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -249,7 +249,7 @@ uv add crewai-tools
|
||||
- `description` (string, 선택): 설명.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_CREATE_RECORD_ANY">
|
||||
<Accordion title="hubspot/create_record_any">
|
||||
**설명:** HubSpot에서 지정된 오브젝트 타입의 레코드를 생성합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -257,7 +257,7 @@ uv add crewai-tools
|
||||
- 추가 파라미터는 커스텀 오브젝트의 스키마에 따라 다릅니다.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_UPDATE_RECORD_CONTACTS">
|
||||
<Accordion title="hubspot/update_contact">
|
||||
**설명:** HubSpot에서 기존 연락처 레코드를 업데이트합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -271,7 +271,7 @@ uv add crewai-tools
|
||||
- `lifecyclestage` (string, 선택): 라이프사이클 단계.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_UPDATE_RECORD_DEALS">
|
||||
<Accordion title="hubspot/update_deal">
|
||||
**설명:** HubSpot에서 기존 거래 레코드를 업데이트합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -284,7 +284,7 @@ uv add crewai-tools
|
||||
- `dealtype` (string, 선택): 거래 유형.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_UPDATE_RECORD_ENGAGEMENTS">
|
||||
<Accordion title="hubspot/update_record_engagements">
|
||||
**설명:** HubSpot에서 기존 참여(engagement)를 업데이트합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -295,7 +295,7 @@ uv add crewai-tools
|
||||
- `hs_task_status` (string, 선택): 작업 상태.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_UPDATE_RECORD_ANY">
|
||||
<Accordion title="hubspot/update_record_any">
|
||||
**설명:** HubSpot에서 지정된 오브젝트 타입의 레코드를 업데이트합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -304,28 +304,28 @@ uv add crewai-tools
|
||||
- 추가 파라미터는 커스텀 오브젝트의 스키마에 따라 다릅니다.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_GET_RECORDS_COMPANIES">
|
||||
<Accordion title="hubspot/list_companies">
|
||||
**설명:** HubSpot에서 회사 레코드 목록을 가져옵니다.
|
||||
|
||||
**파라미터:**
|
||||
- `paginationParameters` (object, 선택): 다음 페이지를 가져오려면 `pageCursor`를 사용하세요.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_GET_RECORDS_CONTACTS">
|
||||
<Accordion title="hubspot/list_contacts">
|
||||
**설명:** HubSpot에서 연락처 레코드 목록을 가져옵니다.
|
||||
|
||||
**파라미터:**
|
||||
- `paginationParameters` (object, 선택): 다음 페이지를 가져오려면 `pageCursor`를 사용하세요.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_GET_RECORDS_DEALS">
|
||||
<Accordion title="hubspot/list_deals">
|
||||
**설명:** HubSpot에서 거래 레코드 목록을 가져옵니다.
|
||||
|
||||
**파라미터:**
|
||||
- `paginationParameters` (object, 선택): 다음 페이지를 가져오려면 `pageCursor`를 사용하세요.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_GET_RECORDS_ENGAGEMENTS">
|
||||
<Accordion title="hubspot/get_records_engagements">
|
||||
**설명:** HubSpot에서 참여(engagement) 레코드 목록을 가져옵니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -333,7 +333,7 @@ uv add crewai-tools
|
||||
- `paginationParameters` (object, 선택): 다음 페이지를 가져오려면 `pageCursor`를 사용하세요.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_GET_RECORDS_ANY">
|
||||
<Accordion title="hubspot/get_records_any">
|
||||
**설명:** HubSpot에서 지정된 오브젝트 타입의 레코드 목록을 가져옵니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -341,35 +341,35 @@ uv add crewai-tools
|
||||
- `paginationParameters` (object, 선택): 다음 페이지를 가져오려면 `pageCursor`를 사용하세요.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_GET_RECORD_BY_ID_COMPANIES">
|
||||
<Accordion title="hubspot/get_company">
|
||||
**설명:** ID로 단일 회사 레코드를 가져옵니다.
|
||||
|
||||
**파라미터:**
|
||||
- `recordId` (string, 필수): 가져올 회사의 ID.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_GET_RECORD_BY_ID_CONTACTS">
|
||||
<Accordion title="hubspot/get_contact">
|
||||
**설명:** ID로 단일 연락처 레코드를 가져옵니다.
|
||||
|
||||
**파라미터:**
|
||||
- `recordId` (string, 필수): 가져올 연락처의 ID.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_GET_RECORD_BY_ID_DEALS">
|
||||
<Accordion title="hubspot/get_deal">
|
||||
**설명:** ID로 단일 거래 레코드를 가져옵니다.
|
||||
|
||||
**파라미터:**
|
||||
- `recordId` (string, 필수): 가져올 거래의 ID.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_GET_RECORD_BY_ID_ENGAGEMENTS">
|
||||
<Accordion title="hubspot/get_record_by_id_engagements">
|
||||
**설명:** ID로 단일 참여(engagement) 레코드를 가져옵니다.
|
||||
|
||||
**파라미터:**
|
||||
- `recordId` (string, 필수): 가져올 참여의 ID.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_GET_RECORD_BY_ID_ANY">
|
||||
<Accordion title="hubspot/get_record_by_id_any">
|
||||
**설명:** 지정된 오브젝트 타입의 단일 레코드를 ID로 가져옵니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -377,7 +377,7 @@ uv add crewai-tools
|
||||
- `recordId` (string, 필수): 가져올 레코드의 ID.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_SEARCH_RECORDS_COMPANIES">
|
||||
<Accordion title="hubspot/search_companies">
|
||||
**설명:** 필터 수식을 사용해 HubSpot에서 회사 레코드를 검색합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -385,7 +385,7 @@ uv add crewai-tools
|
||||
- `paginationParameters` (object, 선택): 다음 페이지를 가져오려면 `pageCursor`를 사용하세요.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_SEARCH_RECORDS_CONTACTS">
|
||||
<Accordion title="hubspot/search_contacts">
|
||||
**설명:** 필터 수식을 사용해 HubSpot에서 연락처 레코드를 검색합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -393,7 +393,7 @@ uv add crewai-tools
|
||||
- `paginationParameters` (object, 선택): 다음 페이지를 가져오려면 `pageCursor`를 사용하세요.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_SEARCH_RECORDS_DEALS">
|
||||
<Accordion title="hubspot/search_deals">
|
||||
**설명:** 필터 수식을 사용해 HubSpot에서 거래 레코드를 검색합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -401,7 +401,7 @@ uv add crewai-tools
|
||||
- `paginationParameters` (object, 선택): 다음 페이지를 가져오려면 `pageCursor`를 사용하세요.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_SEARCH_RECORDS_ENGAGEMENTS">
|
||||
<Accordion title="hubspot/search_records_engagements">
|
||||
**설명:** 필터 수식을 사용해 HubSpot에서 참여(engagement) 레코드를 검색합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -409,7 +409,7 @@ uv add crewai-tools
|
||||
- `paginationParameters` (object, 선택): 다음 페이지를 가져오려면 `pageCursor`를 사용하세요.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_SEARCH_RECORDS_ANY">
|
||||
<Accordion title="hubspot/search_records_any">
|
||||
**설명:** HubSpot에서 지정된 오브젝트 타입의 레코드를 검색합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -418,35 +418,35 @@ uv add crewai-tools
|
||||
- `paginationParameters` (object, 선택): 다음 페이지를 가져오려면 `pageCursor`를 사용하세요.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_DELETE_RECORD_COMPANIES">
|
||||
<Accordion title="hubspot/delete_record_companies">
|
||||
**설명:** ID로 회사 레코드를 삭제합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `recordId` (string, 필수): 삭제할 회사의 ID.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_DELETE_RECORD_CONTACTS">
|
||||
<Accordion title="hubspot/delete_record_contacts">
|
||||
**설명:** ID로 연락처 레코드를 삭제합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `recordId` (string, 필수): 삭제할 연락처의 ID.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_DELETE_RECORD_DEALS">
|
||||
<Accordion title="hubspot/delete_record_deals">
|
||||
**설명:** ID로 거래 레코드를 삭제합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `recordId` (string, 필수): 삭제할 거래의 ID.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_DELETE_RECORD_ENGAGEMENTS">
|
||||
<Accordion title="hubspot/delete_record_engagements">
|
||||
**설명:** ID로 참여(engagement) 레코드를 삭제합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `recordId` (string, 필수): 삭제할 참여의 ID.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_DELETE_RECORD_ANY">
|
||||
<Accordion title="hubspot/delete_record_any">
|
||||
**설명:** 지정된 오브젝트 타입의 레코드를 ID로 삭제합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -454,7 +454,7 @@ uv add crewai-tools
|
||||
- `recordId` (string, 필수): 삭제할 레코드의 ID.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_GET_CONTACTS_BY_LIST_ID">
|
||||
<Accordion title="hubspot/get_contacts_by_list_id">
|
||||
**설명:** 지정된 리스트 ID로부터 연락처 목록을 가져옵니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -462,7 +462,7 @@ uv add crewai-tools
|
||||
- `paginationParameters` (object, 선택): 이후 페이지를 위해 `pageCursor` 사용.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_DESCRIBE_ACTION_SCHEMA">
|
||||
<Accordion title="hubspot/describe_action_schema">
|
||||
**설명:** 특정 오브젝트 타입 및 작업에 대한 예상 스키마를 가져옵니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -477,19 +477,13 @@ uv add crewai-tools
|
||||
|
||||
```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]
|
||||
apps=['hubspot']
|
||||
)
|
||||
|
||||
# Task to create a new company
|
||||
@@ -511,19 +505,16 @@ 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"]
|
||||
actions_list=["hubspot/create_contact"]
|
||||
)
|
||||
|
||||
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]
|
||||
apps=['hubspot']
|
||||
)
|
||||
|
||||
# Task to create a contact
|
||||
@@ -545,17 +536,12 @@ 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]
|
||||
apps=['hubspot']
|
||||
)
|
||||
|
||||
# Task to manage contacts
|
||||
|
||||
@@ -25,7 +25,7 @@ Jira 통합을 사용하기 전에 다음을 준비하세요:
|
||||
2. **Jira**를 인증 통합 섹션에서 찾습니다.
|
||||
3. **Connect**를 클릭하고 OAuth 절차를 완료합니다.
|
||||
4. 이슈 및 프로젝트 관리를 위한 필요한 권한을 부여합니다.
|
||||
5. [Account Settings](https://app.crewai.com/crewai_plus/settings/account)에서 Enterprise Token을 복사합니다.
|
||||
5. [통합 설정](https://app.crewai.com/crewai_plus/settings/integrations)에서 Enterprise Token을 복사합니다.
|
||||
|
||||
### 2. 필수 패키지 설치
|
||||
|
||||
@@ -36,7 +36,7 @@ uv add crewai-tools
|
||||
## 사용 가능한 작업
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="JIRA_CREATE_ISSUE">
|
||||
<Accordion title="jira/create_issue">
|
||||
**설명:** Jira에서 이슈를 생성합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -56,7 +56,7 @@ uv add crewai-tools
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="JIRA_UPDATE_ISSUE">
|
||||
<Accordion title="jira/update_issue">
|
||||
**설명:** Jira에서 이슈를 업데이트합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -71,14 +71,14 @@ uv add crewai-tools
|
||||
- `additionalFields` (string, 선택): 추가 필드 - 포함해야 하는 다른 필드를 JSON 형식으로 지정하세요.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="JIRA_GET_ISSUE_BY_KEY">
|
||||
<Accordion title="jira/get_issue_by_key">
|
||||
**설명:** Jira에서 키로 이슈를 조회합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `issueKey` (string, 필수): 이슈 키 (예시: "TEST-1234").
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="JIRA_FILTER_ISSUES">
|
||||
<Accordion title="jira/filter_issues">
|
||||
**설명:** 필터를 사용하여 Jira에서 이슈를 검색합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -104,7 +104,7 @@ uv add crewai-tools
|
||||
- `limit` (string, 선택): 결과 제한 - 반환되는 최대 이슈 수를 제한합니다. 입력하지 않으면 기본값은 10입니다.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="JIRA_SEARCH_BY_JQL">
|
||||
<Accordion title="jira/search_by_jql">
|
||||
**설명:** Jira에서 JQL로 이슈를 검색합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -117,13 +117,13 @@ uv add crewai-tools
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="JIRA_UPDATE_ISSUE_ANY">
|
||||
<Accordion title="jira/update_issue_any">
|
||||
**설명:** Jira에서 임의의 이슈를 업데이트합니다. 이 기능의 속성 스키마를 얻으려면 DESCRIBE_ACTION_SCHEMA를 사용하세요.
|
||||
|
||||
**파라미터:** 특정 파라미터 없음 - 예상 스키마를 먼저 확인하려면 JIRA_DESCRIBE_ACTION_SCHEMA를 사용하세요.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="JIRA_DESCRIBE_ACTION_SCHEMA">
|
||||
<Accordion title="jira/describe_action_schema">
|
||||
**설명:** 이슈 유형에 대한 예상 스키마를 가져옵니다. 사용하려는 이슈 유형과 일치하는 다른 기능이 없을 경우 먼저 이 기능을 사용하세요.
|
||||
|
||||
**파라미터:**
|
||||
@@ -132,7 +132,7 @@ uv add crewai-tools
|
||||
- `operation` (string, 필수): 작업 유형 값(예: CREATE_ISSUE 또는 UPDATE_ISSUE).
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="JIRA_GET_PROJECTS">
|
||||
<Accordion title="jira/get_projects">
|
||||
**설명:** Jira에서 프로젝트를 가져옵니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -144,27 +144,27 @@ uv add crewai-tools
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="JIRA_GET_ISSUE_TYPES_BY_PROJECT">
|
||||
<Accordion title="jira/get_issue_types_by_project">
|
||||
**설명:** Jira에서 프로젝트별 이슈 유형을 조회합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `project` (string, 필수): 프로젝트 키.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="JIRA_GET_ISSUE_TYPES">
|
||||
<Accordion title="jira/get_issue_types">
|
||||
**설명:** Jira에서 모든 이슈 유형을 조회합니다.
|
||||
|
||||
**파라미터:** 필요 없음.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="JIRA_GET_ISSUE_STATUS_BY_PROJECT">
|
||||
<Accordion title="jira/get_issue_status_by_project">
|
||||
**설명:** 주어진 프로젝트의 이슈 상태를 조회합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `project` (string, 필수): 프로젝트 키.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="JIRA_GET_ALL_ASSIGNEES_BY_PROJECT">
|
||||
<Accordion title="jira/get_all_assignees_by_project">
|
||||
**설명:** 주어진 프로젝트의 담당자 목록을 조회합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -178,19 +178,13 @@ uv add crewai-tools
|
||||
|
||||
```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]
|
||||
apps=['jira']
|
||||
)
|
||||
|
||||
# Task to create a bug report
|
||||
@@ -212,19 +206,12 @@ 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
|
||||
apps=['jira']
|
||||
)
|
||||
|
||||
# Task to manage issue workflow
|
||||
@@ -246,17 +233,12 @@ 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]
|
||||
apps=['jira']
|
||||
)
|
||||
|
||||
# Task to analyze project status
|
||||
@@ -283,17 +265,12 @@ 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]
|
||||
apps=['jira']
|
||||
)
|
||||
|
||||
# Task to automate issue management
|
||||
@@ -321,17 +298,12 @@ 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]
|
||||
apps=['jira']
|
||||
)
|
||||
|
||||
# Task using schema-based operations
|
||||
|
||||
@@ -25,7 +25,7 @@ Linear 통합을 사용하기 전에 다음을 확인하세요:
|
||||
2. 인증 통합( Authentication Integrations ) 섹션에서 **Linear**를 찾습니다.
|
||||
3. **Connect**를 클릭하고 OAuth 절차를 완료합니다.
|
||||
4. 이슈 및 프로젝트 관리를 위한 필수 권한을 부여합니다.
|
||||
5. [계정 설정](https://app.crewai.com/crewai_plus/settings/account)에서 Enterprise Token을 복사합니다.
|
||||
5. [통합 설정](https://app.crewai.com/crewai_plus/settings/integrations)에서 Enterprise Token을 복사합니다.
|
||||
|
||||
### 2. 필수 패키지 설치
|
||||
|
||||
@@ -36,7 +36,7 @@ uv add crewai-tools
|
||||
## 사용 가능한 작업
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="LINEAR_CREATE_ISSUE">
|
||||
<Accordion title="linear/create_issue">
|
||||
**설명:** Linear에서 새로운 이슈를 생성합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -56,7 +56,7 @@ uv add crewai-tools
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="LINEAR_UPDATE_ISSUE">
|
||||
<Accordion title="linear/update_issue">
|
||||
**설명:** Linear에서 이슈를 업데이트합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -76,21 +76,21 @@ uv add crewai-tools
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="LINEAR_GET_ISSUE_BY_ID">
|
||||
<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">
|
||||
<Accordion title="linear/get_issue_by_issue_identifier">
|
||||
**설명:** Linear에서 이슈 식별자로 이슈를 가져옵니다.
|
||||
|
||||
**파라미터:**
|
||||
- `externalId` (string, 필수): 외부 ID - 가져올 이슈의 사람이 읽을 수 있는 이슈 식별자를 지정합니다. (예: "ABC-1").
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="LINEAR_SEARCH_ISSUE">
|
||||
<Accordion title="linear/search_issue">
|
||||
**설명:** Linear에서 이슈를 검색합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -117,21 +117,21 @@ uv add crewai-tools
|
||||
사용 가능한 연산자: `$stringExactlyMatches`, `$stringDoesNotExactlyMatch`, `$stringIsIn`, `$stringIsNotIn`, `$stringStartsWith`, `$stringDoesNotStartWith`, `$stringEndsWith`, `$stringDoesNotEndWith`, `$stringContains`, `$stringDoesNotContain`, `$stringGreaterThan`, `$stringLessThan`, `$numberGreaterThanOrEqualTo`, `$numberLessThanOrEqualTo`, `$numberGreaterThan`, `$numberLessThan`, `$dateTimeAfter`, `$dateTimeBefore`
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="LINEAR_DELETE_ISSUE">
|
||||
<Accordion title="linear/delete_issue">
|
||||
**설명:** Linear에서 이슈를 삭제합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `issueId` (string, 필수): 이슈 ID - 삭제할 이슈의 레코드 ID를 지정합니다. (예: "90fbc706-18cd-42c9-ae66-6bd344cc8977").
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="LINEAR_ARCHIVE_ISSUE">
|
||||
<Accordion title="linear/archive_issue">
|
||||
**설명:** Linear에서 이슈를 아카이브합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `issueId` (string, 필수): 이슈 ID - 아카이브할 이슈의 레코드 ID를 지정합니다. (예: "90fbc706-18cd-42c9-ae66-6bd344cc8977").
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="LINEAR_CREATE_SUB_ISSUE">
|
||||
<Accordion title="linear/create_sub_issue">
|
||||
**설명:** Linear에서 하위 이슈를 생성합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -147,7 +147,7 @@ uv add crewai-tools
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="LINEAR_CREATE_PROJECT">
|
||||
<Accordion title="linear/create_project">
|
||||
**설명:** Linear에서 새로운 프로젝트를 생성합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -169,7 +169,7 @@ uv add crewai-tools
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="LINEAR_UPDATE_PROJECT">
|
||||
<Accordion title="linear/update_project">
|
||||
**설명:** Linear에서 프로젝트를 업데이트합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -185,21 +185,21 @@ uv add crewai-tools
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="LINEAR_GET_PROJECT_BY_ID">
|
||||
<Accordion title="linear/get_project_by_id">
|
||||
**설명:** Linear에서 ID로 프로젝트를 가져옵니다.
|
||||
|
||||
**파라미터:**
|
||||
- `projectId` (string, 필수): 프로젝트 ID - 가져올 프로젝트의 프로젝트 ID를 지정합니다. (예: "a6634484-6061-4ac7-9739-7dc5e52c796b").
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="LINEAR_DELETE_PROJECT">
|
||||
<Accordion title="linear/delete_project">
|
||||
**설명:** Linear에서 프로젝트를 삭제합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `projectId` (string, 필수): 프로젝트 ID - 삭제할 프로젝트의 프로젝트 ID를 지정합니다. (예: "a6634484-6061-4ac7-9739-7dc5e52c796b").
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="LINEAR_SEARCH_TEAMS">
|
||||
<Accordion title="linear/search_teams">
|
||||
**설명:** Linear에서 팀을 검색합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -231,19 +231,13 @@ uv add crewai-tools
|
||||
|
||||
```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]
|
||||
apps=['linear']
|
||||
)
|
||||
|
||||
# Task to create a bug report
|
||||
@@ -265,19 +259,12 @@ 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
|
||||
apps=['linear']
|
||||
)
|
||||
|
||||
# Task to manage issue workflow
|
||||
@@ -299,17 +286,12 @@ 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]
|
||||
apps=['linear']
|
||||
)
|
||||
|
||||
# Task to coordinate project setup
|
||||
@@ -336,17 +318,12 @@ 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]
|
||||
apps=['linear']
|
||||
)
|
||||
|
||||
# Task to create issue hierarchy
|
||||
@@ -373,17 +350,12 @@ 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]
|
||||
apps=['linear']
|
||||
)
|
||||
|
||||
# Complex workflow automation task
|
||||
|
||||
234
docs/ko/enterprise/integrations/microsoft_excel.mdx
Normal file
234
docs/ko/enterprise/integrations/microsoft_excel.mdx
Normal file
@@ -0,0 +1,234 @@
|
||||
---
|
||||
title: Microsoft Excel 통합
|
||||
description: "CrewAI를 위한 Microsoft Excel 통합으로 통합 문서 및 데이터 관리."
|
||||
icon: "table"
|
||||
mode: "wide"
|
||||
---
|
||||
|
||||
## 개요
|
||||
|
||||
에이전트가 OneDrive 또는 SharePoint에서 Excel 통합 문서, 워크시트, 테이블 및 차트를 생성하고 관리할 수 있도록 합니다. AI 기반 자동화로 데이터 범위를 조작하고, 시각화를 생성하고, 테이블을 관리하며, 스프레드시트 워크플로를 간소화합니다.
|
||||
|
||||
## 전제 조건
|
||||
|
||||
Microsoft Excel 통합을 사용하기 전에 다음 사항을 확인하세요:
|
||||
|
||||
- 활성 구독이 있는 [CrewAI AMP](https://app.crewai.com) 계정
|
||||
- Excel 및 OneDrive/SharePoint 액세스 권한이 있는 Microsoft 365 계정
|
||||
- [통합 페이지](https://app.crewai.com/crewai_plus/connectors)를 통해 Microsoft 계정 연결
|
||||
|
||||
## Microsoft Excel 통합 설정
|
||||
|
||||
### 1. Microsoft 계정 연결
|
||||
|
||||
1. [CrewAI AMP 통합](https://app.crewai.com/crewai_plus/connectors)으로 이동
|
||||
2. 인증 통합 섹션에서 **Microsoft Excel** 찾기
|
||||
3. **연결**을 클릭하고 OAuth 플로우 완료
|
||||
4. 파일 및 Excel 통합 문서 액세스에 필요한 권한 부여
|
||||
5. [통합 설정](https://app.crewai.com/crewai_plus/settings/integrations)에서 Enterprise Token 복사
|
||||
|
||||
### 2. 필요한 패키지 설치
|
||||
|
||||
```bash
|
||||
uv add crewai-tools
|
||||
```
|
||||
|
||||
## 사용 가능한 작업
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="microsoft_excel/create_workbook">
|
||||
**설명:** OneDrive 또는 SharePoint에 새 Excel 통합 문서를 만듭니다.
|
||||
|
||||
**매개변수:**
|
||||
- `file_path` (string, 필수): 통합 문서를 만들 경로 (예: 'MyWorkbook.xlsx')
|
||||
- `worksheets` (array, 선택사항): 만들 초기 워크시트들. 각 항목은 `name` (string, 워크시트 이름)이 있는 객체.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_excel/get_workbooks">
|
||||
**설명:** OneDrive 또는 SharePoint에서 모든 Excel 통합 문서를 가져옵니다.
|
||||
|
||||
**매개변수:**
|
||||
- `select` (string, 선택사항): 반환할 특정 속성 선택.
|
||||
- `filter` (string, 선택사항): OData 구문을 사용하여 결과 필터링.
|
||||
- `expand` (string, 선택사항): 관련 리소스를 인라인으로 확장.
|
||||
- `top` (integer, 선택사항): 반환할 항목 수 (최소 1, 최대 999).
|
||||
- `orderby` (string, 선택사항): 지정된 속성으로 결과 정렬.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_excel/get_worksheets">
|
||||
**설명:** Excel 통합 문서의 모든 워크시트를 가져옵니다.
|
||||
|
||||
**매개변수:**
|
||||
- `file_id` (string, 필수): Excel 파일의 ID.
|
||||
- `select` (string, 선택사항): 반환할 특정 속성 선택 (예: 'id,name,position').
|
||||
- `filter` (string, 선택사항): OData 구문을 사용하여 결과 필터링.
|
||||
- `expand` (string, 선택사항): 관련 리소스를 인라인으로 확장.
|
||||
- `top` (integer, 선택사항): 반환할 항목 수 (최소 1, 최대 999).
|
||||
- `orderby` (string, 선택사항): 지정된 속성으로 결과 정렬.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_excel/create_worksheet">
|
||||
**설명:** Excel 통합 문서에 새 워크시트를 만듭니다.
|
||||
|
||||
**매개변수:**
|
||||
- `file_id` (string, 필수): Excel 파일의 ID.
|
||||
- `name` (string, 필수): 새 워크시트의 이름.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_excel/get_range_data">
|
||||
**설명:** Excel 워크시트의 특정 범위에서 데이터를 가져옵니다.
|
||||
|
||||
**매개변수:**
|
||||
- `file_id` (string, 필수): Excel 파일의 ID.
|
||||
- `worksheet_name` (string, 필수): 워크시트의 이름.
|
||||
- `range` (string, 필수): 범위 주소 (예: 'A1:C10').
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_excel/update_range_data">
|
||||
**설명:** Excel 워크시트의 특정 범위에서 데이터를 업데이트합니다.
|
||||
|
||||
**매개변수:**
|
||||
- `file_id` (string, 필수): Excel 파일의 ID.
|
||||
- `worksheet_name` (string, 필수): 워크시트의 이름.
|
||||
- `range` (string, 필수): 범위 주소 (예: 'A1:C10').
|
||||
- `values` (array, 필수): 범위에 설정할 값들의 2D 배열. 각 내부 배열은 행을 나타내며, 요소는 string, number 또는 integer일 수 있음.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_excel/add_table">
|
||||
**설명:** Excel 워크시트에 테이블을 만듭니다.
|
||||
|
||||
**매개변수:**
|
||||
- `file_id` (string, 필수): Excel 파일의 ID.
|
||||
- `worksheet_name` (string, 필수): 워크시트의 이름.
|
||||
- `range` (string, 필수): 테이블의 범위 (예: 'A1:D10').
|
||||
- `has_headers` (boolean, 선택사항): 첫 번째 행이 헤더를 포함하는지 여부. 기본값: true.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_excel/get_tables">
|
||||
**설명:** Excel 워크시트의 모든 테이블을 가져옵니다.
|
||||
|
||||
**매개변수:**
|
||||
- `file_id` (string, 필수): Excel 파일의 ID.
|
||||
- `worksheet_name` (string, 필수): 워크시트의 이름.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_excel/add_table_row">
|
||||
**설명:** Excel 테이블에 새 행을 추가합니다.
|
||||
|
||||
**매개변수:**
|
||||
- `file_id` (string, 필수): Excel 파일의 ID.
|
||||
- `worksheet_name` (string, 필수): 워크시트의 이름.
|
||||
- `table_name` (string, 필수): 테이블의 이름.
|
||||
- `values` (array, 필수): 새 행의 값들 배열. 요소는 string, number 또는 integer일 수 있음.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_excel/create_chart">
|
||||
**설명:** Excel 워크시트에 차트를 만듭니다.
|
||||
|
||||
**매개변수:**
|
||||
- `file_id` (string, 필수): Excel 파일의 ID.
|
||||
- `worksheet_name` (string, 필수): 워크시트의 이름.
|
||||
- `chart_type` (string, 필수): 차트 유형 (예: 'ColumnClustered', 'Line', 'Pie').
|
||||
- `source_data` (string, 필수): 차트의 데이터 범위 (예: 'A1:B10').
|
||||
- `series_by` (string, 선택사항): 데이터 해석 방법 ('Auto', 'Columns' 또는 'Rows'). 기본값: 'Auto'.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_excel/get_cell">
|
||||
**설명:** Excel 워크시트의 단일 셀 값을 가져옵니다.
|
||||
|
||||
**매개변수:**
|
||||
- `file_id` (string, 필수): Excel 파일의 ID.
|
||||
- `worksheet_name` (string, 필수): 워크시트의 이름.
|
||||
- `row` (integer, 필수): 행 번호 (0 기반).
|
||||
- `column` (integer, 필수): 열 번호 (0 기반).
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_excel/get_used_range">
|
||||
**설명:** Excel 워크시트의 사용된 범위를 가져옵니다 (모든 데이터를 포함).
|
||||
|
||||
**매개변수:**
|
||||
- `file_id` (string, 필수): Excel 파일의 ID.
|
||||
- `worksheet_name` (string, 필수): 워크시트의 이름.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_excel/list_charts">
|
||||
**설명:** Excel 워크시트의 모든 차트를 가져옵니다.
|
||||
|
||||
**매개변수:**
|
||||
- `file_id` (string, 필수): Excel 파일의 ID.
|
||||
- `worksheet_name` (string, 필수): 워크시트의 이름.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_excel/delete_worksheet">
|
||||
**설명:** Excel 통합 문서에서 워크시트를 삭제합니다.
|
||||
|
||||
**매개변수:**
|
||||
- `file_id` (string, 필수): Excel 파일의 ID.
|
||||
- `worksheet_name` (string, 필수): 삭제할 워크시트의 이름.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_excel/delete_table">
|
||||
**설명:** Excel 워크시트에서 테이블을 삭제합니다.
|
||||
|
||||
**매개변수:**
|
||||
- `file_id` (string, 필수): Excel 파일의 ID.
|
||||
- `worksheet_name` (string, 필수): 워크시트의 이름.
|
||||
- `table_name` (string, 필수): 삭제할 테이블의 이름.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_excel/list_names">
|
||||
**설명:** Excel 통합 문서의 모든 명명된 범위를 가져옵니다.
|
||||
|
||||
**매개변수:**
|
||||
- `file_id` (string, 필수): Excel 파일의 ID.
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
## 사용 예제
|
||||
|
||||
### 기본 Microsoft Excel 에이전트 설정
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
# Microsoft Excel 기능을 가진 에이전트 생성
|
||||
excel_agent = Agent(
|
||||
role="Excel 데이터 관리자",
|
||||
goal="Excel 통합 문서와 데이터를 효율적으로 관리",
|
||||
backstory="Microsoft Excel 작업 및 데이터 조작 전문 AI 어시스턴트.",
|
||||
apps=['microsoft_excel'] # 모든 Excel 작업을 사용할 수 있습니다
|
||||
)
|
||||
|
||||
# 새 통합 문서 생성 작업
|
||||
create_workbook_task = Task(
|
||||
description="'월간보고서.xlsx'라는 이름으로 새 Excel 통합 문서를 만들고 '매출데이터'라는 초기 워크시트를 포함하세요.",
|
||||
agent=excel_agent,
|
||||
expected_output="새 통합 문서 '월간보고서.xlsx'가 '매출데이터' 워크시트와 함께 생성됨."
|
||||
)
|
||||
|
||||
# 작업 실행
|
||||
crew = Crew(
|
||||
agents=[excel_agent],
|
||||
tasks=[create_workbook_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
## 문제 해결
|
||||
|
||||
### 일반적인 문제
|
||||
|
||||
**인증 오류**
|
||||
- Microsoft 계정이 파일 액세스에 필요한 권한을 가지고 있는지 확인하세요 (예: `Files.Read.All`, `Files.ReadWrite.All`).
|
||||
- OAuth 연결이 필요한 모든 범위를 포함하는지 확인하세요.
|
||||
|
||||
**파일 생성 문제**
|
||||
- 통합 문서를 만들 때 `file_path`가 `.xlsx` 확장자로 끝나는지 확인하세요.
|
||||
- 대상 위치(OneDrive/SharePoint)에 쓰기 권한이 있는지 확인하세요.
|
||||
|
||||
### 도움 받기
|
||||
|
||||
<Card title="도움이 필요하신가요?" icon="headset" href="mailto:support@crewai.com">
|
||||
Microsoft Excel 통합 설정 또는 문제 해결에 대한 지원이 필요하시면 지원팀에 문의하세요.
|
||||
</Card>
|
||||
174
docs/ko/enterprise/integrations/microsoft_onedrive.mdx
Normal file
174
docs/ko/enterprise/integrations/microsoft_onedrive.mdx
Normal file
@@ -0,0 +1,174 @@
|
||||
---
|
||||
title: Microsoft OneDrive 통합
|
||||
description: "CrewAI를 위한 Microsoft OneDrive 통합으로 파일 및 폴더 관리."
|
||||
icon: "cloud"
|
||||
mode: "wide"
|
||||
---
|
||||
|
||||
## 개요
|
||||
|
||||
에이전트가 Microsoft OneDrive에서 파일과 폴더를 업로드, 다운로드 및 관리할 수 있도록 합니다. AI 기반 자동화로 파일 작업을 자동화하고, 콘텐츠를 구성하고, 공유 링크를 생성하며, 클라우드 스토리지 워크플로를 간소화합니다.
|
||||
|
||||
## 전제 조건
|
||||
|
||||
Microsoft OneDrive 통합을 사용하기 전에 다음 사항을 확인하세요:
|
||||
|
||||
- 활성 구독이 있는 [CrewAI AMP](https://app.crewai.com) 계정
|
||||
- OneDrive 액세스 권한이 있는 Microsoft 계정
|
||||
- [통합 페이지](https://app.crewai.com/crewai_plus/connectors)를 통해 Microsoft 계정 연결
|
||||
|
||||
## Microsoft OneDrive 통합 설정
|
||||
|
||||
### 1. Microsoft 계정 연결
|
||||
|
||||
1. [CrewAI AMP 통합](https://app.crewai.com/crewai_plus/connectors)으로 이동
|
||||
2. 인증 통합 섹션에서 **Microsoft OneDrive** 찾기
|
||||
3. **연결**을 클릭하고 OAuth 플로우 완료
|
||||
4. 파일 액세스에 필요한 권한 부여
|
||||
5. [통합 설정](https://app.crewai.com/crewai_plus/settings/integrations)에서 Enterprise Token 복사
|
||||
|
||||
### 2. 필요한 패키지 설치
|
||||
|
||||
```bash
|
||||
uv add crewai-tools
|
||||
```
|
||||
|
||||
## 사용 가능한 작업
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="microsoft_onedrive/list_files">
|
||||
**설명:** OneDrive의 파일과 폴더를 나열합니다.
|
||||
|
||||
**매개변수:**
|
||||
- `top` (integer, 선택사항): 검색할 항목 수 (최대 1000). 기본값: 50.
|
||||
- `orderby` (string, 선택사항): 필드별 정렬 (예: "name asc", "lastModifiedDateTime desc"). 기본값: "name asc".
|
||||
- `filter` (string, 선택사항): OData 필터 표현식.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_onedrive/get_file_info">
|
||||
**설명:** 특정 파일 또는 폴더에 대한 정보를 가져옵니다.
|
||||
|
||||
**매개변수:**
|
||||
- `item_id` (string, 필수): 파일 또는 폴더의 ID.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_onedrive/download_file">
|
||||
**설명:** OneDrive에서 파일을 다운로드합니다.
|
||||
|
||||
**매개변수:**
|
||||
- `item_id` (string, 필수): 다운로드할 파일의 ID.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_onedrive/upload_file">
|
||||
**설명:** OneDrive에 파일을 업로드합니다.
|
||||
|
||||
**매개변수:**
|
||||
- `file_name` (string, 필수): 업로드할 파일의 이름.
|
||||
- `content` (string, 필수): Base64로 인코딩된 파일 내용.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_onedrive/create_folder">
|
||||
**설명:** OneDrive에 새 폴더를 만듭니다.
|
||||
|
||||
**매개변수:**
|
||||
- `folder_name` (string, 필수): 만들 폴더의 이름.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_onedrive/delete_item">
|
||||
**설명:** OneDrive에서 파일 또는 폴더를 삭제합니다.
|
||||
|
||||
**매개변수:**
|
||||
- `item_id` (string, 필수): 삭제할 파일 또는 폴더의 ID.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_onedrive/copy_item">
|
||||
**설명:** OneDrive에서 파일 또는 폴더를 복사합니다.
|
||||
|
||||
**매개변수:**
|
||||
- `item_id` (string, 필수): 복사할 파일 또는 폴더의 ID.
|
||||
- `parent_id` (string, 선택사항): 대상 폴더의 ID (선택사항, 기본값은 루트).
|
||||
- `new_name` (string, 선택사항): 복사된 항목의 새 이름 (선택사항).
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_onedrive/move_item">
|
||||
**설명:** OneDrive에서 파일 또는 폴더를 이동합니다.
|
||||
|
||||
**매개변수:**
|
||||
- `item_id` (string, 필수): 이동할 파일 또는 폴더의 ID.
|
||||
- `parent_id` (string, 필수): 대상 폴더의 ID.
|
||||
- `new_name` (string, 선택사항): 항목의 새 이름 (선택사항).
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_onedrive/search_files">
|
||||
**설명:** OneDrive에서 파일과 폴더를 검색합니다.
|
||||
|
||||
**매개변수:**
|
||||
- `query` (string, 필수): 검색 쿼리 문자열.
|
||||
- `top` (integer, 선택사항): 반환할 결과 수 (최대 1000). 기본값: 50.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_onedrive/share_item">
|
||||
**설명:** 파일 또는 폴더의 공유 링크를 만듭니다.
|
||||
|
||||
**매개변수:**
|
||||
- `item_id` (string, 필수): 공유할 파일 또는 폴더의 ID.
|
||||
- `type` (string, 선택사항): 공유 링크 유형. 옵션: view, edit, embed. 기본값: view.
|
||||
- `scope` (string, 선택사항): 공유 링크 범위. 옵션: anonymous, organization. 기본값: anonymous.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_onedrive/get_thumbnails">
|
||||
**설명:** 파일의 썸네일을 가져옵니다.
|
||||
|
||||
**매개변수:**
|
||||
- `item_id` (string, 필수): 파일의 ID.
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
## 사용 예제
|
||||
|
||||
### 기본 Microsoft OneDrive 에이전트 설정
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
# Microsoft OneDrive 기능을 가진 에이전트 생성
|
||||
onedrive_agent = Agent(
|
||||
role="파일 관리자",
|
||||
goal="OneDrive에서 파일과 폴더를 효율적으로 관리",
|
||||
backstory="Microsoft OneDrive 파일 작업 및 구성 전문 AI 어시스턴트.",
|
||||
apps=['microsoft_onedrive'] # 모든 OneDrive 작업을 사용할 수 있습니다
|
||||
)
|
||||
|
||||
# 파일 나열 및 폴더 생성 작업
|
||||
organize_files_task = Task(
|
||||
description="OneDrive 루트 디렉토리의 모든 파일을 나열하고 '프로젝트 문서'라는 새 폴더를 만드세요.",
|
||||
agent=onedrive_agent,
|
||||
expected_output="파일 목록이 표시되고 새 폴더 '프로젝트 문서'가 생성됨."
|
||||
)
|
||||
|
||||
# 작업 실행
|
||||
crew = Crew(
|
||||
agents=[onedrive_agent],
|
||||
tasks=[organize_files_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
## 문제 해결
|
||||
|
||||
### 일반적인 문제
|
||||
|
||||
**인증 오류**
|
||||
- Microsoft 계정이 파일 액세스에 필요한 권한을 가지고 있는지 확인하세요 (예: `Files.Read`, `Files.ReadWrite`).
|
||||
- OAuth 연결이 필요한 모든 범위를 포함하는지 확인하세요.
|
||||
|
||||
**파일 업로드 문제**
|
||||
- 파일 업로드 시 `file_name`과 `content`가 제공되는지 확인하세요.
|
||||
- 바이너리 파일의 경우 내용이 Base64로 인코딩되어야 합니다.
|
||||
|
||||
### 도움 받기
|
||||
|
||||
<Card title="도움이 필요하신가요?" icon="headset" href="mailto:support@crewai.com">
|
||||
Microsoft OneDrive 통합 설정 또는 문제 해결에 대한 지원이 필요하시면 지원팀에 문의하세요.
|
||||
</Card>
|
||||
161
docs/ko/enterprise/integrations/microsoft_outlook.mdx
Normal file
161
docs/ko/enterprise/integrations/microsoft_outlook.mdx
Normal file
@@ -0,0 +1,161 @@
|
||||
---
|
||||
title: Microsoft Outlook 통합
|
||||
description: "CrewAI를 위한 Microsoft Outlook 통합으로 이메일, 캘린더 및 연락처 관리."
|
||||
icon: "envelope"
|
||||
mode: "wide"
|
||||
---
|
||||
|
||||
## 개요
|
||||
|
||||
에이전트가 Outlook 이메일, 캘린더 이벤트 및 연락처에 액세스하고 관리할 수 있도록 합니다. AI 기반 자동화로 이메일을 보내고, 메시지를 검색하고, 캘린더 이벤트를 관리하며, 연락처를 구성합니다.
|
||||
|
||||
## 전제 조건
|
||||
|
||||
Microsoft Outlook 통합을 사용하기 전에 다음 사항을 확인하세요:
|
||||
|
||||
- 활성 구독이 있는 [CrewAI AMP](https://app.crewai.com) 계정
|
||||
- Outlook 액세스 권한이 있는 Microsoft 계정
|
||||
- [통합 페이지](https://app.crewai.com/crewai_plus/connectors)를 통해 Microsoft 계정 연결
|
||||
|
||||
## Microsoft Outlook 통합 설정
|
||||
|
||||
### 1. Microsoft 계정 연결
|
||||
|
||||
1. [CrewAI AMP 통합](https://app.crewai.com/crewai_plus/connectors)으로 이동
|
||||
2. 인증 통합 섹션에서 **Microsoft Outlook** 찾기
|
||||
3. **연결**을 클릭하고 OAuth 플로우 완료
|
||||
4. 이메일, 캘린더 및 연락처 액세스에 필요한 권한 부여
|
||||
5. [통합 설정](https://app.crewai.com/crewai_plus/settings/integrations)에서 Enterprise Token 복사
|
||||
|
||||
### 2. 필요한 패키지 설치
|
||||
|
||||
```bash
|
||||
uv add crewai-tools
|
||||
```
|
||||
|
||||
## 사용 가능한 작업
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="microsoft_outlook/get_messages">
|
||||
**설명:** 사용자의 사서함에서 이메일 메시지를 가져옵니다.
|
||||
|
||||
**매개변수:**
|
||||
- `top` (integer, 선택사항): 검색할 메시지 수 (최대 1000). 기본값: 10.
|
||||
- `filter` (string, 선택사항): OData 필터 표현식 (예: "isRead eq false").
|
||||
- `search` (string, 선택사항): 검색 쿼리 문자열.
|
||||
- `orderby` (string, 선택사항): 필드별 정렬 (예: "receivedDateTime desc"). 기본값: "receivedDateTime desc".
|
||||
- `select` (string, 선택사항): 반환할 특정 속성 선택.
|
||||
- `expand` (string, 선택사항): 관련 리소스를 인라인으로 확장.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_outlook/send_email">
|
||||
**설명:** 이메일 메시지를 보냅니다.
|
||||
|
||||
**매개변수:**
|
||||
- `to_recipients` (array, 필수): 받는 사람의 이메일 주소 배열.
|
||||
- `cc_recipients` (array, 선택사항): 참조 받는 사람의 이메일 주소 배열.
|
||||
- `bcc_recipients` (array, 선택사항): 숨은 참조 받는 사람의 이메일 주소 배열.
|
||||
- `subject` (string, 필수): 이메일 제목.
|
||||
- `body` (string, 필수): 이메일 본문 내용.
|
||||
- `body_type` (string, 선택사항): 본문 내용 유형. 옵션: Text, HTML. 기본값: HTML.
|
||||
- `importance` (string, 선택사항): 메시지 중요도 수준. 옵션: low, normal, high. 기본값: normal.
|
||||
- `reply_to` (array, 선택사항): 회신용 이메일 주소 배열.
|
||||
- `save_to_sent_items` (boolean, 선택사항): 보낸 편지함 폴더에 메시지를 저장할지 여부. 기본값: true.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_outlook/get_calendar_events">
|
||||
**설명:** 사용자의 캘린더에서 캘린더 이벤트를 가져옵니다.
|
||||
|
||||
**매개변수:**
|
||||
- `top` (integer, 선택사항): 검색할 이벤트 수 (최대 1000). 기본값: 10.
|
||||
- `skip` (integer, 선택사항): 건너뛸 이벤트 수. 기본값: 0.
|
||||
- `filter` (string, 선택사항): OData 필터 표현식 (예: "start/dateTime ge '2024-01-01T00:00:00Z'").
|
||||
- `orderby` (string, 선택사항): 필드별 정렬 (예: "start/dateTime asc"). 기본값: "start/dateTime asc".
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_outlook/create_calendar_event">
|
||||
**설명:** 새 캘린더 이벤트를 만듭니다.
|
||||
|
||||
**매개변수:**
|
||||
- `subject` (string, 필수): 이벤트 제목/제목.
|
||||
- `body` (string, 선택사항): 이벤트 본문/설명.
|
||||
- `start_datetime` (string, 필수): ISO 8601 형식의 시작 날짜 및 시간 (예: '2024-01-20T10:00:00').
|
||||
- `end_datetime` (string, 필수): ISO 8601 형식의 종료 날짜 및 시간.
|
||||
- `timezone` (string, 선택사항): 시간대 (예: 'Pacific Standard Time'). 기본값: UTC.
|
||||
- `location` (string, 선택사항): 이벤트 위치.
|
||||
- `attendees` (array, 선택사항): 참석자의 이메일 주소 배열.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_outlook/get_contacts">
|
||||
**설명:** 사용자의 주소록에서 연락처를 가져옵니다.
|
||||
|
||||
**매개변수:**
|
||||
- `top` (integer, 선택사항): 검색할 연락처 수 (최대 1000). 기본값: 10.
|
||||
- `skip` (integer, 선택사항): 건너뛸 연락처 수. 기본값: 0.
|
||||
- `filter` (string, 선택사항): OData 필터 표현식.
|
||||
- `orderby` (string, 선택사항): 필드별 정렬 (예: "displayName asc"). 기본값: "displayName asc".
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_outlook/create_contact">
|
||||
**설명:** 사용자의 주소록에 새 연락처를 만듭니다.
|
||||
|
||||
**매개변수:**
|
||||
- `displayName` (string, 필수): 연락처의 표시 이름.
|
||||
- `givenName` (string, 선택사항): 연락처의 이름.
|
||||
- `surname` (string, 선택사항): 연락처의 성.
|
||||
- `emailAddresses` (array, 선택사항): 이메일 주소 배열. 각 항목은 `address` (string)와 `name` (string)이 있는 객체.
|
||||
- `businessPhones` (array, 선택사항): 사업용 전화번호 배열.
|
||||
- `homePhones` (array, 선택사항): 집 전화번호 배열.
|
||||
- `jobTitle` (string, 선택사항): 연락처의 직책.
|
||||
- `companyName` (string, 선택사항): 연락처의 회사 이름.
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
## 사용 예제
|
||||
|
||||
### 기본 Microsoft Outlook 에이전트 설정
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
# Microsoft Outlook 기능을 가진 에이전트 생성
|
||||
outlook_agent = Agent(
|
||||
role="이메일 어시스턴트",
|
||||
goal="이메일, 캘린더 이벤트 및 연락처를 효율적으로 관리",
|
||||
backstory="Microsoft Outlook 작업 및 커뮤니케이션 관리 전문 AI 어시스턴트.",
|
||||
apps=['microsoft_outlook'] # 모든 Outlook 작업을 사용할 수 있습니다
|
||||
)
|
||||
|
||||
# 이메일 보내기 작업
|
||||
send_email_task = Task(
|
||||
description="'colleague@example.com'에게 제목 '프로젝트 업데이트'와 본문 '안녕하세요, 프로젝트의 최신 업데이트입니다. 감사합니다.'로 이메일을 보내세요",
|
||||
agent=outlook_agent,
|
||||
expected_output="colleague@example.com에게 이메일이 성공적으로 전송됨"
|
||||
)
|
||||
|
||||
# 작업 실행
|
||||
crew = Crew(
|
||||
agents=[outlook_agent],
|
||||
tasks=[send_email_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
## 문제 해결
|
||||
|
||||
### 일반적인 문제
|
||||
|
||||
**인증 오류**
|
||||
- Microsoft 계정이 이메일, 캘린더 및 연락처 액세스에 필요한 권한을 가지고 있는지 확인하세요.
|
||||
- 필요한 범위: `Mail.Read`, `Mail.Send`, `Calendars.Read`, `Calendars.ReadWrite`, `Contacts.Read`, `Contacts.ReadWrite`.
|
||||
|
||||
**이메일 보내기 문제**
|
||||
- `send_email`에 `to_recipients`, `subject`, `body`가 제공되는지 확인하세요.
|
||||
- 이메일 주소가 올바르게 형식화되어 있는지 확인하세요.
|
||||
|
||||
### 도움 받기
|
||||
|
||||
<Card title="도움이 필요하신가요?" icon="headset" href="mailto:support@crewai.com">
|
||||
Microsoft Outlook 통합 설정 또는 문제 해결에 대한 지원이 필요하시면 지원팀에 문의하세요.
|
||||
</Card>
|
||||
185
docs/ko/enterprise/integrations/microsoft_sharepoint.mdx
Normal file
185
docs/ko/enterprise/integrations/microsoft_sharepoint.mdx
Normal file
@@ -0,0 +1,185 @@
|
||||
---
|
||||
title: Microsoft SharePoint 통합
|
||||
description: "CrewAI를 위한 Microsoft SharePoint 통합으로 사이트, 목록 및 문서 관리."
|
||||
icon: "folder-tree"
|
||||
mode: "wide"
|
||||
---
|
||||
|
||||
## 개요
|
||||
|
||||
에이전트가 SharePoint 사이트, 목록 및 문서 라이브러리에 액세스하고 관리할 수 있도록 합니다. AI 기반 자동화로 사이트 정보를 검색하고, 목록 항목을 관리하고, 파일을 업로드 및 구성하며, SharePoint 워크플로를 간소화합니다.
|
||||
|
||||
## 전제 조건
|
||||
|
||||
Microsoft SharePoint 통합을 사용하기 전에 다음 사항을 확인하세요:
|
||||
|
||||
- 활성 구독이 있는 [CrewAI AMP](https://app.crewai.com) 계정
|
||||
- SharePoint 액세스 권한이 있는 Microsoft 계정
|
||||
- [통합 페이지](https://app.crewai.com/crewai_plus/connectors)를 통해 Microsoft 계정 연결
|
||||
|
||||
## Microsoft SharePoint 통합 설정
|
||||
|
||||
### 1. Microsoft 계정 연결
|
||||
|
||||
1. [CrewAI AMP 통합](https://app.crewai.com/crewai_plus/connectors)으로 이동
|
||||
2. 인증 통합 섹션에서 **Microsoft SharePoint** 찾기
|
||||
3. **연결**을 클릭하고 OAuth 플로우 완료
|
||||
4. SharePoint 사이트 및 파일 액세스에 필요한 권한 부여
|
||||
5. [통합 설정](https://app.crewai.com/crewai_plus/settings/integrations)에서 Enterprise Token 복사
|
||||
|
||||
### 2. 필요한 패키지 설치
|
||||
|
||||
```bash
|
||||
uv add crewai-tools
|
||||
```
|
||||
|
||||
## 사용 가능한 작업
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="microsoft_sharepoint/get_sites">
|
||||
**설명:** 사용자가 액세스할 수 있는 모든 SharePoint 사이트를 가져옵니다.
|
||||
|
||||
**매개변수:**
|
||||
- `search` (string, 선택사항): 사이트를 필터링하기 위한 검색 쿼리.
|
||||
- `select` (string, 선택사항): 반환할 특정 속성 선택 (예: 'displayName,id,webUrl').
|
||||
- `filter` (string, 선택사항): OData 구문을 사용하여 결과 필터링.
|
||||
- `expand` (string, 선택사항): 관련 리소스를 인라인으로 확장.
|
||||
- `top` (integer, 선택사항): 반환할 항목 수 (최소 1, 최대 999).
|
||||
- `skip` (integer, 선택사항): 건너뛸 항목 수 (최소 0).
|
||||
- `orderby` (string, 선택사항): 지정된 속성으로 결과 정렬 (예: 'displayName desc').
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_sharepoint/get_site">
|
||||
**설명:** 특정 SharePoint 사이트에 대한 정보를 가져옵니다.
|
||||
|
||||
**매개변수:**
|
||||
- `site_id` (string, 필수): SharePoint 사이트의 ID.
|
||||
- `select` (string, 선택사항): 반환할 특정 속성 선택 (예: 'displayName,id,webUrl,drives').
|
||||
- `expand` (string, 선택사항): 관련 리소스를 인라인으로 확장 (예: 'drives,lists').
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_sharepoint/get_site_lists">
|
||||
**설명:** SharePoint 사이트의 모든 목록을 가져옵니다.
|
||||
|
||||
**매개변수:**
|
||||
- `site_id` (string, 필수): SharePoint 사이트의 ID.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_sharepoint/get_list">
|
||||
**설명:** 특정 목록에 대한 정보를 가져옵니다.
|
||||
|
||||
**매개변수:**
|
||||
- `site_id` (string, 필수): SharePoint 사이트의 ID.
|
||||
- `list_id` (string, 필수): 목록의 ID.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_sharepoint/get_list_items">
|
||||
**설명:** SharePoint 목록에서 항목을 가져옵니다.
|
||||
|
||||
**매개변수:**
|
||||
- `site_id` (string, 필수): SharePoint 사이트의 ID.
|
||||
- `list_id` (string, 필수): 목록의 ID.
|
||||
- `expand` (string, 선택사항): 관련 데이터 확장 (예: 'fields').
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_sharepoint/create_list_item">
|
||||
**설명:** SharePoint 목록에 새 항목을 만듭니다.
|
||||
|
||||
**매개변수:**
|
||||
- `site_id` (string, 필수): SharePoint 사이트의 ID.
|
||||
- `list_id` (string, 필수): 목록의 ID.
|
||||
- `fields` (object, 필수): 새 항목의 필드 값.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_sharepoint/update_list_item">
|
||||
**설명:** SharePoint 목록의 항목을 업데이트합니다.
|
||||
|
||||
**매개변수:**
|
||||
- `site_id` (string, 필수): SharePoint 사이트의 ID.
|
||||
- `list_id` (string, 필수): 목록의 ID.
|
||||
- `item_id` (string, 필수): 업데이트할 항목의 ID.
|
||||
- `fields` (object, 필수): 업데이트할 필드 값.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_sharepoint/delete_list_item">
|
||||
**설명:** SharePoint 목록에서 항목을 삭제합니다.
|
||||
|
||||
**매개변수:**
|
||||
- `site_id` (string, 필수): SharePoint 사이트의 ID.
|
||||
- `list_id` (string, 필수): 목록의 ID.
|
||||
- `item_id` (string, 필수): 삭제할 항목의 ID.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_sharepoint/upload_file_to_library">
|
||||
**설명:** SharePoint 문서 라이브러리에 파일을 업로드합니다.
|
||||
|
||||
**매개변수:**
|
||||
- `site_id` (string, 필수): SharePoint 사이트의 ID.
|
||||
- `file_path` (string, 필수): 파일을 업로드할 경로 (예: 'folder/fileName.txt').
|
||||
- `content` (string, 필수): 업로드할 파일의 내용.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_sharepoint/get_drive_items">
|
||||
**설명:** SharePoint 문서 라이브러리에서 파일과 폴더를 가져옵니다.
|
||||
|
||||
**매개변수:**
|
||||
- `site_id` (string, 필수): SharePoint 사이트의 ID.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_sharepoint/delete_drive_item">
|
||||
**설명:** SharePoint 문서 라이브러리에서 파일 또는 폴더를 삭제합니다.
|
||||
|
||||
**매개변수:**
|
||||
- `site_id` (string, 필수): SharePoint 사이트의 ID.
|
||||
- `item_id` (string, 필수): 삭제할 파일 또는 폴더의 ID.
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
## 사용 예제
|
||||
|
||||
### 기본 Microsoft SharePoint 에이전트 설정
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
# Microsoft SharePoint 기능을 가진 에이전트 생성
|
||||
sharepoint_agent = Agent(
|
||||
role="SharePoint 관리자",
|
||||
goal="SharePoint 사이트, 목록 및 문서를 효율적으로 관리",
|
||||
backstory="Microsoft SharePoint 관리 및 콘텐츠 관리 전문 AI 어시스턴트.",
|
||||
apps=['microsoft_sharepoint'] # 모든 SharePoint 작업을 사용할 수 있습니다
|
||||
)
|
||||
|
||||
# 모든 사이트 가져오기 작업
|
||||
get_sites_task = Task(
|
||||
description="액세스할 수 있는 모든 SharePoint 사이트를 나열하세요.",
|
||||
agent=sharepoint_agent,
|
||||
expected_output="표시 이름과 URL이 포함된 SharePoint 사이트 목록."
|
||||
)
|
||||
|
||||
# 작업 실행
|
||||
crew = Crew(
|
||||
agents=[sharepoint_agent],
|
||||
tasks=[get_sites_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
## 문제 해결
|
||||
|
||||
### 일반적인 문제
|
||||
|
||||
**인증 오류**
|
||||
- Microsoft 계정이 SharePoint 액세스에 필요한 권한을 가지고 있는지 확인하세요 (예: `Sites.Read.All`, `Sites.ReadWrite.All`).
|
||||
- OAuth 연결이 필요한 모든 범위를 포함하는지 확인하세요.
|
||||
|
||||
**사이트/목록/항목 ID 문제**
|
||||
- 사이트, 목록, 항목 ID가 올바른지 다시 확인하세요.
|
||||
- 참조된 리소스가 존재하고 액세스할 수 있는지 확인하세요.
|
||||
|
||||
### 도움 받기
|
||||
|
||||
<Card title="도움이 필요하신가요?" icon="headset" href="mailto:support@crewai.com">
|
||||
Microsoft SharePoint 통합 설정 또는 문제 해결에 대한 지원이 필요하시면 지원팀에 문의하세요.
|
||||
</Card>
|
||||
136
docs/ko/enterprise/integrations/microsoft_teams.mdx
Normal file
136
docs/ko/enterprise/integrations/microsoft_teams.mdx
Normal file
@@ -0,0 +1,136 @@
|
||||
---
|
||||
title: Microsoft Teams 통합
|
||||
description: "CrewAI를 위한 Microsoft Teams 통합으로 팀 협업 및 커뮤니케이션."
|
||||
icon: "users"
|
||||
mode: "wide"
|
||||
---
|
||||
|
||||
## 개요
|
||||
|
||||
에이전트가 Teams 데이터에 액세스하고, 메시지를 보내고, 회의를 만들고, 채널을 관리할 수 있도록 합니다. AI 기반 자동화로 팀 커뮤니케이션을 자동화하고, 회의를 예약하고, 메시지를 검색하며, 협업 워크플로를 간소화합니다.
|
||||
|
||||
## 전제 조건
|
||||
|
||||
Microsoft Teams 통합을 사용하기 전에 다음 사항을 확인하세요:
|
||||
|
||||
- 활성 구독이 있는 [CrewAI AMP](https://app.crewai.com) 계정
|
||||
- Teams 액세스 권한이 있는 Microsoft 계정
|
||||
- [통합 페이지](https://app.crewai.com/crewai_plus/connectors)를 통해 Microsoft 계정 연결
|
||||
|
||||
## Microsoft Teams 통합 설정
|
||||
|
||||
### 1. Microsoft 계정 연결
|
||||
|
||||
1. [CrewAI AMP 통합](https://app.crewai.com/crewai_plus/connectors)으로 이동
|
||||
2. 인증 통합 섹션에서 **Microsoft Teams** 찾기
|
||||
3. **연결**을 클릭하고 OAuth 플로우 완료
|
||||
4. Teams 액세스에 필요한 권한 부여
|
||||
5. [통합 설정](https://app.crewai.com/crewai_plus/settings/integrations)에서 Enterprise Token 복사
|
||||
|
||||
### 2. 필요한 패키지 설치
|
||||
|
||||
```bash
|
||||
uv add crewai-tools
|
||||
```
|
||||
|
||||
## 사용 가능한 작업
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="microsoft_teams/get_teams">
|
||||
**설명:** 사용자가 멤버인 모든 팀을 가져옵니다.
|
||||
|
||||
**매개변수:**
|
||||
- 매개변수가 필요하지 않습니다.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_teams/get_channels">
|
||||
**설명:** 특정 팀의 채널을 가져옵니다.
|
||||
|
||||
**매개변수:**
|
||||
- `team_id` (string, 필수): 팀의 ID.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_teams/send_message">
|
||||
**설명:** Teams 채널에 메시지를 보냅니다.
|
||||
|
||||
**매개변수:**
|
||||
- `team_id` (string, 필수): 팀의 ID.
|
||||
- `channel_id` (string, 필수): 채널의 ID.
|
||||
- `message` (string, 필수): 메시지 내용.
|
||||
- `content_type` (string, 선택사항): 콘텐츠 유형 (html 또는 text). 옵션: html, text. 기본값: text.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_teams/get_messages">
|
||||
**설명:** Teams 채널에서 메시지를 가져옵니다.
|
||||
|
||||
**매개변수:**
|
||||
- `team_id` (string, 필수): 팀의 ID.
|
||||
- `channel_id` (string, 필수): 채널의 ID.
|
||||
- `top` (integer, 선택사항): 검색할 메시지 수 (최대 50). 기본값: 20.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_teams/create_meeting">
|
||||
**설명:** Teams 회의를 만듭니다.
|
||||
|
||||
**매개변수:**
|
||||
- `subject` (string, 필수): 회의 제목/제목.
|
||||
- `startDateTime` (string, 필수): 회의 시작 시간 (시간대가 포함된 ISO 8601 형식).
|
||||
- `endDateTime` (string, 필수): 회의 종료 시간 (시간대가 포함된 ISO 8601 형식).
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_teams/search_online_meetings_by_join_url">
|
||||
**설명:** 웹 참가 URL로 온라인 회의를 검색합니다.
|
||||
|
||||
**매개변수:**
|
||||
- `join_web_url` (string, 필수): 검색할 회의의 웹 참가 URL.
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
## 사용 예제
|
||||
|
||||
### 기본 Microsoft Teams 에이전트 설정
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
# Microsoft Teams 기능을 가진 에이전트 생성
|
||||
teams_agent = Agent(
|
||||
role="Teams 코디네이터",
|
||||
goal="Teams 커뮤니케이션 및 회의를 효율적으로 관리",
|
||||
backstory="Microsoft Teams 작업 및 팀 협업 전문 AI 어시스턴트.",
|
||||
apps=['microsoft_teams'] # 모든 Teams 작업을 사용할 수 있습니다
|
||||
)
|
||||
|
||||
# 팀 및 채널 탐색 작업
|
||||
explore_teams_task = Task(
|
||||
description="내가 멤버인 모든 팀을 나열한 다음 첫 번째 팀의 채널을 가져오세요.",
|
||||
agent=teams_agent,
|
||||
expected_output="팀 및 채널 목록이 표시됨."
|
||||
)
|
||||
|
||||
# 작업 실행
|
||||
crew = Crew(
|
||||
agents=[teams_agent],
|
||||
tasks=[explore_teams_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
## 문제 해결
|
||||
|
||||
### 일반적인 문제
|
||||
|
||||
**인증 오류**
|
||||
- Microsoft 계정이 Teams 액세스에 필요한 권한을 가지고 있는지 확인하세요.
|
||||
- 필요한 범위: `Team.ReadBasic.All`, `Channel.ReadBasic.All`, `ChannelMessage.Send`, `ChannelMessage.Read.All`, `OnlineMeetings.ReadWrite`, `OnlineMeetings.Read`.
|
||||
|
||||
**팀 및 채널 액세스**
|
||||
- 액세스하려는 팀의 멤버인지 확인하세요.
|
||||
- 팀 및 채널 ID가 올바른지 다시 확인하세요.
|
||||
|
||||
### 도움 받기
|
||||
|
||||
<Card title="도움이 필요하신가요?" icon="headset" href="mailto:support@crewai.com">
|
||||
Microsoft Teams 통합 설정 또는 문제 해결에 대한 지원이 필요하시면 지원팀에 문의하세요.
|
||||
</Card>
|
||||
127
docs/ko/enterprise/integrations/microsoft_word.mdx
Normal file
127
docs/ko/enterprise/integrations/microsoft_word.mdx
Normal file
@@ -0,0 +1,127 @@
|
||||
---
|
||||
title: Microsoft Word 통합
|
||||
description: "CrewAI를 위한 Microsoft Word 통합으로 문서 생성 및 관리."
|
||||
icon: "file-word"
|
||||
mode: "wide"
|
||||
---
|
||||
|
||||
## 개요
|
||||
|
||||
에이전트가 OneDrive 또는 SharePoint에서 Word 문서와 텍스트 파일을 생성, 읽기 및 관리할 수 있도록 합니다. AI 기반 자동화로 문서 생성을 자동화하고, 콘텐츠를 검색하고, 문서 속성을 관리하며, 문서 워크플로를 간소화합니다.
|
||||
|
||||
## 전제 조건
|
||||
|
||||
Microsoft Word 통합을 사용하기 전에 다음 사항을 확인하세요:
|
||||
|
||||
- 활성 구독이 있는 [CrewAI AMP](https://app.crewai.com) 계정
|
||||
- Word 및 OneDrive/SharePoint 액세스 권한이 있는 Microsoft 계정
|
||||
- [통합 페이지](https://app.crewai.com/crewai_plus/connectors)를 통해 Microsoft 계정 연결
|
||||
|
||||
## Microsoft Word 통합 설정
|
||||
|
||||
### 1. Microsoft 계정 연결
|
||||
|
||||
1. [CrewAI AMP 통합](https://app.crewai.com/crewai_plus/connectors)으로 이동
|
||||
2. 인증 통합 섹션에서 **Microsoft Word** 찾기
|
||||
3. **연결**을 클릭하고 OAuth 플로우 완료
|
||||
4. 파일 액세스에 필요한 권한 부여
|
||||
5. [통합 설정](https://app.crewai.com/crewai_plus/settings/integrations)에서 Enterprise Token 복사
|
||||
|
||||
### 2. 필요한 패키지 설치
|
||||
|
||||
```bash
|
||||
uv add crewai-tools
|
||||
```
|
||||
|
||||
## 사용 가능한 작업
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="microsoft_word/get_documents">
|
||||
**설명:** OneDrive 또는 SharePoint에서 모든 Word 문서를 가져옵니다.
|
||||
|
||||
**매개변수:**
|
||||
- `select` (string, 선택사항): 반환할 특정 속성 선택.
|
||||
- `filter` (string, 선택사항): OData 구문을 사용하여 결과 필터링.
|
||||
- `expand` (string, 선택사항): 관련 리소스를 인라인으로 확장.
|
||||
- `top` (integer, 선택사항): 반환할 항목 수 (최소 1, 최대 999).
|
||||
- `orderby` (string, 선택사항): 지정된 속성으로 결과 정렬.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_word/create_text_document">
|
||||
**설명:** 내용이 있는 텍스트 문서(.txt)를 만듭니다. 읽기 가능하고 편집 가능해야 하는 프로그래밍 방식 콘텐츠 생성에 권장됩니다.
|
||||
|
||||
**매개변수:**
|
||||
- `file_name` (string, 필수): 텍스트 문서의 이름 (.txt로 끝나야 함).
|
||||
- `content` (string, 선택사항): 문서의 텍스트 내용. 기본값: "API를 통해 생성된 새 텍스트 문서입니다."
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_word/get_document_content">
|
||||
**설명:** 문서의 내용을 가져옵니다 (텍스트 파일에서 가장 잘 작동).
|
||||
|
||||
**매개변수:**
|
||||
- `file_id` (string, 필수): 문서의 ID.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_word/get_document_properties">
|
||||
**설명:** 문서의 속성과 메타데이터를 가져옵니다.
|
||||
|
||||
**매개변수:**
|
||||
- `file_id` (string, 필수): 문서의 ID.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_word/delete_document">
|
||||
**설명:** 문서를 삭제합니다.
|
||||
|
||||
**매개변수:**
|
||||
- `file_id` (string, 필수): 삭제할 문서의 ID.
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
## 사용 예제
|
||||
|
||||
### 기본 Microsoft Word 에이전트 설정
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
# Microsoft Word 기능을 가진 에이전트 생성
|
||||
word_agent = Agent(
|
||||
role="문서 관리자",
|
||||
goal="Word 문서와 텍스트 파일을 효율적으로 관리",
|
||||
backstory="Microsoft Word 문서 작업 및 콘텐츠 관리 전문 AI 어시스턴트.",
|
||||
apps=['microsoft_word'] # 모든 Word 작업을 사용할 수 있습니다
|
||||
)
|
||||
|
||||
# 새 텍스트 문서 생성 작업
|
||||
create_doc_task = Task(
|
||||
description="'회의노트.txt'라는 새 텍스트 문서를 만들고 내용은 '2024년 1월 회의 노트: 주요 토론 사항 및 실행 항목.'으로 하세요",
|
||||
agent=word_agent,
|
||||
expected_output="새 텍스트 문서 '회의노트.txt'가 성공적으로 생성됨."
|
||||
)
|
||||
|
||||
# 작업 실행
|
||||
crew = Crew(
|
||||
agents=[word_agent],
|
||||
tasks=[create_doc_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
## 문제 해결
|
||||
|
||||
### 일반적인 문제
|
||||
|
||||
**인증 오류**
|
||||
- Microsoft 계정이 파일 액세스에 필요한 권한을 가지고 있는지 확인하세요 (예: `Files.Read.All`, `Files.ReadWrite.All`).
|
||||
- OAuth 연결이 필요한 모든 범위를 포함하는지 확인하세요.
|
||||
|
||||
**파일 생성 문제**
|
||||
- 텍스트 문서를 만들 때 `file_name`이 `.txt` 확장자로 끝나는지 확인하세요.
|
||||
- 대상 위치(OneDrive/SharePoint)에 쓰기 권한이 있는지 확인하세요.
|
||||
|
||||
### 도움 받기
|
||||
|
||||
<Card title="도움이 필요하신가요?" icon="headset" href="mailto:support@crewai.com">
|
||||
Microsoft Word 통합 설정 또는 문제 해결에 대한 지원이 필요하시면 지원팀에 문의하세요.
|
||||
</Card>
|
||||
@@ -25,7 +25,7 @@ Notion 통합을 사용하기 전에 다음을 확인하세요:
|
||||
2. 인증 통합(Auhtentication Integrations) 섹션에서 **Notion**을(를) 찾습니다.
|
||||
3. **Connect**를 클릭하고 OAuth 플로우를 완료합니다.
|
||||
4. 페이지 및 데이터베이스 관리를 위한 필요한 권한을 부여합니다.
|
||||
5. [Account Settings](https://app.crewai.com/crewai_plus/settings/account)에서 Enterprise Token을 복사합니다.
|
||||
5. [통합 설정](https://app.crewai.com/crewai_plus/settings/integrations)에서 Enterprise Token을 복사합니다.
|
||||
|
||||
### 2. 필수 패키지 설치
|
||||
|
||||
@@ -36,7 +36,7 @@ uv add crewai-tools
|
||||
## 사용 가능한 액션
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="NOTION_CREATE_PAGE">
|
||||
<Accordion title="notion/create_page">
|
||||
**설명:** Notion에서 페이지를 생성합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -93,7 +93,7 @@ uv add crewai-tools
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="NOTION_UPDATE_PAGE">
|
||||
<Accordion title="notion/update_page">
|
||||
**설명:** Notion에서 페이지를 업데이트합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -127,21 +127,21 @@ uv add crewai-tools
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="NOTION_GET_PAGE_BY_ID">
|
||||
<Accordion title="notion/get_page_by_id">
|
||||
**설명:** Notion에서 ID로 페이지를 가져옵니다.
|
||||
|
||||
**파라미터:**
|
||||
- `pageId` (string, 필수): 페이지 ID - 가져올 페이지의 ID를 지정합니다. (예: "59833787-2cf9-4fdf-8782-e53db20768a5").
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="NOTION_ARCHIVE_PAGE">
|
||||
<Accordion title="notion/archive_page">
|
||||
**설명:** Notion에서 페이지를 보관합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `pageId` (string, 필수): 페이지 ID - 보관할 페이지의 ID를 지정합니다. (예: "59833787-2cf9-4fdf-8782-e53db20768a5").
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="NOTION_SEARCH_PAGES">
|
||||
<Accordion title="notion/search_pages">
|
||||
**설명:** 필터를 사용하여 Notion에서 페이지를 검색합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -166,14 +166,14 @@ uv add crewai-tools
|
||||
사용 가능한 필드: `query`, `filter.value`, `direction`, `page_size`
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="NOTION_GET_PAGE_CONTENT">
|
||||
<Accordion title="notion/get_page_content">
|
||||
**설명:** Notion에서 페이지 콘텐츠(블록)를 가져옵니다.
|
||||
|
||||
**파라미터:**
|
||||
- `blockId` (string, 필수): 페이지 ID - 해당 블록이나 페이지의 모든 자식 블록을 순서대로 가져오기 위해 Block 또는 Page ID를 지정합니다. (예: "59833787-2cf9-4fdf-8782-e53db20768a5").
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="NOTION_UPDATE_BLOCK">
|
||||
<Accordion title="notion/update_block">
|
||||
**설명:** Notion에서 블록을 업데이트합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -260,14 +260,14 @@ uv add crewai-tools
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="NOTION_GET_BLOCK_BY_ID">
|
||||
<Accordion title="notion/get_block_by_id">
|
||||
**설명:** Notion에서 ID로 블록을 가져옵니다.
|
||||
|
||||
**파라미터:**
|
||||
- `blockId` (string, 필수): 블록 ID - 가져올 블록의 ID를 지정합니다. (예: "9bc30ad4-9373-46a5-84ab-0a7845ee52e6").
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="NOTION_DELETE_BLOCK">
|
||||
<Accordion title="notion/delete_block">
|
||||
**설명:** Notion에서 블록을 삭제합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -281,19 +281,13 @@ uv add crewai-tools
|
||||
|
||||
```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]
|
||||
apps=['notion']
|
||||
)
|
||||
|
||||
# Task to create a meeting notes page
|
||||
@@ -315,19 +309,12 @@ 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
|
||||
apps=['notion']
|
||||
)
|
||||
|
||||
# Task to manage content workflow
|
||||
@@ -349,17 +336,12 @@ 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]
|
||||
apps=['notion']
|
||||
)
|
||||
|
||||
# Task to curate knowledge base
|
||||
@@ -386,17 +368,12 @@ 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]
|
||||
apps=['notion']
|
||||
)
|
||||
|
||||
# Task to organize content structure
|
||||
@@ -424,17 +401,12 @@ 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]
|
||||
apps=['notion']
|
||||
)
|
||||
|
||||
# Complex documentation automation task
|
||||
|
||||
@@ -22,7 +22,7 @@ Salesforce 통합을 사용하기 전에 다음을 확인하세요:
|
||||
### **레코드 관리**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="SALESFORCE_CREATE_RECORD_CONTACT">
|
||||
<Accordion title="salesforce/create_record_contact">
|
||||
**설명:** Salesforce에서 새로운 Contact 레코드를 생성합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -35,7 +35,7 @@ Salesforce 통합을 사용하기 전에 다음을 확인하세요:
|
||||
- `additionalFields` (object, 선택): 사용자 정의 Contact 필드를 위한 JSON 형식의 추가 필드
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_CREATE_RECORD_LEAD">
|
||||
<Accordion title="salesforce/create_record_lead">
|
||||
**설명:** Salesforce에서 새로운 Lead 레코드를 생성합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -51,7 +51,7 @@ Salesforce 통합을 사용하기 전에 다음을 확인하세요:
|
||||
- `additionalFields` (object, 선택): 사용자 정의 Lead 필드를 위한 JSON 형식의 추가 필드
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_CREATE_RECORD_OPPORTUNITY">
|
||||
<Accordion title="salesforce/create_record_opportunity">
|
||||
**설명:** Salesforce에서 새로운 Opportunity 레코드를 생성합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -66,7 +66,7 @@ Salesforce 통합을 사용하기 전에 다음을 확인하세요:
|
||||
- `additionalFields` (object, 선택): 사용자 정의 Opportunity 필드를 위한 JSON 형식의 추가 필드
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_CREATE_RECORD_TASK">
|
||||
<Accordion title="salesforce/create_record_task">
|
||||
**설명:** Salesforce에서 새로운 Task 레코드를 생성합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -84,7 +84,7 @@ Salesforce 통합을 사용하기 전에 다음을 확인하세요:
|
||||
- `additionalFields` (object, 선택): 사용자 정의 Task 필드를 위한 JSON 형식의 추가 필드
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_CREATE_RECORD_ACCOUNT">
|
||||
<Accordion title="salesforce/create_record_account">
|
||||
**설명:** Salesforce에서 새로운 Account 레코드를 생성합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -96,7 +96,7 @@ Salesforce 통합을 사용하기 전에 다음을 확인하세요:
|
||||
- `additionalFields` (object, 선택): 사용자 정의 Account 필드를 위한 JSON 형식의 추가 필드
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_CREATE_RECORD_ANY">
|
||||
<Accordion title="salesforce/create_record_any">
|
||||
**설명:** Salesforce에서 모든 오브젝트 유형의 레코드를 생성합니다.
|
||||
|
||||
**참고:** 이 기능은 사용자 정의 또는 알려지지 않은 오브젝트 유형의 레코드를 생성할 때 유연하게 사용할 수 있습니다.
|
||||
@@ -106,7 +106,7 @@ Salesforce 통합을 사용하기 전에 다음을 확인하세요:
|
||||
### **레코드 업데이트**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="SALESFORCE_UPDATE_RECORD_CONTACT">
|
||||
<Accordion title="salesforce/update_record_contact">
|
||||
**설명:** Salesforce에서 기존 연락처(Contact) 레코드를 업데이트합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -120,7 +120,7 @@ Salesforce 통합을 사용하기 전에 다음을 확인하세요:
|
||||
- `additionalFields` (object, 선택): 커스텀 연락처 필드를 위한 JSON 형식의 추가 필드
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_UPDATE_RECORD_LEAD">
|
||||
<Accordion title="salesforce/update_record_lead">
|
||||
**설명:** Salesforce에서 기존 리드(Lead) 레코드를 업데이트합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -137,7 +137,7 @@ Salesforce 통합을 사용하기 전에 다음을 확인하세요:
|
||||
- `additionalFields` (object, 선택): 커스텀 리드 필드를 위한 JSON 형식의 추가 필드
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_UPDATE_RECORD_OPPORTUNITY">
|
||||
<Accordion title="salesforce/update_record_opportunity">
|
||||
**설명:** Salesforce에서 기존 기회(Opportunity) 레코드를 업데이트합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -153,7 +153,7 @@ Salesforce 통합을 사용하기 전에 다음을 확인하세요:
|
||||
- `additionalFields` (object, 선택): 커스텀 기회 필드를 위한 JSON 형식의 추가 필드
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_UPDATE_RECORD_TASK">
|
||||
<Accordion title="salesforce/update_record_task">
|
||||
**설명:** Salesforce에서 기존 작업(Task) 레코드를 업데이트합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -171,7 +171,7 @@ Salesforce 통합을 사용하기 전에 다음을 확인하세요:
|
||||
- `additionalFields` (object, 선택): 커스텀 작업 필드를 위한 JSON 형식의 추가 필드
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_UPDATE_RECORD_ACCOUNT">
|
||||
<Accordion title="salesforce/update_record_account">
|
||||
**설명:** Salesforce에서 기존 계정(Account) 레코드를 업데이트합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -184,7 +184,7 @@ Salesforce 통합을 사용하기 전에 다음을 확인하세요:
|
||||
- `additionalFields` (object, 선택): 커스텀 계정 필드를 위한 JSON 형식의 추가 필드
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_UPDATE_RECORD_ANY">
|
||||
<Accordion title="salesforce/update_record_any">
|
||||
**설명:** Salesforce에서 어떤 객체 유형이든 레코드를 업데이트합니다.
|
||||
|
||||
**참고:** 이는 커스텀 또는 미확인 객체 유형의 레코드 업데이트를 위한 유연한 도구입니다.
|
||||
@@ -194,42 +194,42 @@ Salesforce 통합을 사용하기 전에 다음을 확인하세요:
|
||||
### **레코드 조회**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="SALESFORCE_GET_RECORD_BY_ID_CONTACT">
|
||||
<Accordion title="salesforce/get_record_by_id_contact">
|
||||
**설명:** ID로 Contact 레코드를 조회합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `recordId` (string, 필수): Contact의 레코드 ID
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_GET_RECORD_BY_ID_LEAD">
|
||||
<Accordion title="salesforce/get_record_by_id_lead">
|
||||
**설명:** ID로 Lead 레코드를 조회합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `recordId` (string, 필수): Lead의 레코드 ID
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_GET_RECORD_BY_ID_OPPORTUNITY">
|
||||
<Accordion title="salesforce/get_record_by_id_opportunity">
|
||||
**설명:** ID로 Opportunity 레코드를 조회합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `recordId` (string, 필수): Opportunity의 레코드 ID
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_GET_RECORD_BY_ID_TASK">
|
||||
<Accordion title="salesforce/get_record_by_id_task">
|
||||
**설명:** ID로 Task 레코드를 조회합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `recordId` (string, 필수): Task의 레코드 ID
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_GET_RECORD_BY_ID_ACCOUNT">
|
||||
<Accordion title="salesforce/get_record_by_id_account">
|
||||
**설명:** ID로 Account 레코드를 조회합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `recordId` (string, 필수): Account의 레코드 ID
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_GET_RECORD_BY_ID_ANY">
|
||||
<Accordion title="salesforce/get_record_by_id_any">
|
||||
**설명:** ID로 임의 객체 유형의 레코드를 조회합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -241,7 +241,7 @@ Salesforce 통합을 사용하기 전에 다음을 확인하세요:
|
||||
### **레코드 검색**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="SALESFORCE_SEARCH_RECORDS_CONTACT">
|
||||
<Accordion title="salesforce/search_records_contact">
|
||||
**설명:** 고급 필터링으로 연락처(Contact) 레코드를 검색합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -252,7 +252,7 @@ Salesforce 통합을 사용하기 전에 다음을 확인하세요:
|
||||
- `paginationParameters` (object, 선택): pageCursor를 포함한 페이지네이션 설정
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_SEARCH_RECORDS_LEAD">
|
||||
<Accordion title="salesforce/search_records_lead">
|
||||
**설명:** 고급 필터링으로 리드(Lead) 레코드를 검색합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -263,7 +263,7 @@ Salesforce 통합을 사용하기 전에 다음을 확인하세요:
|
||||
- `paginationParameters` (object, 선택): pageCursor를 포함한 페이지네이션 설정
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_SEARCH_RECORDS_OPPORTUNITY">
|
||||
<Accordion title="salesforce/search_records_opportunity">
|
||||
**설명:** 고급 필터링으로 기회(Opportunity) 레코드를 검색합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -274,7 +274,7 @@ Salesforce 통합을 사용하기 전에 다음을 확인하세요:
|
||||
- `paginationParameters` (object, 선택): pageCursor를 포함한 페이지네이션 설정
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_SEARCH_RECORDS_TASK">
|
||||
<Accordion title="salesforce/search_records_task">
|
||||
**설명:** 고급 필터링으로 작업(Task) 레코드를 검색합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -285,7 +285,7 @@ Salesforce 통합을 사용하기 전에 다음을 확인하세요:
|
||||
- `paginationParameters` (object, 선택): pageCursor를 포함한 페이지네이션 설정
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_SEARCH_RECORDS_ACCOUNT">
|
||||
<Accordion title="salesforce/search_records_account">
|
||||
**설명:** 고급 필터링으로 계정(Account) 레코드를 검색합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -296,7 +296,7 @@ Salesforce 통합을 사용하기 전에 다음을 확인하세요:
|
||||
- `paginationParameters` (object, 선택): pageCursor를 포함한 페이지네이션 설정
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_SEARCH_RECORDS_ANY">
|
||||
<Accordion title="salesforce/search_records_any">
|
||||
**설명:** 모든 오브젝트 유형의 레코드를 검색합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -310,7 +310,7 @@ Salesforce 통합을 사용하기 전에 다음을 확인하세요:
|
||||
### **리스트 뷰 조회**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="SALESFORCE_GET_RECORD_BY_VIEW_ID_CONTACT">
|
||||
<Accordion title="salesforce/get_record_by_view_id_contact">
|
||||
**설명:** 특정 리스트 뷰에서 Contact 레코드를 가져옵니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -318,7 +318,7 @@ Salesforce 통합을 사용하기 전에 다음을 확인하세요:
|
||||
- `paginationParameters` (object, 선택): pageCursor와 함께 사용하는 페이지네이션 설정
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_GET_RECORD_BY_VIEW_ID_LEAD">
|
||||
<Accordion title="salesforce/get_record_by_view_id_lead">
|
||||
**설명:** 특정 리스트 뷰에서 Lead 레코드를 가져옵니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -326,7 +326,7 @@ Salesforce 통합을 사용하기 전에 다음을 확인하세요:
|
||||
- `paginationParameters` (object, 선택): pageCursor와 함께 사용하는 페이지네이션 설정
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_GET_RECORD_BY_VIEW_ID_OPPORTUNITY">
|
||||
<Accordion title="salesforce/get_record_by_view_id_opportunity">
|
||||
**설명:** 특정 리스트 뷰에서 Opportunity 레코드를 가져옵니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -334,7 +334,7 @@ Salesforce 통합을 사용하기 전에 다음을 확인하세요:
|
||||
- `paginationParameters` (object, 선택): pageCursor와 함께 사용하는 페이지네이션 설정
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_GET_RECORD_BY_VIEW_ID_TASK">
|
||||
<Accordion title="salesforce/get_record_by_view_id_task">
|
||||
**설명:** 특정 리스트 뷰에서 Task 레코드를 가져옵니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -342,7 +342,7 @@ Salesforce 통합을 사용하기 전에 다음을 확인하세요:
|
||||
- `paginationParameters` (object, 선택): pageCursor와 함께 사용하는 페이지네이션 설정
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_GET_RECORD_BY_VIEW_ID_ACCOUNT">
|
||||
<Accordion title="salesforce/get_record_by_view_id_account">
|
||||
**설명:** 특정 리스트 뷰에서 Account 레코드를 가져옵니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -350,7 +350,7 @@ Salesforce 통합을 사용하기 전에 다음을 확인하세요:
|
||||
- `paginationParameters` (object, 선택): pageCursor와 함께 사용하는 페이지네이션 설정
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_GET_RECORD_BY_VIEW_ID_ANY">
|
||||
<Accordion title="salesforce/get_record_by_view_id_any">
|
||||
**설명:** 특정 리스트 뷰에서 임의의 객체 유형의 레코드를 가져옵니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -363,7 +363,7 @@ Salesforce 통합을 사용하기 전에 다음을 확인하세요:
|
||||
### **커스텀 필드**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="SALESFORCE_CREATE_CUSTOM_FIELD_CONTACT">
|
||||
<Accordion title="salesforce/create_custom_field_contact">
|
||||
**설명:** Contact 오브젝트에 대한 커스텀 필드를 배포합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -379,7 +379,7 @@ Salesforce 통합을 사용하기 전에 다음을 확인하세요:
|
||||
- `defaultFieldValue` (string, 선택): 필드의 기본값
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_CREATE_CUSTOM_FIELD_LEAD">
|
||||
<Accordion title="salesforce/create_custom_field_lead">
|
||||
**설명:** Lead 오브젝트에 대한 커스텀 필드를 배포합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -395,7 +395,7 @@ Salesforce 통합을 사용하기 전에 다음을 확인하세요:
|
||||
- `defaultFieldValue` (string, 선택): 필드의 기본값
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_CREATE_CUSTOM_FIELD_OPPORTUNITY">
|
||||
<Accordion title="salesforce/create_custom_field_opportunity">
|
||||
**설명:** Opportunity 오브젝트에 대한 커스텀 필드를 배포합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -411,7 +411,7 @@ Salesforce 통합을 사용하기 전에 다음을 확인하세요:
|
||||
- `defaultFieldValue` (string, 선택): 필드의 기본값
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_CREATE_CUSTOM_FIELD_TASK">
|
||||
<Accordion title="salesforce/create_custom_field_task">
|
||||
**설명:** Task 오브젝트에 대한 커스텀 필드를 배포합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -427,7 +427,7 @@ Salesforce 통합을 사용하기 전에 다음을 확인하세요:
|
||||
- `defaultFieldValue` (string, 선택): 필드의 기본값
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_CREATE_CUSTOM_FIELD_ACCOUNT">
|
||||
<Accordion title="salesforce/create_custom_field_account">
|
||||
**설명:** Account 오브젝트에 대한 커스텀 필드를 배포합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -443,7 +443,7 @@ Salesforce 통합을 사용하기 전에 다음을 확인하세요:
|
||||
- `defaultFieldValue` (string, 선택): 필드의 기본값
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_CREATE_CUSTOM_FIELD_ANY">
|
||||
<Accordion title="salesforce/create_custom_field_any">
|
||||
**설명:** 모든 오브젝트 타입에 대한 커스텀 필드를 배포합니다.
|
||||
|
||||
**참고:** 커스텀 또는 미지의 오브젝트 타입에 커스텀 필드를 생성할 수 있는 유연한 도구입니다.
|
||||
@@ -453,14 +453,14 @@ Salesforce 통합을 사용하기 전에 다음을 확인하세요:
|
||||
### **고급 작업**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="SALESFORCE_WRITE_SOQL_QUERY">
|
||||
<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">
|
||||
<Accordion title="salesforce/create_custom_object">
|
||||
**설명:** Salesforce에 새로운 커스텀 오브젝트를 배포합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -470,7 +470,7 @@ Salesforce 통합을 사용하기 전에 다음을 확인하세요:
|
||||
- `recordName` (string, 필수): 레이아웃과 검색에 표시되는 레코드 이름 (예: "Account Name")
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_DESCRIBE_ACTION_SCHEMA">
|
||||
<Accordion title="salesforce/describe_action_schema">
|
||||
**설명:** 특정 오브젝트 타입에 대한 작업의 예상 스키마를 가져옵니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -487,19 +487,13 @@ 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]
|
||||
apps=['salesforce']
|
||||
)
|
||||
|
||||
# Task to create a new lead
|
||||
@@ -521,19 +515,12 @@ 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
|
||||
apps=['salesforce']
|
||||
)
|
||||
|
||||
# Task to manage sales pipeline
|
||||
@@ -555,17 +542,12 @@ 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]
|
||||
apps=['salesforce']
|
||||
)
|
||||
|
||||
# Task to manage customer accounts
|
||||
@@ -591,17 +573,12 @@ 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="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]
|
||||
apps=['salesforce']
|
||||
)
|
||||
|
||||
# Complex task involving SOQL queries and data analysis
|
||||
|
||||
@@ -22,7 +22,7 @@ Shopify 연동을 사용하기 전에 다음을 확인하세요:
|
||||
### **고객 관리**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="SHOPIFY_GET_CUSTOMERS">
|
||||
<Accordion title="shopify/get_customers">
|
||||
**설명:** Shopify 스토어에서 고객 목록을 조회합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -34,7 +34,7 @@ Shopify 연동을 사용하기 전에 다음을 확인하세요:
|
||||
- `limit` (string, 선택): 반환할 최대 고객 수 (기본값 250)
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SHOPIFY_SEARCH_CUSTOMERS">
|
||||
<Accordion title="shopify/search_customers">
|
||||
**설명:** 고급 필터링 기준을 사용하여 고객을 검색합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -42,7 +42,7 @@ Shopify 연동을 사용하기 전에 다음을 확인하세요:
|
||||
- `limit` (string, 선택): 반환할 최대 고객 수 (기본값 250)
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SHOPIFY_CREATE_CUSTOMER">
|
||||
<Accordion title="shopify/create_customer">
|
||||
**설명:** Shopify 스토어에 새로운 고객을 생성합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -63,7 +63,7 @@ Shopify 연동을 사용하기 전에 다음을 확인하세요:
|
||||
- `metafields` (object, 선택): 추가 메타필드(JSON 형식)
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SHOPIFY_UPDATE_CUSTOMER">
|
||||
<Accordion title="shopify/update_customer">
|
||||
**설명:** Shopify 스토어에 기존 고객을 업데이트합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -89,7 +89,7 @@ Shopify 연동을 사용하기 전에 다음을 확인하세요:
|
||||
### **주문 관리**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="SHOPIFY_GET_ORDERS">
|
||||
<Accordion title="shopify/get_orders">
|
||||
**설명:** Shopify 스토어에서 주문 목록을 조회합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -101,7 +101,7 @@ Shopify 연동을 사용하기 전에 다음을 확인하세요:
|
||||
- `limit` (string, optional): 반환할 주문의 최대 개수 (기본값: 250)
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SHOPIFY_CREATE_ORDER">
|
||||
<Accordion title="shopify/create_order">
|
||||
**설명:** Shopify 스토어에 새 주문을 생성합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -114,7 +114,7 @@ Shopify 연동을 사용하기 전에 다음을 확인하세요:
|
||||
- `note` (string, optional): 주문 메모
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SHOPIFY_UPDATE_ORDER">
|
||||
<Accordion title="shopify/update_order">
|
||||
**설명:** Shopify 스토어에서 기존 주문을 업데이트합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -128,7 +128,7 @@ Shopify 연동을 사용하기 전에 다음을 확인하세요:
|
||||
- `note` (string, optional): 주문 메모
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SHOPIFY_GET_ABANDONED_CARTS">
|
||||
<Accordion title="shopify/get_abandoned_carts">
|
||||
**설명:** Shopify 스토어에서 방치된 장바구니를 조회합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -144,7 +144,7 @@ Shopify 연동을 사용하기 전에 다음을 확인하세요:
|
||||
### **제품 관리 (REST API)**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="SHOPIFY_GET_PRODUCTS">
|
||||
<Accordion title="shopify/get_products">
|
||||
**설명:** REST API를 사용하여 Shopify 스토어에서 제품 목록을 조회합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -160,7 +160,7 @@ Shopify 연동을 사용하기 전에 다음을 확인하세요:
|
||||
- `limit` (string, optional): 반환할 최대 제품 수 (기본값: 250)
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SHOPIFY_CREATE_PRODUCT">
|
||||
<Accordion title="shopify/create_product">
|
||||
**설명:** REST API를 사용하여 Shopify 스토어에 새로운 제품을 생성합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -176,7 +176,7 @@ Shopify 연동을 사용하기 전에 다음을 확인하세요:
|
||||
- `publishToPointToSale` (boolean, optional): 포인트 오브 세일(Point of Sale)에 공개 여부
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SHOPIFY_UPDATE_PRODUCT">
|
||||
<Accordion title="shopify/update_product">
|
||||
**설명:** REST API를 사용하여 Shopify 스토어의 기존 제품을 업데이트합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -197,14 +197,14 @@ Shopify 연동을 사용하기 전에 다음을 확인하세요:
|
||||
### **제품 관리 (GraphQL)**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="SHOPIFY_GET_PRODUCTS_GRAPHQL">
|
||||
<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">
|
||||
<Accordion title="shopify/create_product_graphql">
|
||||
**설명:** 미디어 지원이 강화된 GraphQL API를 사용하여 새 제품을 생성합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -217,7 +217,7 @@ Shopify 연동을 사용하기 전에 다음을 확인하세요:
|
||||
- `additionalFields` (object, 선택): status, requiresSellingPlan, giftCard와 같은 추가 제품 필드
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SHOPIFY_UPDATE_PRODUCT_GRAPHQL">
|
||||
<Accordion title="shopify/update_product_graphql">
|
||||
**설명:** 미디어 지원이 강화된 GraphQL API를 사용하여 기존 제품을 업데이트합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -238,19 +238,13 @@ 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]
|
||||
apps=['shopify']
|
||||
)
|
||||
|
||||
# Task to create a new customer
|
||||
@@ -272,19 +266,12 @@ 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
|
||||
apps=['shopify']
|
||||
)
|
||||
|
||||
# Task to manage store operations
|
||||
@@ -306,17 +293,12 @@ crew.kickoff()
|
||||
|
||||
```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]
|
||||
apps=['shopify']
|
||||
)
|
||||
|
||||
# Task to manage product catalog
|
||||
@@ -343,17 +325,12 @@ 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]
|
||||
apps=['shopify']
|
||||
)
|
||||
|
||||
# Complex task involving multiple operations
|
||||
|
||||
@@ -22,21 +22,21 @@ Slack 통합을 사용하기 전에 다음을 확인하십시오:
|
||||
### **사용자 관리**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="SLACK_LIST_MEMBERS">
|
||||
<Accordion title="slack/list_members">
|
||||
**설명:** Slack 채널의 모든 멤버를 나열합니다.
|
||||
|
||||
**파라미터:**
|
||||
- 파라미터 없음 - 모든 채널 멤버를 조회합니다
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SLACK_GET_USER_BY_EMAIL">
|
||||
<Accordion title="slack/get_user_by_email">
|
||||
**설명:** 이메일 주소로 Slack 워크스페이스에서 사용자를 찾습니다.
|
||||
|
||||
**파라미터:**
|
||||
- `email` (string, 필수): 워크스페이스 내 사용자의 이메일 주소
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SLACK_GET_USERS_BY_NAME">
|
||||
<Accordion title="slack/get_users_by_name">
|
||||
**설명:** 이름 또는 표시 이름으로 사용자를 검색합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -50,7 +50,7 @@ Slack 통합을 사용하기 전에 다음을 확인하십시오:
|
||||
### **채널 관리**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="SLACK_LIST_CHANNELS">
|
||||
<Accordion title="slack/list_channels">
|
||||
**설명:** Slack 워크스페이스의 모든 채널을 나열합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -61,7 +61,7 @@ Slack 통합을 사용하기 전에 다음을 확인하십시오:
|
||||
### **메시징**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="SLACK_SEND_MESSAGE">
|
||||
<Accordion title="slack/send_message">
|
||||
**설명:** Slack 채널에 메시지를 전송합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -73,7 +73,7 @@ Slack 통합을 사용하기 전에 다음을 확인하십시오:
|
||||
- `authenticatedUser` (boolean, 선택): true이면 메시지가 애플리케이션이 아니라 인증된 Slack 사용자로부터 보낸 것처럼 표시됩니다(기본값은 false)
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SLACK_SEND_DIRECT_MESSAGE">
|
||||
<Accordion title="slack/send_direct_message">
|
||||
**설명:** Slack에서 특정 사용자에게 다이렉트 메시지를 전송합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -89,7 +89,7 @@ Slack 통합을 사용하기 전에 다음을 확인하십시오:
|
||||
### **검색 및 탐색**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="SLACK_SEARCH_MESSAGES">
|
||||
<Accordion title="slack/search_messages">
|
||||
**설명:** Slack 워크스페이스 전체에서 메시지를 검색합니다.
|
||||
|
||||
**매개변수:**
|
||||
@@ -150,19 +150,13 @@ Slack의 Block Kit을 사용하면 풍부하고 상호작용이 가능한 메시
|
||||
|
||||
```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]
|
||||
apps=['slack']
|
||||
)
|
||||
|
||||
# Task to send project updates
|
||||
@@ -184,19 +178,12 @@ 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
|
||||
apps=['slack']
|
||||
)
|
||||
|
||||
# Task to coordinate team communication
|
||||
@@ -218,17 +205,12 @@ crew.kickoff()
|
||||
|
||||
```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]
|
||||
apps=['slack']
|
||||
)
|
||||
|
||||
# Task to send rich notifications
|
||||
@@ -254,17 +236,12 @@ 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]
|
||||
apps=['slack']
|
||||
)
|
||||
|
||||
# Complex task involving search and analysis
|
||||
|
||||
@@ -22,7 +22,7 @@ Stripe 통합을 사용하기 전에 다음 사항을 확인하세요:
|
||||
### **고객 관리**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="STRIPE_CREATE_CUSTOMER">
|
||||
<Accordion title="stripe/create_customer">
|
||||
**설명:** Stripe 계정에 새로운 고객을 생성합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -32,14 +32,14 @@ Stripe 통합을 사용하기 전에 다음 사항을 확인하세요:
|
||||
- `metadataCreateCustomer` (object, 선택): 추가 메타데이터를 key-value 쌍으로 입력 (예: `{"field1": 1, "field2": 2}`)
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="STRIPE_GET_CUSTOMER_BY_ID">
|
||||
<Accordion title="stripe/get_customer_by_id">
|
||||
**설명:** Stripe 고객 ID로 특정 고객을 조회합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `idGetCustomer` (string, 필수): 조회할 Stripe 고객 ID
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="STRIPE_GET_CUSTOMERS">
|
||||
<Accordion title="stripe/get_customers">
|
||||
**설명:** 필터링 옵션과 함께 고객 리스트를 조회합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -49,7 +49,7 @@ Stripe 통합을 사용하기 전에 다음 사항을 확인하세요:
|
||||
- `limitGetCustomers` (string, 선택): 반환할 최대 고객 수 (기본값 10)
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="STRIPE_UPDATE_CUSTOMER">
|
||||
<Accordion title="stripe/update_customer">
|
||||
**설명:** 기존 고객의 정보를 업데이트합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -64,7 +64,7 @@ Stripe 통합을 사용하기 전에 다음 사항을 확인하세요:
|
||||
### **구독 관리**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="STRIPE_CREATE_SUBSCRIPTION">
|
||||
<Accordion title="stripe/create_subscription">
|
||||
**설명:** 고객을 위한 새로운 구독을 생성합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -73,7 +73,7 @@ Stripe 통합을 사용하기 전에 다음 사항을 확인하세요:
|
||||
- `metadataCreateSubscription` (object, 선택): 구독에 대한 추가 메타데이터
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="STRIPE_GET_SUBSCRIPTIONS">
|
||||
<Accordion title="stripe/get_subscriptions">
|
||||
**설명:** 선택적 필터링으로 구독을 조회합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -86,7 +86,7 @@ Stripe 통합을 사용하기 전에 다음 사항을 확인하세요:
|
||||
### **제품 관리**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="STRIPE_CREATE_PRODUCT">
|
||||
<Accordion title="stripe/create_product">
|
||||
**설명:** Stripe 카탈로그에 새 제품을 생성합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -95,14 +95,14 @@ Stripe 통합을 사용하기 전에 다음 사항을 확인하세요:
|
||||
- `metadataProduct` (object, 선택): 키-값 쌍으로 구성된 추가 제품 메타데이터
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="STRIPE_GET_PRODUCT_BY_ID">
|
||||
<Accordion title="stripe/get_product_by_id">
|
||||
**설명:** Stripe 제품 ID로 특정 제품을 조회합니다.
|
||||
|
||||
**파라미터:**
|
||||
- `productId` (string, 필수): 조회할 Stripe 제품 ID
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="STRIPE_GET_PRODUCTS">
|
||||
<Accordion title="stripe/get_products">
|
||||
**설명:** 선택적 필터링을 통해 제품 목록을 조회합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -115,7 +115,7 @@ Stripe 통합을 사용하기 전에 다음 사항을 확인하세요:
|
||||
### **금융 운영**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="STRIPE_GET_BALANCE_TRANSACTIONS">
|
||||
<Accordion title="stripe/get_balance_transactions">
|
||||
**설명:** Stripe 계정에서 잔액 거래를 조회합니다.
|
||||
|
||||
**매개변수:**
|
||||
@@ -124,7 +124,7 @@ Stripe 통합을 사용하기 전에 다음 사항을 확인하세요:
|
||||
- `pageCursor` (string, 선택 사항): 페이지네이션을 위한 페이지 커서
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="STRIPE_GET_PLANS">
|
||||
<Accordion title="stripe/get_plans">
|
||||
**설명:** Stripe 계정에서 구독 플랜을 조회합니다.
|
||||
|
||||
**매개변수:**
|
||||
@@ -140,19 +140,13 @@ 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]
|
||||
apps=['stripe']
|
||||
)
|
||||
|
||||
# Task to create a new customer
|
||||
@@ -174,19 +168,12 @@ 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
|
||||
apps=['stripe']
|
||||
)
|
||||
|
||||
# Task to manage billing operations
|
||||
@@ -208,17 +195,12 @@ 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]
|
||||
apps=['stripe']
|
||||
)
|
||||
|
||||
# Task to manage subscription operations
|
||||
@@ -245,17 +227,12 @@ 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]
|
||||
apps=['stripe']
|
||||
)
|
||||
|
||||
# Complex task involving financial analysis
|
||||
|
||||
@@ -22,7 +22,7 @@ Zendesk 통합을 사용하기 전에 다음을 확인하세요.
|
||||
### **티켓 관리**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="ZENDESK_CREATE_TICKET">
|
||||
<Accordion title="zendesk/create_ticket">
|
||||
**설명:** Zendesk에 새로운 지원 티켓을 생성합니다.
|
||||
|
||||
**매개변수:**
|
||||
@@ -40,7 +40,7 @@ Zendesk 통합을 사용하기 전에 다음을 확인하세요.
|
||||
- `ticketCustomFields` (object, 선택): JSON 형식의 사용자 정의 필드 값
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="ZENDESK_UPDATE_TICKET">
|
||||
<Accordion title="zendesk/update_ticket">
|
||||
**설명:** Zendesk의 기존 지원 티켓을 업데이트합니다.
|
||||
|
||||
**매개변수:**
|
||||
@@ -58,14 +58,14 @@ Zendesk 통합을 사용하기 전에 다음을 확인하세요.
|
||||
- `ticketCustomFields` (object, 선택): 업데이트된 사용자 정의 필드 값
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="ZENDESK_GET_TICKET_BY_ID">
|
||||
<Accordion title="zendesk/get_ticket_by_id">
|
||||
**설명:** ID로 특정 티켓을 조회합니다.
|
||||
|
||||
**매개변수:**
|
||||
- `ticketId` (string, 필수): 조회할 티켓의 ID (예: "35436")
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="ZENDESK_ADD_COMMENT_TO_TICKET">
|
||||
<Accordion title="zendesk/add_comment_to_ticket">
|
||||
**설명:** 기존 티켓에 댓글이나 내부 노트를 추가합니다.
|
||||
|
||||
**매개변수:**
|
||||
@@ -75,7 +75,7 @@ Zendesk 통합을 사용하기 전에 다음을 확인하세요.
|
||||
- `isPublic` (boolean, 선택): 공개 댓글이면 true, 내부 노트이면 false
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="ZENDESK_SEARCH_TICKETS">
|
||||
<Accordion title="zendesk/search_tickets">
|
||||
**설명:** 다양한 필터 및 조건을 사용하여 티켓을 검색합니다.
|
||||
|
||||
**매개변수:**
|
||||
@@ -100,7 +100,7 @@ Zendesk 통합을 사용하기 전에 다음을 확인하세요.
|
||||
### **사용자 관리**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="ZENDESK_CREATE_USER">
|
||||
<Accordion title="zendesk/create_user">
|
||||
**설명:** Zendesk에서 새로운 사용자를 생성합니다.
|
||||
|
||||
**매개변수:**
|
||||
@@ -113,7 +113,7 @@ Zendesk 통합을 사용하기 전에 다음을 확인하세요.
|
||||
- `notes` (string, 선택): 사용자에 대한 내부 메모
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="ZENDESK_UPDATE_USER">
|
||||
<Accordion title="zendesk/update_user">
|
||||
**설명:** 기존 사용자의 정보를 업데이트합니다.
|
||||
|
||||
**매개변수:**
|
||||
@@ -127,14 +127,14 @@ Zendesk 통합을 사용하기 전에 다음을 확인하세요.
|
||||
- `notes` (string, 선택): 업데이트된 내부 메모
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="ZENDESK_GET_USER_BY_ID">
|
||||
<Accordion title="zendesk/get_user_by_id">
|
||||
**설명:** ID로 특정 사용자를 조회합니다.
|
||||
|
||||
**매개변수:**
|
||||
- `userId` (string, 필수): 조회할 사용자 ID
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="ZENDESK_SEARCH_USERS">
|
||||
<Accordion title="zendesk/search_users">
|
||||
**설명:** 다양한 기준으로 사용자를 검색합니다.
|
||||
|
||||
**매개변수:**
|
||||
@@ -150,7 +150,7 @@ Zendesk 통합을 사용하기 전에 다음을 확인하세요.
|
||||
### **관리 도구**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="ZENDESK_GET_TICKET_FIELDS">
|
||||
<Accordion title="zendesk/get_ticket_fields">
|
||||
**설명:** 티켓에 사용할 수 있는 모든 표준 및 맞춤 필드를 검색합니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -158,7 +158,7 @@ Zendesk 통합을 사용하기 전에 다음을 확인하세요.
|
||||
- `pageCursor` (string, 선택 사항): 페이지네이션을 위한 페이지 커서
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="ZENDESK_GET_TICKET_AUDITS">
|
||||
<Accordion title="zendesk/get_ticket_audits">
|
||||
**설명:** 티켓의 감사 기록(읽기 전용 이력)을 가져옵니다.
|
||||
|
||||
**파라미터:**
|
||||
@@ -205,19 +205,13 @@ 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]
|
||||
apps=['zendesk']
|
||||
)
|
||||
|
||||
# Task to create a new support ticket
|
||||
@@ -239,19 +233,12 @@ 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
|
||||
apps=['zendesk']
|
||||
)
|
||||
|
||||
# Task to manage support workflow
|
||||
@@ -273,17 +260,12 @@ 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]
|
||||
apps=['zendesk']
|
||||
)
|
||||
|
||||
# Task to manage ticket lifecycle
|
||||
@@ -310,17 +292,12 @@ 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]
|
||||
apps=['zendesk']
|
||||
)
|
||||
|
||||
# Complex task involving analytics and reporting
|
||||
|
||||
@@ -43,7 +43,7 @@ Ferramentas & Integrações é o hub central para conectar aplicações de terce
|
||||
1. Acesse <Link href="https://app.crewai.com/crewai_plus/connectors">Integrações</Link>
|
||||
2. Clique em <b>Conectar</b> no serviço desejado
|
||||
3. Conclua o fluxo OAuth e conceda os escopos
|
||||
4. Copie seu Token Enterprise na aba <b>Integração</b>
|
||||
4. Copie seu Token Enterprise em <Link href="https://app.crewai.com/crewai_plus/settings/integrations">Configurações de Integração</Link>
|
||||
|
||||
<Frame>
|
||||

|
||||
@@ -60,23 +60,18 @@ Ferramentas & Integrações é o hub central para conectar aplicações de terce
|
||||
### Exemplo de uso
|
||||
|
||||
<Tip>
|
||||
Todos os serviços autenticados ficam disponíveis como ferramentas. Adicione `CrewaiEnterpriseTools` ao agente e pronto.
|
||||
Use a nova abordagem simplificada para integrar aplicativos empresariais. Simplesmente especifique o aplicativo e suas ações diretamente na configuração do Agent.
|
||||
</Tip>
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="seu_enterprise_token"
|
||||
)
|
||||
print(enterprise_tools)
|
||||
|
||||
# Crie um agente com capacidades do Gmail
|
||||
email_agent = Agent(
|
||||
role="Gerente de Email",
|
||||
goal="Gerenciar e organizar comunicações por email",
|
||||
backstory="Assistente de IA especializado em gestão de emails",
|
||||
tools=enterprise_tools
|
||||
apps=['gmail', 'gmail/send_email'] # Usando nome canônico 'gmail'
|
||||
)
|
||||
|
||||
email_task = Task(
|
||||
@@ -92,19 +87,14 @@ Ferramentas & Integrações é o hub central para conectar aplicações de terce
|
||||
### Filtrando ferramentas
|
||||
|
||||
```python
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
actions_list=["gmail_find_email"]
|
||||
)
|
||||
|
||||
gmail_tool = enterprise_tools["gmail_find_email"]
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
# Crie agente com ações específicas do Gmail apenas
|
||||
gmail_agent = Agent(
|
||||
role="Gerente de Gmail",
|
||||
goal="Gerenciar comunicações e notificações no Gmail",
|
||||
backstory="Assistente de IA para coordenação de emails",
|
||||
tools=[gmail_tool]
|
||||
apps=['gmail/fetch_emails'] # Usando nome canônico com ação específica
|
||||
)
|
||||
|
||||
notification_task = Task(
|
||||
|
||||
@@ -25,7 +25,7 @@ Antes de usar a integração com o Asana, assegure-se de ter:
|
||||
2. Encontre **Asana** na seção Integrações de Autenticação
|
||||
3. Clique em **Conectar** e complete o fluxo OAuth
|
||||
4. Conceda as permissões necessárias para gerenciamento de tarefas e projetos
|
||||
5. Copie seu Token Enterprise em [Configurações da Conta](https://app.crewai.com/crewai_plus/settings/account)
|
||||
5. Copie seu Token Enterprise em [Configurações de Integração](https://app.crewai.com/crewai_plus/settings/integrations)
|
||||
|
||||
### 2. Instale o Pacote Necessário
|
||||
|
||||
@@ -36,7 +36,7 @@ uv add crewai-tools
|
||||
## Ações Disponíveis
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="ASANA_CREATE_COMMENT">
|
||||
<Accordion title="asana/create_comment">
|
||||
**Descrição:** Cria um comentário no Asana.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -44,7 +44,7 @@ uv add crewai-tools
|
||||
- `text` (string, obrigatório): Texto (exemplo: "Este é um comentário.").
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="ASANA_CREATE_PROJECT">
|
||||
<Accordion title="asana/create_project">
|
||||
**Descrição:** Cria um projeto no Asana.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -54,7 +54,7 @@ uv add crewai-tools
|
||||
- `notes` (string, opcional): Notas (exemplo: "Esses são itens que precisamos comprar.").
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="ASANA_GET_PROJECTS">
|
||||
<Accordion title="asana/get_projects">
|
||||
**Descrição:** Obtém uma lista de projetos do Asana.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -62,14 +62,14 @@ uv add crewai-tools
|
||||
- Opções: `default`, `true`, `false`
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="ASANA_GET_PROJECT_BY_ID">
|
||||
<Accordion title="asana/get_project_by_id">
|
||||
**Descrição:** Obtém um projeto pelo ID no Asana.
|
||||
|
||||
**Parâmetros:**
|
||||
- `projectFilterId` (string, obrigatório): ID do Projeto.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="ASANA_CREATE_TASK">
|
||||
<Accordion title="asana/create_task">
|
||||
**Descrição:** Cria uma tarefa no Asana.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -83,7 +83,7 @@ uv add crewai-tools
|
||||
- `gid` (string, opcional): ID Externo - Um ID da sua aplicação para associar esta tarefa. Você pode usar este ID para sincronizar atualizações com esta tarefa posteriormente.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="ASANA_UPDATE_TASK">
|
||||
<Accordion title="asana/update_task">
|
||||
**Descrição:** Atualiza uma tarefa no Asana.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -98,7 +98,7 @@ uv add crewai-tools
|
||||
- `gid` (string, opcional): ID Externo - Um ID da sua aplicação para associar a tarefa. Você pode usar este ID para sincronizar atualizações posteriormente.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="ASANA_GET_TASKS">
|
||||
<Accordion title="asana/get_tasks">
|
||||
**Descrição:** Obtém uma lista de tarefas no Asana.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -108,21 +108,21 @@ uv add crewai-tools
|
||||
- `completedSince` (string, opcional): Concluída desde - Retorna apenas tarefas que estejam incompletas ou que tenham sido concluídas desde este horário (timestamp ISO ou Unix). (exemplo: "2014-04-25T16:15:47-04:00").
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="ASANA_GET_TASKS_BY_ID">
|
||||
<Accordion title="asana/get_tasks_by_id">
|
||||
**Descrição:** Obtém uma lista de tarefas pelo ID no Asana.
|
||||
|
||||
**Parâmetros:**
|
||||
- `taskId` (string, obrigatório): ID da Tarefa.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="ASANA_GET_TASK_BY_EXTERNAL_ID">
|
||||
<Accordion title="asana/get_task_by_external_id">
|
||||
**Descrição:** Obtém uma tarefa pelo ID externo no Asana.
|
||||
|
||||
**Parâmetros:**
|
||||
- `gid` (string, obrigatório): ID Externo - O ID que esta tarefa está associada ou sincronizada, de sua aplicação.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="ASANA_ADD_TASK_TO_SECTION">
|
||||
<Accordion title="asana/add_task_to_section">
|
||||
**Descrição:** Adiciona uma tarefa a uma seção no Asana.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -132,14 +132,14 @@ uv add crewai-tools
|
||||
- `afterTaskId` (string, opcional): Após a Tarefa - O ID de uma tarefa nesta seção após a qual esta tarefa será inserida. Não pode ser usada junto com Before Task ID. (exemplo: "1204619611402340").
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="ASANA_GET_TEAMS">
|
||||
<Accordion title="asana/get_teams">
|
||||
**Descrição:** Obtém uma lista de equipes no Asana.
|
||||
|
||||
**Parâmetros:**
|
||||
- `workspace` (string, obrigatório): Área de trabalho - Retorna as equipes nesta área de trabalho visíveis para o usuário autorizado.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="ASANA_GET_WORKSPACES">
|
||||
<Accordion title="asana/get_workspaces">
|
||||
**Descrição:** Obtém uma lista de áreas de trabalho do Asana.
|
||||
|
||||
**Parâmetros:** Nenhum obrigatório.
|
||||
@@ -152,19 +152,13 @@ uv add crewai-tools
|
||||
|
||||
```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]
|
||||
apps=['asana']
|
||||
)
|
||||
|
||||
# Task to create a new project
|
||||
@@ -186,19 +180,12 @@ crew.kickoff()
|
||||
### Filtrando Ferramentas Específicas do 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
|
||||
apps=['asana']
|
||||
)
|
||||
|
||||
# Task to create and assign a task
|
||||
@@ -220,17 +207,12 @@ 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]
|
||||
apps=['asana']
|
||||
)
|
||||
|
||||
# Complex task involving multiple Asana operations
|
||||
|
||||
@@ -25,7 +25,7 @@ Antes de utilizar a integração com o Box, assegure-se de que você possui:
|
||||
2. Encontre **Box** na seção de Integrações de Autenticação
|
||||
3. Clique em **Conectar** e conclua o fluxo de OAuth
|
||||
4. Conceda as permissões necessárias para gerenciamento de arquivos e pastas
|
||||
5. Copie seu Token Enterprise em [Configurações da Conta](https://app.crewai.com/crewai_plus/settings/account)
|
||||
5. Copie seu Token Enterprise em [Configurações de Integração](https://app.crewai.com/crewai_plus/settings/integrations)
|
||||
|
||||
### 2. Instale o pacote necessário
|
||||
|
||||
@@ -36,7 +36,7 @@ uv add crewai-tools
|
||||
## Ações Disponíveis
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="BOX_SAVE_FILE">
|
||||
<Accordion title="box/save_file">
|
||||
**Descrição:** Salva um arquivo a partir de uma URL no Box.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -52,7 +52,7 @@ uv add crewai-tools
|
||||
- `file` (string, obrigatório): URL do arquivo - Os arquivos devem ter menos de 50MB. (exemplo: "https://picsum.photos/200/300").
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="BOX_SAVE_FILE_FROM_OBJECT">
|
||||
<Accordion title="box/save_file_from_object">
|
||||
**Descrição:** Salva um arquivo no Box.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -61,14 +61,14 @@ uv add crewai-tools
|
||||
- `folder` (string, opcional): Pasta - Use as configurações de workflow do Connect Portal para permitir que usuários escolham o destino da pasta. Caso em branco, o padrão é a pasta raiz do usuário.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="BOX_GET_FILE_BY_ID">
|
||||
<Accordion title="box/get_file_by_id">
|
||||
**Descrição:** Obtém um arquivo pelo ID no Box.
|
||||
|
||||
**Parâmetros:**
|
||||
- `fileId` (string, obrigatório): ID do arquivo - Identificador único que representa um arquivo. (exemplo: "12345").
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="BOX_LIST_FILES">
|
||||
<Accordion title="box/list_files">
|
||||
**Descrição:** Lista arquivos no Box.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -93,7 +93,7 @@ uv add crewai-tools
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="BOX_CREATE_FOLDER">
|
||||
<Accordion title="box/create_folder">
|
||||
**Descrição:** Cria uma pasta no Box.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -106,7 +106,7 @@ uv add crewai-tools
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="BOX_MOVE_FOLDER">
|
||||
<Accordion title="box/move_folder">
|
||||
**Descrição:** Move uma pasta no Box.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -120,14 +120,14 @@ uv add crewai-tools
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="BOX_GET_FOLDER_BY_ID">
|
||||
<Accordion title="box/get_folder_by_id">
|
||||
**Descrição:** Obtém uma pasta pelo ID no Box.
|
||||
|
||||
**Parâmetros:**
|
||||
- `folderId` (string, obrigatório): ID da pasta - Identificador único que representa uma pasta. (exemplo: "0").
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="BOX_SEARCH_FOLDERS">
|
||||
<Accordion title="box/search_folders">
|
||||
**Descrição:** Pesquisa pastas no Box.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -152,7 +152,7 @@ uv add crewai-tools
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="BOX_DELETE_FOLDER">
|
||||
<Accordion title="box/delete_folder">
|
||||
**Descrição:** Exclui uma pasta no Box.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -167,19 +167,13 @@ uv add crewai-tools
|
||||
|
||||
```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]
|
||||
apps=['box']
|
||||
)
|
||||
|
||||
# Task to create a folder structure
|
||||
@@ -201,19 +195,12 @@ crew.kickoff()
|
||||
### Filtrando Ferramentas Específicas do 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
|
||||
apps=['box']
|
||||
)
|
||||
|
||||
# Task to organize files
|
||||
@@ -235,17 +222,12 @@ 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]
|
||||
apps=['box']
|
||||
)
|
||||
|
||||
# Complex task involving multiple Box operations
|
||||
|
||||
@@ -25,7 +25,7 @@ Antes de utilizar a integração com o ClickUp, certifique-se de que você possu
|
||||
2. Encontre **ClickUp** na seção Integrações de Autenticação
|
||||
3. Clique em **Conectar** e complete o fluxo OAuth
|
||||
4. Conceda as permissões necessárias para gerenciamento de tarefas e projetos
|
||||
5. Copie seu Token Enterprise das [Configurações da Conta](https://app.crewai.com/crewai_plus/settings/account)
|
||||
5. Copie seu Token Enterprise em [Configurações de Integração](https://app.crewai.com/crewai_plus/settings/integrations)
|
||||
|
||||
### 2. Instale o Pacote Necessário
|
||||
|
||||
@@ -36,7 +36,7 @@ uv add crewai-tools
|
||||
## Ações Disponíveis
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="CLICKUP_SEARCH_TASKS">
|
||||
<Accordion title="clickup/search_tasks">
|
||||
**Descrição:** Busque tarefas no ClickUp utilizando filtros avançados.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -61,7 +61,7 @@ uv add crewai-tools
|
||||
Campos disponíveis: `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">
|
||||
<Accordion title="clickup/get_task_in_list">
|
||||
**Descrição:** Obtenha tarefas em uma lista específica do ClickUp.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -69,7 +69,7 @@ uv add crewai-tools
|
||||
- `taskFilterFormula` (string, opcional): Busque tarefas que correspondam aos filtros especificados. Por exemplo: name=task1.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="CLICKUP_CREATE_TASK">
|
||||
<Accordion title="clickup/create_task">
|
||||
**Descrição:** Crie uma tarefa no ClickUp.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -82,7 +82,7 @@ uv add crewai-tools
|
||||
- `additionalFields` (string, opcional): Campos Adicionais - Especifique campos adicionais para incluir nesta tarefa em formato JSON.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="CLICKUP_UPDATE_TASK">
|
||||
<Accordion title="clickup/update_task">
|
||||
**Descrição:** Atualize uma tarefa no ClickUp.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -96,49 +96,49 @@ uv add crewai-tools
|
||||
- `additionalFields` (string, opcional): Campos Adicionais - Especifique campos adicionais para incluir nesta tarefa em formato JSON.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="CLICKUP_DELETE_TASK">
|
||||
<Accordion title="clickup/delete_task">
|
||||
**Descrição:** Exclua uma tarefa no ClickUp.
|
||||
|
||||
**Parâmetros:**
|
||||
- `taskId` (string, obrigatório): ID da tarefa - O ID da tarefa a ser excluída.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="CLICKUP_GET_LIST">
|
||||
<Accordion title="clickup/get_list">
|
||||
**Descrição:** Obtenha informações da Lista no ClickUp.
|
||||
|
||||
**Parâmetros:**
|
||||
- `spaceId` (string, obrigatório): ID do Espaço - O ID do espaço que contém as listas.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="CLICKUP_GET_CUSTOM_FIELDS_IN_LIST">
|
||||
<Accordion title="clickup/get_custom_fields_in_list">
|
||||
**Descrição:** Obtenha Campos Personalizados em uma Lista no ClickUp.
|
||||
|
||||
**Parâmetros:**
|
||||
- `listId` (string, obrigatório): ID da Lista - O ID da lista da qual obter os campos personalizados.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="CLICKUP_GET_ALL_FIELDS_IN_LIST">
|
||||
<Accordion title="clickup/get_all_fields_in_list">
|
||||
**Descrição:** Obtenha Todos os Campos em uma Lista no ClickUp.
|
||||
|
||||
**Parâmetros:**
|
||||
- `listId` (string, obrigatório): ID da Lista - O ID da lista da qual obter todos os campos.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="CLICKUP_GET_SPACE">
|
||||
<Accordion title="clickup/get_space">
|
||||
**Descrição:** Obtenha informações do Espaço no ClickUp.
|
||||
|
||||
**Parâmetros:**
|
||||
- `spaceId` (string, opcional): ID do Espaço - O ID do espaço a ser recuperado.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="CLICKUP_GET_FOLDERS">
|
||||
<Accordion title="clickup/get_folders">
|
||||
**Descrição:** Obtenha Pastas no ClickUp.
|
||||
|
||||
**Parâmetros:**
|
||||
- `spaceId` (string, obrigatório): ID do Espaço - O ID do espaço que contém as pastas.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="CLICKUP_GET_MEMBER">
|
||||
<Accordion title="clickup/get_member">
|
||||
**Descrição:** Obtenha informações de Membro no ClickUp.
|
||||
|
||||
**Parâmetros:** Nenhum obrigatório.
|
||||
@@ -151,19 +151,13 @@ uv add crewai-tools
|
||||
|
||||
```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]
|
||||
apps=['clickup']
|
||||
)
|
||||
|
||||
# Task to create a new task
|
||||
@@ -185,19 +179,12 @@ crew.kickoff()
|
||||
### Filtrando Ferramentas Específicas do 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
|
||||
apps=['clickup']
|
||||
)
|
||||
|
||||
# Task to manage task workflow
|
||||
@@ -219,17 +206,12 @@ 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]
|
||||
apps=['clickup']
|
||||
)
|
||||
|
||||
# Complex task involving multiple ClickUp operations
|
||||
@@ -256,17 +238,12 @@ 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]
|
||||
apps=['clickup']
|
||||
)
|
||||
|
||||
# Task to analyze and optimize task distribution
|
||||
|
||||
@@ -25,7 +25,7 @@ Antes de usar a integração do GitHub, assegure-se de ter:
|
||||
2. Encontre **GitHub** na seção de Integrações de Autenticação
|
||||
3. Clique em **Conectar** e complete o fluxo OAuth
|
||||
4. Conceda as permissões necessárias para gerenciamento de repositório e issues
|
||||
5. Copie seu Token Enterprise nas [Configurações de Conta](https://app.crewai.com/crewai_plus/settings/account)
|
||||
5. Copie seu Token Enterprise em [Configurações de Integração](https://app.crewai.com/crewai_plus/settings/integrations)
|
||||
|
||||
### 2. Instale o pacote necessário
|
||||
|
||||
@@ -36,7 +36,7 @@ uv add crewai-tools
|
||||
## Ações Disponíveis
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="GITHUB_CREATE_ISSUE">
|
||||
<Accordion title="github/create_issue">
|
||||
**Descrição:** Cria uma issue no GitHub.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -47,7 +47,7 @@ uv add crewai-tools
|
||||
- `assignees` (string, opcional): Responsáveis - Especifique o login dos responsáveis no GitHub como um array de strings para esta issue. (exemplo: `["octocat"]`).
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GITHUB_UPDATE_ISSUE">
|
||||
<Accordion title="github/update_issue">
|
||||
**Descrição:** Atualiza uma issue no GitHub.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -61,7 +61,7 @@ uv add crewai-tools
|
||||
- Opções: `open`, `closed`
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GITHUB_GET_ISSUE_BY_NUMBER">
|
||||
<Accordion title="github/get_issue_by_number">
|
||||
**Descrição:** Obtém uma issue pelo número no GitHub.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -70,7 +70,7 @@ uv add crewai-tools
|
||||
- `issue_number` (string, obrigatório): Número da Issue - Especifique o número da issue a ser buscada.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GITHUB_LOCK_ISSUE">
|
||||
<Accordion title="github/lock_issue">
|
||||
**Descrição:** Bloqueia uma issue no GitHub.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -81,7 +81,7 @@ uv add crewai-tools
|
||||
- Opções: `off-topic`, `too heated`, `resolved`, `spam`
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GITHUB_SEARCH_ISSUE">
|
||||
<Accordion title="github/search_issue">
|
||||
**Descrição:** Busca por issues no GitHub.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -108,7 +108,7 @@ uv add crewai-tools
|
||||
Campos disponíveis: `assignee`, `creator`, `mentioned`, `labels`
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GITHUB_CREATE_RELEASE">
|
||||
<Accordion title="github/create_release">
|
||||
**Descrição:** Cria um release no GitHub.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -126,7 +126,7 @@ uv add crewai-tools
|
||||
- Opções: `true`, `false`
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GITHUB_UPDATE_RELEASE">
|
||||
<Accordion title="github/update_release">
|
||||
**Descrição:** Atualiza um release no GitHub.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -145,7 +145,7 @@ uv add crewai-tools
|
||||
- Opções: `true`, `false`
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GITHUB_GET_RELEASE_BY_ID">
|
||||
<Accordion title="github/get_release_by_id">
|
||||
**Descrição:** Obtém um release por ID no GitHub.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -154,7 +154,7 @@ uv add crewai-tools
|
||||
- `id` (string, obrigatório): ID do Release - Especifique o ID do release a ser recuperado.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GITHUB_GET_RELEASE_BY_TAG_NAME">
|
||||
<Accordion title="github/get_release_by_tag_name">
|
||||
**Descrição:** Obtém um release pelo nome da tag no GitHub.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -163,7 +163,7 @@ uv add crewai-tools
|
||||
- `tag_name` (string, obrigatório): Nome - Especifique o nome da tag do release a ser recuperado. (exemplo: "v1.0.0").
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GITHUB_DELETE_RELEASE">
|
||||
<Accordion title="github/delete_release">
|
||||
**Descrição:** Exclui um release no GitHub.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -179,19 +179,13 @@ uv add crewai-tools
|
||||
|
||||
```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]
|
||||
apps=['github']
|
||||
)
|
||||
|
||||
# Task to create a new issue
|
||||
@@ -213,19 +207,12 @@ crew.kickoff()
|
||||
### Filtrando Ferramentas GitHub Específicas
|
||||
|
||||
```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
|
||||
apps=['github']
|
||||
)
|
||||
|
||||
# Task to manage issue workflow
|
||||
@@ -247,17 +234,12 @@ 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]
|
||||
apps=['github']
|
||||
)
|
||||
|
||||
# Task to create a new release
|
||||
@@ -284,17 +266,12 @@ 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]
|
||||
apps=['github']
|
||||
)
|
||||
|
||||
# Complex task involving multiple GitHub operations
|
||||
|
||||
@@ -25,7 +25,7 @@ Antes de usar a integração com o Gmail, certifique-se de que você possui:
|
||||
2. Encontre **Gmail** na seção de Integrações de Autenticação
|
||||
3. Clique em **Conectar** e conclua o fluxo OAuth
|
||||
4. Conceda as permissões necessárias para o gerenciamento de e-mail e contato
|
||||
5. Copie seu Token Empresarial em [Configurações de Conta](https://app.crewai.com/crewai_plus/settings/account)
|
||||
5. Copie seu Token Empresarial em [Configurações de Integração](https://app.crewai.com/crewai_plus/settings/integrations)
|
||||
|
||||
### 2. Instale o Pacote Necessário
|
||||
|
||||
@@ -36,7 +36,7 @@ uv add crewai-tools
|
||||
## Ações Disponíveis
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="GMAIL_SEND_EMAIL">
|
||||
<Accordion title="gmail/send_email">
|
||||
**Descrição:** Envia um e-mail pelo Gmail.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -59,7 +59,7 @@ uv add crewai-tools
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GMAIL_GET_EMAIL_BY_ID">
|
||||
<Accordion title="gmail/get_email_by_id">
|
||||
**Descrição:** Obtém um e-mail pelo ID no Gmail.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -67,7 +67,7 @@ uv add crewai-tools
|
||||
- `messageId` (string, obrigatório): ID da Mensagem - Especifique o ID da mensagem a ser recuperada.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GMAIL_SEARCH_FOR_EMAIL">
|
||||
<Accordion title="gmail/fetch_emails">
|
||||
**Descrição:** Pesquisa e-mails no Gmail usando filtros avançados.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -98,7 +98,7 @@ uv add crewai-tools
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GMAIL_DELETE_EMAIL">
|
||||
<Accordion title="gmail/delete_email">
|
||||
**Descrição:** Exclui um e-mail no Gmail.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -106,7 +106,7 @@ uv add crewai-tools
|
||||
- `messageId` (string, obrigatório): ID da Mensagem - Especifique o ID da mensagem para enviar para a lixeira.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GMAIL_CREATE_A_CONTACT">
|
||||
<Accordion title="gmail/create_a_contact">
|
||||
**Descrição:** Cria um contato no Gmail.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -126,28 +126,28 @@ uv add crewai-tools
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GMAIL_GET_CONTACT_BY_RESOURCE_NAME">
|
||||
<Accordion title="gmail/get_contact_by_resource_name">
|
||||
**Descrição:** Obtém um contato pelo nome do recurso no Gmail.
|
||||
|
||||
**Parâmetros:**
|
||||
- `resourceName` (string, obrigatório): Nome do Recurso - Especifique o nome do recurso do contato a ser buscado.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GMAIL_SEARCH_FOR_CONTACT">
|
||||
<Accordion title="gmail/search_for_contact">
|
||||
**Descrição:** Pesquisa um contato no Gmail.
|
||||
|
||||
**Parâmetros:**
|
||||
- `searchTerm` (string, obrigatório): Termo - Especifique um termo para buscar correspondências aproximadas ou exatas nos campos nome, apelido, endereços de e-mail, números de telefone ou organizações do contato.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GMAIL_DELETE_CONTACT">
|
||||
<Accordion title="gmail/delete_contact">
|
||||
**Descrição:** Exclui um contato no Gmail.
|
||||
|
||||
**Parâmetros:**
|
||||
- `resourceName` (string, obrigatório): Nome do Recurso - Especifique o nome do recurso do contato a ser excluído.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GMAIL_CREATE_DRAFT">
|
||||
<Accordion title="gmail/create_draft">
|
||||
**Descrição:** Cria um rascunho no Gmail.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -177,19 +177,13 @@ uv add crewai-tools
|
||||
|
||||
```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]
|
||||
apps=['gmail']
|
||||
)
|
||||
|
||||
# Task to send a follow-up email
|
||||
@@ -211,19 +205,12 @@ crew.kickoff()
|
||||
### Filtrando Ferramentas Específicas do 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
|
||||
apps=['gmail']
|
||||
)
|
||||
|
||||
# Task to prepare and send emails
|
||||
@@ -245,17 +232,12 @@ 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]
|
||||
apps=['gmail']
|
||||
)
|
||||
|
||||
# Task to manage contacts
|
||||
@@ -281,17 +263,12 @@ 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]
|
||||
apps=['gmail']
|
||||
)
|
||||
|
||||
# Task to analyze email patterns
|
||||
@@ -317,17 +294,12 @@ 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]
|
||||
apps=['gmail']
|
||||
)
|
||||
|
||||
# Complex task involving multiple Gmail operations
|
||||
|
||||
@@ -25,7 +25,7 @@ Antes de usar a integração com o Google Calendar, certifique-se de ter:
|
||||
2. Encontre **Google Calendar** na seção de Integrações de Autenticação
|
||||
3. Clique em **Conectar** e complete o fluxo OAuth
|
||||
4. Conceda as permissões necessárias para acesso ao calendário e contatos
|
||||
5. Copie seu Token Enterprise nas [Configurações da Conta](https://app.crewai.com/crewai_plus/settings/account)
|
||||
5. Copie seu Token Enterprise em [Configurações de Integração](https://app.crewai.com/crewai_plus/settings/integrations)
|
||||
|
||||
### 2. Instale o Pacote Necessário
|
||||
|
||||
@@ -36,7 +36,7 @@ uv add crewai-tools
|
||||
## Ações Disponíveis
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="GOOGLE_CALENDAR_CREATE_EVENT">
|
||||
<Accordion title="google_calendar/create_event">
|
||||
**Descrição:** Cria um evento no Google Calendar.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -51,7 +51,7 @@ uv add crewai-tools
|
||||
- `includeMeetLink` (boolean, opcional): Incluir link do Google Meet? – Cria automaticamente um link para conferência Google Meet para este evento.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GOOGLE_CALENDAR_UPDATE_EVENT">
|
||||
<Accordion title="google_calendar/update_event">
|
||||
**Descrição:** Atualiza um evento existente no Google Calendar.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -65,7 +65,7 @@ uv add crewai-tools
|
||||
- `eventDescription` (string, opcional): Descrição do evento.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GOOGLE_CALENDAR_LIST_EVENTS">
|
||||
<Accordion title="google_calendar/view_events">
|
||||
**Descrição:** Lista eventos do Google Calendar.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -74,7 +74,7 @@ uv add crewai-tools
|
||||
- `before` (string, opcional): Antes – Filtra eventos que terminam antes da data fornecida (Unix em milissegundos ou timestamp ISO). (exemplo: "2025-04-12T10:00:00Z ou 1712908800000").
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GOOGLE_CALENDAR_GET_EVENT_BY_ID">
|
||||
<Accordion title="google_calendar/get_event_by_id">
|
||||
**Descrição:** Obtém um evento específico pelo ID no Google Calendar.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -82,7 +82,7 @@ uv add crewai-tools
|
||||
- `calendar` (string, opcional): Calendário – Use as Configurações de Workflow do Connect Portal para permitir que o usuário selecione em qual calendário o evento será adicionado. Padrão para o calendário principal do usuário se deixado em branco.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GOOGLE_CALENDAR_DELETE_EVENT">
|
||||
<Accordion title="google_calendar/delete_event">
|
||||
**Descrição:** Exclui um evento do Google Calendar.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -90,7 +90,7 @@ uv add crewai-tools
|
||||
- `calendar` (string, opcional): Calendário – Use as Configurações de Workflow do Connect Portal para permitir que o usuário selecione em qual calendário o evento será adicionado. Padrão para o calendário principal do usuário se deixado em branco.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GOOGLE_CALENDAR_GET_CONTACTS">
|
||||
<Accordion title="google_calendar/get_contacts">
|
||||
**Descrição:** Obtém contatos do Google Calendar.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -102,14 +102,14 @@ uv add crewai-tools
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GOOGLE_CALENDAR_SEARCH_CONTACTS">
|
||||
<Accordion title="google_calendar/search_contacts">
|
||||
**Descrição:** Pesquisa contatos no Google Calendar.
|
||||
|
||||
**Parâmetros:**
|
||||
- `query` (string, opcional): Termo de pesquisa para buscar contatos.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GOOGLE_CALENDAR_LIST_DIRECTORY_PEOPLE">
|
||||
<Accordion title="google_calendar/list_directory_people">
|
||||
**Descrição:** Lista pessoas do diretório.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -121,7 +121,7 @@ uv add crewai-tools
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GOOGLE_CALENDAR_SEARCH_DIRECTORY_PEOPLE">
|
||||
<Accordion title="google_calendar/search_directory_people">
|
||||
**Descrição:** Pesquisa pessoas no diretório.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -134,7 +134,7 @@ uv add crewai-tools
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GOOGLE_CALENDAR_LIST_OTHER_CONTACTS">
|
||||
<Accordion title="google_calendar/list_other_contacts">
|
||||
**Descrição:** Lista outros contatos.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -146,14 +146,14 @@ uv add crewai-tools
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GOOGLE_CALENDAR_SEARCH_OTHER_CONTACTS">
|
||||
<Accordion title="google_calendar/search_other_contacts">
|
||||
**Descrição:** Pesquisa outros contatos.
|
||||
|
||||
**Parâmetros:**
|
||||
- `query` (string, opcional): Termo de pesquisa para buscar contatos.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GOOGLE_CALENDAR_GET_AVAILABILITY">
|
||||
<Accordion title="google_calendar/get_availability">
|
||||
**Descrição:** Obtém informações de disponibilidade para calendários.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -180,19 +180,15 @@ uv add crewai-tools
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
# Obter ferramentas empresariais (as ferramentas do Google Calendar serão incluídas)
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token"
|
||||
)
|
||||
|
||||
# Criar um agente com capacidades do Google Calendar
|
||||
calendar_agent = Agent(
|
||||
role="Schedule Manager",
|
||||
goal="Gerenciar eventos de calendário e agendamento de maneira eficiente",
|
||||
backstory="Um assistente de IA especializado em gerenciamento de agendas e coordenação de horários.",
|
||||
tools=[enterprise_tools]
|
||||
apps=['google_calendar']
|
||||
)
|
||||
|
||||
# Tarefa de criação de reunião
|
||||
@@ -214,19 +210,16 @@ crew.kickoff()
|
||||
### Filtrando Ferramentas Específicas do Calendário
|
||||
|
||||
```python
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
# Obter apenas ferramentas específicas do Google Calendar
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token",
|
||||
actions_list=["google_calendar_create_event", "google_calendar_list_events", "google_calendar_get_availability"]
|
||||
actions_list=["google_calendar/create_event", "google_calendar/view_events", "google_calendar/get_availability"]
|
||||
)
|
||||
|
||||
meeting_coordinator = Agent(
|
||||
role="Meeting Coordinator",
|
||||
goal="Coordenar reuniões e verificar disponibilidade",
|
||||
backstory="Um assistente de IA que foca em agendamento de reuniões e gerenciamento de disponibilidade.",
|
||||
tools=enterprise_tools
|
||||
apps=['google_calendar']
|
||||
)
|
||||
|
||||
# Tarefa para agendar reunião com verificação de disponibilidade
|
||||
@@ -248,17 +241,12 @@ 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="Gerenciar e atualizar eventos de calendário de forma eficiente",
|
||||
backstory="Um experiente gestor de eventos responsável pela logística e atualizações dos eventos.",
|
||||
tools=[enterprise_tools]
|
||||
apps=['google_calendar']
|
||||
)
|
||||
|
||||
# Tarefa para gerenciar atualizações de eventos
|
||||
@@ -284,17 +272,12 @@ 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="Coordenar disponibilidade e gerenciar contatos para agendamento",
|
||||
backstory="Um assistente de IA que se especializa em gerenciamento de disponibilidade e coordenação de contatos.",
|
||||
tools=[enterprise_tools]
|
||||
apps=['google_calendar']
|
||||
)
|
||||
|
||||
# Tarefa de coordenação de disponibilidade
|
||||
@@ -321,17 +304,12 @@ 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="Automatizar workflows de agendamento e gerenciamento de calendários",
|
||||
backstory="Um assistente de IA que automatiza cenários complexos de agendamento e workflows de agenda.",
|
||||
tools=[enterprise_tools]
|
||||
apps=['google_calendar']
|
||||
)
|
||||
|
||||
# Tarefa de automação de agendamento complexo
|
||||
|
||||
286
docs/pt-BR/enterprise/integrations/google_contacts.mdx
Normal file
286
docs/pt-BR/enterprise/integrations/google_contacts.mdx
Normal file
@@ -0,0 +1,286 @@
|
||||
---
|
||||
title: Integração Google Contacts
|
||||
description: "Gerenciamento de contatos e diretório com integração Google Contacts para CrewAI."
|
||||
icon: "address-book"
|
||||
mode: "wide"
|
||||
---
|
||||
|
||||
## Visão Geral
|
||||
|
||||
Permita que seus agentes gerenciem informações de contatos e diretório através do Google Contacts. Acesse contatos pessoais, pesquise pessoas no diretório, crie e atualize informações de contato, e gerencie grupos de contatos com automação alimentada por IA.
|
||||
|
||||
## Pré-requisitos
|
||||
|
||||
Antes de usar a integração Google Contacts, certifique-se de ter:
|
||||
|
||||
- Uma conta [CrewAI AMP](https://app.crewai.com) com assinatura ativa
|
||||
- Uma conta Google com acesso ao Google Contacts
|
||||
- Conectado sua conta Google através da [página de Integrações](https://app.crewai.com/crewai_plus/connectors)
|
||||
|
||||
## Configurando a Integração Google Contacts
|
||||
|
||||
### 1. Conecte sua Conta Google
|
||||
|
||||
1. Navegue para [Integrações CrewAI AMP](https://app.crewai.com/crewai_plus/connectors)
|
||||
2. Encontre **Google Contacts** na seção de Integrações de Autenticação
|
||||
3. Clique em **Conectar** e complete o fluxo OAuth
|
||||
4. Conceda as permissões necessárias para acesso a contatos e diretório
|
||||
5. Copie seu Token Enterprise das [Configurações de Integração](https://app.crewai.com/crewai_plus/settings/integrations)
|
||||
|
||||
### 2. Instale o Pacote Necessário
|
||||
|
||||
```bash
|
||||
uv add crewai-tools
|
||||
```
|
||||
|
||||
## Ações Disponíveis
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="google_contacts/get_contacts">
|
||||
**Descrição:** Recuperar contatos do usuário do Google Contacts.
|
||||
|
||||
**Parâmetros:**
|
||||
- `pageSize` (integer, opcional): Número de contatos a retornar (máx 1000). Mínimo: 1, Máximo: 1000
|
||||
- `pageToken` (string, opcional): O token da página a recuperar.
|
||||
- `personFields` (string, opcional): Campos a incluir (ex: 'names,emailAddresses,phoneNumbers'). Padrão: names,emailAddresses,phoneNumbers
|
||||
- `requestSyncToken` (boolean, opcional): Se a resposta deve incluir um token de sincronização. Padrão: false
|
||||
- `sortOrder` (string, opcional): A ordem na qual as conexões devem ser classificadas. Opções: LAST_MODIFIED_ASCENDING, LAST_MODIFIED_DESCENDING, FIRST_NAME_ASCENDING, LAST_NAME_ASCENDING
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_contacts/search_contacts">
|
||||
**Descrição:** Pesquisar por contatos usando uma string de consulta.
|
||||
|
||||
**Parâmetros:**
|
||||
- `query` (string, obrigatório): String de consulta de pesquisa
|
||||
- `readMask` (string, obrigatório): Campos a ler (ex: 'names,emailAddresses,phoneNumbers')
|
||||
- `pageSize` (integer, opcional): Número de resultados a retornar. Mínimo: 1, Máximo: 30
|
||||
- `pageToken` (string, opcional): Token especificando qual página de resultado retornar.
|
||||
- `sources` (array, opcional): As fontes para pesquisar. Opções: READ_SOURCE_TYPE_CONTACT, READ_SOURCE_TYPE_PROFILE. Padrão: READ_SOURCE_TYPE_CONTACT
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_contacts/list_directory_people">
|
||||
**Descrição:** Listar pessoas no diretório do usuário autenticado.
|
||||
|
||||
**Parâmetros:**
|
||||
- `sources` (array, obrigatório): Fontes de diretório para pesquisar. Opções: DIRECTORY_SOURCE_TYPE_DOMAIN_PROFILE, DIRECTORY_SOURCE_TYPE_DOMAIN_CONTACT. Padrão: DIRECTORY_SOURCE_TYPE_DOMAIN_PROFILE
|
||||
- `pageSize` (integer, opcional): Número de pessoas a retornar. Mínimo: 1, Máximo: 1000
|
||||
- `pageToken` (string, opcional): Token especificando qual página de resultado retornar.
|
||||
- `readMask` (string, opcional): Campos a ler (ex: 'names,emailAddresses')
|
||||
- `requestSyncToken` (boolean, opcional): Se a resposta deve incluir um token de sincronização. Padrão: false
|
||||
- `mergeSources` (array, opcional): Dados adicionais para mesclar nas respostas de pessoas do diretório. Opções: CONTACT
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_contacts/search_directory_people">
|
||||
**Descrição:** Pesquisar por pessoas no diretório.
|
||||
|
||||
**Parâmetros:**
|
||||
- `query` (string, obrigatório): Consulta de pesquisa
|
||||
- `sources` (string, obrigatório): Fontes de diretório (use 'DIRECTORY_SOURCE_TYPE_DOMAIN_PROFILE')
|
||||
- `pageSize` (integer, opcional): Número de resultados a retornar
|
||||
- `readMask` (string, opcional): Campos a ler
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_contacts/list_other_contacts">
|
||||
**Descrição:** Listar outros contatos (não nos contatos pessoais do usuário).
|
||||
|
||||
**Parâmetros:**
|
||||
- `pageSize` (integer, opcional): Número de contatos a retornar. Mínimo: 1, Máximo: 1000
|
||||
- `pageToken` (string, opcional): Token especificando qual página de resultado retornar.
|
||||
- `readMask` (string, opcional): Campos a ler
|
||||
- `requestSyncToken` (boolean, opcional): Se a resposta deve incluir um token de sincronização. Padrão: false
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_contacts/search_other_contacts">
|
||||
**Descrição:** Pesquisar outros contatos.
|
||||
|
||||
**Parâmetros:**
|
||||
- `query` (string, obrigatório): Consulta de pesquisa
|
||||
- `readMask` (string, obrigatório): Campos a ler (ex: 'names,emailAddresses')
|
||||
- `pageSize` (integer, opcional): Número de resultados
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_contacts/get_person">
|
||||
**Descrição:** Obter informações de contato de uma única pessoa por nome do recurso.
|
||||
|
||||
**Parâmetros:**
|
||||
- `resourceName` (string, obrigatório): O nome do recurso da pessoa a obter (ex: 'people/c123456789')
|
||||
- `personFields` (string, opcional): Campos a incluir (ex: 'names,emailAddresses,phoneNumbers'). Padrão: names,emailAddresses,phoneNumbers
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_contacts/create_contact">
|
||||
**Descrição:** Criar um novo contato no catálogo de endereços do usuário.
|
||||
|
||||
**Parâmetros:**
|
||||
- `names` (array, opcional): Nomes da pessoa. Cada item é um objeto com `givenName` (string), `familyName` (string), `displayName` (string).
|
||||
- `emailAddresses` (array, opcional): Endereços de email. Cada item é um objeto com `value` (string, endereço de email) e `type` (string, 'home', 'work', 'other', padrão 'other').
|
||||
- `phoneNumbers` (array, opcional): Números de telefone. Cada item é um objeto com `value` (string, número de telefone) e `type` (string, 'home', 'work', 'mobile', 'other', padrão 'other').
|
||||
- `addresses` (array, opcional): Endereços postais. Cada item é um objeto com `formattedValue` (string, endereço formatado) e `type` (string, 'home', 'work', 'other', padrão 'other').
|
||||
- `organizations` (array, opcional): Organizações/empresas. Cada item é um objeto com `name` (string, nome da organização), `title` (string, cargo) e `type` (string, 'work', 'other', padrão 'work').
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_contacts/update_contact">
|
||||
**Descrição:** Atualizar informações de um contato existente.
|
||||
|
||||
**Parâmetros:**
|
||||
- `resourceName` (string, obrigatório): O nome do recurso da pessoa a atualizar (ex: 'people/c123456789').
|
||||
- `updatePersonFields` (string, obrigatório): Campos a atualizar (ex: 'names,emailAddresses,phoneNumbers').
|
||||
- `names` (array, opcional): Nomes da pessoa. Cada item é um objeto com `givenName` (string), `familyName` (string), `displayName` (string).
|
||||
- `emailAddresses` (array, opcional): Endereços de email. Cada item é um objeto com `value` (string, endereço de email) e `type` (string, 'home', 'work', 'other').
|
||||
- `phoneNumbers` (array, opcional): Números de telefone. Cada item é um objeto com `value` (string, número de telefone) e `type` (string, 'home', 'work', 'mobile', 'other').
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_contacts/delete_contact">
|
||||
**Descrição:** Excluir um contato do catálogo de endereços do usuário.
|
||||
|
||||
**Parâmetros:**
|
||||
- `resourceName` (string, obrigatório): O nome do recurso da pessoa a excluir (ex: 'people/c123456789').
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_contacts/batch_get_people">
|
||||
**Descrição:** Obter informações sobre várias pessoas em uma única solicitação.
|
||||
|
||||
**Parâmetros:**
|
||||
- `resourceNames` (array, obrigatório): Nomes de recursos das pessoas a obter (máx 200 itens).
|
||||
- `personFields` (string, opcional): Campos a incluir (ex: 'names,emailAddresses,phoneNumbers'). Padrão: names,emailAddresses,phoneNumbers
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_contacts/list_contact_groups">
|
||||
**Descrição:** Listar os grupos de contatos (rótulos) do usuário.
|
||||
|
||||
**Parâmetros:**
|
||||
- `pageSize` (integer, opcional): Número de grupos de contatos a retornar. Mínimo: 1, Máximo: 1000
|
||||
- `pageToken` (string, opcional): Token especificando qual página de resultado retornar.
|
||||
- `groupFields` (string, opcional): Campos a incluir (ex: 'name,memberCount,clientData'). Padrão: name,memberCount
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_contacts/get_contact_group">
|
||||
**Descrição:** Obter um grupo de contatos específico por nome do recurso.
|
||||
|
||||
**Parâmetros:**
|
||||
- `resourceName` (string, obrigatório): O nome do recurso do grupo de contatos (ex: 'contactGroups/myContactGroup').
|
||||
- `maxMembers` (integer, opcional): Número máximo de membros a incluir. Mínimo: 0, Máximo: 20000
|
||||
- `groupFields` (string, opcional): Campos a incluir (ex: 'name,memberCount,clientData'). Padrão: name,memberCount
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_contacts/create_contact_group">
|
||||
**Descrição:** Criar um novo grupo de contatos (rótulo).
|
||||
|
||||
**Parâmetros:**
|
||||
- `name` (string, obrigatório): O nome do grupo de contatos.
|
||||
- `clientData` (array, opcional): Dados específicos do cliente. Cada item é um objeto com `key` (string) e `value` (string).
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
## Exemplos de Uso
|
||||
|
||||
### Configuração Básica do Agente Google Contacts
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
# Crie um agente com capacidades do Google Contacts
|
||||
contacts_agent = Agent(
|
||||
role="Gerenciador de Contatos",
|
||||
goal="Gerenciar Google Contacts de forma eficiente",
|
||||
backstory="Um assistente IA especializado em gerenciamento e organização de contatos.",
|
||||
apps=['google_contacts'] # Todas as ações do Google Contacts estarão disponíveis
|
||||
)
|
||||
|
||||
# Tarefa para criar um novo contato
|
||||
create_contact_task = Task(
|
||||
description="Criar um novo contato chamado 'João Silva' com email 'joao.silva@exemplo.com' e telefone '11-98765-4321'",
|
||||
agent=contacts_agent,
|
||||
expected_output="Novo contato criado com sucesso"
|
||||
)
|
||||
|
||||
# Execute a tarefa
|
||||
crew = Crew(
|
||||
agents=[contacts_agent],
|
||||
tasks=[create_contact_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### Pesquisando e Listando Contatos
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
# Crie um agente focado em pesquisar contatos
|
||||
search_agent = Agent(
|
||||
role="Pesquisador de Contatos",
|
||||
goal="Encontrar e recuperar informações de contato",
|
||||
backstory="Um assistente IA habilidoso em pesquisar e listar contatos.",
|
||||
apps=['google_contacts/search_contacts', 'google_contacts/get_contacts']
|
||||
)
|
||||
|
||||
# Tarefa para pesquisar contatos
|
||||
search_task = Task(
|
||||
description="Pesquisar por contatos chamados 'Maria' e listar seus endereços de email e números de telefone.",
|
||||
agent=search_agent,
|
||||
expected_output="Lista de contatos correspondentes a 'Maria' com seus detalhes de email e telefone."
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[search_agent],
|
||||
tasks=[search_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### Gerenciando Grupos de Contatos
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
# Crie um agente para gerenciar grupos de contatos
|
||||
group_manager = Agent(
|
||||
role="Organizador de Grupos de Contatos",
|
||||
goal="Organizar contatos em grupos e gerenciar membros dos grupos",
|
||||
backstory="Um assistente IA especializado em criar e gerenciar grupos do Google Contacts.",
|
||||
apps=['google_contacts/create_contact_group', 'google_contacts/list_contact_groups']
|
||||
)
|
||||
|
||||
# Tarefa para criar um novo grupo de contatos
|
||||
create_group_task = Task(
|
||||
description="Criar um novo grupo de contatos chamado 'Equipe de Marketing' e listar todos os grupos existentes.",
|
||||
agent=group_manager,
|
||||
expected_output="Novo grupo de contatos 'Equipe de Marketing' criado e lista de todos os grupos retornada."
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[group_manager],
|
||||
tasks=[create_group_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
## Solução de Problemas
|
||||
|
||||
### Problemas Comuns
|
||||
|
||||
**Erros de Autenticação**
|
||||
- Certifique-se de que sua conta Google tenha as permissões necessárias para acesso a contatos e diretório.
|
||||
- Verifique se a conexão OAuth inclui todos os escopos necessários para a API Google People.
|
||||
|
||||
**Problemas de Criação/Atualização de Contatos**
|
||||
- Certifique-se de que campos obrigatórios como `email` sejam fornecidos para criação de contatos.
|
||||
- Verifique se o `resourceName` está correto ao atualizar ou excluir contatos.
|
||||
- Confirme se o formato dos dados para `names`, `emailAddresses`, `phoneNumbers`, etc., corresponde às especificações da API.
|
||||
|
||||
**Problemas de Pesquisa e Filtro**
|
||||
- Certifique-se de que os parâmetros de `query` e `readMask` estejam especificados corretamente para `search_contacts` e `search_other_contacts`.
|
||||
- Para pesquisas de diretório, certifique-se de que `sources` esteja definido corretamente (ex: 'DIRECTORY_SOURCE_TYPE_DOMAIN_PROFILE').
|
||||
|
||||
**Gerenciamento de Grupos de Contatos**
|
||||
- Ao criar um grupo de contatos, certifique-se de que o `name` seja fornecido.
|
||||
- Para `get_contact_group`, certifique-se de que o `resourceName` esteja correto.
|
||||
|
||||
### Obtendo Ajuda
|
||||
|
||||
<Card title="Precisa de Ajuda?" icon="headset" href="mailto:support@crewai.com">
|
||||
Entre em contato com nossa equipe de suporte para assistência com configuração ou solução de problemas da integração Google Contacts.
|
||||
</Card>
|
||||
228
docs/pt-BR/enterprise/integrations/google_docs.mdx
Normal file
228
docs/pt-BR/enterprise/integrations/google_docs.mdx
Normal file
@@ -0,0 +1,228 @@
|
||||
---
|
||||
title: Integração Google Docs
|
||||
description: "Criação e edição de documentos com integração Google Docs para CrewAI."
|
||||
icon: "file-lines"
|
||||
mode: "wide"
|
||||
---
|
||||
|
||||
## Visão Geral
|
||||
|
||||
Permita que seus agentes criem, editem e gerenciem documentos do Google Docs com manipulação de texto e formatação. Automatize a criação de documentos, insira e substitua texto, gerencie intervalos de conteúdo e simplifique seus fluxos de trabalho de documentos com automação alimentada por IA.
|
||||
|
||||
## Pré-requisitos
|
||||
|
||||
Antes de usar a integração Google Docs, certifique-se de ter:
|
||||
|
||||
- Uma conta [CrewAI AMP](https://app.crewai.com) com assinatura ativa
|
||||
- Uma conta Google com acesso ao Google Docs
|
||||
- Conectado sua conta Google através da [página de Integrações](https://app.crewai.com/crewai_plus/connectors)
|
||||
|
||||
## Configurando a Integração Google Docs
|
||||
|
||||
### 1. Conecte sua Conta Google
|
||||
|
||||
1. Navegue para [Integrações CrewAI AMP](https://app.crewai.com/crewai_plus/connectors)
|
||||
2. Encontre **Google Docs** na seção de Integrações de Autenticação
|
||||
3. Clique em **Conectar** e complete o fluxo OAuth
|
||||
4. Conceda as permissões necessárias para acesso a documentos
|
||||
5. Copie seu Token Enterprise das [Configurações de Integração](https://app.crewai.com/crewai_plus/settings/integrations)
|
||||
|
||||
### 2. Instale o Pacote Necessário
|
||||
|
||||
```bash
|
||||
uv add crewai-tools
|
||||
```
|
||||
|
||||
## Ações Disponíveis
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="google_docs/create_document">
|
||||
**Descrição:** Criar um novo documento do Google.
|
||||
|
||||
**Parâmetros:**
|
||||
- `title` (string, opcional): O título para o novo documento.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_docs/get_document">
|
||||
**Descrição:** Obter o conteúdo e metadados de um documento do Google.
|
||||
|
||||
**Parâmetros:**
|
||||
- `documentId` (string, obrigatório): O ID do documento a recuperar.
|
||||
- `includeTabsContent` (boolean, opcional): Se deve incluir conteúdo de abas. Padrão: false
|
||||
- `suggestionsViewMode` (string, opcional): O modo de visualização de sugestões a aplicar ao documento. Opções: DEFAULT_FOR_CURRENT_ACCESS, PREVIEW_SUGGESTIONS_ACCEPTED, PREVIEW_WITHOUT_SUGGESTIONS. Padrão: DEFAULT_FOR_CURRENT_ACCESS
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_docs/batch_update">
|
||||
**Descrição:** Aplicar uma ou mais atualizações a um documento do Google.
|
||||
|
||||
**Parâmetros:**
|
||||
- `documentId` (string, obrigatório): O ID do documento a atualizar.
|
||||
- `requests` (array, obrigatório): Uma lista de atualizações a aplicar ao documento. Cada item é um objeto representando uma solicitação.
|
||||
- `writeControl` (object, opcional): Fornece controle sobre como as solicitações de escrita são executadas. Contém `requiredRevisionId` (string) e `targetRevisionId` (string).
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_docs/insert_text">
|
||||
**Descrição:** Inserir texto em um documento do Google em um local específico.
|
||||
|
||||
**Parâmetros:**
|
||||
- `documentId` (string, obrigatório): O ID do documento a atualizar.
|
||||
- `text` (string, obrigatório): O texto a inserir.
|
||||
- `index` (integer, opcional): O índice baseado em zero onde inserir o texto. Padrão: 1
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_docs/replace_text">
|
||||
**Descrição:** Substituir todas as instâncias de texto em um documento do Google.
|
||||
|
||||
**Parâmetros:**
|
||||
- `documentId` (string, obrigatório): O ID do documento a atualizar.
|
||||
- `containsText` (string, obrigatório): O texto a encontrar e substituir.
|
||||
- `replaceText` (string, obrigatório): O texto para substituir.
|
||||
- `matchCase` (boolean, opcional): Se a pesquisa deve respeitar maiúsculas e minúsculas. Padrão: false
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_docs/delete_content_range">
|
||||
**Descrição:** Excluir conteúdo de um intervalo específico em um documento do Google.
|
||||
|
||||
**Parâmetros:**
|
||||
- `documentId` (string, obrigatório): O ID do documento a atualizar.
|
||||
- `startIndex` (integer, obrigatório): O índice inicial do intervalo a excluir.
|
||||
- `endIndex` (integer, obrigatório): O índice final do intervalo a excluir.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_docs/insert_page_break">
|
||||
**Descrição:** Inserir uma quebra de página em um local específico em um documento do Google.
|
||||
|
||||
**Parâmetros:**
|
||||
- `documentId` (string, obrigatório): O ID do documento a atualizar.
|
||||
- `index` (integer, opcional): O índice baseado em zero onde inserir a quebra de página. Padrão: 1
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_docs/create_named_range">
|
||||
**Descrição:** Criar um intervalo nomeado em um documento do Google.
|
||||
|
||||
**Parâmetros:**
|
||||
- `documentId` (string, obrigatório): O ID do documento a atualizar.
|
||||
- `name` (string, obrigatório): O nome para o intervalo nomeado.
|
||||
- `startIndex` (integer, obrigatório): O índice inicial do intervalo.
|
||||
- `endIndex` (integer, obrigatório): O índice final do intervalo.
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
## Exemplos de Uso
|
||||
|
||||
### Configuração Básica do Agente Google Docs
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
# Crie um agente com capacidades do Google Docs
|
||||
docs_agent = Agent(
|
||||
role="Criador de Documentos",
|
||||
goal="Criar e gerenciar documentos do Google Docs de forma eficiente",
|
||||
backstory="Um assistente IA especializado em criação e edição de documentos do Google Docs.",
|
||||
apps=['google_docs'] # Todas as ações do Google Docs estarão disponíveis
|
||||
)
|
||||
|
||||
# Tarefa para criar um novo documento
|
||||
create_doc_task = Task(
|
||||
description="Criar um novo documento do Google intitulado 'Relatório de Status do Projeto'",
|
||||
agent=docs_agent,
|
||||
expected_output="Novo documento do Google 'Relatório de Status do Projeto' criado com sucesso"
|
||||
)
|
||||
|
||||
# Execute a tarefa
|
||||
crew = Crew(
|
||||
agents=[docs_agent],
|
||||
tasks=[create_doc_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### Edição de Texto e Gerenciamento de Conteúdo
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
# Crie um agente focado em edição de texto
|
||||
text_editor = Agent(
|
||||
role="Editor de Documentos",
|
||||
goal="Editar e atualizar conteúdo em documentos do Google Docs",
|
||||
backstory="Um assistente IA habilidoso em edição precisa de texto e gerenciamento de conteúdo.",
|
||||
apps=['google_docs/insert_text', 'google_docs/replace_text', 'google_docs/delete_content_range']
|
||||
)
|
||||
|
||||
# Tarefa para editar conteúdo do documento
|
||||
edit_content_task = Task(
|
||||
description="No documento 'your_document_id', inserir o texto 'Resumo Executivo: ' no início, depois substituir todas as instâncias de 'TODO' por 'CONCLUÍDO'.",
|
||||
agent=text_editor,
|
||||
expected_output="Documento atualizado com novo texto inserido e itens TODO substituídos."
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[text_editor],
|
||||
tasks=[edit_content_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### Operações Avançadas de Documentos
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
# Crie um agente para operações avançadas de documentos
|
||||
document_formatter = Agent(
|
||||
role="Formatador de Documentos",
|
||||
goal="Aplicar formatação avançada e estrutura a documentos do Google",
|
||||
backstory="Um assistente IA que lida com formatação complexa de documentos e organização.",
|
||||
apps=['google_docs/batch_update', 'google_docs/insert_page_break', 'google_docs/create_named_range']
|
||||
)
|
||||
|
||||
# Tarefa para formatar documento
|
||||
format_doc_task = Task(
|
||||
description="No documento 'your_document_id', inserir uma quebra de página na posição 100, criar um intervalo nomeado chamado 'Introdução' para caracteres 1-50, e aplicar atualizações de formatação em lote.",
|
||||
agent=document_formatter,
|
||||
expected_output="Documento formatado com quebra de página, intervalo nomeado e estilo aplicado."
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[document_formatter],
|
||||
tasks=[format_doc_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
## Solução de Problemas
|
||||
|
||||
### Problemas Comuns
|
||||
|
||||
**Erros de Autenticação**
|
||||
- Certifique-se de que sua conta Google tenha as permissões necessárias para acesso ao Google Docs.
|
||||
- Verifique se a conexão OAuth inclui todos os escopos necessários (`https://www.googleapis.com/auth/documents`).
|
||||
|
||||
**Problemas de ID do Documento**
|
||||
- Verifique novamente os IDs dos documentos para correção.
|
||||
- Certifique-se de que o documento existe e está acessível à sua conta.
|
||||
- IDs de documentos podem ser encontrados na URL do Google Docs.
|
||||
|
||||
**Inserção de Texto e Operações de Intervalo**
|
||||
- Ao usar `insert_text` ou `delete_content_range`, certifique-se de que as posições de índice sejam válidas.
|
||||
- Lembre-se de que o Google Docs usa indexação baseada em zero.
|
||||
- O documento deve ter conteúdo nas posições de índice especificadas.
|
||||
|
||||
**Formatação de Solicitação de Atualização em Lote**
|
||||
- Ao usar `batch_update`, certifique-se de que o array `requests` esteja formatado corretamente de acordo com a documentação da API do Google Docs.
|
||||
- Atualizações complexas requerem estruturas JSON específicas para cada tipo de solicitação.
|
||||
|
||||
**Operações de Substituição de Texto**
|
||||
- Para `replace_text`, certifique-se de que o parâmetro `containsText` corresponda exatamente ao texto que você deseja substituir.
|
||||
- Use o parâmetro `matchCase` para controlar a sensibilidade a maiúsculas e minúsculas.
|
||||
|
||||
### Obtendo Ajuda
|
||||
|
||||
<Card title="Precisa de Ajuda?" icon="headset" href="mailto:support@crewai.com">
|
||||
Entre em contato com nossa equipe de suporte para assistência com configuração ou solução de problemas da integração Google Docs.
|
||||
</Card>
|
||||
51
docs/pt-BR/enterprise/integrations/google_drive.mdx
Normal file
51
docs/pt-BR/enterprise/integrations/google_drive.mdx
Normal file
@@ -0,0 +1,51 @@
|
||||
---
|
||||
title: Integração Google Drive
|
||||
description: "Gerenciamento de arquivos e pastas com integração Google Drive para CrewAI."
|
||||
icon: "google"
|
||||
mode: "wide"
|
||||
---
|
||||
|
||||
## Visão Geral
|
||||
|
||||
Permita que seus agentes acessem e gerenciem arquivos e pastas no Google Drive. Faça upload, download, organize conteúdo, crie links de compartilhamento e simplifique seus fluxos de trabalho de armazenamento em nuvem com automação alimentada por IA.
|
||||
|
||||
## Pré-requisitos
|
||||
|
||||
Antes de usar a integração Google Drive, certifique-se de ter:
|
||||
|
||||
- Uma conta [CrewAI AMP](https://app.crewai.com) com assinatura ativa
|
||||
- Uma conta Google com acesso ao Google Drive
|
||||
- Conectado sua conta Google através da [página de Integrações](https://app.crewai.com/crewai_plus/connectors)
|
||||
|
||||
## Configurando a Integração Google Drive
|
||||
|
||||
### 1. Conecte sua Conta Google
|
||||
|
||||
1. Navegue para [Integrações CrewAI AMP](https://app.crewai.com/crewai_plus/connectors)
|
||||
2. Encontre **Google Drive** na seção de Integrações de Autenticação
|
||||
3. Clique em **Conectar** e complete o fluxo OAuth
|
||||
4. Conceda as permissões necessárias para acesso a arquivos
|
||||
5. Copie seu Token Enterprise das [Configurações de Integração](https://app.crewai.com/crewai_plus/settings/integrations)
|
||||
|
||||
### 2. Instale o Pacote Necessário
|
||||
|
||||
```bash
|
||||
uv add crewai-tools
|
||||
```
|
||||
|
||||
## Ações Disponíveis
|
||||
|
||||
Para informações detalhadas sobre parâmetros e uso, consulte a [documentação em inglês](../../../en/enterprise/integrations/google_drive).
|
||||
|
||||
## Solução de Problemas
|
||||
|
||||
### Problemas Comuns
|
||||
|
||||
**Erros de Autenticação**
|
||||
- Certifique-se de que sua conta Google tenha as permissões necessárias para acesso ao Google Drive.
|
||||
|
||||
### Obtendo Ajuda
|
||||
|
||||
<Card title="Precisa de Ajuda?" icon="headset" href="mailto:support@crewai.com">
|
||||
Entre em contato com nossa equipe de suporte para assistência com configuração ou solução de problemas da integração Google Drive.
|
||||
</Card>
|
||||
@@ -26,7 +26,7 @@ Antes de utilizar a integração com o Google Sheets, certifique-se de que você
|
||||
2. Localize **Google Sheets** na seção Integrações de Autenticação
|
||||
3. Clique em **Conectar** e conclua o fluxo OAuth
|
||||
4. Conceda as permissões necessárias para acesso à planilha
|
||||
5. Copie seu Token Enterprise em [Configurações da Conta](https://app.crewai.com/crewai_plus/settings/account)
|
||||
5. Copie seu Token Enterprise em [Configurações de Integração](https://app.crewai.com/crewai_plus/settings/integrations)
|
||||
|
||||
### 2. Instale o Pacote Necessário
|
||||
|
||||
@@ -37,7 +37,7 @@ uv add crewai-tools
|
||||
## Ações Disponíveis
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="GOOGLE_SHEETS_GET_ROW">
|
||||
<Accordion title="google_sheets/get_values">
|
||||
**Descrição:** Obtém linhas de uma planilha Google Sheets.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -45,7 +45,7 @@ uv add crewai-tools
|
||||
- `limit` (string, opcional): Limite de linhas - Limita o número máximo de linhas retornadas.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GOOGLE_SHEETS_CREATE_ROW">
|
||||
<Accordion title="google_sheets/append_values">
|
||||
**Descrição:** Cria uma nova linha em uma planilha Google Sheets.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -62,7 +62,7 @@ uv add crewai-tools
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="GOOGLE_SHEETS_UPDATE_ROW">
|
||||
<Accordion title="google_sheets/update_values">
|
||||
**Descrição:** Atualiza linhas existentes em uma planilha Google Sheets.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -105,19 +105,15 @@ uv add crewai-tools
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
# Obtenha as ferramentas enterprise (ferramentas Google Sheets incluídas)
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token"
|
||||
)
|
||||
|
||||
# Crie um agente com capacidades para Google Sheets
|
||||
sheets_agent = Agent(
|
||||
role="Data Manager",
|
||||
goal="Gerenciar dados de planilha e rastrear informações de maneira eficiente",
|
||||
backstory="Um assistente de IA especializado em gestão de dados e operações em planilhas.",
|
||||
tools=[enterprise_tools]
|
||||
apps=['google_sheets']
|
||||
)
|
||||
|
||||
# Tarefa para adicionar novos dados a uma planilha
|
||||
@@ -139,19 +135,16 @@ crew.kickoff()
|
||||
### Filtrando Ferramentas Específicas do Google Sheets
|
||||
|
||||
```python
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
# Obtenha apenas ferramentas específicas do Google Sheets
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token",
|
||||
actions_list=["google_sheets_get_row", "google_sheets_create_row"]
|
||||
actions_list=["google_sheets/get_values", "google_sheets/update_values"]
|
||||
)
|
||||
|
||||
data_collector = Agent(
|
||||
role="Data Collector",
|
||||
goal="Coletar e organizar dados em planilhas",
|
||||
backstory="Um assistente de IA dedicado à coleta e organização de dados.",
|
||||
tools=enterprise_tools
|
||||
apps=['google_sheets']
|
||||
)
|
||||
|
||||
# Tarefa para coletar e organizar dados
|
||||
@@ -173,17 +166,12 @@ 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="Analisar dados de planilhas e gerar insights",
|
||||
backstory="Um analista de dados experiente que extrai insights dos dados de planilhas.",
|
||||
tools=[enterprise_tools]
|
||||
apps=['google_sheets']
|
||||
)
|
||||
|
||||
# Tarefa para analisar dados e criar relatórios
|
||||
@@ -209,17 +197,12 @@ 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="Atualizar e manter dados de planilhas automaticamente",
|
||||
backstory="Um assistente de IA que mantém a precisão dos dados e atualiza registros automaticamente.",
|
||||
tools=[enterprise_tools]
|
||||
apps=['google_sheets']
|
||||
)
|
||||
|
||||
# Tarefa para atualizar dados com base em condições
|
||||
@@ -246,17 +229,12 @@ 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="Gerenciar fluxos de dados complexos entre várias planilhas",
|
||||
backstory="Um assistente de IA que orquestra operações complexas de dados entre várias planilhas.",
|
||||
tools=[enterprise_tools]
|
||||
apps=['google_sheets']
|
||||
)
|
||||
|
||||
# Tarefa de workflow complexa
|
||||
|
||||
232
docs/pt-BR/enterprise/integrations/google_slides.mdx
Normal file
232
docs/pt-BR/enterprise/integrations/google_slides.mdx
Normal file
@@ -0,0 +1,232 @@
|
||||
---
|
||||
title: Integração Google Slides
|
||||
description: "Criação e gerenciamento de apresentações com integração Google Slides para CrewAI."
|
||||
icon: "chart-bar"
|
||||
mode: "wide"
|
||||
---
|
||||
|
||||
## Visão Geral
|
||||
|
||||
Permita que seus agentes criem, editem e gerenciem apresentações do Google Slides. Crie apresentações, atualize conteúdo, importe dados do Google Sheets, gerencie páginas e miniaturas, e simplifique seus fluxos de trabalho de apresentações com automação alimentada por IA.
|
||||
|
||||
## Pré-requisitos
|
||||
|
||||
Antes de usar a integração Google Slides, certifique-se de ter:
|
||||
|
||||
- Uma conta [CrewAI AMP](https://app.crewai.com) com assinatura ativa
|
||||
- Uma conta Google com acesso ao Google Slides
|
||||
- Conectado sua conta Google através da [página de Integrações](https://app.crewai.com/crewai_plus/connectors)
|
||||
|
||||
## Configurando a Integração Google Slides
|
||||
|
||||
### 1. Conecte sua Conta Google
|
||||
|
||||
1. Navegue para [Integrações CrewAI AMP](https://app.crewai.com/crewai_plus/connectors)
|
||||
2. Encontre **Google Slides** na seção de Integrações de Autenticação
|
||||
3. Clique em **Conectar** e complete o fluxo OAuth
|
||||
4. Conceda as permissões necessárias para acesso a apresentações, planilhas e drive
|
||||
5. Copie seu Token Enterprise das [Configurações de Integração](https://app.crewai.com/crewai_plus/settings/integrations)
|
||||
|
||||
### 2. Instale o Pacote Necessário
|
||||
|
||||
```bash
|
||||
uv add crewai-tools
|
||||
```
|
||||
|
||||
## Ações Disponíveis
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="google_slides/create_blank_presentation">
|
||||
**Descrição:** Cria uma apresentação em branco sem conteúdo.
|
||||
|
||||
**Parâmetros:**
|
||||
- `title` (string, obrigatório): O título da apresentação.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_slides/get_presentation">
|
||||
**Descrição:** Recupera uma apresentação por ID.
|
||||
|
||||
**Parâmetros:**
|
||||
- `presentationId` (string, obrigatório): O ID da apresentação a ser recuperada.
|
||||
- `fields` (string, opcional): Os campos a incluir na resposta. Use isso para melhorar o desempenho retornando apenas os dados necessários.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_slides/batch_update_presentation">
|
||||
**Descrição:** Aplica atualizações, adiciona conteúdo ou remove conteúdo de uma apresentação.
|
||||
|
||||
**Parâmetros:**
|
||||
- `presentationId` (string, obrigatório): O ID da apresentação a ser atualizada.
|
||||
- `requests` (array, obrigatório): Uma lista de atualizações a aplicar à apresentação. Cada item é um objeto representando uma solicitação.
|
||||
- `writeControl` (object, opcional): Fornece controle sobre como as solicitações de escrita são executadas. Contém `requiredRevisionId` (string).
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_slides/get_page">
|
||||
**Descrição:** Recupera uma página específica por seu ID.
|
||||
|
||||
**Parâmetros:**
|
||||
- `presentationId` (string, obrigatório): O ID da apresentação.
|
||||
- `pageObjectId` (string, obrigatório): O ID da página a ser recuperada.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_slides/get_thumbnail">
|
||||
**Descrição:** Gera uma miniatura da página.
|
||||
|
||||
**Parâmetros:**
|
||||
- `presentationId` (string, obrigatório): O ID da apresentação.
|
||||
- `pageObjectId` (string, obrigatório): O ID da página para geração de miniatura.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_slides/import_data_from_sheet">
|
||||
**Descrição:** Importa dados de uma planilha do Google para uma apresentação.
|
||||
|
||||
**Parâmetros:**
|
||||
- `presentationId` (string, obrigatório): O ID da apresentação.
|
||||
- `sheetId` (string, obrigatório): O ID da planilha do Google para importar.
|
||||
- `dataRange` (string, obrigatório): O intervalo de dados a importar da planilha.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_slides/upload_file_to_drive">
|
||||
**Descrição:** Faz upload de um arquivo para o Google Drive associado à apresentação.
|
||||
|
||||
**Parâmetros:**
|
||||
- `file` (string, obrigatório): Os dados do arquivo a fazer upload.
|
||||
- `presentationId` (string, obrigatório): O ID da apresentação para vincular o arquivo carregado.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_slides/link_file_to_presentation">
|
||||
**Descrição:** Vincula um arquivo no Google Drive a uma apresentação.
|
||||
|
||||
**Parâmetros:**
|
||||
- `presentationId` (string, obrigatório): O ID da apresentação.
|
||||
- `fileId` (string, obrigatório): O ID do arquivo a vincular.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_slides/get_all_presentations">
|
||||
**Descrição:** Lista todas as apresentações acessíveis ao usuário.
|
||||
|
||||
**Parâmetros:**
|
||||
- `pageSize` (integer, opcional): O número de apresentações a retornar por página.
|
||||
- `pageToken` (string, opcional): Um token para paginação.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="google_slides/delete_presentation">
|
||||
**Descrição:** Exclui uma apresentação por ID.
|
||||
|
||||
**Parâmetros:**
|
||||
- `presentationId` (string, obrigatório): O ID da apresentação a ser excluída.
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
## Exemplos de Uso
|
||||
|
||||
### Configuração Básica do Agente Google Slides
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
# Crie um agente com capacidades do Google Slides
|
||||
slides_agent = Agent(
|
||||
role="Criador de Apresentações",
|
||||
goal="Criar e gerenciar apresentações do Google Slides de forma eficiente",
|
||||
backstory="Um assistente IA especializado em design de apresentações e gerenciamento de conteúdo.",
|
||||
apps=['google_slides'] # Todas as ações do Google Slides estarão disponíveis
|
||||
)
|
||||
|
||||
# Tarefa para criar uma nova apresentação
|
||||
create_presentation_task = Task(
|
||||
description="Criar uma nova apresentação em branco intitulada 'Relatório de Vendas Trimestral'",
|
||||
agent=slides_agent,
|
||||
expected_output="Nova apresentação 'Relatório de Vendas Trimestral' criada com sucesso"
|
||||
)
|
||||
|
||||
# Execute a tarefa
|
||||
crew = Crew(
|
||||
agents=[slides_agent],
|
||||
tasks=[create_presentation_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### Atualizando Conteúdo da Apresentação
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
# Crie um agente focado em atualizar apresentações
|
||||
updater_agent = Agent(
|
||||
role="Atualizador de Apresentações",
|
||||
goal="Atualizar e modificar apresentações existentes do Google Slides",
|
||||
backstory="Um assistente IA habilidoso em fazer atualizações precisas no conteúdo de apresentações.",
|
||||
apps=['google_slides/batch_update_presentation']
|
||||
)
|
||||
|
||||
# Tarefa para atualizar uma apresentação
|
||||
update_presentation_task = Task(
|
||||
description="Atualizar a apresentação com ID 'your_presentation_id' para adicionar uma nova caixa de texto no primeiro slide com o conteúdo 'Destaques Principais'.",
|
||||
agent=updater_agent,
|
||||
expected_output="Apresentação atualizada com novo conteúdo."
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[updater_agent],
|
||||
tasks=[update_presentation_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
### Importando Dados e Gerenciando Arquivos
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
# Crie um agente para importação de dados e gerenciamento de arquivos
|
||||
data_presenter = Agent(
|
||||
role="Apresentador de Dados",
|
||||
goal="Importar dados para apresentações e gerenciar arquivos vinculados",
|
||||
backstory="Um assistente IA que integra dados de várias fontes em apresentações.",
|
||||
apps=['google_slides/import_data_from_sheet', 'google_slides/upload_file_to_drive']
|
||||
)
|
||||
|
||||
# Tarefa para importar dados de uma planilha
|
||||
import_data_task = Task(
|
||||
description="Importar dados da planilha do Google 'your_sheet_id' intervalo 'A1:C10' para a apresentação 'your_presentation_id'.",
|
||||
agent=data_presenter,
|
||||
expected_output="Dados importados da planilha do Google para a apresentação."
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[data_presenter],
|
||||
tasks=[import_data_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
## Solução de Problemas
|
||||
|
||||
### Problemas Comuns
|
||||
|
||||
**Erros de Autenticação**
|
||||
- Certifique-se de que sua conta Google tenha as permissões necessárias para acesso ao Google Slides e Google Drive.
|
||||
- Verifique se a conexão OAuth inclui todos os escopos necessários.
|
||||
|
||||
**Problemas de ID de Apresentação/Página**
|
||||
- Verifique novamente os IDs de apresentação e IDs de objeto de página para correção.
|
||||
- Certifique-se de que a apresentação ou página existe e está acessível.
|
||||
|
||||
**Formatação de Solicitação de Atualização em Lote**
|
||||
- Ao usar `batch_update_presentation`, certifique-se de que o array `requests` esteja formatado corretamente de acordo com a documentação da API do Google Slides.
|
||||
- Atualizações complexas frequentemente requerem estruturas JSON específicas para cada tipo de solicitação (ex: `createText`, `insertShape`).
|
||||
|
||||
**Problemas de Upload/Vinculação de Arquivos**
|
||||
- Certifique-se de que o conteúdo do `file` esteja fornecido corretamente para `upload_file_to_drive`.
|
||||
- Verifique se o `fileId` está correto ao vincular arquivos a uma apresentação.
|
||||
- Verifique as permissões do Google Drive para acesso a arquivos.
|
||||
|
||||
### Obtendo Ajuda
|
||||
|
||||
<Card title="Precisa de Ajuda?" icon="headset" href="mailto:support@crewai.com">
|
||||
Entre em contato com nossa equipe de suporte para assistência com configuração ou solução de problemas da integração Google Slides.
|
||||
</Card>
|
||||
@@ -25,7 +25,7 @@ Antes de utilizar a integração com o HubSpot, certifique-se de que você possu
|
||||
2. Encontre **HubSpot** na seção de Integrações de Autenticação.
|
||||
3. Clique em **Conectar** e complete o fluxo OAuth.
|
||||
4. Conceda as permissões necessárias para gerenciamento de empresas e contatos.
|
||||
5. Copie o seu Token Enterprise nas [Configurações da Conta](https://app.crewai.com/crewai_plus/settings/account).
|
||||
5. Copie o seu Token Enterprise nas [Configurações de Integração](https://app.crewai.com/crewai_plus/settings/integrations)
|
||||
|
||||
### 2. Instale o Pacote Necessário
|
||||
|
||||
@@ -36,7 +36,7 @@ uv add crewai-tools
|
||||
## Ações Disponíveis
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="HUBSPOT_CREATE_RECORD_COMPANIES">
|
||||
<Accordion title="hubspot/create_company">
|
||||
**Descrição:** Crie um novo registro de empresa no HubSpot.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -101,7 +101,7 @@ uv add crewai-tools
|
||||
- `founded_year` (string, opcional): Ano de fundação.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_CREATE_RECORD_CONTACTS">
|
||||
<Accordion title="hubspot/create_contact">
|
||||
**Descrição:** Crie um novo registro de contato no HubSpot.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -200,7 +200,7 @@ uv add crewai-tools
|
||||
- `hs_googleplusid` (string, opcional): googleplus ID.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_CREATE_RECORD_DEALS">
|
||||
<Accordion title="hubspot/create_deal">
|
||||
**Descrição:** Crie um novo registro de negócio (deal) no HubSpot.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -215,7 +215,7 @@ uv add crewai-tools
|
||||
- `hs_priority` (string, opcional): Prioridade do negócio. Valores disponíveis: `low`, `medium`, `high`.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_CREATE_RECORD_ENGAGEMENTS">
|
||||
<Accordion title="hubspot/create_record_engagements">
|
||||
**Descrição:** Crie um novo engajamento (ex: nota, e-mail, ligação, reunião, tarefa) no HubSpot.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -232,7 +232,7 @@ uv add crewai-tools
|
||||
- `hs_meeting_end_time` (string, opcional): Horário de término da reunião. (Utilizado para `MEETING`)
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_UPDATE_RECORD_COMPANIES">
|
||||
<Accordion title="hubspot/update_company">
|
||||
**Descrição:** Atualize um registro de empresa existente no HubSpot.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -249,7 +249,7 @@ uv add crewai-tools
|
||||
- `description` (string, opcional): Descrição.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_CREATE_RECORD_ANY">
|
||||
<Accordion title="hubspot/create_record_any">
|
||||
**Descrição:** Crie um registro para um tipo de objeto especificado no HubSpot.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -257,7 +257,7 @@ uv add crewai-tools
|
||||
- Parâmetros adicionais dependem do esquema do objeto personalizado.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_UPDATE_RECORD_CONTACTS">
|
||||
<Accordion title="hubspot/update_contact">
|
||||
**Descrição:** Atualize um registro de contato existente no HubSpot.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -271,7 +271,7 @@ uv add crewai-tools
|
||||
- `lifecyclestage` (string, opcional): Estágio no ciclo de vida.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_UPDATE_RECORD_DEALS">
|
||||
<Accordion title="hubspot/update_deal">
|
||||
**Descrição:** Atualize um registro de negócio existente no HubSpot.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -284,7 +284,7 @@ uv add crewai-tools
|
||||
- `dealtype` (string, opcional): Tipo de negócio.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_UPDATE_RECORD_ENGAGEMENTS">
|
||||
<Accordion title="hubspot/update_record_engagements">
|
||||
**Descrição:** Atualize um engajamento existente no HubSpot.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -295,7 +295,7 @@ uv add crewai-tools
|
||||
- `hs_task_status` (string, opcional): Status da tarefa.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_UPDATE_RECORD_ANY">
|
||||
<Accordion title="hubspot/update_record_any">
|
||||
**Descrição:** Atualize um registro para um tipo de objeto especificado no HubSpot.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -304,28 +304,28 @@ uv add crewai-tools
|
||||
- Parâmetros adicionais dependem do esquema do objeto personalizado.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_GET_RECORDS_COMPANIES">
|
||||
<Accordion title="hubspot/list_companies">
|
||||
**Descrição:** Obtenha uma lista de registros de empresas do HubSpot.
|
||||
|
||||
**Parâmetros:**
|
||||
- `paginationParameters` (object, opcional): Use `pageCursor` para buscar páginas subsequentes.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_GET_RECORDS_CONTACTS">
|
||||
<Accordion title="hubspot/list_contacts">
|
||||
**Descrição:** Obtenha uma lista de registros de contatos do HubSpot.
|
||||
|
||||
**Parâmetros:**
|
||||
- `paginationParameters` (object, opcional): Use `pageCursor` para buscar páginas subsequentes.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_GET_RECORDS_DEALS">
|
||||
<Accordion title="hubspot/list_deals">
|
||||
**Descrição:** Obtenha uma lista de registros de negócios do HubSpot.
|
||||
|
||||
**Parâmetros:**
|
||||
- `paginationParameters` (object, opcional): Use `pageCursor` para buscar páginas subsequentes.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_GET_RECORDS_ENGAGEMENTS">
|
||||
<Accordion title="hubspot/get_records_engagements">
|
||||
**Descrição:** Obtenha uma lista de registros de engajamentos do HubSpot.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -333,7 +333,7 @@ uv add crewai-tools
|
||||
- `paginationParameters` (object, opcional): Use `pageCursor` para buscar páginas subsequentes.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_GET_RECORDS_ANY">
|
||||
<Accordion title="hubspot/get_records_any">
|
||||
**Descrição:** Obtenha uma lista de registros de qualquer tipo de objeto no HubSpot.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -341,35 +341,35 @@ uv add crewai-tools
|
||||
- `paginationParameters` (object, opcional): Use `pageCursor` para buscar páginas subsequentes.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_GET_RECORD_BY_ID_COMPANIES">
|
||||
<Accordion title="hubspot/get_company">
|
||||
**Descrição:** Obtenha um registro de empresa pelo seu ID.
|
||||
|
||||
**Parâmetros:**
|
||||
- `recordId` (string, obrigatório): ID da empresa a ser consultada.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_GET_RECORD_BY_ID_CONTACTS">
|
||||
<Accordion title="hubspot/get_contact">
|
||||
**Descrição:** Obtenha um registro de contato pelo seu ID.
|
||||
|
||||
**Parâmetros:**
|
||||
- `recordId` (string, obrigatório): ID do contato a ser consultado.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_GET_RECORD_BY_ID_DEALS">
|
||||
<Accordion title="hubspot/get_deal">
|
||||
**Descrição:** Obtenha um registro de negócio pelo seu ID.
|
||||
|
||||
**Parâmetros:**
|
||||
- `recordId` (string, obrigatório): ID do negócio a ser consultado.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_GET_RECORD_BY_ID_ENGAGEMENTS">
|
||||
<Accordion title="hubspot/get_record_by_id_engagements">
|
||||
**Descrição:** Obtenha um registro de engajamento pelo seu ID.
|
||||
|
||||
**Parâmetros:**
|
||||
- `recordId` (string, obrigatório): ID do engajamento a ser consultado.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_GET_RECORD_BY_ID_ANY">
|
||||
<Accordion title="hubspot/get_record_by_id_any">
|
||||
**Descrição:** Obtenha um registro de qualquer tipo de objeto especificado pelo seu ID.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -377,7 +377,7 @@ uv add crewai-tools
|
||||
- `recordId` (string, obrigatório): ID do registro a ser consultado.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_SEARCH_RECORDS_COMPANIES">
|
||||
<Accordion title="hubspot/search_companies">
|
||||
**Descrição:** Pesquise registros de empresas no HubSpot utilizando uma fórmula de filtro.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -385,7 +385,7 @@ uv add crewai-tools
|
||||
- `paginationParameters` (object, opcional): Use `pageCursor` para buscar páginas subsequentes.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_SEARCH_RECORDS_CONTACTS">
|
||||
<Accordion title="hubspot/search_contacts">
|
||||
**Descrição:** Pesquise registros de contatos no HubSpot utilizando uma fórmula de filtro.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -393,7 +393,7 @@ uv add crewai-tools
|
||||
- `paginationParameters` (object, opcional): Use `pageCursor` para buscar páginas subsequentes.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_SEARCH_RECORDS_DEALS">
|
||||
<Accordion title="hubspot/search_deals">
|
||||
**Descrição:** Pesquise registros de negócios no HubSpot utilizando uma fórmula de filtro.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -401,7 +401,7 @@ uv add crewai-tools
|
||||
- `paginationParameters` (object, opcional): Use `pageCursor` para buscar páginas subsequentes.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_SEARCH_RECORDS_ENGAGEMENTS">
|
||||
<Accordion title="hubspot/search_records_engagements">
|
||||
**Descrição:** Pesquise registros de engajamento no HubSpot utilizando uma fórmula de filtro.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -409,7 +409,7 @@ uv add crewai-tools
|
||||
- `paginationParameters` (object, opcional): Use `pageCursor` para buscar páginas subsequentes.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_SEARCH_RECORDS_ANY">
|
||||
<Accordion title="hubspot/search_records_any">
|
||||
**Descrição:** Pesquise registros de qualquer tipo de objeto no HubSpot.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -418,35 +418,35 @@ uv add crewai-tools
|
||||
- `paginationParameters` (object, opcional): Use `pageCursor` para buscar páginas subsequentes.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_DELETE_RECORD_COMPANIES">
|
||||
<Accordion title="hubspot/delete_record_companies">
|
||||
**Descrição:** Exclua um registro de empresa pelo seu ID.
|
||||
|
||||
**Parâmetros:**
|
||||
- `recordId` (string, obrigatório): ID da empresa a ser excluída.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_DELETE_RECORD_CONTACTS">
|
||||
<Accordion title="hubspot/delete_record_contacts">
|
||||
**Descrição:** Exclua um registro de contato pelo seu ID.
|
||||
|
||||
**Parâmetros:**
|
||||
- `recordId` (string, obrigatório): ID do contato a ser excluído.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_DELETE_RECORD_DEALS">
|
||||
<Accordion title="hubspot/delete_record_deals">
|
||||
**Descrição:** Exclua um registro de negócio pelo seu ID.
|
||||
|
||||
**Parâmetros:**
|
||||
- `recordId` (string, obrigatório): ID do negócio a ser excluído.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_DELETE_RECORD_ENGAGEMENTS">
|
||||
<Accordion title="hubspot/delete_record_engagements">
|
||||
**Descrição:** Exclua um registro de engajamento pelo seu ID.
|
||||
|
||||
**Parâmetros:**
|
||||
- `recordId` (string, obrigatório): ID do engajamento a ser excluído.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_DELETE_RECORD_ANY">
|
||||
<Accordion title="hubspot/delete_record_any">
|
||||
**Descrição:** Exclua um registro de qualquer tipo de objeto especificado pelo seu ID.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -454,7 +454,7 @@ uv add crewai-tools
|
||||
- `recordId` (string, obrigatório): ID do registro a ser excluído.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_GET_CONTACTS_BY_LIST_ID">
|
||||
<Accordion title="hubspot/get_contacts_by_list_id">
|
||||
**Descrição:** Obtenha contatos de uma lista específica pelo seu ID.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -462,7 +462,7 @@ uv add crewai-tools
|
||||
- `paginationParameters` (object, opcional): Use `pageCursor` para páginas subsequentes.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HUBSPOT_DESCRIBE_ACTION_SCHEMA">
|
||||
<Accordion title="hubspot/describe_action_schema">
|
||||
**Descrição:** Obtenha o esquema esperado para um dado tipo de objeto e operação.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -477,19 +477,15 @@ uv add crewai-tools
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
# Obtenha as ferramentas enterprise (ferramentas HubSpot incluídas)
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token"
|
||||
)
|
||||
|
||||
# Crie um agente com capacidades HubSpot
|
||||
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]
|
||||
apps=['hubspot']
|
||||
)
|
||||
|
||||
# Task para criar nova empresa
|
||||
@@ -511,19 +507,16 @@ crew.kickoff()
|
||||
### Filtrando Ferramentas HubSpot Específicas
|
||||
|
||||
```python
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
# Obtenha somente a ferramenta para criar contatos
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token",
|
||||
actions_list=["hubspot_create_record_contacts"]
|
||||
actions_list=["hubspot/create_contact"]
|
||||
)
|
||||
|
||||
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]
|
||||
apps=['hubspot']
|
||||
)
|
||||
|
||||
# Task para criar contato
|
||||
@@ -545,17 +538,12 @@ 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]
|
||||
apps=['hubspot']
|
||||
)
|
||||
|
||||
# Task para gerenciar contatos
|
||||
|
||||
@@ -25,7 +25,7 @@ Antes de usar a integração com o Jira, certifique-se de ter:
|
||||
2. Encontre **Jira** na seção de Integrações de Autenticação
|
||||
3. Clique em **Conectar** e complete o fluxo do OAuth
|
||||
4. Conceda as permissões necessárias para gestão de issues e projetos
|
||||
5. Copie seu Token Enterprise em [Configurações da Conta](https://app.crewai.com/crewai_plus/settings/account)
|
||||
5. Copie seu Token Enterprise em [Configurações de Integração](https://app.crewai.com/crewai_plus/settings/integrations)
|
||||
|
||||
### 2. Instalar o Pacote Necessário
|
||||
|
||||
@@ -36,7 +36,7 @@ uv add crewai-tools
|
||||
## Ações Disponíveis
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="JIRA_CREATE_ISSUE">
|
||||
<Accordion title="jira/create_issue">
|
||||
**Descrição:** Cria uma issue no Jira.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -56,7 +56,7 @@ uv add crewai-tools
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="JIRA_UPDATE_ISSUE">
|
||||
<Accordion title="jira/update_issue">
|
||||
**Descrição:** Atualiza uma issue no Jira.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -71,14 +71,14 @@ uv add crewai-tools
|
||||
- `additionalFields` (string, opcional): Campos Adicionais - Especifique outros campos em formato JSON.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="JIRA_GET_ISSUE_BY_KEY">
|
||||
<Accordion title="jira/get_issue_by_key">
|
||||
**Descrição:** Obtém uma issue pelo identificador no Jira.
|
||||
|
||||
**Parâmetros:**
|
||||
- `issueKey` (string, obrigatório): Chave da Issue (exemplo: "TEST-1234").
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="JIRA_FILTER_ISSUES">
|
||||
<Accordion title="jira/filter_issues">
|
||||
**Descrição:** Busca issues no Jira usando filtros.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -104,7 +104,7 @@ uv add crewai-tools
|
||||
- `limit` (string, opcional): Limitar resultados - Limite máximo de issues retornados. Padrão para 10 se estiver em branco.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="JIRA_SEARCH_BY_JQL">
|
||||
<Accordion title="jira/search_by_jql">
|
||||
**Descrição:** Busca issues no Jira utilizando JQL.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -117,13 +117,13 @@ uv add crewai-tools
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="JIRA_UPDATE_ISSUE_ANY">
|
||||
<Accordion title="jira/update_issue_any">
|
||||
**Descrição:** Atualiza qualquer issue no Jira. Use DESCRIBE_ACTION_SCHEMA para obter o schema de propriedades dessa função.
|
||||
|
||||
**Parâmetros:** Nenhum parâmetro específico - use JIRA_DESCRIBE_ACTION_SCHEMA primeiro para obter o schema esperado.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="JIRA_DESCRIBE_ACTION_SCHEMA">
|
||||
<Accordion title="jira/describe_action_schema">
|
||||
**Descrição:** Obtém o schema esperado para um tipo de issue. Use esta função caso nenhuma outra função atenda ao tipo de issue que deseja operar.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -132,7 +132,7 @@ uv add crewai-tools
|
||||
- `operation` (string, obrigatório): Tipo de Operação, por exemplo CREATE_ISSUE ou UPDATE_ISSUE.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="JIRA_GET_PROJECTS">
|
||||
<Accordion title="jira/get_projects">
|
||||
**Descrição:** Obtém os projetos no Jira.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -144,27 +144,27 @@ uv add crewai-tools
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="JIRA_GET_ISSUE_TYPES_BY_PROJECT">
|
||||
<Accordion title="jira/get_issue_types_by_project">
|
||||
**Descrição:** Obtém os tipos de issues por projeto no Jira.
|
||||
|
||||
**Parâmetros:**
|
||||
- `project` (string, obrigatório): Chave do projeto.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="JIRA_GET_ISSUE_TYPES">
|
||||
<Accordion title="jira/get_issue_types">
|
||||
**Descrição:** Obtém todos os tipos de issues no Jira.
|
||||
|
||||
**Parâmetros:** Nenhum obrigatório.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="JIRA_GET_ISSUE_STATUS_BY_PROJECT">
|
||||
<Accordion title="jira/get_issue_status_by_project">
|
||||
**Descrição:** Obtém os status das issues de um projeto específico.
|
||||
|
||||
**Parâmetros:**
|
||||
- `project` (string, obrigatório): Chave do projeto.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="JIRA_GET_ALL_ASSIGNEES_BY_PROJECT">
|
||||
<Accordion title="jira/get_all_assignees_by_project">
|
||||
**Descrição:** Obtém os responsáveis por um projeto específico.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -178,19 +178,15 @@ uv add crewai-tools
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
# Obtenha as ferramentas enterprise (incluirá ferramentas do Jira)
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token"
|
||||
)
|
||||
|
||||
# Criação de um agente com capacidades Jira
|
||||
jira_agent = Agent(
|
||||
role="Issue Manager",
|
||||
goal="Gerenciar issues do Jira e acompanhar o progresso do projeto de forma eficiente",
|
||||
backstory="Um assistente de IA especializado em rastreamento de issues e gestão de projetos.",
|
||||
tools=[enterprise_tools]
|
||||
apps=['jira']
|
||||
)
|
||||
|
||||
# Tarefa para criar um relatório de bug
|
||||
@@ -212,19 +208,16 @@ crew.kickoff()
|
||||
### Filtrando Ferramentas Jira Específicas
|
||||
|
||||
```python
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
# Obtenha apenas ferramentas Jira específicas
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token",
|
||||
actions_list=["jira_create_issue", "jira_update_issue", "jira_search_by_jql"]
|
||||
actions_list=["jira/create_issue", "jira/update_issue", "jira/search_by_jql"]
|
||||
)
|
||||
|
||||
issue_coordinator = Agent(
|
||||
role="Issue Coordinator",
|
||||
goal="Criar e gerenciar issues Jira de forma eficiente",
|
||||
backstory="Um assistente de IA focado na criação e gestão de issues.",
|
||||
tools=enterprise_tools
|
||||
apps=['jira']
|
||||
)
|
||||
|
||||
# Tarefa para gerenciar workflow de issues
|
||||
@@ -246,17 +239,12 @@ 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="Analisar dados de projetos e gerar insights a partir do Jira",
|
||||
backstory="Um analista de projetos experiente que extrai insights de dados de gestão de projetos.",
|
||||
tools=[enterprise_tools]
|
||||
apps=['jira']
|
||||
)
|
||||
|
||||
# Tarefa para analisar status do projeto
|
||||
@@ -283,17 +271,12 @@ 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="Automatizar gestão de issues e processos de workflow",
|
||||
backstory="Um assistente de IA que automatiza tarefas repetitivas de gestão de issues.",
|
||||
tools=[enterprise_tools]
|
||||
apps=['jira']
|
||||
)
|
||||
|
||||
# Tarefa para automatizar gestão de issues
|
||||
@@ -321,17 +304,12 @@ 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="Executar operações complexas no Jira usando schemas dinâmicos",
|
||||
backstory="Um assistente de IA que manipula schemas dinâmicos e tipos de issues customizadas do Jira.",
|
||||
tools=[enterprise_tools]
|
||||
apps=['jira']
|
||||
)
|
||||
|
||||
# Tarefa usando operações baseadas em schema
|
||||
|
||||
@@ -25,7 +25,7 @@ Antes de utilizar a integração com o Linear, certifique-se de que você possui
|
||||
2. Encontre **Linear** na seção Integrações de Autenticação
|
||||
3. Clique em **Conectar** e complete o fluxo OAuth
|
||||
4. Conceda as permissões necessárias para gerenciamento de issues e projetos
|
||||
5. Copie seu Token Empresarial em [Configurações da Conta](https://app.crewai.com/crewai_plus/settings/account)
|
||||
5. Copie seu Token Empresarial em [Configurações de Integração](https://app.crewai.com/crewai_plus/settings/integrations)
|
||||
|
||||
### 2. Instale o Pacote Necessário
|
||||
|
||||
@@ -36,7 +36,7 @@ uv add crewai-tools
|
||||
## Ações Disponíveis
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="LINEAR_CREATE_ISSUE">
|
||||
<Accordion title="linear/create_issue">
|
||||
**Descrição:** Crie uma nova issue no Linear.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -56,7 +56,7 @@ uv add crewai-tools
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="LINEAR_UPDATE_ISSUE">
|
||||
<Accordion title="linear/update_issue">
|
||||
**Descrição:** Atualize uma issue no Linear.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -76,21 +76,21 @@ uv add crewai-tools
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="LINEAR_GET_ISSUE_BY_ID">
|
||||
<Accordion title="linear/get_issue_by_id">
|
||||
**Descrição:** Obtenha uma issue pelo ID no Linear.
|
||||
|
||||
**Parâmetros:**
|
||||
- `issueId` (string, obrigatório): ID da Issue - Especifique o ID do registro da issue a ser buscada. (exemplo: "90fbc706-18cd-42c9-ae66-6bd344cc8977").
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="LINEAR_GET_ISSUE_BY_ISSUE_IDENTIFIER">
|
||||
<Accordion title="linear/get_issue_by_issue_identifier">
|
||||
**Descrição:** Obtenha uma issue através do identificador da issue no Linear.
|
||||
|
||||
**Parâmetros:**
|
||||
- `externalId` (string, obrigatório): ID Externo - Especifique o identificador legível da issue a ser buscada. (exemplo: "ABC-1").
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="LINEAR_SEARCH_ISSUE">
|
||||
<Accordion title="linear/search_issue">
|
||||
**Descrição:** Pesquise issues no Linear.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -117,21 +117,21 @@ uv add crewai-tools
|
||||
Operadores disponíveis: `$stringExactlyMatches`, `$stringDoesNotExactlyMatch`, `$stringIsIn`, `$stringIsNotIn`, `$stringStartsWith`, `$stringDoesNotStartWith`, `$stringEndsWith`, `$stringDoesNotEndWith`, `$stringContains`, `$stringDoesNotContain`, `$stringGreaterThan`, `$stringLessThan`, `$numberGreaterThanOrEqualTo`, `$numberLessThanOrEqualTo`, `$numberGreaterThan`, `$numberLessThan`, `$dateTimeAfter`, `$dateTimeBefore`
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="LINEAR_DELETE_ISSUE">
|
||||
<Accordion title="linear/delete_issue">
|
||||
**Descrição:** Exclua uma issue no Linear.
|
||||
|
||||
**Parâmetros:**
|
||||
- `issueId` (string, obrigatório): ID da Issue - Especifique o ID do registro da issue a ser excluída. (exemplo: "90fbc706-18cd-42c9-ae66-6bd344cc8977").
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="LINEAR_ARCHIVE_ISSUE">
|
||||
<Accordion title="linear/archive_issue">
|
||||
**Descrição:** Arquive uma issue no Linear.
|
||||
|
||||
**Parâmetros:**
|
||||
- `issueId` (string, obrigatório): ID da Issue - Especifique o ID do registro da issue a ser arquivada. (exemplo: "90fbc706-18cd-42c9-ae66-6bd344cc8977").
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="LINEAR_CREATE_SUB_ISSUE">
|
||||
<Accordion title="linear/create_sub_issue">
|
||||
**Descrição:** Crie uma sub-issue no Linear.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -147,7 +147,7 @@ uv add crewai-tools
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="LINEAR_CREATE_PROJECT">
|
||||
<Accordion title="linear/create_project">
|
||||
**Descrição:** Crie um novo projeto no Linear.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -169,7 +169,7 @@ uv add crewai-tools
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="LINEAR_UPDATE_PROJECT">
|
||||
<Accordion title="linear/update_project">
|
||||
**Descrição:** Atualize um projeto no Linear.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -185,21 +185,21 @@ uv add crewai-tools
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="LINEAR_GET_PROJECT_BY_ID">
|
||||
<Accordion title="linear/get_project_by_id">
|
||||
**Descrição:** Obtenha um projeto pelo ID no Linear.
|
||||
|
||||
**Parâmetros:**
|
||||
- `projectId` (string, obrigatório): ID do Projeto - Especifique o ID do projeto a ser buscado. (exemplo: "a6634484-6061-4ac7-9739-7dc5e52c796b").
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="LINEAR_DELETE_PROJECT">
|
||||
<Accordion title="linear/delete_project">
|
||||
**Descrição:** Exclua um projeto no Linear.
|
||||
|
||||
**Parâmetros:**
|
||||
- `projectId` (string, obrigatório): ID do Projeto - Especifique o ID do projeto a ser excluído. (exemplo: "a6634484-6061-4ac7-9739-7dc5e52c796b").
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="LINEAR_SEARCH_TEAMS">
|
||||
<Accordion title="linear/search_teams">
|
||||
**Descrição:** Pesquise equipes no Linear.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -231,19 +231,15 @@ uv add crewai-tools
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
# Obtenha ferramentas empresariais (ferramentas do Linear serão incluídas)
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token"
|
||||
)
|
||||
|
||||
# Crie um agente com funcionalidades do Linear
|
||||
linear_agent = Agent(
|
||||
role="Development Manager",
|
||||
goal="Gerenciar issues do Linear e acompanhar o progresso do desenvolvimento de forma eficiente",
|
||||
backstory="Um assistente de IA especializado em gerenciamento de projetos de desenvolvimento de software.",
|
||||
tools=[enterprise_tools]
|
||||
apps=['linear']
|
||||
)
|
||||
|
||||
# Tarefa para criar um relatório de bug
|
||||
@@ -265,19 +261,16 @@ crew.kickoff()
|
||||
### Filtrando Ferramentas Lineares Específicas
|
||||
|
||||
```python
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
# Obtenha apenas ferramentas lineares específicas
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token",
|
||||
actions_list=["linear_create_issue", "linear_update_issue", "linear_search_issue"]
|
||||
actions_list=["linear/create_issue", "linear/update_issue", "linear/search_issue"]
|
||||
)
|
||||
|
||||
issue_manager = Agent(
|
||||
role="Issue Manager",
|
||||
goal="Criar e gerenciar issues no Linear de forma eficiente",
|
||||
backstory="Um assistente de IA focado na criação e no gerenciamento do ciclo de vida de issues.",
|
||||
tools=enterprise_tools
|
||||
apps=['linear']
|
||||
)
|
||||
|
||||
# Tarefa para gerenciar fluxo de issues
|
||||
@@ -299,17 +292,12 @@ 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="Coordenar projetos e equipes no Linear de forma eficiente",
|
||||
backstory="Um coordenador de projetos experiente que gerencia ciclos de desenvolvimento e fluxos de trabalho de equipe.",
|
||||
tools=[enterprise_tools]
|
||||
apps=['linear']
|
||||
)
|
||||
|
||||
# Tarefa para coordenar a configuração de projeto
|
||||
@@ -336,17 +324,12 @@ 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="Organizar issues complexas em sub-tarefas gerenciáveis",
|
||||
backstory="Um assistente de IA que divide trabalhos de desenvolvimento complexos em sub-tarefas organizadas.",
|
||||
tools=[enterprise_tools]
|
||||
apps=['linear']
|
||||
)
|
||||
|
||||
# Tarefa para criar hierarquia de issues
|
||||
@@ -373,17 +356,12 @@ 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="Automatizar processos de fluxo de trabalho de desenvolvimento no Linear",
|
||||
backstory="Um assistente de IA que automatiza tarefas repetitivas de fluxo de trabalho de desenvolvimento.",
|
||||
tools=[enterprise_tools]
|
||||
apps=['linear']
|
||||
)
|
||||
|
||||
# Tarefa de automação de workflow complexa
|
||||
|
||||
234
docs/pt-BR/enterprise/integrations/microsoft_excel.mdx
Normal file
234
docs/pt-BR/enterprise/integrations/microsoft_excel.mdx
Normal file
@@ -0,0 +1,234 @@
|
||||
---
|
||||
title: Integração Microsoft Excel
|
||||
description: "Gerenciamento de pastas de trabalho e dados com integração Microsoft Excel para CrewAI."
|
||||
icon: "table"
|
||||
mode: "wide"
|
||||
---
|
||||
|
||||
## Visão Geral
|
||||
|
||||
Permita que seus agentes criem e gerenciem pastas de trabalho, planilhas, tabelas e gráficos do Excel no OneDrive ou SharePoint. Manipule intervalos de dados, crie visualizações, gerencie tabelas e simplifique seus fluxos de trabalho de planilhas com automação alimentada por IA.
|
||||
|
||||
## Pré-requisitos
|
||||
|
||||
Antes de usar a integração Microsoft Excel, certifique-se de ter:
|
||||
|
||||
- Uma conta [CrewAI AMP](https://app.crewai.com) com assinatura ativa
|
||||
- Uma conta Microsoft 365 com acesso ao Excel e OneDrive/SharePoint
|
||||
- Conectado sua conta Microsoft através da [página de Integrações](https://app.crewai.com/crewai_plus/connectors)
|
||||
|
||||
## Configurando a Integração Microsoft Excel
|
||||
|
||||
### 1. Conecte sua Conta Microsoft
|
||||
|
||||
1. Navegue para [Integrações CrewAI AMP](https://app.crewai.com/crewai_plus/connectors)
|
||||
2. Encontre **Microsoft Excel** na seção de Integrações de Autenticação
|
||||
3. Clique em **Conectar** e complete o fluxo OAuth
|
||||
4. Conceda as permissões necessárias para acesso a arquivos e pastas de trabalho do Excel
|
||||
5. Copie seu Token Enterprise das [Configurações de Integração](https://app.crewai.com/crewai_plus/settings/integrations)
|
||||
|
||||
### 2. Instale o Pacote Necessário
|
||||
|
||||
```bash
|
||||
uv add crewai-tools
|
||||
```
|
||||
|
||||
## Ações Disponíveis
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="microsoft_excel/create_workbook">
|
||||
**Descrição:** Criar uma nova pasta de trabalho do Excel no OneDrive ou SharePoint.
|
||||
|
||||
**Parâmetros:**
|
||||
- `file_path` (string, obrigatório): Caminho onde criar a pasta de trabalho (ex: 'MinhaPastaDeTrabalho.xlsx')
|
||||
- `worksheets` (array, opcional): Planilhas iniciais para criar. Cada item é um objeto com `name` (string, nome da planilha).
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_excel/get_workbooks">
|
||||
**Descrição:** Obter todas as pastas de trabalho do Excel do OneDrive ou SharePoint.
|
||||
|
||||
**Parâmetros:**
|
||||
- `select` (string, opcional): Selecionar propriedades específicas para retornar.
|
||||
- `filter` (string, opcional): Filtrar resultados usando sintaxe OData.
|
||||
- `expand` (string, opcional): Expandir recursos relacionados inline.
|
||||
- `top` (integer, opcional): Número de itens a retornar (mín 1, máx 999).
|
||||
- `orderby` (string, opcional): Ordenar resultados por propriedades especificadas.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_excel/get_worksheets">
|
||||
**Descrição:** Obter todas as planilhas em uma pasta de trabalho do Excel.
|
||||
|
||||
**Parâmetros:**
|
||||
- `file_id` (string, obrigatório): O ID do arquivo Excel.
|
||||
- `select` (string, opcional): Selecionar propriedades específicas para retornar (ex: 'id,name,position').
|
||||
- `filter` (string, opcional): Filtrar resultados usando sintaxe OData.
|
||||
- `expand` (string, opcional): Expandir recursos relacionados inline.
|
||||
- `top` (integer, opcional): Número de itens a retornar (mín 1, máx 999).
|
||||
- `orderby` (string, opcional): Ordenar resultados por propriedades especificadas.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_excel/create_worksheet">
|
||||
**Descrição:** Criar uma nova planilha em uma pasta de trabalho do Excel.
|
||||
|
||||
**Parâmetros:**
|
||||
- `file_id` (string, obrigatório): O ID do arquivo Excel.
|
||||
- `name` (string, obrigatório): Nome da nova planilha.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_excel/get_range_data">
|
||||
**Descrição:** Obter dados de um intervalo específico em uma planilha do Excel.
|
||||
|
||||
**Parâmetros:**
|
||||
- `file_id` (string, obrigatório): O ID do arquivo Excel.
|
||||
- `worksheet_name` (string, obrigatório): Nome da planilha.
|
||||
- `range` (string, obrigatório): Endereço do intervalo (ex: 'A1:C10').
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_excel/update_range_data">
|
||||
**Descrição:** Atualizar dados em um intervalo específico em uma planilha do Excel.
|
||||
|
||||
**Parâmetros:**
|
||||
- `file_id` (string, obrigatório): O ID do arquivo Excel.
|
||||
- `worksheet_name` (string, obrigatório): Nome da planilha.
|
||||
- `range` (string, obrigatório): Endereço do intervalo (ex: 'A1:C10').
|
||||
- `values` (array, obrigatório): Array 2D de valores para definir no intervalo. Cada array interno representa uma linha, e elementos podem ser string, number ou integer.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_excel/add_table">
|
||||
**Descrição:** Criar uma tabela em uma planilha do Excel.
|
||||
|
||||
**Parâmetros:**
|
||||
- `file_id` (string, obrigatório): O ID do arquivo Excel.
|
||||
- `worksheet_name` (string, obrigatório): Nome da planilha.
|
||||
- `range` (string, obrigatório): Intervalo para a tabela (ex: 'A1:D10').
|
||||
- `has_headers` (boolean, opcional): Se a primeira linha contém cabeçalhos. Padrão: true.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_excel/get_tables">
|
||||
**Descrição:** Obter todas as tabelas em uma planilha do Excel.
|
||||
|
||||
**Parâmetros:**
|
||||
- `file_id` (string, obrigatório): O ID do arquivo Excel.
|
||||
- `worksheet_name` (string, obrigatório): Nome da planilha.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_excel/add_table_row">
|
||||
**Descrição:** Adicionar uma nova linha a uma tabela do Excel.
|
||||
|
||||
**Parâmetros:**
|
||||
- `file_id` (string, obrigatório): O ID do arquivo Excel.
|
||||
- `worksheet_name` (string, obrigatório): Nome da planilha.
|
||||
- `table_name` (string, obrigatório): Nome da tabela.
|
||||
- `values` (array, obrigatório): Array de valores para a nova linha. Elementos podem ser string, number ou integer.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_excel/create_chart">
|
||||
**Descrição:** Criar um gráfico em uma planilha do Excel.
|
||||
|
||||
**Parâmetros:**
|
||||
- `file_id` (string, obrigatório): O ID do arquivo Excel.
|
||||
- `worksheet_name` (string, obrigatório): Nome da planilha.
|
||||
- `chart_type` (string, obrigatório): Tipo de gráfico (ex: 'ColumnClustered', 'Line', 'Pie').
|
||||
- `source_data` (string, obrigatório): Intervalo de dados para o gráfico (ex: 'A1:B10').
|
||||
- `series_by` (string, opcional): Como interpretar os dados ('Auto', 'Columns' ou 'Rows'). Padrão: 'Auto'.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_excel/get_cell">
|
||||
**Descrição:** Obter o valor de uma única célula em uma planilha do Excel.
|
||||
|
||||
**Parâmetros:**
|
||||
- `file_id` (string, obrigatório): O ID do arquivo Excel.
|
||||
- `worksheet_name` (string, obrigatório): Nome da planilha.
|
||||
- `row` (integer, obrigatório): Número da linha (baseado em 0).
|
||||
- `column` (integer, obrigatório): Número da coluna (baseado em 0).
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_excel/get_used_range">
|
||||
**Descrição:** Obter o intervalo usado de uma planilha do Excel (contém todos os dados).
|
||||
|
||||
**Parâmetros:**
|
||||
- `file_id` (string, obrigatório): O ID do arquivo Excel.
|
||||
- `worksheet_name` (string, obrigatório): Nome da planilha.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_excel/list_charts">
|
||||
**Descrição:** Obter todos os gráficos em uma planilha do Excel.
|
||||
|
||||
**Parâmetros:**
|
||||
- `file_id` (string, obrigatório): O ID do arquivo Excel.
|
||||
- `worksheet_name` (string, obrigatório): Nome da planilha.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_excel/delete_worksheet">
|
||||
**Descrição:** Excluir uma planilha de uma pasta de trabalho do Excel.
|
||||
|
||||
**Parâmetros:**
|
||||
- `file_id` (string, obrigatório): O ID do arquivo Excel.
|
||||
- `worksheet_name` (string, obrigatório): Nome da planilha a excluir.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_excel/delete_table">
|
||||
**Descrição:** Excluir uma tabela de uma planilha do Excel.
|
||||
|
||||
**Parâmetros:**
|
||||
- `file_id` (string, obrigatório): O ID do arquivo Excel.
|
||||
- `worksheet_name` (string, obrigatório): Nome da planilha.
|
||||
- `table_name` (string, obrigatório): Nome da tabela a excluir.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_excel/list_names">
|
||||
**Descrição:** Obter todos os intervalos nomeados em uma pasta de trabalho do Excel.
|
||||
|
||||
**Parâmetros:**
|
||||
- `file_id` (string, obrigatório): O ID do arquivo Excel.
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
## Exemplos de Uso
|
||||
|
||||
### Configuração Básica do Agente Microsoft Excel
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
# Crie um agente com capacidades do Microsoft Excel
|
||||
excel_agent = Agent(
|
||||
role="Gerenciador de Dados Excel",
|
||||
goal="Gerenciar pastas de trabalho e dados do Excel de forma eficiente",
|
||||
backstory="Um assistente IA especializado em operações do Microsoft Excel e manipulação de dados.",
|
||||
apps=['microsoft_excel'] # Todas as ações do Excel estarão disponíveis
|
||||
)
|
||||
|
||||
# Tarefa para criar uma nova pasta de trabalho
|
||||
create_workbook_task = Task(
|
||||
description="Criar uma nova pasta de trabalho do Excel chamada 'RelatorioMensal.xlsx' com uma planilha inicial chamada 'DadosVendas'.",
|
||||
agent=excel_agent,
|
||||
expected_output="Nova pasta de trabalho 'RelatorioMensal.xlsx' criada com planilha 'DadosVendas'."
|
||||
)
|
||||
|
||||
# Execute a tarefa
|
||||
crew = Crew(
|
||||
agents=[excel_agent],
|
||||
tasks=[create_workbook_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
## Solução de Problemas
|
||||
|
||||
### Problemas Comuns
|
||||
|
||||
**Erros de Autenticação**
|
||||
- Certifique-se de que sua conta Microsoft tenha as permissões necessárias para acesso a arquivos (ex: `Files.Read.All`, `Files.ReadWrite.All`).
|
||||
- Verifique se a conexão OAuth inclui todos os escopos necessários.
|
||||
|
||||
**Problemas de Criação de Arquivos**
|
||||
- Ao criar pastas de trabalho, certifique-se de que o `file_path` termine com extensão `.xlsx`.
|
||||
- Verifique se você tem permissões de escrita no local de destino (OneDrive/SharePoint).
|
||||
|
||||
### Obtendo Ajuda
|
||||
|
||||
<Card title="Precisa de Ajuda?" icon="headset" href="mailto:support@crewai.com">
|
||||
Entre em contato com nossa equipe de suporte para assistência com configuração ou solução de problemas da integração Microsoft Excel.
|
||||
</Card>
|
||||
175
docs/pt-BR/enterprise/integrations/microsoft_onedrive.mdx
Normal file
175
docs/pt-BR/enterprise/integrations/microsoft_onedrive.mdx
Normal file
@@ -0,0 +1,175 @@
|
||||
---
|
||||
title: Integração Microsoft OneDrive
|
||||
description: "Gerenciamento de arquivos e pastas com integração Microsoft OneDrive para CrewAI."
|
||||
icon: "cloud"
|
||||
mode: "wide"
|
||||
---
|
||||
|
||||
## Visão Geral
|
||||
|
||||
Permita que seus agentes façam upload, download e gerenciem arquivos e pastas no Microsoft OneDrive. Automatize operações de arquivos, organize conteúdo, crie links de compartilhamento e simplifique seus fluxos de trabalho de armazenamento em nuvem com automação alimentada por IA.
|
||||
|
||||
## Pré-requisitos
|
||||
|
||||
Antes de usar a integração Microsoft OneDrive, certifique-se de ter:
|
||||
|
||||
- Uma conta [CrewAI AMP](https://app.crewai.com) com assinatura ativa
|
||||
- Uma conta Microsoft com acesso ao OneDrive
|
||||
- Conectado sua conta Microsoft através da [página de Integrações](https://app.crewai.com/crewai_plus/connectors)
|
||||
|
||||
## Configurando a Integração Microsoft OneDrive
|
||||
|
||||
### 1. Conecte sua Conta Microsoft
|
||||
|
||||
1. Navegue para [Integrações CrewAI AMP](https://app.crewai.com/crewai_plus/connectors)
|
||||
2. Encontre **Microsoft OneDrive** na seção de Integrações de Autenticação
|
||||
3. Clique em **Conectar** e complete o fluxo OAuth
|
||||
4. Conceda as permissões necessárias para acesso a arquivos
|
||||
5. Copie seu Token Enterprise das [Configurações de Integração](https://app.crewai.com/crewai_plus/settings/integrations)
|
||||
|
||||
### 2. Instale o Pacote Necessário
|
||||
|
||||
```bash
|
||||
uv add crewai-tools
|
||||
```
|
||||
|
||||
## Ações Disponíveis
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="microsoft_onedrive/list_files">
|
||||
**Descrição:** Listar arquivos e pastas no OneDrive.
|
||||
|
||||
**Parâmetros:**
|
||||
- `top` (integer, opcional): Número de itens a recuperar (máx 1000). Padrão: 50.
|
||||
- `orderby` (string, opcional): Ordenar por campo (ex: "name asc", "lastModifiedDateTime desc"). Padrão: "name asc".
|
||||
- `filter` (string, opcional): Expressão de filtro OData.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_onedrive/get_file_info">
|
||||
**Descrição:** Obter informações sobre um arquivo ou pasta específica.
|
||||
|
||||
**Parâmetros:**
|
||||
- `item_id` (string, obrigatório): O ID do arquivo ou pasta.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_onedrive/download_file">
|
||||
**Descrição:** Baixar um arquivo do OneDrive.
|
||||
|
||||
**Parâmetros:**
|
||||
- `item_id` (string, obrigatório): O ID do arquivo a baixar.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_onedrive/upload_file">
|
||||
**Descrição:** Fazer upload de um arquivo para o OneDrive.
|
||||
|
||||
**Parâmetros:**
|
||||
- `file_name` (string, obrigatório): Nome do arquivo a fazer upload.
|
||||
- `content` (string, obrigatório): Conteúdo do arquivo codificado em Base64.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_onedrive/create_folder">
|
||||
**Descrição:** Criar uma nova pasta no OneDrive.
|
||||
|
||||
**Parâmetros:**
|
||||
- `folder_name` (string, obrigatório): Nome da pasta a criar.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_onedrive/delete_item">
|
||||
**Descrição:** Excluir um arquivo ou pasta do OneDrive.
|
||||
|
||||
**Parâmetros:**
|
||||
- `item_id` (string, obrigatório): O ID do arquivo ou pasta a excluir.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_onedrive/copy_item">
|
||||
**Descrição:** Copiar um arquivo ou pasta no OneDrive.
|
||||
|
||||
**Parâmetros:**
|
||||
- `item_id` (string, obrigatório): O ID do arquivo ou pasta a copiar.
|
||||
- `parent_id` (string, opcional): O ID da pasta de destino (opcional, padrão para raiz).
|
||||
- `new_name` (string, opcional): Novo nome para o item copiado (opcional).
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_onedrive/move_item">
|
||||
**Descrição:** Mover um arquivo ou pasta no OneDrive.
|
||||
|
||||
**Parâmetros:**
|
||||
- `item_id` (string, obrigatório): O ID do arquivo ou pasta a mover.
|
||||
- `parent_id` (string, obrigatório): O ID da pasta de destino.
|
||||
- `new_name` (string, opcional): Novo nome para o item (opcional).
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_onedrive/search_files">
|
||||
**Descrição:** Pesquisar arquivos e pastas no OneDrive.
|
||||
|
||||
**Parâmetros:**
|
||||
- `query` (string, obrigatório): String de consulta de pesquisa.
|
||||
- `top` (integer, opcional): Número de resultados a retornar (máx 1000). Padrão: 50.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_onedrive/share_item">
|
||||
**Descrição:** Criar um link de compartilhamento para um arquivo ou pasta.
|
||||
|
||||
**Parâmetros:**
|
||||
- `item_id` (string, obrigatório): O ID do arquivo ou pasta a compartilhar.
|
||||
- `type` (string, opcional): Tipo de link de compartilhamento. Opções: view, edit, embed. Padrão: view.
|
||||
- `scope` (string, opcional): Escopo do link de compartilhamento. Opções: anonymous, organization. Padrão: anonymous.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_onedrive/get_thumbnails">
|
||||
**Descrição:** Obter miniaturas para um arquivo.
|
||||
|
||||
**Parâmetros:**
|
||||
- `item_id` (string, obrigatório): O ID do arquivo.
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
## Exemplos de Uso
|
||||
|
||||
### Configuração Básica do Agente Microsoft OneDrive
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
# Crie um agente com capacidades do Microsoft OneDrive
|
||||
onedrive_agent = Agent(
|
||||
role="Gerenciador de Arquivos",
|
||||
goal="Gerenciar arquivos e pastas no OneDrive de forma eficiente",
|
||||
backstory="Um assistente IA especializado em operações de arquivos do Microsoft OneDrive e organização.",
|
||||
apps=['microsoft_onedrive'] # Todas as ações do OneDrive estarão disponíveis
|
||||
)
|
||||
|
||||
# Tarefa para listar arquivos e criar pasta
|
||||
organize_files_task = Task(
|
||||
description="Listar todos os arquivos no diretório raiz do meu OneDrive e criar uma nova pasta chamada 'Documentos do Projeto'.",
|
||||
agent=onedrive_agent,
|
||||
expected_output="Lista de arquivos exibida e nova pasta 'Documentos do Projeto' criada."
|
||||
)
|
||||
|
||||
# Execute a tarefa
|
||||
crew = Crew(
|
||||
agents=[onedrive_agent],
|
||||
tasks=[organize_files_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
## Solução de Problemas
|
||||
|
||||
### Problemas Comuns
|
||||
|
||||
**Erros de Autenticação**
|
||||
- Certifique-se de que sua conta Microsoft tenha as permissões necessárias para acesso a arquivos (ex: `Files.Read`, `Files.ReadWrite`).
|
||||
- Verifique se a conexão OAuth inclui todos os escopos necessários.
|
||||
|
||||
**Problemas de Upload de Arquivos**
|
||||
- Certifique-se de que `file_name` e `content` sejam fornecidos para uploads de arquivos.
|
||||
- O conteúdo deve ser codificado em Base64 para arquivos binários.
|
||||
- Verifique se você tem permissões de escrita no OneDrive.
|
||||
|
||||
### Obtendo Ajuda
|
||||
|
||||
<Card title="Precisa de Ajuda?" icon="headset" href="mailto:support@crewai.com">
|
||||
Entre em contato com nossa equipe de suporte para assistência com configuração ou solução de problemas da integração Microsoft OneDrive.
|
||||
</Card>
|
||||
161
docs/pt-BR/enterprise/integrations/microsoft_outlook.mdx
Normal file
161
docs/pt-BR/enterprise/integrations/microsoft_outlook.mdx
Normal file
@@ -0,0 +1,161 @@
|
||||
---
|
||||
title: Integração Microsoft Outlook
|
||||
description: "Gerenciamento de email, calendário e contatos com integração Microsoft Outlook para CrewAI."
|
||||
icon: "envelope"
|
||||
mode: "wide"
|
||||
---
|
||||
|
||||
## Visão Geral
|
||||
|
||||
Permita que seus agentes acessem e gerenciem emails, eventos de calendário e contatos do Outlook. Envie emails, recupere mensagens, gerencie eventos de calendário e organize contatos com automação alimentada por IA.
|
||||
|
||||
## Pré-requisitos
|
||||
|
||||
Antes de usar a integração Microsoft Outlook, certifique-se de ter:
|
||||
|
||||
- Uma conta [CrewAI AMP](https://app.crewai.com) com assinatura ativa
|
||||
- Uma conta Microsoft com acesso ao Outlook
|
||||
- Conectado sua conta Microsoft através da [página de Integrações](https://app.crewai.com/crewai_plus/connectors)
|
||||
|
||||
## Configurando a Integração Microsoft Outlook
|
||||
|
||||
### 1. Conecte sua Conta Microsoft
|
||||
|
||||
1. Navegue para [Integrações CrewAI AMP](https://app.crewai.com/crewai_plus/connectors)
|
||||
2. Encontre **Microsoft Outlook** na seção de Integrações de Autenticação
|
||||
3. Clique em **Conectar** e complete o fluxo OAuth
|
||||
4. Conceda as permissões necessárias para acesso a email, calendário e contatos
|
||||
5. Copie seu Token Enterprise das [Configurações de Integração](https://app.crewai.com/crewai_plus/settings/integrations)
|
||||
|
||||
### 2. Instale o Pacote Necessário
|
||||
|
||||
```bash
|
||||
uv add crewai-tools
|
||||
```
|
||||
|
||||
## Ações Disponíveis
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="microsoft_outlook/get_messages">
|
||||
**Descrição:** Obter mensagens de email da caixa de correio do usuário.
|
||||
|
||||
**Parâmetros:**
|
||||
- `top` (integer, opcional): Número de mensagens a recuperar (máx 1000). Padrão: 10.
|
||||
- `filter` (string, opcional): Expressão de filtro OData (ex: "isRead eq false").
|
||||
- `search` (string, opcional): String de consulta de pesquisa.
|
||||
- `orderby` (string, opcional): Ordenar por campo (ex: "receivedDateTime desc"). Padrão: "receivedDateTime desc".
|
||||
- `select` (string, opcional): Selecionar propriedades específicas para retornar.
|
||||
- `expand` (string, opcional): Expandir recursos relacionados inline.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_outlook/send_email">
|
||||
**Descrição:** Enviar uma mensagem de email.
|
||||
|
||||
**Parâmetros:**
|
||||
- `to_recipients` (array, obrigatório): Array de endereços de email dos destinatários.
|
||||
- `cc_recipients` (array, opcional): Array de endereços de email dos destinatários em cópia.
|
||||
- `bcc_recipients` (array, opcional): Array de endereços de email dos destinatários em cópia oculta.
|
||||
- `subject` (string, obrigatório): Assunto do email.
|
||||
- `body` (string, obrigatório): Conteúdo do corpo do email.
|
||||
- `body_type` (string, opcional): Tipo de conteúdo do corpo. Opções: Text, HTML. Padrão: HTML.
|
||||
- `importance` (string, opcional): Nível de importância da mensagem. Opções: low, normal, high. Padrão: normal.
|
||||
- `reply_to` (array, opcional): Array de endereços de email para resposta.
|
||||
- `save_to_sent_items` (boolean, opcional): Se deve salvar a mensagem na pasta Itens Enviados. Padrão: true.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_outlook/get_calendar_events">
|
||||
**Descrição:** Obter eventos de calendário do calendário do usuário.
|
||||
|
||||
**Parâmetros:**
|
||||
- `top` (integer, opcional): Número de eventos a recuperar (máx 1000). Padrão: 10.
|
||||
- `skip` (integer, opcional): Número de eventos a pular. Padrão: 0.
|
||||
- `filter` (string, opcional): Expressão de filtro OData (ex: "start/dateTime ge '2024-01-01T00:00:00Z'").
|
||||
- `orderby` (string, opcional): Ordenar por campo (ex: "start/dateTime asc"). Padrão: "start/dateTime asc".
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_outlook/create_calendar_event">
|
||||
**Descrição:** Criar um novo evento de calendário.
|
||||
|
||||
**Parâmetros:**
|
||||
- `subject` (string, obrigatório): Assunto/título do evento.
|
||||
- `body` (string, opcional): Corpo/descrição do evento.
|
||||
- `start_datetime` (string, obrigatório): Data e hora de início no formato ISO 8601 (ex: '2024-01-20T10:00:00').
|
||||
- `end_datetime` (string, obrigatório): Data e hora de término no formato ISO 8601.
|
||||
- `timezone` (string, opcional): Fuso horário (ex: 'Pacific Standard Time'). Padrão: UTC.
|
||||
- `location` (string, opcional): Local do evento.
|
||||
- `attendees` (array, opcional): Array de endereços de email dos participantes.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_outlook/get_contacts">
|
||||
**Descrição:** Obter contatos do catálogo de endereços do usuário.
|
||||
|
||||
**Parâmetros:**
|
||||
- `top` (integer, opcional): Número de contatos a recuperar (máx 1000). Padrão: 10.
|
||||
- `skip` (integer, opcional): Número de contatos a pular. Padrão: 0.
|
||||
- `filter` (string, opcional): Expressão de filtro OData.
|
||||
- `orderby` (string, opcional): Ordenar por campo (ex: "displayName asc"). Padrão: "displayName asc".
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_outlook/create_contact">
|
||||
**Descrição:** Criar um novo contato no catálogo de endereços do usuário.
|
||||
|
||||
**Parâmetros:**
|
||||
- `displayName` (string, obrigatório): Nome de exibição do contato.
|
||||
- `givenName` (string, opcional): Primeiro nome do contato.
|
||||
- `surname` (string, opcional): Sobrenome do contato.
|
||||
- `emailAddresses` (array, opcional): Array de endereços de email. Cada item é um objeto com `address` (string) e `name` (string).
|
||||
- `businessPhones` (array, opcional): Array de números de telefone comerciais.
|
||||
- `homePhones` (array, opcional): Array de números de telefone residenciais.
|
||||
- `jobTitle` (string, opcional): Cargo do contato.
|
||||
- `companyName` (string, opcional): Nome da empresa do contato.
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
## Exemplos de Uso
|
||||
|
||||
### Configuração Básica do Agente Microsoft Outlook
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
# Crie um agente com capacidades do Microsoft Outlook
|
||||
outlook_agent = Agent(
|
||||
role="Assistente de Email",
|
||||
goal="Gerenciar emails, eventos de calendário e contatos de forma eficiente",
|
||||
backstory="Um assistente IA especializado em operações do Microsoft Outlook e gerenciamento de comunicação.",
|
||||
apps=['microsoft_outlook'] # Todas as ações do Outlook estarão disponíveis
|
||||
)
|
||||
|
||||
# Tarefa para enviar um email
|
||||
send_email_task = Task(
|
||||
description="Enviar um email para 'colega@exemplo.com' com assunto 'Atualização do Projeto' e corpo 'Olá, aqui está a última atualização do projeto. Atenciosamente.'",
|
||||
agent=outlook_agent,
|
||||
expected_output="Email enviado com sucesso para colega@exemplo.com"
|
||||
)
|
||||
|
||||
# Execute a tarefa
|
||||
crew = Crew(
|
||||
agents=[outlook_agent],
|
||||
tasks=[send_email_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
## Solução de Problemas
|
||||
|
||||
### Problemas Comuns
|
||||
|
||||
**Erros de Autenticação**
|
||||
- Certifique-se de que sua conta Microsoft tenha as permissões necessárias para acesso a email, calendário e contatos.
|
||||
- Escopos necessários incluem: `Mail.Read`, `Mail.Send`, `Calendars.Read`, `Calendars.ReadWrite`, `Contacts.Read`, `Contacts.ReadWrite`.
|
||||
|
||||
**Problemas de Envio de Email**
|
||||
- Certifique-se de que `to_recipients`, `subject` e `body` sejam fornecidos para `send_email`.
|
||||
- Verifique se os endereços de email estão formatados corretamente.
|
||||
|
||||
### Obtendo Ajuda
|
||||
|
||||
<Card title="Precisa de Ajuda?" icon="headset" href="mailto:support@crewai.com">
|
||||
Entre em contato com nossa equipe de suporte para assistência com configuração ou solução de problemas da integração Microsoft Outlook.
|
||||
</Card>
|
||||
185
docs/pt-BR/enterprise/integrations/microsoft_sharepoint.mdx
Normal file
185
docs/pt-BR/enterprise/integrations/microsoft_sharepoint.mdx
Normal file
@@ -0,0 +1,185 @@
|
||||
---
|
||||
title: Integração Microsoft SharePoint
|
||||
description: "Gerenciamento de sites, listas e documentos com integração Microsoft SharePoint para CrewAI."
|
||||
icon: "folder-tree"
|
||||
mode: "wide"
|
||||
---
|
||||
|
||||
## Visão Geral
|
||||
|
||||
Permita que seus agentes acessem e gerenciem sites, listas e bibliotecas de documentos do SharePoint. Recupere informações do site, gerencie itens de lista, faça upload e organize arquivos, e simplifique seus fluxos de trabalho do SharePoint com automação alimentada por IA.
|
||||
|
||||
## Pré-requisitos
|
||||
|
||||
Antes de usar a integração Microsoft SharePoint, certifique-se de ter:
|
||||
|
||||
- Uma conta [CrewAI AMP](https://app.crewai.com) com assinatura ativa
|
||||
- Uma conta Microsoft com acesso ao SharePoint
|
||||
- Conectado sua conta Microsoft através da [página de Integrações](https://app.crewai.com/crewai_plus/connectors)
|
||||
|
||||
## Configurando a Integração Microsoft SharePoint
|
||||
|
||||
### 1. Conecte sua Conta Microsoft
|
||||
|
||||
1. Navegue para [Integrações CrewAI AMP](https://app.crewai.com/crewai_plus/connectors)
|
||||
2. Encontre **Microsoft SharePoint** na seção de Integrações de Autenticação
|
||||
3. Clique em **Conectar** e complete o fluxo OAuth
|
||||
4. Conceda as permissões necessárias para acesso a sites e arquivos do SharePoint
|
||||
5. Copie seu Token Enterprise das [Configurações de Integração](https://app.crewai.com/crewai_plus/settings/integrations)
|
||||
|
||||
### 2. Instale o Pacote Necessário
|
||||
|
||||
```bash
|
||||
uv add crewai-tools
|
||||
```
|
||||
|
||||
## Ações Disponíveis
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="microsoft_sharepoint/get_sites">
|
||||
**Descrição:** Obter todos os sites do SharePoint aos quais o usuário tem acesso.
|
||||
|
||||
**Parâmetros:**
|
||||
- `search` (string, opcional): Consulta de pesquisa para filtrar sites.
|
||||
- `select` (string, opcional): Selecionar propriedades específicas para retornar (ex: 'displayName,id,webUrl').
|
||||
- `filter` (string, opcional): Filtrar resultados usando sintaxe OData.
|
||||
- `expand` (string, opcional): Expandir recursos relacionados inline.
|
||||
- `top` (integer, opcional): Número de itens a retornar (mín 1, máx 999).
|
||||
- `skip` (integer, opcional): Número de itens a pular (mín 0).
|
||||
- `orderby` (string, opcional): Ordenar resultados por propriedades especificadas (ex: 'displayName desc').
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_sharepoint/get_site">
|
||||
**Descrição:** Obter informações sobre um site específico do SharePoint.
|
||||
|
||||
**Parâmetros:**
|
||||
- `site_id` (string, obrigatório): O ID do site do SharePoint.
|
||||
- `select` (string, opcional): Selecionar propriedades específicas para retornar (ex: 'displayName,id,webUrl,drives').
|
||||
- `expand` (string, opcional): Expandir recursos relacionados inline (ex: 'drives,lists').
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_sharepoint/get_site_lists">
|
||||
**Descrição:** Obter todas as listas em um site do SharePoint.
|
||||
|
||||
**Parâmetros:**
|
||||
- `site_id` (string, obrigatório): O ID do site do SharePoint.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_sharepoint/get_list">
|
||||
**Descrição:** Obter informações sobre uma lista específica.
|
||||
|
||||
**Parâmetros:**
|
||||
- `site_id` (string, obrigatório): O ID do site do SharePoint.
|
||||
- `list_id` (string, obrigatório): O ID da lista.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_sharepoint/get_list_items">
|
||||
**Descrição:** Obter itens de uma lista do SharePoint.
|
||||
|
||||
**Parâmetros:**
|
||||
- `site_id` (string, obrigatório): O ID do site do SharePoint.
|
||||
- `list_id` (string, obrigatório): O ID da lista.
|
||||
- `expand` (string, opcional): Expandir dados relacionados (ex: 'fields').
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_sharepoint/create_list_item">
|
||||
**Descrição:** Criar um novo item em uma lista do SharePoint.
|
||||
|
||||
**Parâmetros:**
|
||||
- `site_id` (string, obrigatório): O ID do site do SharePoint.
|
||||
- `list_id` (string, obrigatório): O ID da lista.
|
||||
- `fields` (object, obrigatório): Os valores de campo para o novo item.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_sharepoint/update_list_item">
|
||||
**Descrição:** Atualizar um item em uma lista do SharePoint.
|
||||
|
||||
**Parâmetros:**
|
||||
- `site_id` (string, obrigatório): O ID do site do SharePoint.
|
||||
- `list_id` (string, obrigatório): O ID da lista.
|
||||
- `item_id` (string, obrigatório): O ID do item a atualizar.
|
||||
- `fields` (object, obrigatório): Os valores de campo a atualizar.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_sharepoint/delete_list_item">
|
||||
**Descrição:** Excluir um item de uma lista do SharePoint.
|
||||
|
||||
**Parâmetros:**
|
||||
- `site_id` (string, obrigatório): O ID do site do SharePoint.
|
||||
- `list_id` (string, obrigatório): O ID da lista.
|
||||
- `item_id` (string, obrigatório): O ID do item a excluir.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_sharepoint/upload_file_to_library">
|
||||
**Descrição:** Fazer upload de um arquivo para uma biblioteca de documentos do SharePoint.
|
||||
|
||||
**Parâmetros:**
|
||||
- `site_id` (string, obrigatório): O ID do site do SharePoint.
|
||||
- `file_path` (string, obrigatório): O caminho onde fazer upload do arquivo (ex: 'pasta/nomeDoArquivo.txt').
|
||||
- `content` (string, obrigatório): O conteúdo do arquivo a fazer upload.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_sharepoint/get_drive_items">
|
||||
**Descrição:** Obter arquivos e pastas de uma biblioteca de documentos do SharePoint.
|
||||
|
||||
**Parâmetros:**
|
||||
- `site_id` (string, obrigatório): O ID do site do SharePoint.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_sharepoint/delete_drive_item">
|
||||
**Descrição:** Excluir um arquivo ou pasta da biblioteca de documentos do SharePoint.
|
||||
|
||||
**Parâmetros:**
|
||||
- `site_id` (string, obrigatório): O ID do site do SharePoint.
|
||||
- `item_id` (string, obrigatório): O ID do arquivo ou pasta a excluir.
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
## Exemplos de Uso
|
||||
|
||||
### Configuração Básica do Agente Microsoft SharePoint
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
# Crie um agente com capacidades do Microsoft SharePoint
|
||||
sharepoint_agent = Agent(
|
||||
role="Gerenciador SharePoint",
|
||||
goal="Gerenciar sites, listas e documentos do SharePoint de forma eficiente",
|
||||
backstory="Um assistente IA especializado em administração do Microsoft SharePoint e gerenciamento de conteúdo.",
|
||||
apps=['microsoft_sharepoint'] # Todas as ações do SharePoint estarão disponíveis
|
||||
)
|
||||
|
||||
# Tarefa para obter todos os sites
|
||||
get_sites_task = Task(
|
||||
description="Listar todos os sites do SharePoint aos quais tenho acesso.",
|
||||
agent=sharepoint_agent,
|
||||
expected_output="Uma lista de sites do SharePoint com seus nomes de exibição e URLs."
|
||||
)
|
||||
|
||||
# Execute a tarefa
|
||||
crew = Crew(
|
||||
agents=[sharepoint_agent],
|
||||
tasks=[get_sites_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
## Solução de Problemas
|
||||
|
||||
### Problemas Comuns
|
||||
|
||||
**Erros de Autenticação**
|
||||
- Certifique-se de que sua conta Microsoft tenha as permissões necessárias para acesso ao SharePoint (ex: `Sites.Read.All`, `Sites.ReadWrite.All`).
|
||||
- Verifique se a conexão OAuth inclui todos os escopos necessários.
|
||||
|
||||
**Problemas de ID de Site/Lista/Item**
|
||||
- Verifique novamente os IDs de site, lista e item para correção.
|
||||
- Certifique-se de que os recursos referenciados existem e estão acessíveis.
|
||||
|
||||
### Obtendo Ajuda
|
||||
|
||||
<Card title="Precisa de Ajuda?" icon="headset" href="mailto:support@crewai.com">
|
||||
Entre em contato com nossa equipe de suporte para assistência com configuração ou solução de problemas da integração Microsoft SharePoint.
|
||||
</Card>
|
||||
136
docs/pt-BR/enterprise/integrations/microsoft_teams.mdx
Normal file
136
docs/pt-BR/enterprise/integrations/microsoft_teams.mdx
Normal file
@@ -0,0 +1,136 @@
|
||||
---
|
||||
title: Integração Microsoft Teams
|
||||
description: "Colaboração em equipe e comunicação com integração Microsoft Teams para CrewAI."
|
||||
icon: "users"
|
||||
mode: "wide"
|
||||
---
|
||||
|
||||
## Visão Geral
|
||||
|
||||
Permita que seus agentes acessem dados do Teams, enviem mensagens, criem reuniões e gerenciem canais. Automatize a comunicação da equipe, agende reuniões, recupere mensagens e simplifique seus fluxos de trabalho de colaboração com automação alimentada por IA.
|
||||
|
||||
## Pré-requisitos
|
||||
|
||||
Antes de usar a integração Microsoft Teams, certifique-se de ter:
|
||||
|
||||
- Uma conta [CrewAI AMP](https://app.crewai.com) com assinatura ativa
|
||||
- Uma conta Microsoft com acesso ao Teams
|
||||
- Conectado sua conta Microsoft através da [página de Integrações](https://app.crewai.com/crewai_plus/connectors)
|
||||
|
||||
## Configurando a Integração Microsoft Teams
|
||||
|
||||
### 1. Conecte sua Conta Microsoft
|
||||
|
||||
1. Navegue para [Integrações CrewAI AMP](https://app.crewai.com/crewai_plus/connectors)
|
||||
2. Encontre **Microsoft Teams** na seção de Integrações de Autenticação
|
||||
3. Clique em **Conectar** e complete o fluxo OAuth
|
||||
4. Conceda as permissões necessárias para acesso ao Teams
|
||||
5. Copie seu Token Enterprise das [Configurações de Integração](https://app.crewai.com/crewai_plus/settings/integrations)
|
||||
|
||||
### 2. Instale o Pacote Necessário
|
||||
|
||||
```bash
|
||||
uv add crewai-tools
|
||||
```
|
||||
|
||||
## Ações Disponíveis
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="microsoft_teams/get_teams">
|
||||
**Descrição:** Obter todas as equipes das quais o usuário é membro.
|
||||
|
||||
**Parâmetros:**
|
||||
- Nenhum parâmetro necessário.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_teams/get_channels">
|
||||
**Descrição:** Obter canais em uma equipe específica.
|
||||
|
||||
**Parâmetros:**
|
||||
- `team_id` (string, obrigatório): O ID da equipe.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_teams/send_message">
|
||||
**Descrição:** Enviar uma mensagem para um canal do Teams.
|
||||
|
||||
**Parâmetros:**
|
||||
- `team_id` (string, obrigatório): O ID da equipe.
|
||||
- `channel_id` (string, obrigatório): O ID do canal.
|
||||
- `message` (string, obrigatório): O conteúdo da mensagem.
|
||||
- `content_type` (string, opcional): Tipo de conteúdo (html ou text). Opções: html, text. Padrão: text.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_teams/get_messages">
|
||||
**Descrição:** Obter mensagens de um canal do Teams.
|
||||
|
||||
**Parâmetros:**
|
||||
- `team_id` (string, obrigatório): O ID da equipe.
|
||||
- `channel_id` (string, obrigatório): O ID do canal.
|
||||
- `top` (integer, opcional): Número de mensagens a recuperar (máx 50). Padrão: 20.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_teams/create_meeting">
|
||||
**Descrição:** Criar uma reunião do Teams.
|
||||
|
||||
**Parâmetros:**
|
||||
- `subject` (string, obrigatório): Assunto/título da reunião.
|
||||
- `startDateTime` (string, obrigatório): Hora de início da reunião (formato ISO 8601 com fuso horário).
|
||||
- `endDateTime` (string, obrigatório): Hora de término da reunião (formato ISO 8601 com fuso horário).
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_teams/search_online_meetings_by_join_url">
|
||||
**Descrição:** Pesquisar reuniões online por URL de participação na web.
|
||||
|
||||
**Parâmetros:**
|
||||
- `join_web_url` (string, obrigatório): A URL de participação na web da reunião a pesquisar.
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
## Exemplos de Uso
|
||||
|
||||
### Configuração Básica do Agente Microsoft Teams
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
# Crie um agente com capacidades do Microsoft Teams
|
||||
teams_agent = Agent(
|
||||
role="Coordenador do Teams",
|
||||
goal="Gerenciar comunicação e reuniões do Teams de forma eficiente",
|
||||
backstory="Um assistente IA especializado em operações do Microsoft Teams e colaboração em equipe.",
|
||||
apps=['microsoft_teams'] # Todas as ações do Teams estarão disponíveis
|
||||
)
|
||||
|
||||
# Tarefa para listar equipes e canais
|
||||
explore_teams_task = Task(
|
||||
description="Listar todas as equipes das quais sou membro e depois obter os canais da primeira equipe.",
|
||||
agent=teams_agent,
|
||||
expected_output="Lista de equipes e canais exibida."
|
||||
)
|
||||
|
||||
# Execute a tarefa
|
||||
crew = Crew(
|
||||
agents=[teams_agent],
|
||||
tasks=[explore_teams_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
## Solução de Problemas
|
||||
|
||||
### Problemas Comuns
|
||||
|
||||
**Erros de Autenticação**
|
||||
- Certifique-se de que sua conta Microsoft tenha as permissões necessárias para acesso ao Teams.
|
||||
- Escopos necessários incluem: `Team.ReadBasic.All`, `Channel.ReadBasic.All`, `ChannelMessage.Send`, `ChannelMessage.Read.All`, `OnlineMeetings.ReadWrite`, `OnlineMeetings.Read`.
|
||||
|
||||
**Acesso a Equipes e Canais**
|
||||
- Certifique-se de que você é membro das equipes que está tentando acessar.
|
||||
- Verifique novamente os IDs de equipe e canal para correção.
|
||||
|
||||
### Obtendo Ajuda
|
||||
|
||||
<Card title="Precisa de Ajuda?" icon="headset" href="mailto:support@crewai.com">
|
||||
Entre em contato com nossa equipe de suporte para assistência com configuração ou solução de problemas da integração Microsoft Teams.
|
||||
</Card>
|
||||
127
docs/pt-BR/enterprise/integrations/microsoft_word.mdx
Normal file
127
docs/pt-BR/enterprise/integrations/microsoft_word.mdx
Normal file
@@ -0,0 +1,127 @@
|
||||
---
|
||||
title: Integração Microsoft Word
|
||||
description: "Criação e gerenciamento de documentos com integração Microsoft Word para CrewAI."
|
||||
icon: "file-word"
|
||||
mode: "wide"
|
||||
---
|
||||
|
||||
## Visão Geral
|
||||
|
||||
Permita que seus agentes criem, leiam e gerenciem documentos do Word e arquivos de texto no OneDrive ou SharePoint. Automatize a criação de documentos, recupere conteúdo, gerencie propriedades de documentos e simplifique seus fluxos de trabalho de documentos com automação alimentada por IA.
|
||||
|
||||
## Pré-requisitos
|
||||
|
||||
Antes de usar a integração Microsoft Word, certifique-se de ter:
|
||||
|
||||
- Uma conta [CrewAI AMP](https://app.crewai.com) com assinatura ativa
|
||||
- Uma conta Microsoft com acesso ao Word e OneDrive/SharePoint
|
||||
- Conectado sua conta Microsoft através da [página de Integrações](https://app.crewai.com/crewai_plus/connectors)
|
||||
|
||||
## Configurando a Integração Microsoft Word
|
||||
|
||||
### 1. Conecte sua Conta Microsoft
|
||||
|
||||
1. Navegue para [Integrações CrewAI AMP](https://app.crewai.com/crewai_plus/connectors)
|
||||
2. Encontre **Microsoft Word** na seção de Integrações de Autenticação
|
||||
3. Clique em **Conectar** e complete o fluxo OAuth
|
||||
4. Conceda as permissões necessárias para acesso a arquivos
|
||||
5. Copie seu Token Enterprise das [Configurações de Integração](https://app.crewai.com/crewai_plus/settings/integrations)
|
||||
|
||||
### 2. Instale o Pacote Necessário
|
||||
|
||||
```bash
|
||||
uv add crewai-tools
|
||||
```
|
||||
|
||||
## Ações Disponíveis
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="microsoft_word/get_documents">
|
||||
**Descrição:** Obter todos os documentos do Word do OneDrive ou SharePoint.
|
||||
|
||||
**Parâmetros:**
|
||||
- `select` (string, opcional): Selecionar propriedades específicas para retornar.
|
||||
- `filter` (string, opcional): Filtrar resultados usando sintaxe OData.
|
||||
- `expand` (string, opcional): Expandir recursos relacionados inline.
|
||||
- `top` (integer, opcional): Número de itens a retornar (mín 1, máx 999).
|
||||
- `orderby` (string, opcional): Ordenar resultados por propriedades especificadas.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_word/create_text_document">
|
||||
**Descrição:** Criar um documento de texto (.txt) com conteúdo. RECOMENDADO para criação de conteúdo programático que precisa ser legível e editável.
|
||||
|
||||
**Parâmetros:**
|
||||
- `file_name` (string, obrigatório): Nome do documento de texto (deve terminar com .txt).
|
||||
- `content` (string, opcional): Conteúdo de texto para o documento. Padrão: "Este é um novo documento de texto criado via API."
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_word/get_document_content">
|
||||
**Descrição:** Obter o conteúdo de um documento (funciona melhor com arquivos de texto).
|
||||
|
||||
**Parâmetros:**
|
||||
- `file_id` (string, obrigatório): O ID do documento.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_word/get_document_properties">
|
||||
**Descrição:** Obter propriedades e metadados de um documento.
|
||||
|
||||
**Parâmetros:**
|
||||
- `file_id` (string, obrigatório): O ID do documento.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="microsoft_word/delete_document">
|
||||
**Descrição:** Excluir um documento.
|
||||
|
||||
**Parâmetros:**
|
||||
- `file_id` (string, obrigatório): O ID do documento a excluir.
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
## Exemplos de Uso
|
||||
|
||||
### Configuração Básica do Agente Microsoft Word
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
# Crie um agente com capacidades do Microsoft Word
|
||||
word_agent = Agent(
|
||||
role="Gerenciador de Documentos",
|
||||
goal="Gerenciar documentos do Word e arquivos de texto de forma eficiente",
|
||||
backstory="Um assistente IA especializado em operações de documentos do Microsoft Word e gerenciamento de conteúdo.",
|
||||
apps=['microsoft_word'] # Todas as ações do Word estarão disponíveis
|
||||
)
|
||||
|
||||
# Tarefa para criar um novo documento de texto
|
||||
create_doc_task = Task(
|
||||
description="Criar um novo documento de texto chamado 'notas_reuniao.txt' com conteúdo 'Notas da Reunião de Janeiro de 2024: Pontos-chave de discussão e itens de ação.'",
|
||||
agent=word_agent,
|
||||
expected_output="Novo documento de texto 'notas_reuniao.txt' criado com sucesso."
|
||||
)
|
||||
|
||||
# Execute a tarefa
|
||||
crew = Crew(
|
||||
agents=[word_agent],
|
||||
tasks=[create_doc_task]
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
```
|
||||
|
||||
## Solução de Problemas
|
||||
|
||||
### Problemas Comuns
|
||||
|
||||
**Erros de Autenticação**
|
||||
- Certifique-se de que sua conta Microsoft tenha as permissões necessárias para acesso a arquivos (ex: `Files.Read.All`, `Files.ReadWrite.All`).
|
||||
- Verifique se a conexão OAuth inclui todos os escopos necessários.
|
||||
|
||||
**Problemas de Criação de Arquivos**
|
||||
- Ao criar documentos de texto, certifique-se de que o `file_name` termine com extensão `.txt`.
|
||||
- Verifique se você tem permissões de escrita no local de destino (OneDrive/SharePoint).
|
||||
|
||||
### Obtendo Ajuda
|
||||
|
||||
<Card title="Precisa de Ajuda?" icon="headset" href="mailto:support@crewai.com">
|
||||
Entre em contato com nossa equipe de suporte para assistência com configuração ou solução de problemas da integração Microsoft Word.
|
||||
</Card>
|
||||
@@ -25,7 +25,7 @@ Antes de usar a integração com o Notion, certifique-se de que você tem:
|
||||
2. Procure por **Notion** na seção de Integrações de Autenticação
|
||||
3. Clique em **Conectar** e complete o fluxo de OAuth
|
||||
4. Conceda as permissões necessárias para gerenciamento de páginas e bancos de dados
|
||||
5. Copie seu Token Enterprise em [Configurações da Conta](https://app.crewai.com/crewai_plus/settings/account)
|
||||
5. Copie seu Token Enterprise em [Configurações de Integração](https://app.crewai.com/crewai_plus/settings/integrations)
|
||||
|
||||
### 2. Instale o Pacote Necessário
|
||||
|
||||
@@ -36,7 +36,7 @@ uv add crewai-tools
|
||||
## Ações Disponíveis
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="NOTION_CREATE_PAGE">
|
||||
<Accordion title="notion/create_page">
|
||||
**Descrição:** Cria uma página no Notion.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -93,7 +93,7 @@ uv add crewai-tools
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="NOTION_UPDATE_PAGE">
|
||||
<Accordion title="notion/update_page">
|
||||
**Descrição:** Atualiza uma página no Notion.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -127,21 +127,21 @@ uv add crewai-tools
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="NOTION_GET_PAGE_BY_ID">
|
||||
<Accordion title="notion/get_page_by_id">
|
||||
**Descrição:** Busca uma página pelo ID no Notion.
|
||||
|
||||
**Parâmetros:**
|
||||
- `pageId` (string, obrigatório): Page ID - Especifique o ID da Página a ser buscada. (exemplo: "59833787-2cf9-4fdf-8782-e53db20768a5").
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="NOTION_ARCHIVE_PAGE">
|
||||
<Accordion title="notion/archive_page">
|
||||
**Descrição:** Arquiva uma página no Notion.
|
||||
|
||||
**Parâmetros:**
|
||||
- `pageId` (string, obrigatório): Page ID - Especifique o ID da Página a ser arquivada. (exemplo: "59833787-2cf9-4fdf-8782-e53db20768a5").
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="NOTION_SEARCH_PAGES">
|
||||
<Accordion title="notion/search_pages">
|
||||
**Descrição:** Pesquisa páginas no Notion utilizando filtros.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -166,14 +166,14 @@ uv add crewai-tools
|
||||
Campos disponíveis: `query`, `filter.value`, `direction`, `page_size`
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="NOTION_GET_PAGE_CONTENT">
|
||||
<Accordion title="notion/get_page_content">
|
||||
**Descrição:** Obtém o conteúdo (blocos) de uma página no Notion.
|
||||
|
||||
**Parâmetros:**
|
||||
- `blockId` (string, obrigatório): Page ID - Especifique o ID de um Bloco ou Página para receber todos os seus blocos filhos na ordem correta. (exemplo: "59833787-2cf9-4fdf-8782-e53db20768a5").
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="NOTION_UPDATE_BLOCK">
|
||||
<Accordion title="notion/update_block">
|
||||
**Descrição:** Atualiza um bloco no Notion.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -260,14 +260,14 @@ uv add crewai-tools
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="NOTION_GET_BLOCK_BY_ID">
|
||||
<Accordion title="notion/get_block_by_id">
|
||||
**Descrição:** Busca um bloco pelo ID no Notion.
|
||||
|
||||
**Parâmetros:**
|
||||
- `blockId` (string, obrigatório): Block ID - Especifique o ID do Bloco a ser buscado. (exemplo: "9bc30ad4-9373-46a5-84ab-0a7845ee52e6").
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="NOTION_DELETE_BLOCK">
|
||||
<Accordion title="notion/delete_block">
|
||||
**Descrição:** Exclui um bloco no Notion.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -281,19 +281,13 @@ uv add crewai-tools
|
||||
|
||||
```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]
|
||||
apps=['notion']
|
||||
)
|
||||
|
||||
# Task to create a meeting notes page
|
||||
@@ -315,19 +309,12 @@ crew.kickoff()
|
||||
### Filtrando Ferramentas Específicas do 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
|
||||
apps=['notion']
|
||||
)
|
||||
|
||||
# Task to manage content workflow
|
||||
@@ -349,17 +336,12 @@ 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]
|
||||
apps=['notion']
|
||||
)
|
||||
|
||||
# Task to curate knowledge base
|
||||
@@ -386,17 +368,12 @@ 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]
|
||||
apps=['notion']
|
||||
)
|
||||
|
||||
# Task to organize content structure
|
||||
@@ -424,17 +401,12 @@ 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]
|
||||
apps=['notion']
|
||||
)
|
||||
|
||||
# Complex documentation automation task
|
||||
|
||||
@@ -22,7 +22,7 @@ Antes de usar a integração Salesforce, certifique-se de que você possui:
|
||||
### **Gerenciamento de Registros**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="SALESFORCE_CREATE_RECORD_CONTACT">
|
||||
<Accordion title="salesforce/create_record_contact">
|
||||
**Descrição:** Crie um novo registro de Contato no Salesforce.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -35,7 +35,7 @@ Antes de usar a integração Salesforce, certifique-se de que você possui:
|
||||
- `additionalFields` (object, opcional): Campos adicionais no formato JSON para campos personalizados de Contato
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_CREATE_RECORD_LEAD">
|
||||
<Accordion title="salesforce/create_record_lead">
|
||||
**Descrição:** Crie um novo registro de Lead no Salesforce.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -51,7 +51,7 @@ Antes de usar a integração Salesforce, certifique-se de que você possui:
|
||||
- `additionalFields` (object, opcional): Campos adicionais no formato JSON para campos personalizados de Lead
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_CREATE_RECORD_OPPORTUNITY">
|
||||
<Accordion title="salesforce/create_record_opportunity">
|
||||
**Descrição:** Crie um novo registro de Oportunidade no Salesforce.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -66,7 +66,7 @@ Antes de usar a integração Salesforce, certifique-se de que você possui:
|
||||
- `additionalFields` (object, opcional): Campos adicionais no formato JSON para campos personalizados de Oportunidade
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_CREATE_RECORD_TASK">
|
||||
<Accordion title="salesforce/create_record_task">
|
||||
**Descrição:** Crie um novo registro de Tarefa no Salesforce.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -84,7 +84,7 @@ Antes de usar a integração Salesforce, certifique-se de que você possui:
|
||||
- `additionalFields` (object, opcional): Campos adicionais no formato JSON para campos personalizados de Tarefa
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_CREATE_RECORD_ACCOUNT">
|
||||
<Accordion title="salesforce/create_record_account">
|
||||
**Descrição:** Crie um novo registro de Conta no Salesforce.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -96,7 +96,7 @@ Antes de usar a integração Salesforce, certifique-se de que você possui:
|
||||
- `additionalFields` (object, opcional): Campos adicionais no formato JSON para campos personalizados de Conta
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_CREATE_RECORD_ANY">
|
||||
<Accordion title="salesforce/create_record_any">
|
||||
**Descrição:** Crie um registro de qualquer tipo de objeto no Salesforce.
|
||||
|
||||
**Nota:** Esta é uma ferramenta flexível para criar registros de tipos de objetos personalizados ou desconhecidos.
|
||||
@@ -106,7 +106,7 @@ Antes de usar a integração Salesforce, certifique-se de que você possui:
|
||||
### **Atualização de Registros**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="SALESFORCE_UPDATE_RECORD_CONTACT">
|
||||
<Accordion title="salesforce/update_record_contact">
|
||||
**Descrição:** Atualize um registro de Contato existente no Salesforce.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -120,7 +120,7 @@ Antes de usar a integração Salesforce, certifique-se de que você possui:
|
||||
- `additionalFields` (object, opcional): Campos adicionais no formato JSON para campos personalizados de Contato
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_UPDATE_RECORD_LEAD">
|
||||
<Accordion title="salesforce/update_record_lead">
|
||||
**Descrição:** Atualize um registro de Lead existente no Salesforce.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -137,7 +137,7 @@ Antes de usar a integração Salesforce, certifique-se de que você possui:
|
||||
- `additionalFields` (object, opcional): Campos adicionais no formato JSON para campos personalizados de Lead
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_UPDATE_RECORD_OPPORTUNITY">
|
||||
<Accordion title="salesforce/update_record_opportunity">
|
||||
**Descrição:** Atualize um registro de Oportunidade existente no Salesforce.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -153,7 +153,7 @@ Antes de usar a integração Salesforce, certifique-se de que você possui:
|
||||
- `additionalFields` (object, opcional): Campos adicionais no formato JSON para campos personalizados de Oportunidade
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_UPDATE_RECORD_TASK">
|
||||
<Accordion title="salesforce/update_record_task">
|
||||
**Descrição:** Atualize um registro de Tarefa existente no Salesforce.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -171,7 +171,7 @@ Antes de usar a integração Salesforce, certifique-se de que você possui:
|
||||
- `additionalFields` (object, opcional): Campos adicionais no formato JSON para campos personalizados de Tarefa
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_UPDATE_RECORD_ACCOUNT">
|
||||
<Accordion title="salesforce/update_record_account">
|
||||
**Descrição:** Atualize um registro de Conta existente no Salesforce.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -184,7 +184,7 @@ Antes de usar a integração Salesforce, certifique-se de que você possui:
|
||||
- `additionalFields` (object, opcional): Campos adicionais no formato JSON para campos personalizados de Conta
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_UPDATE_RECORD_ANY">
|
||||
<Accordion title="salesforce/update_record_any">
|
||||
**Descrição:** Atualize um registro de qualquer tipo de objeto no Salesforce.
|
||||
|
||||
**Nota:** Esta é uma ferramenta flexível para atualizar registros de tipos de objetos personalizados ou desconhecidos.
|
||||
@@ -194,42 +194,42 @@ Antes de usar a integração Salesforce, certifique-se de que você possui:
|
||||
### **Recuperação de Registros**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="SALESFORCE_GET_RECORD_BY_ID_CONTACT">
|
||||
<Accordion title="salesforce/get_record_by_id_contact">
|
||||
**Descrição:** Obtenha um registro de Contato pelo seu ID.
|
||||
|
||||
**Parâmetros:**
|
||||
- `recordId` (string, obrigatório): ID do registro do Contato
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_GET_RECORD_BY_ID_LEAD">
|
||||
<Accordion title="salesforce/get_record_by_id_lead">
|
||||
**Descrição:** Obtenha um registro de Lead pelo seu ID.
|
||||
|
||||
**Parâmetros:**
|
||||
- `recordId` (string, obrigatório): ID do registro do Lead
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_GET_RECORD_BY_ID_OPPORTUNITY">
|
||||
<Accordion title="salesforce/get_record_by_id_opportunity">
|
||||
**Descrição:** Obtenha um registro de Oportunidade pelo seu ID.
|
||||
|
||||
**Parâmetros:**
|
||||
- `recordId` (string, obrigatório): ID do registro da Oportunidade
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_GET_RECORD_BY_ID_TASK">
|
||||
<Accordion title="salesforce/get_record_by_id_task">
|
||||
**Descrição:** Obtenha um registro de Tarefa pelo seu ID.
|
||||
|
||||
**Parâmetros:**
|
||||
- `recordId` (string, obrigatório): ID do registro da Tarefa
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_GET_RECORD_BY_ID_ACCOUNT">
|
||||
<Accordion title="salesforce/get_record_by_id_account">
|
||||
**Descrição:** Obtenha um registro de Conta pelo seu ID.
|
||||
|
||||
**Parâmetros:**
|
||||
- `recordId` (string, obrigatório): ID do registro da Conta
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_GET_RECORD_BY_ID_ANY">
|
||||
<Accordion title="salesforce/get_record_by_id_any">
|
||||
**Descrição:** Obtenha um registro de qualquer tipo de objeto pelo seu ID.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -241,7 +241,7 @@ Antes de usar a integração Salesforce, certifique-se de que você possui:
|
||||
### **Busca de Registros**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="SALESFORCE_SEARCH_RECORDS_CONTACT">
|
||||
<Accordion title="salesforce/search_records_contact">
|
||||
**Descrição:** Pesquise registros de Contato com filtragem avançada.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -252,7 +252,7 @@ Antes de usar a integração Salesforce, certifique-se de que você possui:
|
||||
- `paginationParameters` (object, opcional): Configurações de paginação com pageCursor
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_SEARCH_RECORDS_LEAD">
|
||||
<Accordion title="salesforce/search_records_lead">
|
||||
**Descrição:** Pesquise registros de Lead com filtragem avançada.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -263,7 +263,7 @@ Antes de usar a integração Salesforce, certifique-se de que você possui:
|
||||
- `paginationParameters` (object, opcional): Configurações de paginação com pageCursor
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_SEARCH_RECORDS_OPPORTUNITY">
|
||||
<Accordion title="salesforce/search_records_opportunity">
|
||||
**Descrição:** Pesquise registros de Oportunidade com filtragem avançada.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -274,7 +274,7 @@ Antes de usar a integração Salesforce, certifique-se de que você possui:
|
||||
- `paginationParameters` (object, opcional): Configurações de paginação com pageCursor
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_SEARCH_RECORDS_TASK">
|
||||
<Accordion title="salesforce/search_records_task">
|
||||
**Descrição:** Pesquise registros de Tarefa com filtragem avançada.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -285,7 +285,7 @@ Antes de usar a integração Salesforce, certifique-se de que você possui:
|
||||
- `paginationParameters` (object, opcional): Configurações de paginação com pageCursor
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_SEARCH_RECORDS_ACCOUNT">
|
||||
<Accordion title="salesforce/search_records_account">
|
||||
**Descrição:** Pesquise registros de Conta com filtragem avançada.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -296,7 +296,7 @@ Antes de usar a integração Salesforce, certifique-se de que você possui:
|
||||
- `paginationParameters` (object, opcional): Configurações de paginação com pageCursor
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_SEARCH_RECORDS_ANY">
|
||||
<Accordion title="salesforce/search_records_any">
|
||||
**Descrição:** Pesquise registros de qualquer tipo de objeto.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -310,7 +310,7 @@ Antes de usar a integração Salesforce, certifique-se de que você possui:
|
||||
### **Recuperação por List View**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="SALESFORCE_GET_RECORD_BY_VIEW_ID_CONTACT">
|
||||
<Accordion title="salesforce/get_record_by_view_id_contact">
|
||||
**Descrição:** Obtenha registros de Contato de um List View específico.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -318,7 +318,7 @@ Antes de usar a integração Salesforce, certifique-se de que você possui:
|
||||
- `paginationParameters` (object, opcional): Configurações de paginação com pageCursor
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_GET_RECORD_BY_VIEW_ID_LEAD">
|
||||
<Accordion title="salesforce/get_record_by_view_id_lead">
|
||||
**Descrição:** Obtenha registros de Lead de um List View específico.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -326,7 +326,7 @@ Antes de usar a integração Salesforce, certifique-se de que você possui:
|
||||
- `paginationParameters` (object, opcional): Configurações de paginação com pageCursor
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_GET_RECORD_BY_VIEW_ID_OPPORTUNITY">
|
||||
<Accordion title="salesforce/get_record_by_view_id_opportunity">
|
||||
**Descrição:** Obtenha registros de Oportunidade de um List View específico.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -334,7 +334,7 @@ Antes de usar a integração Salesforce, certifique-se de que você possui:
|
||||
- `paginationParameters` (object, opcional): Configurações de paginação com pageCursor
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_GET_RECORD_BY_VIEW_ID_TASK">
|
||||
<Accordion title="salesforce/get_record_by_view_id_task">
|
||||
**Descrição:** Obtenha registros de Tarefa de um List View específico.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -342,7 +342,7 @@ Antes de usar a integração Salesforce, certifique-se de que você possui:
|
||||
- `paginationParameters` (object, opcional): Configurações de paginação com pageCursor
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_GET_RECORD_BY_VIEW_ID_ACCOUNT">
|
||||
<Accordion title="salesforce/get_record_by_view_id_account">
|
||||
**Descrição:** Obtenha registros de Conta de um List View específico.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -350,7 +350,7 @@ Antes de usar a integração Salesforce, certifique-se de que você possui:
|
||||
- `paginationParameters` (object, opcional): Configurações de paginação com pageCursor
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_GET_RECORD_BY_VIEW_ID_ANY">
|
||||
<Accordion title="salesforce/get_record_by_view_id_any">
|
||||
**Descrição:** Obtenha registros de qualquer tipo de objeto a partir de um List View específico.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -363,7 +363,7 @@ Antes de usar a integração Salesforce, certifique-se de que você possui:
|
||||
### **Campos Personalizados**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="SALESFORCE_CREATE_CUSTOM_FIELD_CONTACT">
|
||||
<Accordion title="salesforce/create_custom_field_contact">
|
||||
**Descrição:** Crie campos personalizados para objetos de Contato.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -379,7 +379,7 @@ Antes de usar a integração Salesforce, certifique-se de que você possui:
|
||||
- `defaultFieldValue` (string, opcional): Valor padrão do campo
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_CREATE_CUSTOM_FIELD_LEAD">
|
||||
<Accordion title="salesforce/create_custom_field_lead">
|
||||
**Descrição:** Crie campos personalizados para objetos de Lead.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -395,7 +395,7 @@ Antes de usar a integração Salesforce, certifique-se de que você possui:
|
||||
- `defaultFieldValue` (string, opcional): Valor padrão do campo
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_CREATE_CUSTOM_FIELD_OPPORTUNITY">
|
||||
<Accordion title="salesforce/create_custom_field_opportunity">
|
||||
**Descrição:** Crie campos personalizados para objetos de Oportunidade.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -411,7 +411,7 @@ Antes de usar a integração Salesforce, certifique-se de que você possui:
|
||||
- `defaultFieldValue` (string, opcional): Valor padrão do campo
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_CREATE_CUSTOM_FIELD_TASK">
|
||||
<Accordion title="salesforce/create_custom_field_task">
|
||||
**Descrição:** Crie campos personalizados para objetos de Tarefa.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -427,7 +427,7 @@ Antes de usar a integração Salesforce, certifique-se de que você possui:
|
||||
- `defaultFieldValue` (string, opcional): Valor padrão do campo
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_CREATE_CUSTOM_FIELD_ACCOUNT">
|
||||
<Accordion title="salesforce/create_custom_field_account">
|
||||
**Descrição:** Crie campos personalizados para objetos de Conta.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -443,7 +443,7 @@ Antes de usar a integração Salesforce, certifique-se de que você possui:
|
||||
- `defaultFieldValue` (string, opcional): Valor padrão do campo
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_CREATE_CUSTOM_FIELD_ANY">
|
||||
<Accordion title="salesforce/create_custom_field_any">
|
||||
**Descrição:** Crie campos personalizados para qualquer tipo de objeto.
|
||||
|
||||
**Nota:** Esta é uma ferramenta flexível para criar campos personalizados para tipos de objetos personalizados ou desconhecidos.
|
||||
@@ -453,14 +453,14 @@ Antes de usar a integração Salesforce, certifique-se de que você possui:
|
||||
### **Operações Avançadas**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="SALESFORCE_WRITE_SOQL_QUERY">
|
||||
<Accordion title="salesforce/write_soql_query">
|
||||
**Descrição:** Execute consultas SOQL personalizadas em seus dados do Salesforce.
|
||||
|
||||
**Parâmetros:**
|
||||
- `query` (string, obrigatório): Consulta SOQL (ex.: "SELECT Id, Name FROM Account WHERE Name = 'Exemplo'")
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_CREATE_CUSTOM_OBJECT">
|
||||
<Accordion title="salesforce/create_custom_object">
|
||||
**Descrição:** Crie um novo objeto personalizado no Salesforce.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -470,7 +470,7 @@ Antes de usar a integração Salesforce, certifique-se de que você possui:
|
||||
- `recordName` (string, obrigatório): Nome do registro exibido em layouts e buscas (ex.: "Nome da Conta")
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SALESFORCE_DESCRIBE_ACTION_SCHEMA">
|
||||
<Accordion title="salesforce/describe_action_schema">
|
||||
**Descrição:** Obtenha o schema esperado para operações em tipos de objetos específicos.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -487,19 +487,15 @@ Antes de usar a integração Salesforce, certifique-se de que você possui:
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
# Obtenha ferramentas enterprise (ferramentas Salesforce serão incluídas)
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token"
|
||||
)
|
||||
|
||||
# Crie um agente com capacidades Salesforce
|
||||
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]
|
||||
apps=['salesforce']
|
||||
)
|
||||
|
||||
# Task to create a new lead
|
||||
@@ -521,19 +517,16 @@ crew.kickoff()
|
||||
### Filtrando Ferramentas Salesforce Específicas
|
||||
|
||||
```python
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
# Obtenha apenas ferramentas Salesforce específicas
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token",
|
||||
actions_list=["salesforce_create_record_lead", "salesforce_update_record_opportunity", "salesforce_search_records_contact"]
|
||||
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
|
||||
apps=['salesforce']
|
||||
)
|
||||
|
||||
# Task to manage sales pipeline
|
||||
@@ -555,17 +548,12 @@ 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]
|
||||
apps=['salesforce']
|
||||
)
|
||||
|
||||
# Task to manage customer accounts
|
||||
@@ -591,17 +579,12 @@ 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="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]
|
||||
apps=['salesforce']
|
||||
)
|
||||
|
||||
# Complex task involving SOQL queries and data analysis
|
||||
|
||||
@@ -22,7 +22,7 @@ Antes de utilizar a integração com o Shopify, certifique-se de que você possu
|
||||
### **Gerenciamento de Clientes**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="SHOPIFY_GET_CUSTOMERS">
|
||||
<Accordion title="shopify/get_customers">
|
||||
**Descrição:** Recupera uma lista de clientes da sua loja Shopify.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -34,7 +34,7 @@ Antes de utilizar a integração com o Shopify, certifique-se de que você possu
|
||||
- `limit` (string, opcional): Número máximo de clientes a retornar (padrão 250)
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SHOPIFY_SEARCH_CUSTOMERS">
|
||||
<Accordion title="shopify/search_customers">
|
||||
**Descrição:** Pesquise por clientes usando critérios de filtragem avançados.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -42,7 +42,7 @@ Antes de utilizar a integração com o Shopify, certifique-se de que você possu
|
||||
- `limit` (string, opcional): Número máximo de clientes a retornar (padrão 250)
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SHOPIFY_CREATE_CUSTOMER">
|
||||
<Accordion title="shopify/create_customer">
|
||||
**Descrição:** Crie um novo cliente em sua loja Shopify.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -63,7 +63,7 @@ Antes de utilizar a integração com o Shopify, certifique-se de que você possu
|
||||
- `metafields` (object, opcional): Metacampos adicionais em formato JSON
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SHOPIFY_UPDATE_CUSTOMER">
|
||||
<Accordion title="shopify/update_customer">
|
||||
**Descrição:** Atualize um cliente existente em sua loja Shopify.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -89,7 +89,7 @@ Antes de utilizar a integração com o Shopify, certifique-se de que você possu
|
||||
### **Gestão de Pedidos**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="SHOPIFY_GET_ORDERS">
|
||||
<Accordion title="shopify/get_orders">
|
||||
**Descrição:** Recupera uma lista de pedidos da sua loja Shopify.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -101,7 +101,7 @@ Antes de utilizar a integração com o Shopify, certifique-se de que você possu
|
||||
- `limit` (string, opcional): Número máximo de pedidos a retornar (padrão 250)
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SHOPIFY_CREATE_ORDER">
|
||||
<Accordion title="shopify/create_order">
|
||||
**Descrição:** Crie um novo pedido em sua loja Shopify.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -114,7 +114,7 @@ Antes de utilizar a integração com o Shopify, certifique-se de que você possu
|
||||
- `note` (string, opcional): Observação do pedido
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SHOPIFY_UPDATE_ORDER">
|
||||
<Accordion title="shopify/update_order">
|
||||
**Descrição:** Atualize um pedido existente em sua loja Shopify.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -128,7 +128,7 @@ Antes de utilizar a integração com o Shopify, certifique-se de que você possu
|
||||
- `note` (string, opcional): Observação do pedido
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SHOPIFY_GET_ABANDONED_CARTS">
|
||||
<Accordion title="shopify/get_abandoned_carts">
|
||||
**Descrição:** Recupera carrinhos abandonados da sua loja Shopify.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -144,7 +144,7 @@ Antes de utilizar a integração com o Shopify, certifique-se de que você possu
|
||||
### **Gestão de Produtos (REST API)**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="SHOPIFY_GET_PRODUCTS">
|
||||
<Accordion title="shopify/get_products">
|
||||
**Descrição:** Recupera uma lista de produtos da sua loja Shopify utilizando a REST API.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -160,7 +160,7 @@ Antes de utilizar a integração com o Shopify, certifique-se de que você possu
|
||||
- `limit` (string, opcional): Número máximo de produtos a retornar (padrão 250)
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SHOPIFY_CREATE_PRODUCT">
|
||||
<Accordion title="shopify/create_product">
|
||||
**Descrição:** Crie um novo produto em sua loja Shopify utilizando a REST API.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -176,7 +176,7 @@ Antes de utilizar a integração com o Shopify, certifique-se de que você possu
|
||||
- `publishToPointToSale` (boolean, opcional): Se deve publicar no ponto de venda
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SHOPIFY_UPDATE_PRODUCT">
|
||||
<Accordion title="shopify/update_product">
|
||||
**Descrição:** Atualize um produto existente em sua loja Shopify utilizando a REST API.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -197,14 +197,14 @@ Antes de utilizar a integração com o Shopify, certifique-se de que você possu
|
||||
### **Gestão de Produtos (GraphQL)**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="SHOPIFY_GET_PRODUCTS_GRAPHQL">
|
||||
<Accordion title="shopify/get_products_graphql">
|
||||
**Descrição:** Recupere produtos utilizando filtros avançados do GraphQL.
|
||||
|
||||
**Parâmetros:**
|
||||
- `productFilterFormula` (object, opcional): Filtro avançado em forma normal disjuntiva com suporte a campos como id, title, vendor, status, handle, tag, created_at, updated_at, published_at
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SHOPIFY_CREATE_PRODUCT_GRAPHQL">
|
||||
<Accordion title="shopify/create_product_graphql">
|
||||
**Descrição:** Crie um novo produto utilizando a API GraphQL com suporte aprimorado a mídias.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -217,7 +217,7 @@ Antes de utilizar a integração com o Shopify, certifique-se de que você possu
|
||||
- `additionalFields` (object, opcional): Campos adicionais do produto como status, requiresSellingPlan, giftCard
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SHOPIFY_UPDATE_PRODUCT_GRAPHQL">
|
||||
<Accordion title="shopify/update_product_graphql">
|
||||
**Descrição:** Atualize um produto existente utilizando a API GraphQL com suporte aprimorado a mídias.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -238,19 +238,13 @@ Antes de utilizar a integração com o Shopify, certifique-se de que você possu
|
||||
|
||||
```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]
|
||||
apps=['shopify']
|
||||
)
|
||||
|
||||
# Task to create a new customer
|
||||
@@ -272,19 +266,12 @@ crew.kickoff()
|
||||
### Filtrando Ferramentas Específicas do 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
|
||||
apps=['shopify']
|
||||
)
|
||||
|
||||
# Task to manage store operations
|
||||
@@ -306,17 +293,12 @@ crew.kickoff()
|
||||
|
||||
```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]
|
||||
apps=['shopify']
|
||||
)
|
||||
|
||||
# Task to manage product catalog
|
||||
@@ -343,17 +325,12 @@ 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]
|
||||
apps=['shopify']
|
||||
)
|
||||
|
||||
# Complex task involving multiple operations
|
||||
|
||||
@@ -22,21 +22,21 @@ Antes de usar a integração com o Slack, certifique-se de que você tenha:
|
||||
### **Gerenciamento de Usuários**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="SLACK_LIST_MEMBERS">
|
||||
<Accordion title="slack/list_members">
|
||||
**Descrição:** Lista todos os membros de um canal do Slack.
|
||||
|
||||
**Parâmetros:**
|
||||
- Nenhum parâmetro necessário – recupera todos os membros do canal
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SLACK_GET_USER_BY_EMAIL">
|
||||
<Accordion title="slack/get_user_by_email">
|
||||
**Descrição:** Encontre um usuário no seu workspace do Slack pelo endereço de e-mail.
|
||||
|
||||
**Parâmetros:**
|
||||
- `email` (string, obrigatório): O endereço de e-mail de um usuário do workspace
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SLACK_GET_USERS_BY_NAME">
|
||||
<Accordion title="slack/get_users_by_name">
|
||||
**Descrição:** Pesquise usuários pelo nome ou nome de exibição.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -50,7 +50,7 @@ Antes de usar a integração com o Slack, certifique-se de que você tenha:
|
||||
### **Gerenciamento de Canais**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="SLACK_LIST_CHANNELS">
|
||||
<Accordion title="slack/list_channels">
|
||||
**Descrição:** Lista todos os canais do seu workspace no Slack.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -61,7 +61,7 @@ Antes de usar a integração com o Slack, certifique-se de que você tenha:
|
||||
### **Mensagens**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="SLACK_SEND_MESSAGE">
|
||||
<Accordion title="slack/send_message">
|
||||
**Descrição:** Envie uma mensagem para um canal do Slack.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -73,7 +73,7 @@ Antes de usar a integração com o Slack, certifique-se de que você tenha:
|
||||
- `authenticatedUser` (boolean, opcional): Se verdadeiro, a mensagem aparecerá como enviada pelo seu usuário autenticado do Slack ao invés do aplicativo (por padrão é falso)
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="SLACK_SEND_DIRECT_MESSAGE">
|
||||
<Accordion title="slack/send_direct_message">
|
||||
**Descrição:** Envie uma mensagem direta para um usuário específico no Slack.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -89,7 +89,7 @@ Antes de usar a integração com o Slack, certifique-se de que você tenha:
|
||||
### **Pesquisa & Descoberta**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="SLACK_SEARCH_MESSAGES">
|
||||
<Accordion title="slack/search_messages">
|
||||
**Descrição:** Procure por mensagens em todo o seu workspace do Slack.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -150,19 +150,13 @@ O Block Kit do Slack permite criar mensagens ricas e interativas. Veja alguns ex
|
||||
|
||||
```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]
|
||||
apps=['slack']
|
||||
)
|
||||
|
||||
# Task to send project updates
|
||||
@@ -184,19 +178,12 @@ crew.kickoff()
|
||||
### Filtrando Ferramentas Específicas do 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
|
||||
apps=['slack']
|
||||
)
|
||||
|
||||
# Task to coordinate team communication
|
||||
@@ -218,17 +205,12 @@ crew.kickoff()
|
||||
|
||||
```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]
|
||||
apps=['slack']
|
||||
)
|
||||
|
||||
# Task to send rich notifications
|
||||
@@ -254,17 +236,12 @@ 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]
|
||||
apps=['slack']
|
||||
)
|
||||
|
||||
# Complex task involving search and analysis
|
||||
|
||||
@@ -22,7 +22,7 @@ Antes de usar a integração com o Stripe, certifique-se de que você tem:
|
||||
### **Gerenciamento de Clientes**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="STRIPE_CREATE_CUSTOMER">
|
||||
<Accordion title="stripe/create_customer">
|
||||
**Descrição:** Crie um novo cliente em sua conta Stripe.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -32,14 +32,14 @@ Antes de usar a integração com o Stripe, certifique-se de que você tem:
|
||||
- `metadataCreateCustomer` (objeto, opcional): Metadados adicionais como pares chave-valor (exemplo: `{"field1": 1, "field2": 2}`)
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="STRIPE_GET_CUSTOMER_BY_ID">
|
||||
<Accordion title="stripe/get_customer_by_id">
|
||||
**Descrição:** Recupera um cliente específico pelo ID do cliente Stripe.
|
||||
|
||||
**Parâmetros:**
|
||||
- `idGetCustomer` (string, obrigatório): O ID do cliente Stripe a ser recuperado
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="STRIPE_GET_CUSTOMERS">
|
||||
<Accordion title="stripe/get_customers">
|
||||
**Descrição:** Recupera uma lista de clientes com filtragem opcional.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -49,7 +49,7 @@ Antes de usar a integração com o Stripe, certifique-se de que você tem:
|
||||
- `limitGetCustomers` (string, opcional): Número máximo de clientes a retornar (padrão: 10)
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="STRIPE_UPDATE_CUSTOMER">
|
||||
<Accordion title="stripe/update_customer">
|
||||
**Descrição:** Atualiza as informações de um cliente existente.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -64,7 +64,7 @@ Antes de usar a integração com o Stripe, certifique-se de que você tem:
|
||||
### **Gerenciamento de Assinaturas**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="STRIPE_CREATE_SUBSCRIPTION">
|
||||
<Accordion title="stripe/create_subscription">
|
||||
**Descrição:** Cria uma nova assinatura para um cliente.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -73,7 +73,7 @@ Antes de usar a integração com o Stripe, certifique-se de que você tem:
|
||||
- `metadataCreateSubscription` (objeto, opcional): Metadados adicionais para a assinatura
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="STRIPE_GET_SUBSCRIPTIONS">
|
||||
<Accordion title="stripe/get_subscriptions">
|
||||
**Descrição:** Recupera assinaturas com filtragem opcional.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -86,7 +86,7 @@ Antes de usar a integração com o Stripe, certifique-se de que você tem:
|
||||
### **Gerenciamento de Produtos**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="STRIPE_CREATE_PRODUCT">
|
||||
<Accordion title="stripe/create_product">
|
||||
**Descrição:** Cria um novo produto no seu catálogo Stripe.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -95,14 +95,14 @@ Antes de usar a integração com o Stripe, certifique-se de que você tem:
|
||||
- `metadataProduct` (objeto, opcional): Metadados adicionais do produto como pares chave-valor
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="STRIPE_GET_PRODUCT_BY_ID">
|
||||
<Accordion title="stripe/get_product_by_id">
|
||||
**Descrição:** Recupera um produto específico pelo ID do produto Stripe.
|
||||
|
||||
**Parâmetros:**
|
||||
- `productId` (string, obrigatório): O ID do produto Stripe a ser recuperado
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="STRIPE_GET_PRODUCTS">
|
||||
<Accordion title="stripe/get_products">
|
||||
**Descrição:** Recupera uma lista de produtos com filtragem opcional.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -115,7 +115,7 @@ Antes de usar a integração com o Stripe, certifique-se de que você tem:
|
||||
### **Operações Financeiras**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="STRIPE_GET_BALANCE_TRANSACTIONS">
|
||||
<Accordion title="stripe/get_balance_transactions">
|
||||
**Descrição:** Recupera transações de saldo da sua conta Stripe.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -124,7 +124,7 @@ Antes de usar a integração com o Stripe, certifique-se de que você tem:
|
||||
- `pageCursor` (string, opcional): Cursor da página para paginação
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="STRIPE_GET_PLANS">
|
||||
<Accordion title="stripe/get_plans">
|
||||
**Descrição:** Recupera planos de assinatura da sua conta Stripe.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -140,19 +140,13 @@ Antes de usar a integração com o Stripe, certifique-se de que você tem:
|
||||
|
||||
```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]
|
||||
apps=['stripe']
|
||||
)
|
||||
|
||||
# Task to create a new customer
|
||||
@@ -174,19 +168,12 @@ crew.kickoff()
|
||||
### Filtrando Ferramentas Stripe Específicas
|
||||
|
||||
```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
|
||||
apps=['stripe']
|
||||
)
|
||||
|
||||
# Task to manage billing operations
|
||||
@@ -208,17 +195,12 @@ 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]
|
||||
apps=['stripe']
|
||||
)
|
||||
|
||||
# Task to manage subscription operations
|
||||
@@ -245,17 +227,12 @@ 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]
|
||||
apps=['stripe']
|
||||
)
|
||||
|
||||
# Complex task involving financial analysis
|
||||
|
||||
@@ -22,7 +22,7 @@ Antes de usar a integração com o Zendesk, certifique-se de que você possui:
|
||||
### **Gerenciamento de Tickets**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="ZENDESK_CREATE_TICKET">
|
||||
<Accordion title="zendesk/create_ticket">
|
||||
**Descrição:** Crie um novo ticket de suporte no Zendesk.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -40,7 +40,7 @@ Antes de usar a integração com o Zendesk, certifique-se de que você possui:
|
||||
- `ticketCustomFields` (object, opcional): Valores de campos personalizados em formato JSON
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="ZENDESK_UPDATE_TICKET">
|
||||
<Accordion title="zendesk/update_ticket">
|
||||
**Descrição:** Atualize um ticket de suporte existente no Zendesk.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -58,14 +58,14 @@ Antes de usar a integração com o Zendesk, certifique-se de que você possui:
|
||||
- `ticketCustomFields` (object, opcional): Valores atualizados dos campos personalizados
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="ZENDESK_GET_TICKET_BY_ID">
|
||||
<Accordion title="zendesk/get_ticket_by_id">
|
||||
**Descrição:** Recupere um ticket específico pelo ID.
|
||||
|
||||
**Parâmetros:**
|
||||
- `ticketId` (string, obrigatório): ID do ticket a ser recuperado (ex.: "35436")
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="ZENDESK_ADD_COMMENT_TO_TICKET">
|
||||
<Accordion title="zendesk/add_comment_to_ticket">
|
||||
**Descrição:** Adicione um comentário ou nota interna a um ticket existente.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -75,7 +75,7 @@ Antes de usar a integração com o Zendesk, certifique-se de que você possui:
|
||||
- `isPublic` (boolean, opcional): Verdadeiro para comentários públicos, falso para notas internas
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="ZENDESK_SEARCH_TICKETS">
|
||||
<Accordion title="zendesk/search_tickets">
|
||||
**Descrição:** Busque tickets usando diversos filtros e critérios.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -100,7 +100,7 @@ Antes de usar a integração com o Zendesk, certifique-se de que você possui:
|
||||
### **Gerenciamento de Usuários**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="ZENDESK_CREATE_USER">
|
||||
<Accordion title="zendesk/create_user">
|
||||
**Descrição:** Crie um novo usuário no Zendesk.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -113,7 +113,7 @@ Antes de usar a integração com o Zendesk, certifique-se de que você possui:
|
||||
- `notes` (string, opcional): Notas internas sobre o usuário
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="ZENDESK_UPDATE_USER">
|
||||
<Accordion title="zendesk/update_user">
|
||||
**Descrição:** Atualize informações de um usuário existente.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -127,14 +127,14 @@ Antes de usar a integração com o Zendesk, certifique-se de que você possui:
|
||||
- `notes` (string, opcional): Novas notas internas
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="ZENDESK_GET_USER_BY_ID">
|
||||
<Accordion title="zendesk/get_user_by_id">
|
||||
**Descrição:** Recupere um usuário específico pelo ID.
|
||||
|
||||
**Parâmetros:**
|
||||
- `userId` (string, obrigatório): ID do usuário a ser recuperado
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="ZENDESK_SEARCH_USERS">
|
||||
<Accordion title="zendesk/search_users">
|
||||
**Descrição:** Busque usuários utilizando vários critérios.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -150,7 +150,7 @@ Antes de usar a integração com o Zendesk, certifique-se de que você possui:
|
||||
### **Ferramentas Administrativas**
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="ZENDESK_GET_TICKET_FIELDS">
|
||||
<Accordion title="zendesk/get_ticket_fields">
|
||||
**Descrição:** Recupere todos os campos padrão e personalizados disponíveis para tickets.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -158,7 +158,7 @@ Antes de usar a integração com o Zendesk, certifique-se de que você possui:
|
||||
- `pageCursor` (string, opcional): Cursor de página para paginação
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="ZENDESK_GET_TICKET_AUDITS">
|
||||
<Accordion title="zendesk/get_ticket_audits">
|
||||
**Descrição:** Obtenha registros de auditoria (histórico somente leitura) dos tickets.
|
||||
|
||||
**Parâmetros:**
|
||||
@@ -205,19 +205,15 @@ Progresso padrão de status dos tickets:
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
# Obtenha as ferramentas enterprise (as ferramentas Zendesk serão incluídas)
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token"
|
||||
)
|
||||
|
||||
# Crie um agente com capacidades Zendesk
|
||||
zendesk_agent = Agent(
|
||||
role="Gerente de Suporte",
|
||||
goal="Gerenciar tickets de suporte ao cliente e oferecer excelente atendimento",
|
||||
backstory="Um assistente de IA especializado em operações de suporte ao cliente e gerenciamento de tickets.",
|
||||
tools=[enterprise_tools]
|
||||
apps=['zendesk']
|
||||
)
|
||||
|
||||
# Tarefa para criar um novo ticket de suporte
|
||||
@@ -239,19 +235,16 @@ crew.kickoff()
|
||||
### Filtrando Ferramentas Zendesk Específicas
|
||||
|
||||
```python
|
||||
from crewai_tools import CrewaiEnterpriseTools
|
||||
|
||||
# Obtenha apenas ferramentas Zendesk específicas
|
||||
enterprise_tools = CrewaiEnterpriseTools(
|
||||
enterprise_token="your_enterprise_token",
|
||||
actions_list=["zendesk_create_ticket", "zendesk_update_ticket", "zendesk_add_comment_to_ticket"]
|
||||
actions_list=["zendesk/create_ticket", "zendesk/update_ticket", "zendesk/add_comment_to_ticket"]
|
||||
)
|
||||
|
||||
support_agent = Agent(
|
||||
role="Agente de Suporte ao Cliente",
|
||||
goal="Atender consultas de clientes e resolver issues de suporte de forma eficiente",
|
||||
backstory="Um agente de suporte experiente que se especializa em resolução de tickets e comunicação com clientes.",
|
||||
tools=enterprise_tools
|
||||
apps=['zendesk']
|
||||
)
|
||||
|
||||
# Tarefa para gerenciar o fluxo de suporte
|
||||
@@ -273,17 +266,12 @@ 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="Gerente de Tickets",
|
||||
goal="Gerenciar fluxos de tickets de suporte e garantir resolução tempestiva",
|
||||
backstory="Um assistente de IA que se especializa em triagem de tickets de suporte e otimização de fluxos de trabalho.",
|
||||
tools=[enterprise_tools]
|
||||
apps=['zendesk']
|
||||
)
|
||||
|
||||
# Tarefa para gerenciar o ciclo de vida do ticket
|
||||
@@ -310,17 +298,12 @@ 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="Analista de Suporte",
|
||||
goal="Analisar métricas de suporte e gerar insights para desempenho da equipe",
|
||||
backstory="Um IA analítico que se destaca na extração de insights a partir de dados de suporte e padrões de tickets.",
|
||||
tools=[enterprise_tools]
|
||||
apps=['zendesk']
|
||||
)
|
||||
|
||||
# Tarefa complexa envolvendo análise e geração de relatórios
|
||||
|
||||
335
lib/crewai-tools/BUILDING_TOOLS.md
Normal file
335
lib/crewai-tools/BUILDING_TOOLS.md
Normal file
@@ -0,0 +1,335 @@
|
||||
## Building CrewAI Tools
|
||||
|
||||
This guide shows you how to build high‑quality CrewAI tools that match the patterns in this repository and are ready to be merged. It focuses on: architecture, conventions, environment variables, dependencies, testing, documentation, and a complete example.
|
||||
|
||||
### Who this is for
|
||||
- Contributors creating new tools under `crewai_tools/tools/*`
|
||||
- Maintainers reviewing PRs for consistency and DX
|
||||
|
||||
---
|
||||
|
||||
## Quick‑start checklist
|
||||
1. Create a new folder under `crewai_tools/tools/<your_tool_name>/` with a `README.md` and a `<your_tool_name>.py`.
|
||||
2. Implement a class that ends with `Tool` and subclasses `BaseTool` (or `RagTool` when appropriate).
|
||||
3. Define a Pydantic `args_schema` with explicit field descriptions and validation.
|
||||
4. Declare `env_vars` and `package_dependencies` in the class when needed.
|
||||
5. Lazily initialize clients in `__init__` or `_run` and handle missing credentials with clear errors.
|
||||
6. Implement `_run(...) -> str | dict` and, if needed, `_arun(...)`.
|
||||
7. Add tests under `tests/tools/` (unit, no real network calls; mock or record safely).
|
||||
8. Add a concise tool `README.md` with usage and required env vars.
|
||||
9. If you add optional dependencies, register them in `pyproject.toml` under `[project.optional-dependencies]` and reference that extra in your tool docs.
|
||||
10. Run `uv run pytest` and `pre-commit run -a` locally; ensure green.
|
||||
|
||||
---
|
||||
|
||||
## Tool anatomy and conventions
|
||||
|
||||
### BaseTool pattern
|
||||
All tools follow this structure:
|
||||
|
||||
```python
|
||||
from typing import Any, List, Optional, Type
|
||||
|
||||
import os
|
||||
from pydantic import BaseModel, Field
|
||||
from crewai.tools import BaseTool, EnvVar
|
||||
|
||||
|
||||
class MyToolInput(BaseModel):
|
||||
"""Input schema for MyTool."""
|
||||
query: str = Field(..., description="Your input description here")
|
||||
limit: int = Field(5, ge=1, le=50, description="Max items to return")
|
||||
|
||||
|
||||
class MyTool(BaseTool):
|
||||
name: str = "My Tool"
|
||||
description: str = "Explain succinctly what this tool does and when to use it."
|
||||
args_schema: Type[BaseModel] = MyToolInput
|
||||
|
||||
# Only include when applicable
|
||||
env_vars: List[EnvVar] = [
|
||||
EnvVar(name="MY_API_KEY", description="API key for My service", required=True),
|
||||
]
|
||||
package_dependencies: List[str] = ["my-sdk"]
|
||||
|
||||
def __init__(self, **kwargs: Any) -> None:
|
||||
super().__init__(**kwargs)
|
||||
# Lazy import to keep base install light
|
||||
try:
|
||||
import my_sdk # noqa: F401
|
||||
except Exception as exc:
|
||||
raise ImportError(
|
||||
"Missing optional dependency 'my-sdk'. Install with: \n"
|
||||
" uv add crewai-tools --extra my-sdk\n"
|
||||
"or\n"
|
||||
" pip install my-sdk\n"
|
||||
) from exc
|
||||
|
||||
if "MY_API_KEY" not in os.environ:
|
||||
raise ValueError("Environment variable MY_API_KEY is required for MyTool")
|
||||
|
||||
def _run(self, query: str, limit: int = 5, **_: Any) -> str:
|
||||
"""Synchronous execution. Return a concise string or JSON string."""
|
||||
# Implement your logic here; do not print. Return the content.
|
||||
# Handle errors gracefully, return clear messages.
|
||||
return f"Processed {query} with limit={limit}"
|
||||
|
||||
async def _arun(self, *args: Any, **kwargs: Any) -> str:
|
||||
"""Optional async counterpart if your client supports it."""
|
||||
# Prefer delegating to _run when the client is thread-safe
|
||||
return self._run(*args, **kwargs)
|
||||
```
|
||||
|
||||
Key points:
|
||||
- Class name must end with `Tool` to be auto‑discovered by our tooling.
|
||||
- Use `args_schema` for inputs; always include `description` and validation.
|
||||
- Validate env vars early and fail with actionable errors.
|
||||
- Keep outputs deterministic and compact; favor `str` (possibly JSON‑encoded) or small dicts converted to strings.
|
||||
- Avoid printing; return the final string.
|
||||
|
||||
### Error handling
|
||||
- Wrap network and I/O with try/except and return a helpful message. See `BraveSearchTool` and others for patterns.
|
||||
- Validate required inputs and environment configuration with clear messages.
|
||||
- Keep exceptions user‑friendly; do not leak stack traces.
|
||||
|
||||
### Rate limiting and retries
|
||||
- If the upstream API enforces request pacing, implement minimal rate limiting (see `BraveSearchTool`).
|
||||
- Consider idempotency and backoff for transient errors where appropriate.
|
||||
|
||||
### Async support
|
||||
- Implement `_arun` only if your library has a true async client or your sync calls are thread‑safe.
|
||||
- Otherwise, delegate `_arun` to `_run` as in multiple existing tools.
|
||||
|
||||
### Returning values
|
||||
- Return a string (or JSON string) that’s ready to display in an agent transcript.
|
||||
- If returning structured data, keep it small and human‑readable. Use stable keys and ordering.
|
||||
|
||||
---
|
||||
|
||||
## RAG tools and adapters
|
||||
|
||||
If your tool is a knowledge source, consider extending `RagTool` and/or creating an adapter.
|
||||
|
||||
- `RagTool` exposes `add(...)` and a `query(question: str) -> str` contract through an `Adapter`.
|
||||
- See `crewai_tools/tools/rag/rag_tool.py` and adapters like `embedchain_adapter.py` and `lancedb_adapter.py`.
|
||||
|
||||
Minimal adapter example:
|
||||
|
||||
```python
|
||||
from typing import Any
|
||||
from pydantic import BaseModel
|
||||
from crewai_tools.tools.rag.rag_tool import Adapter, RagTool
|
||||
|
||||
|
||||
class MemoryAdapter(Adapter):
|
||||
store: list[str] = []
|
||||
|
||||
def add(self, text: str, **_: Any) -> None:
|
||||
self.store.append(text)
|
||||
|
||||
def query(self, question: str) -> str:
|
||||
# naive demo: return all text containing any word from the question
|
||||
tokens = set(question.lower().split())
|
||||
hits = [t for t in self.store if tokens & set(t.lower().split())]
|
||||
return "\n".join(hits) if hits else "No relevant content found."
|
||||
|
||||
|
||||
class MemoryRagTool(RagTool):
|
||||
name: str = "In‑memory RAG"
|
||||
description: str = "Toy RAG that stores text in memory and returns matches."
|
||||
adapter: Adapter = MemoryAdapter()
|
||||
```
|
||||
|
||||
When using external vector DBs (MongoDB, Qdrant, Weaviate), study the existing tools to follow indexing, embedding, and query configuration patterns closely.
|
||||
|
||||
---
|
||||
|
||||
## Toolkits (multiple related tools)
|
||||
|
||||
Some integrations expose a toolkit (a group of tools) rather than a single class. See Bedrock `browser_toolkit.py` and `code_interpreter_toolkit.py`.
|
||||
|
||||
Guidelines:
|
||||
- Provide small, focused `BaseTool` classes for each operation (e.g., `navigate`, `click`, `extract_text`).
|
||||
- Offer a helper `create_<name>_toolkit(...) -> Tuple[ToolkitClass, List[BaseTool]]` to create tools and manage resources.
|
||||
- If you open external resources (browsers, interpreters), support cleanup methods and optionally context manager usage.
|
||||
|
||||
---
|
||||
|
||||
## Environment variables and dependencies
|
||||
|
||||
### env_vars
|
||||
- Declare as `env_vars: List[EnvVar]` with `name`, `description`, `required`, and optional `default`.
|
||||
- Validate presence in `__init__` or on first `_run` call.
|
||||
|
||||
### Dependencies
|
||||
- List runtime packages in `package_dependencies` on the class.
|
||||
- If they are genuinely optional, add an extra under `[project.optional-dependencies]` in `pyproject.toml` (e.g., `tavily-python`, `serpapi`, `scrapfly-sdk`).
|
||||
- Use lazy imports to avoid hard deps for users who don’t need the tool.
|
||||
|
||||
---
|
||||
|
||||
## Testing
|
||||
|
||||
Place tests under `tests/tools/` and follow these rules:
|
||||
- Do not hit real external services in CI. Use mocks, fakes, or recorded fixtures where allowed.
|
||||
- Validate input validation, env var handling, error messages, and happy path output formatting.
|
||||
- Keep tests fast and deterministic.
|
||||
|
||||
Example skeleton (`tests/tools/my_tool_test.py`):
|
||||
|
||||
```python
|
||||
import os
|
||||
import pytest
|
||||
from crewai_tools.tools.my_tool.my_tool import MyTool
|
||||
|
||||
|
||||
def test_requires_env_var(monkeypatch):
|
||||
monkeypatch.delenv("MY_API_KEY", raising=False)
|
||||
with pytest.raises(ValueError):
|
||||
MyTool()
|
||||
|
||||
|
||||
def test_happy_path(monkeypatch):
|
||||
monkeypatch.setenv("MY_API_KEY", "test")
|
||||
tool = MyTool()
|
||||
result = tool.run(query="hello", limit=2)
|
||||
assert "hello" in result
|
||||
```
|
||||
|
||||
Run locally:
|
||||
|
||||
```bash
|
||||
uv run pytest
|
||||
pre-commit run -a
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Documentation
|
||||
|
||||
Each tool must include a `README.md` in its folder with:
|
||||
- What it does and when to use it
|
||||
- Required env vars and optional extras (with install snippet)
|
||||
- Minimal usage example
|
||||
|
||||
Update the root `README.md` only if the tool introduces a new category or notable capability.
|
||||
|
||||
---
|
||||
|
||||
## Discovery and specs
|
||||
|
||||
Our internal tooling discovers classes whose names end with `Tool`. Keep your class exported from the module path under `crewai_tools/tools/...` to be picked up by scripts like `generate_tool_specs.py`.
|
||||
|
||||
---
|
||||
|
||||
## Full example: “Weather Search Tool”
|
||||
|
||||
This example demonstrates: `args_schema`, `env_vars`, `package_dependencies`, lazy imports, validation, and robust error handling.
|
||||
|
||||
```python
|
||||
# file: crewai_tools/tools/weather_tool/weather_tool.py
|
||||
from typing import Any, List, Optional, Type
|
||||
import os
|
||||
import requests
|
||||
from pydantic import BaseModel, Field
|
||||
from crewai.tools import BaseTool, EnvVar
|
||||
|
||||
|
||||
class WeatherToolInput(BaseModel):
|
||||
"""Input schema for WeatherTool."""
|
||||
city: str = Field(..., description="City name, e.g., 'Berlin'")
|
||||
country: Optional[str] = Field(None, description="ISO country code, e.g., 'DE'")
|
||||
units: str = Field(
|
||||
default="metric",
|
||||
description="Units system: 'metric' or 'imperial'",
|
||||
pattern=r"^(metric|imperial)$",
|
||||
)
|
||||
|
||||
|
||||
class WeatherTool(BaseTool):
|
||||
name: str = "Weather Search"
|
||||
description: str = (
|
||||
"Look up current weather for a city using a public weather API."
|
||||
)
|
||||
args_schema: Type[BaseModel] = WeatherToolInput
|
||||
|
||||
env_vars: List[EnvVar] = [
|
||||
EnvVar(
|
||||
name="WEATHER_API_KEY",
|
||||
description="API key for the weather service",
|
||||
required=True,
|
||||
),
|
||||
]
|
||||
package_dependencies: List[str] = ["requests"]
|
||||
|
||||
base_url: str = "https://api.openweathermap.org/data/2.5/weather"
|
||||
|
||||
def __init__(self, **kwargs: Any) -> None:
|
||||
super().__init__(**kwargs)
|
||||
if "WEATHER_API_KEY" not in os.environ:
|
||||
raise ValueError("WEATHER_API_KEY is required for WeatherTool")
|
||||
|
||||
def _run(self, city: str, country: Optional[str] = None, units: str = "metric") -> str:
|
||||
try:
|
||||
q = f"{city},{country}" if country else city
|
||||
params = {
|
||||
"q": q,
|
||||
"units": units,
|
||||
"appid": os.environ["WEATHER_API_KEY"],
|
||||
}
|
||||
resp = requests.get(self.base_url, params=params, timeout=10)
|
||||
resp.raise_for_status()
|
||||
data = resp.json()
|
||||
|
||||
main = data.get("weather", [{}])[0].get("main", "Unknown")
|
||||
desc = data.get("weather", [{}])[0].get("description", "")
|
||||
temp = data.get("main", {}).get("temp")
|
||||
feels = data.get("main", {}).get("feels_like")
|
||||
city_name = data.get("name", city)
|
||||
|
||||
return (
|
||||
f"Weather in {city_name}: {main} ({desc}). "
|
||||
f"Temperature: {temp}°, feels like {feels}°."
|
||||
)
|
||||
except requests.Timeout:
|
||||
return "Weather service timed out. Please try again later."
|
||||
except requests.HTTPError as e:
|
||||
return f"Weather service error: {e.response.status_code} {e.response.text[:120]}"
|
||||
except Exception as e:
|
||||
return f"Unexpected error fetching weather: {e}"
|
||||
```
|
||||
|
||||
Folder layout:
|
||||
|
||||
```
|
||||
crewai_tools/tools/weather_tool/
|
||||
├─ weather_tool.py
|
||||
└─ README.md
|
||||
```
|
||||
|
||||
And `README.md` should document env vars and usage.
|
||||
|
||||
---
|
||||
|
||||
## PR checklist
|
||||
- [ ] Tool lives under `crewai_tools/tools/<name>/`
|
||||
- [ ] Class ends with `Tool` and subclasses `BaseTool` (or `RagTool`)
|
||||
- [ ] Precise `args_schema` with descriptions and validation
|
||||
- [ ] `env_vars` declared (if any) and validated
|
||||
- [ ] `package_dependencies` and optional extras added in `pyproject.toml` (if any)
|
||||
- [ ] Clear error handling; no prints
|
||||
- [ ] Unit tests added (`tests/tools/`), fast and deterministic
|
||||
- [ ] Tool `README.md` with usage and env vars
|
||||
- [ ] `pre-commit` and `pytest` pass locally
|
||||
|
||||
---
|
||||
|
||||
## Tips for great DX
|
||||
- Keep responses short and useful—agents quote your tool output directly.
|
||||
- Validate early; fail fast with actionable guidance.
|
||||
- Prefer lazy imports; minimize default install surface.
|
||||
- Mirror patterns from similar tools in this repo for a consistent developer experience.
|
||||
|
||||
Happy building!
|
||||
|
||||
|
||||
229
lib/crewai-tools/README.md
Normal file
229
lib/crewai-tools/README.md
Normal file
@@ -0,0 +1,229 @@
|
||||
<div align="center">
|
||||
|
||||

|
||||
|
||||
<div align="left">
|
||||
|
||||
# CrewAI Tools
|
||||
|
||||
Empower your CrewAI agents with powerful, customizable tools to elevate their capabilities and tackle sophisticated, real-world tasks.
|
||||
|
||||
CrewAI Tools provide the essential functionality to extend your agents, helping you rapidly enhance your automations with reliable, ready-to-use tools or custom-built solutions tailored precisely to your needs.
|
||||
|
||||
---
|
||||
|
||||
## Quick Links
|
||||
|
||||
[Homepage](https://www.crewai.com/) | [Documentation](https://docs.crewai.com/) | [Examples](https://github.com/crewAIInc/crewAI-examples) | [Community](https://community.crewai.com/)
|
||||
|
||||
---
|
||||
|
||||
## Available Tools
|
||||
|
||||
CrewAI provides an extensive collection of powerful tools ready to enhance your agents:
|
||||
|
||||
- **File Management**: `FileReadTool`, `FileWriteTool`
|
||||
- **Web Scraping**: `ScrapeWebsiteTool`, `SeleniumScrapingTool`
|
||||
- **Database Integrations**: `MySQLSearchTool`
|
||||
- **Vector Database Integrations**: `MongoDBVectorSearchTool`, `QdrantVectorSearchTool`, `WeaviateVectorSearchTool`
|
||||
- **API Integrations**: `SerperApiTool`, `EXASearchTool`
|
||||
- **AI-powered Tools**: `DallETool`, `VisionTool`, `StagehandTool`
|
||||
|
||||
And many more robust tools to simplify your agent integrations.
|
||||
|
||||
---
|
||||
|
||||
## Creating Custom Tools
|
||||
|
||||
CrewAI offers two straightforward approaches to creating custom tools:
|
||||
|
||||
### Subclassing `BaseTool`
|
||||
|
||||
Define your tool by subclassing:
|
||||
|
||||
```python
|
||||
from crewai.tools import BaseTool
|
||||
|
||||
class MyCustomTool(BaseTool):
|
||||
name: str = "Tool Name"
|
||||
description: str = "Detailed description here."
|
||||
|
||||
def _run(self, *args, **kwargs):
|
||||
# Your tool logic here
|
||||
```
|
||||
|
||||
### Using the `tool` Decorator
|
||||
|
||||
Quickly create lightweight tools using decorators:
|
||||
|
||||
```python
|
||||
from crewai import tool
|
||||
|
||||
@tool("Tool Name")
|
||||
def my_custom_function(input):
|
||||
# Tool logic here
|
||||
return output
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## CrewAI Tools and MCP
|
||||
|
||||
CrewAI Tools supports the Model Context Protocol (MCP). It gives you access to thousands of tools from the hundreds of MCP servers out there built by the community.
|
||||
|
||||
Before you start using MCP with CrewAI tools, you need to install the `mcp` extra dependencies:
|
||||
|
||||
```bash
|
||||
pip install crewai-tools[mcp]
|
||||
# or
|
||||
uv add crewai-tools --extra mcp
|
||||
```
|
||||
|
||||
To quickly get started with MCP in CrewAI you have 2 options:
|
||||
|
||||
### Option 1: Fully managed connection
|
||||
|
||||
In this scenario we use a contextmanager (`with` statement) to start and stop the the connection with the MCP server.
|
||||
This is done in the background and you only get to interact with the CrewAI tools corresponding to the MCP server's tools.
|
||||
|
||||
For an STDIO based MCP server:
|
||||
|
||||
```python
|
||||
from mcp import StdioServerParameters
|
||||
from crewai_tools import MCPServerAdapter
|
||||
|
||||
serverparams = StdioServerParameters(
|
||||
command="uvx",
|
||||
args=["--quiet", "pubmedmcp@0.1.3"],
|
||||
env={"UV_PYTHON": "3.12", **os.environ},
|
||||
)
|
||||
|
||||
with MCPServerAdapter(serverparams) as tools:
|
||||
# tools is now a list of CrewAI Tools matching 1:1 with the MCP server's tools
|
||||
agent = Agent(..., tools=tools)
|
||||
task = Task(...)
|
||||
crew = Crew(..., agents=[agent], tasks=[task])
|
||||
crew.kickoff(...)
|
||||
```
|
||||
For an SSE based MCP server:
|
||||
|
||||
```python
|
||||
serverparams = {"url": "http://localhost:8000/sse"}
|
||||
with MCPServerAdapter(serverparams) as tools:
|
||||
# tools is now a list of CrewAI Tools matching 1:1 with the MCP server's tools
|
||||
agent = Agent(..., tools=tools)
|
||||
task = Task(...)
|
||||
crew = Crew(..., agents=[agent], tasks=[task])
|
||||
crew.kickoff(...)
|
||||
```
|
||||
|
||||
### Option 2: More control over the MCP connection
|
||||
|
||||
If you need more control over the MCP connection, you can instanciate the MCPServerAdapter into an `mcp_server_adapter` object which can be used to manage the connection with the MCP server and access the available tools.
|
||||
|
||||
**important**: in this case you need to call `mcp_server_adapter.stop()` to make sure the connection is correctly stopped. We recommend that you use a `try ... finally` block run to make sure the `.stop()` is called even in case of errors.
|
||||
|
||||
Here is the same example for an STDIO MCP Server:
|
||||
|
||||
```python
|
||||
from mcp import StdioServerParameters
|
||||
from crewai_tools import MCPServerAdapter
|
||||
|
||||
serverparams = StdioServerParameters(
|
||||
command="uvx",
|
||||
args=["--quiet", "pubmedmcp@0.1.3"],
|
||||
env={"UV_PYTHON": "3.12", **os.environ},
|
||||
)
|
||||
|
||||
try:
|
||||
mcp_server_adapter = MCPServerAdapter(serverparams)
|
||||
tools = mcp_server_adapter.tools
|
||||
# tools is now a list of CrewAI Tools matching 1:1 with the MCP server's tools
|
||||
agent = Agent(..., tools=tools)
|
||||
task = Task(...)
|
||||
crew = Crew(..., agents=[agent], tasks=[task])
|
||||
crew.kickoff(...)
|
||||
|
||||
# ** important ** don't forget to stop the connection
|
||||
finally:
|
||||
mcp_server_adapter.stop()
|
||||
```
|
||||
|
||||
And finally the same thing but for an SSE MCP Server:
|
||||
|
||||
```python
|
||||
from mcp import StdioServerParameters
|
||||
from crewai_tools import MCPServerAdapter
|
||||
|
||||
serverparams = {"url": "http://localhost:8000/sse"}
|
||||
|
||||
try:
|
||||
mcp_server_adapter = MCPServerAdapter(serverparams)
|
||||
tools = mcp_server_adapter.tools
|
||||
# tools is now a list of CrewAI Tools matching 1:1 with the MCP server's tools
|
||||
agent = Agent(..., tools=tools)
|
||||
task = Task(...)
|
||||
crew = Crew(..., agents=[agent], tasks=[task])
|
||||
crew.kickoff(...)
|
||||
|
||||
# ** important ** don't forget to stop the connection
|
||||
finally:
|
||||
mcp_server_adapter.stop()
|
||||
```
|
||||
|
||||
### Considerations & Limitations
|
||||
|
||||
#### Staying Safe with MCP
|
||||
|
||||
Always make sure that you trust the MCP Server before using it. Using an STDIO server will execute code on your machine. Using SSE is still not a silver bullet with many injection possible into your application from a malicious MCP server.
|
||||
|
||||
#### Limitations
|
||||
|
||||
* At this time we only support tools from MCP Server not other type of primitives like prompts, resources...
|
||||
* We only return the first text output returned by the MCP Server tool using `.content[0].text`
|
||||
|
||||
---
|
||||
|
||||
## Why Use CrewAI Tools?
|
||||
|
||||
- **Simplicity & Flexibility**: Easy-to-use yet powerful enough for complex workflows.
|
||||
- **Rapid Integration**: Seamlessly incorporate external services, APIs, and databases.
|
||||
- **Enterprise Ready**: Built for stability, performance, and consistent results.
|
||||
|
||||
---
|
||||
|
||||
## Contribution Guidelines
|
||||
|
||||
We welcome contributions from the community!
|
||||
|
||||
1. Fork and clone the repository.
|
||||
2. Create a new branch (`git checkout -b feature/my-feature`).
|
||||
3. Commit your changes (`git commit -m 'Add my feature'`).
|
||||
4. Push your branch (`git push origin feature/my-feature`).
|
||||
5. Open a pull request.
|
||||
|
||||
---
|
||||
|
||||
## Developer Quickstart
|
||||
|
||||
```shell
|
||||
pip install crewai[tools]
|
||||
```
|
||||
|
||||
### Development Setup
|
||||
|
||||
- Install dependencies: `uv sync`
|
||||
- Run tests: `uv run pytest`
|
||||
- Run static type checking: `uv run pyright`
|
||||
- Set up pre-commit hooks: `pre-commit install`
|
||||
|
||||
---
|
||||
|
||||
## Support and Community
|
||||
|
||||
Join our rapidly growing community and receive real-time support:
|
||||
|
||||
- [Discourse](https://community.crewai.com/)
|
||||
- [Open an Issue](https://github.com/crewAIInc/crewAI/issues)
|
||||
|
||||
Build smarter, faster, and more powerful AI solutions—powered by CrewAI Tools.
|
||||
156
lib/crewai-tools/generate_tool_specs.py
Normal file
156
lib/crewai-tools/generate_tool_specs.py
Normal file
@@ -0,0 +1,156 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
from collections.abc import Mapping
|
||||
import inspect
|
||||
import json
|
||||
from pathlib import Path
|
||||
from typing import Any, cast
|
||||
|
||||
from crewai.tools.base_tool import BaseTool, EnvVar
|
||||
from crewai_tools import tools
|
||||
from pydantic import BaseModel
|
||||
from pydantic.json_schema import GenerateJsonSchema
|
||||
from pydantic_core import PydanticOmit
|
||||
|
||||
|
||||
class SchemaGenerator(GenerateJsonSchema):
|
||||
def handle_invalid_for_json_schema(self, schema, error_info):
|
||||
raise PydanticOmit
|
||||
|
||||
|
||||
class ToolSpecExtractor:
|
||||
def __init__(self) -> None:
|
||||
self.tools_spec: list[dict[str, Any]] = []
|
||||
self.processed_tools: set[str] = set()
|
||||
|
||||
def extract_all_tools(self) -> list[dict[str, Any]]:
|
||||
for name in dir(tools):
|
||||
if name.endswith("Tool") and name not in self.processed_tools:
|
||||
obj = getattr(tools, name, None)
|
||||
if inspect.isclass(obj) and issubclass(obj, BaseTool):
|
||||
self.extract_tool_info(obj)
|
||||
self.processed_tools.add(name)
|
||||
return self.tools_spec
|
||||
|
||||
def extract_tool_info(self, tool_class: type[BaseTool]) -> None:
|
||||
try:
|
||||
core_schema = tool_class.__pydantic_core_schema__
|
||||
if not core_schema:
|
||||
return
|
||||
|
||||
schema = self._unwrap_schema(core_schema)
|
||||
fields = schema.get("schema", {}).get("fields", {})
|
||||
|
||||
tool_info = {
|
||||
"name": tool_class.__name__,
|
||||
"humanized_name": self._extract_field_default(
|
||||
fields.get("name"), fallback=tool_class.__name__
|
||||
),
|
||||
"description": str(
|
||||
self._extract_field_default(fields.get("description"))
|
||||
).strip(),
|
||||
"run_params_schema": self._extract_params(fields.get("args_schema")),
|
||||
"init_params_schema": self._extract_init_params(tool_class),
|
||||
"env_vars": self._extract_env_vars(fields.get("env_vars")),
|
||||
"package_dependencies": self._extract_field_default(
|
||||
fields.get("package_dependencies"), fallback=[]
|
||||
),
|
||||
}
|
||||
|
||||
self.tools_spec.append(tool_info)
|
||||
|
||||
except Exception: # noqa: S110
|
||||
pass
|
||||
|
||||
@staticmethod
|
||||
def _unwrap_schema(schema: Mapping[str, Any] | dict[str, Any]) -> dict[str, Any]:
|
||||
result: dict[str, Any] = dict(schema)
|
||||
while (
|
||||
result.get("type") in {"function-after", "default"} and "schema" in result
|
||||
):
|
||||
result = dict(result["schema"])
|
||||
return result
|
||||
|
||||
@staticmethod
|
||||
def _extract_field_default(
|
||||
field: dict | None, fallback: str | list[Any] = ""
|
||||
) -> str | list[Any] | int:
|
||||
if not field:
|
||||
return fallback
|
||||
|
||||
schema = field.get("schema", {})
|
||||
default = schema.get("default")
|
||||
return default if isinstance(default, (list, str, int)) else fallback
|
||||
|
||||
@staticmethod
|
||||
def _extract_params(args_schema_field: dict | None) -> dict[str, Any]:
|
||||
if not args_schema_field:
|
||||
return {}
|
||||
|
||||
args_schema_class = args_schema_field.get("schema", {}).get("default")
|
||||
if not (
|
||||
inspect.isclass(args_schema_class)
|
||||
and issubclass(args_schema_class, BaseModel)
|
||||
):
|
||||
return {}
|
||||
|
||||
# Cast to type[BaseModel] after runtime check
|
||||
schema_class = cast(type[BaseModel], args_schema_class)
|
||||
try:
|
||||
return schema_class.model_json_schema(schema_generator=SchemaGenerator)
|
||||
except Exception:
|
||||
return {}
|
||||
|
||||
@staticmethod
|
||||
def _extract_env_vars(env_vars_field: dict | None) -> list[dict[str, Any]]:
|
||||
if not env_vars_field:
|
||||
return []
|
||||
|
||||
return [
|
||||
{
|
||||
"name": env_var.name,
|
||||
"description": env_var.description,
|
||||
"required": env_var.required,
|
||||
"default": env_var.default,
|
||||
}
|
||||
for env_var in env_vars_field.get("schema", {}).get("default", [])
|
||||
if isinstance(env_var, EnvVar)
|
||||
]
|
||||
|
||||
@staticmethod
|
||||
def _extract_init_params(tool_class: type[BaseTool]) -> dict[str, Any]:
|
||||
ignored_init_params = [
|
||||
"name",
|
||||
"description",
|
||||
"env_vars",
|
||||
"args_schema",
|
||||
"description_updated",
|
||||
"cache_function",
|
||||
"result_as_answer",
|
||||
"max_usage_count",
|
||||
"current_usage_count",
|
||||
"package_dependencies",
|
||||
]
|
||||
|
||||
json_schema = tool_class.model_json_schema(
|
||||
schema_generator=SchemaGenerator, mode="serialization"
|
||||
)
|
||||
|
||||
json_schema["properties"] = {
|
||||
key: value
|
||||
for key, value in json_schema["properties"].items()
|
||||
if key not in ignored_init_params
|
||||
}
|
||||
return json_schema
|
||||
|
||||
def save_to_json(self, output_path: str) -> None:
|
||||
with open(output_path, "w", encoding="utf-8") as f:
|
||||
json.dump({"tools": self.tools_spec}, f, indent=2, sort_keys=True)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
output_file = Path(__file__).parent / "tool.specs.json"
|
||||
extractor = ToolSpecExtractor()
|
||||
|
||||
extractor.extract_all_tools()
|
||||
extractor.save_to_json(str(output_file))
|
||||
153
lib/crewai-tools/pyproject.toml
Normal file
153
lib/crewai-tools/pyproject.toml
Normal file
@@ -0,0 +1,153 @@
|
||||
[project]
|
||||
name = "crewai-tools"
|
||||
dynamic = ["version"]
|
||||
description = "Set of tools for the crewAI framework"
|
||||
readme = "README.md"
|
||||
authors = [
|
||||
{ name = "João Moura", email = "joaomdmoura@gmail.com" },
|
||||
]
|
||||
requires-python = ">=3.10, <3.14"
|
||||
dependencies = [
|
||||
"lancedb>=0.5.4",
|
||||
"pytube>=15.0.0",
|
||||
"requests>=2.32.5",
|
||||
"docker>=7.1.0",
|
||||
"crewai==1.0.0a4",
|
||||
"lancedb>=0.5.4",
|
||||
"tiktoken>=0.8.0",
|
||||
"stagehand>=0.4.1",
|
||||
"beautifulsoup4>=4.13.4",
|
||||
"pypdf>=5.9.0",
|
||||
"python-docx>=1.2.0",
|
||||
"youtube-transcript-api>=1.2.2",
|
||||
]
|
||||
|
||||
|
||||
[project.urls]
|
||||
Homepage = "https://crewai.com"
|
||||
Repository = "https://github.com/crewAIInc/crewAI"
|
||||
Documentation = "https://docs.crewai.com"
|
||||
|
||||
|
||||
[project.optional-dependencies]
|
||||
scrapfly-sdk = [
|
||||
"scrapfly-sdk>=0.8.19",
|
||||
]
|
||||
sqlalchemy = [
|
||||
"sqlalchemy>=2.0.35",
|
||||
]
|
||||
multion = [
|
||||
"multion>=1.1.0",
|
||||
]
|
||||
firecrawl-py = [
|
||||
"firecrawl-py>=1.8.0",
|
||||
]
|
||||
composio-core = [
|
||||
"composio-core>=0.6.11.post1",
|
||||
]
|
||||
browserbase = [
|
||||
"browserbase>=1.0.5",
|
||||
]
|
||||
weaviate-client = [
|
||||
"weaviate-client>=4.10.2",
|
||||
]
|
||||
patronus = [
|
||||
"patronus>=0.0.16",
|
||||
]
|
||||
serpapi = [
|
||||
"serpapi>=0.1.5",
|
||||
]
|
||||
beautifulsoup4 = [
|
||||
"beautifulsoup4>=4.12.3",
|
||||
]
|
||||
selenium = [
|
||||
"selenium>=4.27.1",
|
||||
]
|
||||
spider-client = [
|
||||
"spider-client>=0.1.25",
|
||||
]
|
||||
scrapegraph-py = [
|
||||
"scrapegraph-py>=1.9.0",
|
||||
]
|
||||
linkup-sdk = [
|
||||
"linkup-sdk>=0.2.2",
|
||||
]
|
||||
tavily-python = [
|
||||
"tavily-python>=0.5.4",
|
||||
]
|
||||
hyperbrowser = [
|
||||
"hyperbrowser>=0.18.0",
|
||||
]
|
||||
snowflake = [
|
||||
"cryptography>=43.0.3",
|
||||
"snowflake-connector-python>=3.12.4",
|
||||
"snowflake-sqlalchemy>=1.7.3",
|
||||
]
|
||||
singlestore = [
|
||||
"singlestoredb>=1.12.4",
|
||||
"SQLAlchemy>=2.0.40",
|
||||
]
|
||||
exa-py = [
|
||||
"exa-py>=1.8.7",
|
||||
]
|
||||
qdrant-client = [
|
||||
"qdrant-client>=1.12.1",
|
||||
]
|
||||
apify = [
|
||||
"langchain-apify>=0.1.2,<1.0.0",
|
||||
]
|
||||
|
||||
databricks-sdk = [
|
||||
"databricks-sdk>=0.46.0",
|
||||
]
|
||||
couchbase = [
|
||||
"couchbase>=4.3.5",
|
||||
]
|
||||
mcp = [
|
||||
"mcp>=1.6.0",
|
||||
"mcpadapt>=0.1.9",
|
||||
]
|
||||
stagehand = [
|
||||
"stagehand>=0.4.1",
|
||||
]
|
||||
github = [
|
||||
"gitpython==3.1.38",
|
||||
"PyGithub==1.59.1",
|
||||
]
|
||||
rag = [
|
||||
"python-docx>=1.1.0",
|
||||
"lxml>=5.3.0,<5.4.0", # Pin to avoid etree import issues in 5.4.0
|
||||
]
|
||||
xml = [
|
||||
"unstructured[local-inference, all-docs]>=0.17.2"
|
||||
]
|
||||
oxylabs = [
|
||||
"oxylabs==2.0.0"
|
||||
]
|
||||
mongodb = [
|
||||
"pymongo>=4.13"
|
||||
]
|
||||
mysql = [
|
||||
"pymysql>=1.1.1"
|
||||
]
|
||||
postgresql = [
|
||||
"psycopg2-binary>=2.9.10"
|
||||
]
|
||||
bedrock = [
|
||||
"beautifulsoup4>=4.13.4",
|
||||
"bedrock-agentcore>=0.1.0",
|
||||
"playwright>=1.52.0",
|
||||
"nest-asyncio>=1.6.0",
|
||||
]
|
||||
contextual = [
|
||||
"contextual-client>=0.1.0",
|
||||
"nest-asyncio>=1.6.0",
|
||||
]
|
||||
|
||||
|
||||
[build-system]
|
||||
requires = ["hatchling"]
|
||||
build-backend = "hatchling.build"
|
||||
|
||||
[tool.hatch.version]
|
||||
path = "src/crewai_tools/__init__.py"
|
||||
294
lib/crewai-tools/src/crewai_tools/__init__.py
Normal file
294
lib/crewai-tools/src/crewai_tools/__init__.py
Normal file
@@ -0,0 +1,294 @@
|
||||
from crewai_tools.adapters.enterprise_adapter import EnterpriseActionTool
|
||||
from crewai_tools.adapters.mcp_adapter import MCPServerAdapter
|
||||
from crewai_tools.adapters.zapier_adapter import ZapierActionTool
|
||||
from crewai_tools.aws.bedrock.agents.invoke_agent_tool import BedrockInvokeAgentTool
|
||||
from crewai_tools.aws.bedrock.knowledge_base.retriever_tool import (
|
||||
BedrockKBRetrieverTool,
|
||||
)
|
||||
from crewai_tools.aws.s3.reader_tool import S3ReaderTool
|
||||
from crewai_tools.aws.s3.writer_tool import S3WriterTool
|
||||
from crewai_tools.tools.ai_mind_tool.ai_mind_tool import AIMindTool
|
||||
from crewai_tools.tools.apify_actors_tool.apify_actors_tool import ApifyActorsTool
|
||||
from crewai_tools.tools.arxiv_paper_tool.arxiv_paper_tool import ArxivPaperTool
|
||||
from crewai_tools.tools.brave_search_tool.brave_search_tool import BraveSearchTool
|
||||
from crewai_tools.tools.brightdata_tool.brightdata_dataset import (
|
||||
BrightDataDatasetTool,
|
||||
)
|
||||
from crewai_tools.tools.brightdata_tool.brightdata_serp import BrightDataSearchTool
|
||||
from crewai_tools.tools.brightdata_tool.brightdata_unlocker import (
|
||||
BrightDataWebUnlockerTool,
|
||||
)
|
||||
from crewai_tools.tools.browserbase_load_tool.browserbase_load_tool import (
|
||||
BrowserbaseLoadTool,
|
||||
)
|
||||
from crewai_tools.tools.code_docs_search_tool.code_docs_search_tool import (
|
||||
CodeDocsSearchTool,
|
||||
)
|
||||
from crewai_tools.tools.code_interpreter_tool.code_interpreter_tool import (
|
||||
CodeInterpreterTool,
|
||||
)
|
||||
from crewai_tools.tools.composio_tool.composio_tool import ComposioTool
|
||||
from crewai_tools.tools.contextualai_create_agent_tool.contextual_create_agent_tool import (
|
||||
ContextualAICreateAgentTool,
|
||||
)
|
||||
from crewai_tools.tools.contextualai_parse_tool.contextual_parse_tool import (
|
||||
ContextualAIParseTool,
|
||||
)
|
||||
from crewai_tools.tools.contextualai_query_tool.contextual_query_tool import (
|
||||
ContextualAIQueryTool,
|
||||
)
|
||||
from crewai_tools.tools.contextualai_rerank_tool.contextual_rerank_tool import (
|
||||
ContextualAIRerankTool,
|
||||
)
|
||||
from crewai_tools.tools.couchbase_tool.couchbase_tool import (
|
||||
CouchbaseFTSVectorSearchTool,
|
||||
)
|
||||
from crewai_tools.tools.crewai_enterprise_tools.crewai_enterprise_tools import (
|
||||
CrewaiEnterpriseTools,
|
||||
)
|
||||
from crewai_tools.tools.crewai_platform_tools.crewai_platform_tools import (
|
||||
CrewaiPlatformTools,
|
||||
)
|
||||
from crewai_tools.tools.csv_search_tool.csv_search_tool import CSVSearchTool
|
||||
from crewai_tools.tools.dalle_tool.dalle_tool import DallETool
|
||||
from crewai_tools.tools.databricks_query_tool.databricks_query_tool import (
|
||||
DatabricksQueryTool,
|
||||
)
|
||||
from crewai_tools.tools.directory_read_tool.directory_read_tool import (
|
||||
DirectoryReadTool,
|
||||
)
|
||||
from crewai_tools.tools.directory_search_tool.directory_search_tool import (
|
||||
DirectorySearchTool,
|
||||
)
|
||||
from crewai_tools.tools.docx_search_tool.docx_search_tool import DOCXSearchTool
|
||||
from crewai_tools.tools.exa_tools.exa_search_tool import EXASearchTool
|
||||
from crewai_tools.tools.file_read_tool.file_read_tool import FileReadTool
|
||||
from crewai_tools.tools.file_writer_tool.file_writer_tool import FileWriterTool
|
||||
from crewai_tools.tools.files_compressor_tool.files_compressor_tool import (
|
||||
FileCompressorTool,
|
||||
)
|
||||
from crewai_tools.tools.firecrawl_crawl_website_tool.firecrawl_crawl_website_tool import (
|
||||
FirecrawlCrawlWebsiteTool,
|
||||
)
|
||||
from crewai_tools.tools.firecrawl_scrape_website_tool.firecrawl_scrape_website_tool import (
|
||||
FirecrawlScrapeWebsiteTool,
|
||||
)
|
||||
from crewai_tools.tools.firecrawl_search_tool.firecrawl_search_tool import (
|
||||
FirecrawlSearchTool,
|
||||
)
|
||||
from crewai_tools.tools.generate_crewai_automation_tool.generate_crewai_automation_tool import (
|
||||
GenerateCrewaiAutomationTool,
|
||||
)
|
||||
from crewai_tools.tools.github_search_tool.github_search_tool import GithubSearchTool
|
||||
from crewai_tools.tools.hyperbrowser_load_tool.hyperbrowser_load_tool import (
|
||||
HyperbrowserLoadTool,
|
||||
)
|
||||
from crewai_tools.tools.invoke_crewai_automation_tool.invoke_crewai_automation_tool import (
|
||||
InvokeCrewAIAutomationTool,
|
||||
)
|
||||
from crewai_tools.tools.jina_scrape_website_tool.jina_scrape_website_tool import (
|
||||
JinaScrapeWebsiteTool,
|
||||
)
|
||||
from crewai_tools.tools.json_search_tool.json_search_tool import JSONSearchTool
|
||||
from crewai_tools.tools.linkup.linkup_search_tool import LinkupSearchTool
|
||||
from crewai_tools.tools.llamaindex_tool.llamaindex_tool import LlamaIndexTool
|
||||
from crewai_tools.tools.mdx_search_tool.mdx_search_tool import MDXSearchTool
|
||||
from crewai_tools.tools.mongodb_vector_search_tool.vector_search import (
|
||||
MongoDBVectorSearchConfig,
|
||||
MongoDBVectorSearchTool,
|
||||
)
|
||||
from crewai_tools.tools.multion_tool.multion_tool import MultiOnTool
|
||||
from crewai_tools.tools.mysql_search_tool.mysql_search_tool import MySQLSearchTool
|
||||
from crewai_tools.tools.nl2sql.nl2sql_tool import NL2SQLTool
|
||||
from crewai_tools.tools.ocr_tool.ocr_tool import OCRTool
|
||||
from crewai_tools.tools.oxylabs_amazon_product_scraper_tool.oxylabs_amazon_product_scraper_tool import (
|
||||
OxylabsAmazonProductScraperTool,
|
||||
)
|
||||
from crewai_tools.tools.oxylabs_amazon_search_scraper_tool.oxylabs_amazon_search_scraper_tool import (
|
||||
OxylabsAmazonSearchScraperTool,
|
||||
)
|
||||
from crewai_tools.tools.oxylabs_google_search_scraper_tool.oxylabs_google_search_scraper_tool import (
|
||||
OxylabsGoogleSearchScraperTool,
|
||||
)
|
||||
from crewai_tools.tools.oxylabs_universal_scraper_tool.oxylabs_universal_scraper_tool import (
|
||||
OxylabsUniversalScraperTool,
|
||||
)
|
||||
from crewai_tools.tools.parallel_tools.parallel_search_tool import ParallelSearchTool
|
||||
from crewai_tools.tools.patronus_eval_tool.patronus_eval_tool import PatronusEvalTool
|
||||
from crewai_tools.tools.patronus_eval_tool.patronus_local_evaluator_tool import (
|
||||
PatronusLocalEvaluatorTool,
|
||||
)
|
||||
from crewai_tools.tools.patronus_eval_tool.patronus_predefined_criteria_eval_tool import (
|
||||
PatronusPredefinedCriteriaEvalTool,
|
||||
)
|
||||
from crewai_tools.tools.pdf_search_tool.pdf_search_tool import PDFSearchTool
|
||||
from crewai_tools.tools.qdrant_vector_search_tool.qdrant_search_tool import (
|
||||
QdrantVectorSearchTool,
|
||||
)
|
||||
from crewai_tools.tools.rag.rag_tool import RagTool
|
||||
from crewai_tools.tools.scrape_element_from_website.scrape_element_from_website import (
|
||||
ScrapeElementFromWebsiteTool,
|
||||
)
|
||||
from crewai_tools.tools.scrape_website_tool.scrape_website_tool import (
|
||||
ScrapeWebsiteTool,
|
||||
)
|
||||
from crewai_tools.tools.scrapegraph_scrape_tool.scrapegraph_scrape_tool import (
|
||||
ScrapegraphScrapeTool,
|
||||
ScrapegraphScrapeToolSchema,
|
||||
)
|
||||
from crewai_tools.tools.scrapfly_scrape_website_tool.scrapfly_scrape_website_tool import (
|
||||
ScrapflyScrapeWebsiteTool,
|
||||
)
|
||||
from crewai_tools.tools.selenium_scraping_tool.selenium_scraping_tool import (
|
||||
SeleniumScrapingTool,
|
||||
)
|
||||
from crewai_tools.tools.serpapi_tool.serpapi_google_search_tool import (
|
||||
SerpApiGoogleSearchTool,
|
||||
)
|
||||
from crewai_tools.tools.serpapi_tool.serpapi_google_shopping_tool import (
|
||||
SerpApiGoogleShoppingTool,
|
||||
)
|
||||
from crewai_tools.tools.serper_dev_tool.serper_dev_tool import SerperDevTool
|
||||
from crewai_tools.tools.serper_scrape_website_tool.serper_scrape_website_tool import (
|
||||
SerperScrapeWebsiteTool,
|
||||
)
|
||||
from crewai_tools.tools.serply_api_tool.serply_job_search_tool import (
|
||||
SerplyJobSearchTool,
|
||||
)
|
||||
from crewai_tools.tools.serply_api_tool.serply_news_search_tool import (
|
||||
SerplyNewsSearchTool,
|
||||
)
|
||||
from crewai_tools.tools.serply_api_tool.serply_scholar_search_tool import (
|
||||
SerplyScholarSearchTool,
|
||||
)
|
||||
from crewai_tools.tools.serply_api_tool.serply_web_search_tool import (
|
||||
SerplyWebSearchTool,
|
||||
)
|
||||
from crewai_tools.tools.serply_api_tool.serply_webpage_to_markdown_tool import (
|
||||
SerplyWebpageToMarkdownTool,
|
||||
)
|
||||
from crewai_tools.tools.singlestore_search_tool.singlestore_search_tool import (
|
||||
SingleStoreSearchTool,
|
||||
)
|
||||
from crewai_tools.tools.snowflake_search_tool.snowflake_search_tool import (
|
||||
SnowflakeConfig,
|
||||
SnowflakeSearchTool,
|
||||
)
|
||||
from crewai_tools.tools.spider_tool.spider_tool import SpiderTool
|
||||
from crewai_tools.tools.stagehand_tool.stagehand_tool import StagehandTool
|
||||
from crewai_tools.tools.tavily_extractor_tool.tavily_extractor_tool import (
|
||||
TavilyExtractorTool,
|
||||
)
|
||||
from crewai_tools.tools.tavily_search_tool.tavily_search_tool import TavilySearchTool
|
||||
from crewai_tools.tools.txt_search_tool.txt_search_tool import TXTSearchTool
|
||||
from crewai_tools.tools.vision_tool.vision_tool import VisionTool
|
||||
from crewai_tools.tools.weaviate_tool.vector_search import WeaviateVectorSearchTool
|
||||
from crewai_tools.tools.website_search.website_search_tool import WebsiteSearchTool
|
||||
from crewai_tools.tools.xml_search_tool.xml_search_tool import XMLSearchTool
|
||||
from crewai_tools.tools.youtube_channel_search_tool.youtube_channel_search_tool import (
|
||||
YoutubeChannelSearchTool,
|
||||
)
|
||||
from crewai_tools.tools.youtube_video_search_tool.youtube_video_search_tool import (
|
||||
YoutubeVideoSearchTool,
|
||||
)
|
||||
from crewai_tools.tools.zapier_action_tool.zapier_action_tool import ZapierActionTools
|
||||
|
||||
|
||||
__all__ = [
|
||||
"AIMindTool",
|
||||
"ApifyActorsTool",
|
||||
"ArxivPaperTool",
|
||||
"BedrockInvokeAgentTool",
|
||||
"BedrockKBRetrieverTool",
|
||||
"BraveSearchTool",
|
||||
"BrightDataDatasetTool",
|
||||
"BrightDataSearchTool",
|
||||
"BrightDataWebUnlockerTool",
|
||||
"BrowserbaseLoadTool",
|
||||
"CSVSearchTool",
|
||||
"CodeDocsSearchTool",
|
||||
"CodeInterpreterTool",
|
||||
"ComposioTool",
|
||||
"ContextualAICreateAgentTool",
|
||||
"ContextualAIParseTool",
|
||||
"ContextualAIQueryTool",
|
||||
"ContextualAIRerankTool",
|
||||
"CouchbaseFTSVectorSearchTool",
|
||||
"CrewaiEnterpriseTools",
|
||||
"CrewaiPlatformTools",
|
||||
"DOCXSearchTool",
|
||||
"DallETool",
|
||||
"DatabricksQueryTool",
|
||||
"DirectoryReadTool",
|
||||
"DirectorySearchTool",
|
||||
"EXASearchTool",
|
||||
"EnterpriseActionTool",
|
||||
"FileCompressorTool",
|
||||
"FileReadTool",
|
||||
"FileWriterTool",
|
||||
"FirecrawlCrawlWebsiteTool",
|
||||
"FirecrawlScrapeWebsiteTool",
|
||||
"FirecrawlSearchTool",
|
||||
"GenerateCrewaiAutomationTool",
|
||||
"GithubSearchTool",
|
||||
"HyperbrowserLoadTool",
|
||||
"InvokeCrewAIAutomationTool",
|
||||
"JSONSearchTool",
|
||||
"JinaScrapeWebsiteTool",
|
||||
"LinkupSearchTool",
|
||||
"LlamaIndexTool",
|
||||
"MCPServerAdapter",
|
||||
"MDXSearchTool",
|
||||
"MongoDBVectorSearchConfig",
|
||||
"MongoDBVectorSearchTool",
|
||||
"MultiOnTool",
|
||||
"MySQLSearchTool",
|
||||
"NL2SQLTool",
|
||||
"OCRTool",
|
||||
"OxylabsAmazonProductScraperTool",
|
||||
"OxylabsAmazonSearchScraperTool",
|
||||
"OxylabsGoogleSearchScraperTool",
|
||||
"OxylabsUniversalScraperTool",
|
||||
"PDFSearchTool",
|
||||
"ParallelSearchTool",
|
||||
"PatronusEvalTool",
|
||||
"PatronusLocalEvaluatorTool",
|
||||
"PatronusPredefinedCriteriaEvalTool",
|
||||
"QdrantVectorSearchTool",
|
||||
"RagTool",
|
||||
"S3ReaderTool",
|
||||
"S3WriterTool",
|
||||
"ScrapeElementFromWebsiteTool",
|
||||
"ScrapeWebsiteTool",
|
||||
"ScrapegraphScrapeTool",
|
||||
"ScrapegraphScrapeToolSchema",
|
||||
"ScrapflyScrapeWebsiteTool",
|
||||
"SeleniumScrapingTool",
|
||||
"SerpApiGoogleSearchTool",
|
||||
"SerpApiGoogleShoppingTool",
|
||||
"SerperDevTool",
|
||||
"SerperScrapeWebsiteTool",
|
||||
"SerplyJobSearchTool",
|
||||
"SerplyNewsSearchTool",
|
||||
"SerplyScholarSearchTool",
|
||||
"SerplyWebSearchTool",
|
||||
"SerplyWebpageToMarkdownTool",
|
||||
"SingleStoreSearchTool",
|
||||
"SnowflakeConfig",
|
||||
"SnowflakeSearchTool",
|
||||
"SpiderTool",
|
||||
"StagehandTool",
|
||||
"TXTSearchTool",
|
||||
"TavilyExtractorTool",
|
||||
"TavilySearchTool",
|
||||
"VisionTool",
|
||||
"WeaviateVectorSearchTool",
|
||||
"WebsiteSearchTool",
|
||||
"XMLSearchTool",
|
||||
"YoutubeChannelSearchTool",
|
||||
"YoutubeVideoSearchTool",
|
||||
"ZapierActionTool",
|
||||
"ZapierActionTools",
|
||||
]
|
||||
|
||||
__version__ = "1.0.0a4"
|
||||
269
lib/crewai-tools/src/crewai_tools/adapters/crewai_rag_adapter.py
Normal file
269
lib/crewai-tools/src/crewai_tools/adapters/crewai_rag_adapter.py
Normal file
@@ -0,0 +1,269 @@
|
||||
"""Adapter for CrewAI's native RAG system."""
|
||||
|
||||
import hashlib
|
||||
from pathlib import Path
|
||||
from typing import Any, TypeAlias, TypedDict
|
||||
|
||||
from crewai.rag.config.types import RagConfigType
|
||||
from crewai.rag.config.utils import get_rag_client
|
||||
from crewai.rag.core.base_client import BaseClient
|
||||
from crewai.rag.factory import create_client
|
||||
from crewai.rag.types import BaseRecord, SearchResult
|
||||
from pydantic import PrivateAttr
|
||||
from typing_extensions import Unpack
|
||||
|
||||
from crewai_tools.rag.data_types import DataType
|
||||
from crewai_tools.rag.misc import sanitize_metadata_for_chromadb
|
||||
from crewai_tools.tools.rag.rag_tool import Adapter
|
||||
|
||||
|
||||
ContentItem: TypeAlias = str | Path | dict[str, Any]
|
||||
|
||||
|
||||
class AddDocumentParams(TypedDict, total=False):
|
||||
"""Parameters for adding documents to the RAG system."""
|
||||
|
||||
data_type: DataType
|
||||
metadata: dict[str, Any]
|
||||
website: str
|
||||
url: str
|
||||
file_path: str | Path
|
||||
github_url: str
|
||||
youtube_url: str
|
||||
directory_path: str | Path
|
||||
|
||||
|
||||
class CrewAIRagAdapter(Adapter):
|
||||
"""Adapter that uses CrewAI's native RAG system.
|
||||
|
||||
Supports custom vector database configuration through the config parameter.
|
||||
"""
|
||||
|
||||
collection_name: str = "default"
|
||||
summarize: bool = False
|
||||
similarity_threshold: float = 0.6
|
||||
limit: int = 5
|
||||
config: RagConfigType | None = None
|
||||
_client: BaseClient | None = PrivateAttr(default=None)
|
||||
|
||||
def model_post_init(self, __context: Any) -> None:
|
||||
"""Initialize the CrewAI RAG client after model initialization."""
|
||||
if self.config is not None:
|
||||
self._client = create_client(self.config)
|
||||
else:
|
||||
self._client = get_rag_client()
|
||||
self._client.get_or_create_collection(collection_name=self.collection_name)
|
||||
|
||||
def query(
|
||||
self,
|
||||
question: str,
|
||||
similarity_threshold: float | None = None,
|
||||
limit: int | None = None,
|
||||
) -> str:
|
||||
"""Query the knowledge base with a question.
|
||||
|
||||
Args:
|
||||
question: The question to ask
|
||||
similarity_threshold: Minimum similarity score for results (default: 0.6)
|
||||
limit: Maximum number of results to return (default: 5)
|
||||
|
||||
Returns:
|
||||
Relevant content from the knowledge base
|
||||
"""
|
||||
search_limit = limit if limit is not None else self.limit
|
||||
search_threshold = (
|
||||
similarity_threshold
|
||||
if similarity_threshold is not None
|
||||
else self.similarity_threshold
|
||||
)
|
||||
|
||||
results: list[SearchResult] = self._client.search(
|
||||
collection_name=self.collection_name,
|
||||
query=question,
|
||||
limit=search_limit,
|
||||
score_threshold=search_threshold,
|
||||
)
|
||||
|
||||
if not results:
|
||||
return "No relevant content found."
|
||||
|
||||
contents: list[str] = []
|
||||
for result in results:
|
||||
content: str = result.get("content", "")
|
||||
if content:
|
||||
contents.append(content)
|
||||
|
||||
return "\n\n".join(contents)
|
||||
|
||||
def add(self, *args: ContentItem, **kwargs: Unpack[AddDocumentParams]) -> None:
|
||||
"""Add content to the knowledge base.
|
||||
|
||||
This method handles various input types and converts them to documents
|
||||
for the vector database. It supports the data_type parameter for
|
||||
compatibility with existing tools.
|
||||
|
||||
Args:
|
||||
*args: Content items to add (strings, paths, or document dicts)
|
||||
**kwargs: Additional parameters including data_type, metadata, etc.
|
||||
"""
|
||||
import os
|
||||
|
||||
from crewai_tools.rag.base_loader import LoaderResult
|
||||
from crewai_tools.rag.data_types import DataType, DataTypes
|
||||
from crewai_tools.rag.source_content import SourceContent
|
||||
|
||||
documents: list[BaseRecord] = []
|
||||
data_type: DataType | None = kwargs.get("data_type")
|
||||
base_metadata: dict[str, Any] = kwargs.get("metadata", {})
|
||||
|
||||
for arg in args:
|
||||
source_ref: str
|
||||
if isinstance(arg, dict):
|
||||
source_ref = str(arg.get("source", arg.get("content", "")))
|
||||
else:
|
||||
source_ref = str(arg)
|
||||
|
||||
if not data_type:
|
||||
data_type = DataTypes.from_content(source_ref)
|
||||
|
||||
if data_type == DataType.DIRECTORY:
|
||||
if not os.path.isdir(source_ref):
|
||||
raise ValueError(f"Directory does not exist: {source_ref}")
|
||||
|
||||
# Define binary and non-text file extensions to skip
|
||||
binary_extensions = {
|
||||
".pyc",
|
||||
".pyo",
|
||||
".png",
|
||||
".jpg",
|
||||
".jpeg",
|
||||
".gif",
|
||||
".bmp",
|
||||
".ico",
|
||||
".svg",
|
||||
".webp",
|
||||
".pdf",
|
||||
".zip",
|
||||
".tar",
|
||||
".gz",
|
||||
".bz2",
|
||||
".7z",
|
||||
".rar",
|
||||
".exe",
|
||||
".dll",
|
||||
".so",
|
||||
".dylib",
|
||||
".bin",
|
||||
".dat",
|
||||
".db",
|
||||
".sqlite",
|
||||
".class",
|
||||
".jar",
|
||||
".war",
|
||||
".ear",
|
||||
}
|
||||
|
||||
for root, dirs, files in os.walk(source_ref):
|
||||
dirs[:] = [d for d in dirs if not d.startswith(".")]
|
||||
|
||||
for filename in files:
|
||||
if filename.startswith("."):
|
||||
continue
|
||||
|
||||
# Skip binary files based on extension
|
||||
file_ext = os.path.splitext(filename)[1].lower()
|
||||
if file_ext in binary_extensions:
|
||||
continue
|
||||
|
||||
# Skip __pycache__ directories
|
||||
if "__pycache__" in root:
|
||||
continue
|
||||
|
||||
file_path: str = os.path.join(root, filename)
|
||||
try:
|
||||
file_data_type: DataType = DataTypes.from_content(file_path)
|
||||
file_loader = file_data_type.get_loader()
|
||||
file_chunker = file_data_type.get_chunker()
|
||||
|
||||
file_source = SourceContent(file_path)
|
||||
file_result: LoaderResult = file_loader.load(file_source)
|
||||
|
||||
file_chunks = file_chunker.chunk(file_result.content)
|
||||
|
||||
for chunk_idx, file_chunk in enumerate(file_chunks):
|
||||
file_metadata: dict[str, Any] = base_metadata.copy()
|
||||
file_metadata.update(file_result.metadata)
|
||||
file_metadata["data_type"] = str(file_data_type)
|
||||
file_metadata["file_path"] = file_path
|
||||
file_metadata["chunk_index"] = chunk_idx
|
||||
file_metadata["total_chunks"] = len(file_chunks)
|
||||
|
||||
if isinstance(arg, dict):
|
||||
file_metadata.update(arg.get("metadata", {}))
|
||||
|
||||
chunk_id = hashlib.sha256(
|
||||
f"{file_result.doc_id}_{chunk_idx}_{file_chunk}".encode()
|
||||
).hexdigest()
|
||||
|
||||
documents.append(
|
||||
{
|
||||
"doc_id": chunk_id,
|
||||
"content": file_chunk,
|
||||
"metadata": sanitize_metadata_for_chromadb(
|
||||
file_metadata
|
||||
),
|
||||
}
|
||||
)
|
||||
except Exception: # noqa: S112
|
||||
# Silently skip files that can't be processed
|
||||
continue
|
||||
else:
|
||||
metadata: dict[str, Any] = base_metadata.copy()
|
||||
|
||||
if data_type in [
|
||||
DataType.PDF_FILE,
|
||||
DataType.TEXT_FILE,
|
||||
DataType.DOCX,
|
||||
DataType.CSV,
|
||||
DataType.JSON,
|
||||
DataType.XML,
|
||||
DataType.MDX,
|
||||
]:
|
||||
if not os.path.isfile(source_ref):
|
||||
raise FileNotFoundError(f"File does not exist: {source_ref}")
|
||||
|
||||
loader = data_type.get_loader()
|
||||
chunker = data_type.get_chunker()
|
||||
|
||||
source_content = SourceContent(source_ref)
|
||||
loader_result: LoaderResult = loader.load(source_content)
|
||||
|
||||
chunks = chunker.chunk(loader_result.content)
|
||||
|
||||
for i, chunk in enumerate(chunks):
|
||||
chunk_metadata: dict[str, Any] = metadata.copy()
|
||||
chunk_metadata.update(loader_result.metadata)
|
||||
chunk_metadata["data_type"] = str(data_type)
|
||||
chunk_metadata["chunk_index"] = i
|
||||
chunk_metadata["total_chunks"] = len(chunks)
|
||||
chunk_metadata["source"] = source_ref
|
||||
|
||||
if isinstance(arg, dict):
|
||||
chunk_metadata.update(arg.get("metadata", {}))
|
||||
|
||||
chunk_id = hashlib.sha256(
|
||||
f"{loader_result.doc_id}_{i}_{chunk}".encode()
|
||||
).hexdigest()
|
||||
|
||||
documents.append(
|
||||
{
|
||||
"doc_id": chunk_id,
|
||||
"content": chunk,
|
||||
"metadata": sanitize_metadata_for_chromadb(chunk_metadata),
|
||||
}
|
||||
)
|
||||
|
||||
if documents:
|
||||
self._client.add_documents(
|
||||
collection_name=self.collection_name, documents=documents
|
||||
)
|
||||
428
lib/crewai-tools/src/crewai_tools/adapters/enterprise_adapter.py
Normal file
428
lib/crewai-tools/src/crewai_tools/adapters/enterprise_adapter.py
Normal file
@@ -0,0 +1,428 @@
|
||||
import json
|
||||
import os
|
||||
import re
|
||||
from typing import Any, Literal, Optional, Union, cast, get_origin
|
||||
import warnings
|
||||
|
||||
from crewai.tools import BaseTool
|
||||
from pydantic import Field, create_model
|
||||
import requests
|
||||
|
||||
|
||||
def get_enterprise_api_base_url() -> str:
|
||||
"""Get the enterprise API base URL from environment or use default."""
|
||||
base_url = os.getenv("CREWAI_PLUS_URL", "https://app.crewai.com")
|
||||
return f"{base_url}/crewai_plus/api/v1/integrations"
|
||||
|
||||
|
||||
ENTERPRISE_API_BASE_URL = get_enterprise_api_base_url()
|
||||
|
||||
|
||||
class EnterpriseActionTool(BaseTool):
|
||||
"""A tool that executes a specific enterprise action."""
|
||||
|
||||
enterprise_action_token: str = Field(
|
||||
default="", description="The enterprise action token"
|
||||
)
|
||||
action_name: str = Field(default="", description="The name of the action")
|
||||
action_schema: dict[str, Any] = Field(
|
||||
default={}, description="The schema of the action"
|
||||
)
|
||||
enterprise_api_base_url: str = Field(
|
||||
default=ENTERPRISE_API_BASE_URL, description="The base API URL"
|
||||
)
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
name: str,
|
||||
description: str,
|
||||
enterprise_action_token: str,
|
||||
action_name: str,
|
||||
action_schema: dict[str, Any],
|
||||
enterprise_api_base_url: str | None = None,
|
||||
):
|
||||
self._model_registry = {}
|
||||
self._base_name = self._sanitize_name(name)
|
||||
|
||||
schema_props, required = self._extract_schema_info(action_schema)
|
||||
|
||||
# Define field definitions for the model
|
||||
field_definitions = {}
|
||||
for param_name, param_details in schema_props.items():
|
||||
param_desc = param_details.get("description", "")
|
||||
is_required = param_name in required
|
||||
|
||||
try:
|
||||
field_type = self._process_schema_type(
|
||||
param_details, self._sanitize_name(param_name).title()
|
||||
)
|
||||
except Exception:
|
||||
field_type = str
|
||||
|
||||
# Create field definition based on requirement
|
||||
field_definitions[param_name] = self._create_field_definition(
|
||||
field_type, is_required, param_desc
|
||||
)
|
||||
|
||||
# Create the model
|
||||
if field_definitions:
|
||||
try:
|
||||
args_schema = create_model(
|
||||
f"{self._base_name}Schema", **field_definitions
|
||||
)
|
||||
except Exception:
|
||||
args_schema = create_model(
|
||||
f"{self._base_name}Schema",
|
||||
input_text=(str, Field(description="Input for the action")),
|
||||
)
|
||||
else:
|
||||
# Fallback for empty schema
|
||||
args_schema = create_model(
|
||||
f"{self._base_name}Schema",
|
||||
input_text=(str, Field(description="Input for the action")),
|
||||
)
|
||||
|
||||
super().__init__(name=name, description=description, args_schema=args_schema)
|
||||
self.enterprise_action_token = enterprise_action_token
|
||||
self.action_name = action_name
|
||||
self.action_schema = action_schema
|
||||
self.enterprise_api_base_url = (
|
||||
enterprise_api_base_url or get_enterprise_api_base_url()
|
||||
)
|
||||
|
||||
def _sanitize_name(self, name: str) -> str:
|
||||
"""Sanitize names to create proper Python class names."""
|
||||
sanitized = re.sub(r"[^a-zA-Z0-9_]", "", name)
|
||||
parts = sanitized.split("_")
|
||||
return "".join(word.capitalize() for word in parts if word)
|
||||
|
||||
def _extract_schema_info(
|
||||
self, action_schema: dict[str, Any]
|
||||
) -> tuple[dict[str, Any], list[str]]:
|
||||
"""Extract schema properties and required fields from action schema."""
|
||||
schema_props = (
|
||||
action_schema.get("function", {})
|
||||
.get("parameters", {})
|
||||
.get("properties", {})
|
||||
)
|
||||
required = (
|
||||
action_schema.get("function", {}).get("parameters", {}).get("required", [])
|
||||
)
|
||||
return schema_props, required
|
||||
|
||||
def _process_schema_type(self, schema: dict[str, Any], type_name: str) -> type[Any]:
|
||||
"""Process a JSON schema and return appropriate Python type."""
|
||||
if "anyOf" in schema:
|
||||
any_of_types = schema["anyOf"]
|
||||
is_nullable = any(t.get("type") == "null" for t in any_of_types)
|
||||
non_null_types = [t for t in any_of_types if t.get("type") != "null"]
|
||||
|
||||
if non_null_types:
|
||||
base_type = self._process_schema_type(non_null_types[0], type_name)
|
||||
return Optional[base_type] if is_nullable else base_type # noqa: UP045
|
||||
return cast(type[Any], Optional[str]) # noqa: UP045
|
||||
|
||||
if "oneOf" in schema:
|
||||
return self._process_schema_type(schema["oneOf"][0], type_name)
|
||||
|
||||
if "allOf" in schema:
|
||||
return self._process_schema_type(schema["allOf"][0], type_name)
|
||||
|
||||
json_type = schema.get("type", "string")
|
||||
|
||||
if "enum" in schema:
|
||||
enum_values = schema["enum"]
|
||||
if not enum_values:
|
||||
return self._map_json_type_to_python(json_type)
|
||||
return Literal[tuple(enum_values)] # type: ignore[return-value]
|
||||
|
||||
if json_type == "array":
|
||||
items_schema = schema.get("items", {"type": "string"})
|
||||
item_type = self._process_schema_type(items_schema, f"{type_name}Item")
|
||||
return list[item_type]
|
||||
|
||||
if json_type == "object":
|
||||
return self._create_nested_model(schema, type_name)
|
||||
|
||||
return self._map_json_type_to_python(json_type)
|
||||
|
||||
def _create_nested_model(
|
||||
self, schema: dict[str, Any], model_name: str
|
||||
) -> type[Any]:
|
||||
"""Create a nested Pydantic model for complex objects."""
|
||||
full_model_name = f"{self._base_name}{model_name}"
|
||||
|
||||
if full_model_name in self._model_registry:
|
||||
return self._model_registry[full_model_name]
|
||||
|
||||
properties = schema.get("properties", {})
|
||||
required_fields = schema.get("required", [])
|
||||
|
||||
if not properties:
|
||||
return dict
|
||||
|
||||
field_definitions = {}
|
||||
for prop_name, prop_schema in properties.items():
|
||||
prop_desc = prop_schema.get("description", "")
|
||||
is_required = prop_name in required_fields
|
||||
|
||||
try:
|
||||
prop_type = self._process_schema_type(
|
||||
prop_schema, f"{model_name}{self._sanitize_name(prop_name).title()}"
|
||||
)
|
||||
except Exception:
|
||||
prop_type = str
|
||||
|
||||
field_definitions[prop_name] = self._create_field_definition(
|
||||
prop_type, is_required, prop_desc
|
||||
)
|
||||
|
||||
try:
|
||||
nested_model = create_model(full_model_name, **field_definitions)
|
||||
self._model_registry[full_model_name] = nested_model
|
||||
return nested_model
|
||||
except Exception:
|
||||
return dict
|
||||
|
||||
def _create_field_definition(
|
||||
self, field_type: type[Any], is_required: bool, description: str
|
||||
) -> tuple:
|
||||
"""Create Pydantic field definition based on type and requirement."""
|
||||
if is_required:
|
||||
return (field_type, Field(description=description))
|
||||
if get_origin(field_type) is Union:
|
||||
return (field_type, Field(default=None, description=description))
|
||||
return (
|
||||
Optional[field_type], # noqa: UP045
|
||||
Field(default=None, description=description),
|
||||
)
|
||||
|
||||
def _map_json_type_to_python(self, json_type: str) -> type[Any]:
|
||||
"""Map basic JSON schema types to Python types."""
|
||||
type_mapping = {
|
||||
"string": str,
|
||||
"integer": int,
|
||||
"number": float,
|
||||
"boolean": bool,
|
||||
"array": list,
|
||||
"object": dict,
|
||||
"null": type(None),
|
||||
}
|
||||
return type_mapping.get(json_type, str)
|
||||
|
||||
def _get_required_nullable_fields(self) -> list[str]:
|
||||
"""Get a list of required nullable fields from the action schema."""
|
||||
schema_props, required = self._extract_schema_info(self.action_schema)
|
||||
|
||||
required_nullable_fields = []
|
||||
for param_name in required:
|
||||
param_details = schema_props.get(param_name, {})
|
||||
if self._is_nullable_type(param_details):
|
||||
required_nullable_fields.append(param_name)
|
||||
|
||||
return required_nullable_fields
|
||||
|
||||
def _is_nullable_type(self, schema: dict[str, Any]) -> bool:
|
||||
"""Check if a schema represents a nullable type."""
|
||||
if "anyOf" in schema:
|
||||
return any(t.get("type") == "null" for t in schema["anyOf"])
|
||||
return schema.get("type") == "null"
|
||||
|
||||
def _run(self, **kwargs) -> str:
|
||||
"""Execute the specific enterprise action with validated parameters."""
|
||||
try:
|
||||
cleaned_kwargs = {}
|
||||
for key, value in kwargs.items():
|
||||
if value is not None:
|
||||
cleaned_kwargs[key] = value # noqa: PERF403
|
||||
|
||||
required_nullable_fields = self._get_required_nullable_fields()
|
||||
|
||||
for field_name in required_nullable_fields:
|
||||
if field_name not in cleaned_kwargs:
|
||||
cleaned_kwargs[field_name] = None
|
||||
|
||||
api_url = (
|
||||
f"{self.enterprise_api_base_url}/actions/{self.action_name}/execute"
|
||||
)
|
||||
headers = {
|
||||
"Authorization": f"Bearer {self.enterprise_action_token}",
|
||||
"Content-Type": "application/json",
|
||||
}
|
||||
payload = cleaned_kwargs
|
||||
|
||||
response = requests.post(
|
||||
url=api_url, headers=headers, json=payload, timeout=60
|
||||
)
|
||||
|
||||
data = response.json()
|
||||
if not response.ok:
|
||||
error_message = data.get("error", {}).get("message", json.dumps(data))
|
||||
return f"API request failed: {error_message}"
|
||||
|
||||
return json.dumps(data, indent=2)
|
||||
|
||||
except Exception as e:
|
||||
return f"Error executing action {self.action_name}: {e!s}"
|
||||
|
||||
|
||||
class EnterpriseActionKitToolAdapter:
|
||||
"""Adapter that creates BaseTool instances for enterprise actions."""
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
enterprise_action_token: str,
|
||||
enterprise_api_base_url: str | None = None,
|
||||
):
|
||||
"""Initialize the adapter with an enterprise action token."""
|
||||
self._set_enterprise_action_token(enterprise_action_token)
|
||||
self._actions_schema = {}
|
||||
self._tools = None
|
||||
self.enterprise_api_base_url = (
|
||||
enterprise_api_base_url or get_enterprise_api_base_url()
|
||||
)
|
||||
|
||||
def tools(self) -> list[BaseTool]:
|
||||
"""Get the list of tools created from enterprise actions."""
|
||||
if self._tools is None:
|
||||
self._fetch_actions()
|
||||
self._create_tools()
|
||||
return self._tools or []
|
||||
|
||||
def _fetch_actions(self):
|
||||
"""Fetch available actions from the API."""
|
||||
try:
|
||||
actions_url = f"{self.enterprise_api_base_url}/actions"
|
||||
headers = {"Authorization": f"Bearer {self.enterprise_action_token}"}
|
||||
|
||||
response = requests.get(actions_url, headers=headers, timeout=30)
|
||||
response.raise_for_status()
|
||||
|
||||
raw_data = response.json()
|
||||
if "actions" not in raw_data:
|
||||
return
|
||||
|
||||
parsed_schema = {}
|
||||
action_categories = raw_data["actions"]
|
||||
|
||||
for action_list in action_categories.values():
|
||||
if isinstance(action_list, list):
|
||||
for action in action_list:
|
||||
action_name = action.get("name")
|
||||
if action_name:
|
||||
action_schema = {
|
||||
"function": {
|
||||
"name": action_name,
|
||||
"description": action.get(
|
||||
"description", f"Execute {action_name}"
|
||||
),
|
||||
"parameters": action.get("parameters", {}),
|
||||
}
|
||||
}
|
||||
parsed_schema[action_name] = action_schema
|
||||
|
||||
self._actions_schema = parsed_schema
|
||||
|
||||
except Exception:
|
||||
import traceback
|
||||
|
||||
traceback.print_exc()
|
||||
|
||||
def _generate_detailed_description(
|
||||
self, schema: dict[str, Any], indent: int = 0
|
||||
) -> list[str]:
|
||||
"""Generate detailed description for nested schema structures."""
|
||||
descriptions = []
|
||||
indent_str = " " * indent
|
||||
|
||||
schema_type = schema.get("type", "string")
|
||||
|
||||
if schema_type == "object":
|
||||
properties = schema.get("properties", {})
|
||||
required_fields = schema.get("required", [])
|
||||
|
||||
if properties:
|
||||
descriptions.append(f"{indent_str}Object with properties:")
|
||||
for prop_name, prop_schema in properties.items():
|
||||
prop_desc = prop_schema.get("description", "")
|
||||
is_required = prop_name in required_fields
|
||||
req_str = " (required)" if is_required else " (optional)"
|
||||
descriptions.append(
|
||||
f"{indent_str} - {prop_name}: {prop_desc}{req_str}"
|
||||
)
|
||||
|
||||
if prop_schema.get("type") == "object":
|
||||
descriptions.extend(
|
||||
self._generate_detailed_description(prop_schema, indent + 2)
|
||||
)
|
||||
elif prop_schema.get("type") == "array":
|
||||
items_schema = prop_schema.get("items", {})
|
||||
if items_schema.get("type") == "object":
|
||||
descriptions.append(f"{indent_str} Array of objects:")
|
||||
descriptions.extend(
|
||||
self._generate_detailed_description(
|
||||
items_schema, indent + 3
|
||||
)
|
||||
)
|
||||
elif "enum" in items_schema:
|
||||
descriptions.append(
|
||||
f"{indent_str} Array of enum values: {items_schema['enum']}"
|
||||
)
|
||||
elif "enum" in prop_schema:
|
||||
descriptions.append(
|
||||
f"{indent_str} Enum values: {prop_schema['enum']}"
|
||||
)
|
||||
|
||||
return descriptions
|
||||
|
||||
def _create_tools(self):
|
||||
"""Create BaseTool instances for each action."""
|
||||
tools = []
|
||||
|
||||
for action_name, action_schema in self._actions_schema.items():
|
||||
function_details = action_schema.get("function", {})
|
||||
description = function_details.get("description", f"Execute {action_name}")
|
||||
|
||||
parameters = function_details.get("parameters", {})
|
||||
param_descriptions = []
|
||||
|
||||
if parameters.get("properties"):
|
||||
param_descriptions.append("\nDetailed Parameter Structure:")
|
||||
param_descriptions.extend(
|
||||
self._generate_detailed_description(parameters)
|
||||
)
|
||||
|
||||
full_description = description + "\n".join(param_descriptions)
|
||||
|
||||
tool = EnterpriseActionTool(
|
||||
name=action_name.lower().replace(" ", "_"),
|
||||
description=full_description,
|
||||
action_name=action_name,
|
||||
action_schema=action_schema,
|
||||
enterprise_action_token=self.enterprise_action_token,
|
||||
enterprise_api_base_url=self.enterprise_api_base_url,
|
||||
)
|
||||
|
||||
tools.append(tool)
|
||||
|
||||
self._tools = tools
|
||||
|
||||
def _set_enterprise_action_token(self, enterprise_action_token: str | None):
|
||||
if enterprise_action_token and not enterprise_action_token.startswith("PK_"):
|
||||
warnings.warn(
|
||||
"Legacy token detected, please consider using the new Enterprise Action Auth token. Check out our docs for more information https://docs.crewai.com/en/enterprise/features/integrations.",
|
||||
DeprecationWarning,
|
||||
stacklevel=2,
|
||||
)
|
||||
|
||||
token = enterprise_action_token or os.environ.get(
|
||||
"CREWAI_ENTERPRISE_TOOLS_TOKEN"
|
||||
)
|
||||
|
||||
self.enterprise_action_token = token
|
||||
|
||||
def __enter__(self):
|
||||
return self.tools()
|
||||
|
||||
def __exit__(self, exc_type, exc_val, exc_tb):
|
||||
pass
|
||||
@@ -0,0 +1,56 @@
|
||||
from collections.abc import Callable
|
||||
from pathlib import Path
|
||||
from typing import Any
|
||||
|
||||
from lancedb import DBConnection as LanceDBConnection, connect as lancedb_connect
|
||||
from lancedb.table import Table as LanceDBTable
|
||||
from openai import Client as OpenAIClient
|
||||
from pydantic import Field, PrivateAttr
|
||||
|
||||
from crewai_tools.tools.rag.rag_tool import Adapter
|
||||
|
||||
|
||||
def _default_embedding_function():
|
||||
client = OpenAIClient()
|
||||
|
||||
def _embedding_function(input):
|
||||
rs = client.embeddings.create(input=input, model="text-embedding-ada-002")
|
||||
return [record.embedding for record in rs.data]
|
||||
|
||||
return _embedding_function
|
||||
|
||||
|
||||
class LanceDBAdapter(Adapter):
|
||||
uri: str | Path
|
||||
table_name: str
|
||||
embedding_function: Callable = Field(default_factory=_default_embedding_function)
|
||||
top_k: int = 3
|
||||
vector_column_name: str = "vector"
|
||||
text_column_name: str = "text"
|
||||
|
||||
_db: LanceDBConnection = PrivateAttr()
|
||||
_table: LanceDBTable = PrivateAttr()
|
||||
|
||||
def model_post_init(self, __context: Any) -> None:
|
||||
self._db = lancedb_connect(self.uri)
|
||||
self._table = self._db.open_table(self.table_name)
|
||||
|
||||
super().model_post_init(__context)
|
||||
|
||||
def query(self, question: str) -> str:
|
||||
query = self.embedding_function([question])[0]
|
||||
results = (
|
||||
self._table.search(query, vector_column_name=self.vector_column_name)
|
||||
.limit(self.top_k)
|
||||
.select([self.text_column_name])
|
||||
.to_list()
|
||||
)
|
||||
values = [result[self.text_column_name] for result in results]
|
||||
return "\n".join(values)
|
||||
|
||||
def add(
|
||||
self,
|
||||
*args: Any,
|
||||
**kwargs: Any,
|
||||
) -> None:
|
||||
self._table.add(*args, **kwargs)
|
||||
163
lib/crewai-tools/src/crewai_tools/adapters/mcp_adapter.py
Normal file
163
lib/crewai-tools/src/crewai_tools/adapters/mcp_adapter.py
Normal file
@@ -0,0 +1,163 @@
|
||||
"""MCPServer for CrewAI."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import logging
|
||||
from typing import TYPE_CHECKING, Any
|
||||
|
||||
from crewai.tools import BaseTool
|
||||
|
||||
from crewai_tools.adapters.tool_collection import ToolCollection
|
||||
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from mcp import StdioServerParameters
|
||||
from mcpadapt.core import MCPAdapt
|
||||
from mcpadapt.crewai_adapter import CrewAIAdapter
|
||||
|
||||
|
||||
try:
|
||||
from mcp import StdioServerParameters
|
||||
from mcpadapt.core import MCPAdapt
|
||||
from mcpadapt.crewai_adapter import CrewAIAdapter
|
||||
|
||||
MCP_AVAILABLE = True
|
||||
except ImportError:
|
||||
MCP_AVAILABLE = False
|
||||
|
||||
|
||||
class MCPServerAdapter:
|
||||
"""Manages the lifecycle of an MCP server and make its tools available to CrewAI.
|
||||
|
||||
Note: tools can only be accessed after the server has been started with the
|
||||
`start()` method.
|
||||
|
||||
Attributes:
|
||||
tools: The CrewAI tools available from the MCP server.
|
||||
|
||||
Usage:
|
||||
# context manager + stdio
|
||||
with MCPServerAdapter(...) as tools:
|
||||
# tools is now available
|
||||
|
||||
# context manager + sse
|
||||
with MCPServerAdapter({"url": "http://localhost:8000/sse"}) as tools:
|
||||
# tools is now available
|
||||
|
||||
# context manager with filtered tools
|
||||
with MCPServerAdapter(..., "tool1", "tool2") as filtered_tools:
|
||||
# only tool1 and tool2 are available
|
||||
|
||||
# context manager with custom connect timeout (60 seconds)
|
||||
with MCPServerAdapter(..., connect_timeout=60) as tools:
|
||||
# tools is now available with longer timeout
|
||||
|
||||
# manually stop mcp server
|
||||
try:
|
||||
mcp_server = MCPServerAdapter(...)
|
||||
tools = mcp_server.tools # all tools
|
||||
|
||||
# or with filtered tools and custom timeout
|
||||
mcp_server = MCPServerAdapter(..., "tool1", "tool2", connect_timeout=45)
|
||||
filtered_tools = mcp_server.tools # only tool1 and tool2
|
||||
...
|
||||
finally:
|
||||
mcp_server.stop()
|
||||
|
||||
# Best practice is ensure cleanup is done after use.
|
||||
mcp_server.stop() # run after crew().kickoff()
|
||||
"""
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
serverparams: StdioServerParameters | dict[str, Any],
|
||||
*tool_names: str,
|
||||
connect_timeout: int = 30,
|
||||
) -> None:
|
||||
"""Initialize the MCP Server.
|
||||
|
||||
Args:
|
||||
serverparams: The parameters for the MCP server it supports either a
|
||||
`StdioServerParameters` or a `dict` respectively for STDIO and SSE.
|
||||
*tool_names: Optional names of tools to filter. If provided, only tools with
|
||||
matching names will be available.
|
||||
connect_timeout: Connection timeout in seconds to the MCP server (default is 30s).
|
||||
|
||||
"""
|
||||
super().__init__()
|
||||
self._adapter = None
|
||||
self._tools = None
|
||||
self._tool_names = list(tool_names) if tool_names else None
|
||||
|
||||
if not MCP_AVAILABLE:
|
||||
import click
|
||||
|
||||
if click.confirm(
|
||||
"You are missing the 'mcp' package. Would you like to install it?"
|
||||
):
|
||||
import subprocess
|
||||
|
||||
try:
|
||||
subprocess.run(["uv", "add", "mcp crewai-tools[mcp]"], check=True) # noqa: S607
|
||||
|
||||
except subprocess.CalledProcessError as e:
|
||||
raise ImportError("Failed to install mcp package") from e
|
||||
else:
|
||||
raise ImportError(
|
||||
"`mcp` package not found, please run `uv add crewai-tools[mcp]`"
|
||||
)
|
||||
|
||||
try:
|
||||
self._serverparams = serverparams
|
||||
self._adapter = MCPAdapt(
|
||||
self._serverparams, CrewAIAdapter(), connect_timeout
|
||||
)
|
||||
self.start()
|
||||
|
||||
except Exception as e:
|
||||
if self._adapter is not None:
|
||||
try:
|
||||
self.stop()
|
||||
except Exception as stop_e:
|
||||
logger.error(f"Error during stop cleanup: {stop_e}")
|
||||
raise RuntimeError(f"Failed to initialize MCP Adapter: {e}") from e
|
||||
|
||||
def start(self):
|
||||
"""Start the MCP server and initialize the tools."""
|
||||
self._tools = self._adapter.__enter__()
|
||||
|
||||
def stop(self):
|
||||
"""Stop the MCP server."""
|
||||
self._adapter.__exit__(None, None, None)
|
||||
|
||||
@property
|
||||
def tools(self) -> ToolCollection[BaseTool]:
|
||||
"""The CrewAI tools available from the MCP server.
|
||||
|
||||
Raises:
|
||||
ValueError: If the MCP server is not started.
|
||||
|
||||
Returns:
|
||||
The CrewAI tools available from the MCP server.
|
||||
"""
|
||||
if self._tools is None:
|
||||
raise ValueError(
|
||||
"MCP server not started, run `mcp_server.start()` first before accessing `tools`"
|
||||
)
|
||||
|
||||
tools_collection = ToolCollection(self._tools)
|
||||
if self._tool_names:
|
||||
return tools_collection.filter_by_names(self._tool_names)
|
||||
return tools_collection
|
||||
|
||||
def __enter__(self):
|
||||
"""Enter the context manager. Note that `__init__()` already starts the MCP server.
|
||||
So tools should already be available.
|
||||
"""
|
||||
return self.tools
|
||||
|
||||
def __exit__(self, exc_type, exc_value, traceback):
|
||||
"""Exit the context manager."""
|
||||
return self._adapter.__exit__(exc_type, exc_value, traceback)
|
||||
38
lib/crewai-tools/src/crewai_tools/adapters/rag_adapter.py
Normal file
38
lib/crewai-tools/src/crewai_tools/adapters/rag_adapter.py
Normal file
@@ -0,0 +1,38 @@
|
||||
from typing import Any
|
||||
|
||||
from crewai_tools.rag.core import RAG
|
||||
from crewai_tools.tools.rag.rag_tool import Adapter
|
||||
|
||||
|
||||
class RAGAdapter(Adapter):
|
||||
def __init__(
|
||||
self,
|
||||
collection_name: str = "crewai_knowledge_base",
|
||||
persist_directory: str | None = None,
|
||||
embedding_model: str = "text-embedding-3-small",
|
||||
top_k: int = 5,
|
||||
embedding_api_key: str | None = None,
|
||||
**embedding_kwargs,
|
||||
):
|
||||
super().__init__()
|
||||
|
||||
# Prepare embedding configuration
|
||||
embedding_config = {"api_key": embedding_api_key, **embedding_kwargs}
|
||||
|
||||
self._adapter = RAG(
|
||||
collection_name=collection_name,
|
||||
persist_directory=persist_directory,
|
||||
embedding_model=embedding_model,
|
||||
top_k=top_k,
|
||||
embedding_config=embedding_config,
|
||||
)
|
||||
|
||||
def query(self, question: str) -> str:
|
||||
return self._adapter.query(question)
|
||||
|
||||
def add(
|
||||
self,
|
||||
*args: Any,
|
||||
**kwargs: Any,
|
||||
) -> None:
|
||||
self._adapter.add(*args, **kwargs)
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user