mirror of
https://github.com/crewAIInc/crewAI.git
synced 2025-12-13 02:48:30 +00:00
Release/v1.0.0 (#3618)
* feat: add `apps` & `actions` attributes to Agent (#3504)
* feat: add app attributes to Agent
* feat: add actions attribute to Agent
* chore: resolve linter issues
* refactor: merge the apps and actions parameters into a single one
* fix: remove unnecessary print
* feat: logging error when CrewaiPlatformTools fails
* chore: export CrewaiPlatformTools directly from crewai_tools
* style: resolver linter issues
* test: fix broken tests
* style: solve linter issues
* fix: fix broken test
* feat: monorepo restructure and test/ci updates
- Add crewai workspace member
- Fix vcr cassette paths and restore test dirs
- Resolve ci failures and update linter/pytest rules
* chore: update python version to 3.13 and package metadata
* feat: add crewai-tools workspace and fix tests/dependencies
* feat: add crewai-tools workspace structure
* Squashed 'temp-crewai-tools/' content from commit 9bae5633
git-subtree-dir: temp-crewai-tools
git-subtree-split: 9bae56339096cb70f03873e600192bd2cd207ac9
* feat: configure crewai-tools workspace package with dependencies
* fix: apply ruff auto-formatting to crewai-tools code
* chore: update lockfile
* fix: don't allow tool tests yet
* fix: comment out extra pytest flags for now
* fix: remove conflicting conftest.py from crewai-tools tests
* fix: resolve dependency conflicts and test issues
- Pin vcrpy to 7.0.0 to fix pytest-recording compatibility
- Comment out types-requests to resolve urllib3 conflict
- Update requests requirement in crewai-tools to >=2.32.0
* chore: update CI workflows and docs for monorepo structure
* chore: update CI workflows and docs for monorepo structure
* fix: actions syntax
* chore: ci publish and pin versions
* fix: add permission to action
* chore: bump version to 1.0.0a1 across all packages
- Updated version to 1.0.0a1 in pyproject.toml for crewai and crewai-tools
- Adjusted version in __init__.py files for consistency
* WIP: v1 docs (#3626)
(cherry picked from commit d46e20fa09bcd2f5916282f5553ddeb7183bd92c)
* docs: parity for all translations
* docs: full name of acronym AMP
* docs: fix lingering unused code
* docs: expand contextual options in docs.json
* docs: add contextual action to request feature on GitHub (#3635)
* chore: apply linting fixes to crewai-tools
* feat: add required env var validation for brightdata
Co-authored-by: Greyson Lalonde <greyson.r.lalonde@gmail.com>
* fix: handle properly anyOf oneOf allOf schema's props
Co-authored-by: Greyson Lalonde <greyson.r.lalonde@gmail.com>
* feat: bump version to 1.0.0a2
* Lorenze/native inference sdks (#3619)
* ruff linted
* using native sdks with litellm fallback
* drop exa
* drop print on completion
* Refactor LLM and utility functions for type consistency
- Updated `max_tokens` parameter in `LLM` class to accept `float` in addition to `int`.
- Modified `create_llm` function to ensure consistent type hints and return types, now returning `LLM | BaseLLM | None`.
- Adjusted type hints for various parameters in `create_llm` and `_llm_via_environment_or_fallback` functions for improved clarity and type safety.
- Enhanced test cases to reflect changes in type handling and ensure proper instantiation of LLM instances.
* fix agent_tests
* fix litellm tests and usagemetrics fix
* drop print
* Refactor LLM event handling and improve test coverage
- Removed commented-out event emission for LLM call failures in `llm.py`.
- Added `from_agent` parameter to `CrewAgentExecutor` for better context in LLM responses.
- Enhanced test for LLM call failure to simulate OpenAI API failure and updated assertions for clarity.
- Updated agent and task ID assertions in tests to ensure they are consistently treated as strings.
* fix test_converter
* fixed tests/agents/test_agent.py
* Refactor LLM context length exception handling and improve provider integration
- Renamed `LLMContextLengthExceededException` to `LLMContextLengthExceededExceptionError` for clarity and consistency.
- Updated LLM class to pass the provider parameter correctly during initialization.
- Enhanced error handling in various LLM provider implementations to raise the new exception type.
- Adjusted tests to reflect the updated exception name and ensure proper error handling in context length scenarios.
* Enhance LLM context window handling across providers
- Introduced CONTEXT_WINDOW_USAGE_RATIO to adjust context window sizes dynamically for Anthropic, Azure, Gemini, and OpenAI LLMs.
- Added validation for context window sizes in Azure and Gemini providers to ensure they fall within acceptable limits.
- Updated context window size calculations to use the new ratio, improving consistency and adaptability across different models.
- Removed hardcoded context window sizes in favor of ratio-based calculations for better flexibility.
* fix test agent again
* fix test agent
* feat: add native LLM providers for Anthropic, Azure, and Gemini
- Introduced new completion implementations for Anthropic, Azure, and Gemini, integrating their respective SDKs.
- Added utility functions for tool validation and extraction to support function calling across LLM providers.
- Enhanced context window management and token usage extraction for each provider.
- Created a common utility module for shared functionality among LLM providers.
* chore: update dependencies and improve context management
- Removed direct dependency on `litellm` from the main dependencies and added it under extras for better modularity.
- Updated the `litellm` dependency specification to allow for greater flexibility in versioning.
- Refactored context length exception handling across various LLM providers to use a consistent error class.
- Enhanced platform-specific dependency markers for NVIDIA packages to ensure compatibility across different systems.
* refactor(tests): update LLM instantiation to include is_litellm flag in test cases
- Modified multiple test cases in test_llm.py to set the is_litellm parameter to True when instantiating the LLM class.
- This change ensures that the tests are aligned with the latest LLM configuration requirements and improves consistency across test scenarios.
- Adjusted relevant assertions and comments to reflect the updated LLM behavior.
* linter
* linted
* revert constants
* fix(tests): correct type hint in expected model description
- Updated the expected description in the test_generate_model_description_dict_field function to use 'Dict' instead of 'dict' for consistency with type hinting conventions.
- This change ensures that the test accurately reflects the expected output format for model descriptions.
* refactor(llm): enhance LLM instantiation and error handling
- Updated the LLM class to include validation for the model parameter, ensuring it is a non-empty string.
- Improved error handling by logging warnings when the native SDK fails, allowing for a fallback to LiteLLM.
- Adjusted the instantiation of LLM in test cases to consistently include the is_litellm flag, aligning with recent changes in LLM configuration.
- Modified relevant tests to reflect these updates, ensuring better coverage and accuracy in testing scenarios.
* fixed test
* refactor(llm): enhance token usage tracking and add copy methods
- Updated the LLM class to track token usage and log callbacks in streaming mode, improving monitoring capabilities.
- Introduced shallow and deep copy methods for the LLM instance, allowing for better management of LLM configurations and parameters.
- Adjusted test cases to instantiate LLM with the is_litellm flag, ensuring alignment with recent changes in LLM configuration.
* refactor(tests): reorganize imports and enhance error messages in test cases
- Cleaned up import statements in test_crew.py for better organization and readability.
- Enhanced error messages in test cases to use `re.escape` for improved regex matching, ensuring more robust error handling.
- Adjusted comments for clarity and consistency across test scenarios.
- Ensured that all necessary modules are imported correctly to avoid potential runtime issues.
* feat: add base devtooling
* fix: ensure dep refs are updated for devtools
* fix: allow pre-release
* feat: allow release after tag
* feat: bump versions to 1.0.0a3
Co-authored-by: Greyson LaLonde <greyson.r.lalonde@gmail.com>
* fix: match tag and release title, ignore devtools build for pypi
* fix: allow failed pypi publish
* feat: introduce trigger listing and execution commands for local development (#3643)
* chore: exclude tests from ruff linting
* chore: exclude tests from GitHub Actions linter
* fix: replace print statements with logger in agent and memory handling
* chore: add noqa for intentional print in printer utility
* fix: resolve linting errors across codebase
* feat: update docs with new approach to consume Platform Actions (#3675)
* fix: remove duplicate line and add explicit env var
* feat: bump versions to 1.0.0a4 (#3686)
* Update triggers docs (#3678)
* docs: introduce triggers list & triggers run command
* docs: add KO triggers docs
* docs: ensure CREWAI_PLATFORM_INTEGRATION_TOKEN is mentioned on docs (#3687)
* Lorenze/bedrock llm (#3693)
* feat: add AWS Bedrock support and update dependencies
- Introduced BedrockCompletion class for AWS Bedrock integration in LLM.
- Added boto3 as a new dependency in both pyproject.toml and uv.lock.
- Updated LLM class to support Bedrock provider.
- Created new files for Bedrock provider implementation.
* using converse api
* converse
* linted
* refactor: update BedrockCompletion class to improve parameter handling
- Changed max_tokens from a fixed integer to an optional integer.
- Simplified model ID assignment by removing the inference profile mapping method.
- Cleaned up comments and unnecessary code related to tool specifications and model-specific parameters.
* feat: improve event bus thread safety and async support
Add thread-safe, async-compatible event bus with read–write locking and
handler dependency ordering. Remove blinker dependency and implement
direct dispatch. Improve type safety, error handling, and deterministic
event synchronization.
Refactor tests to auto-wait for async handlers, ensure clean teardown,
and add comprehensive concurrency coverage. Replace thread-local state
in AgentEvaluator with instance-based locking for correct cross-thread
access. Enhance tracing reliability and event finalization.
* feat: enhance OpenAICompletion class with additional client parameters (#3701)
* feat: enhance OpenAICompletion class with additional client parameters
- Added support for default_headers, default_query, and client_params in the OpenAICompletion class.
- Refactored client initialization to use a dedicated method for client parameter retrieval.
- Introduced new test cases to validate the correct usage of OpenAICompletion with various parameters.
* fix: correct test case for unsupported OpenAI model
- Updated the test_openai.py to ensure that the LLM instance is created before calling the method, maintaining proper error handling for unsupported models.
- This change ensures that the test accurately checks for the NotFoundError when an invalid model is specified.
* fix: enhance error handling in OpenAICompletion class
- Added specific exception handling for NotFoundError and APIConnectionError in the OpenAICompletion class to provide clearer error messages and improve logging.
- Updated the test case for unsupported models to ensure it raises a ValueError with the appropriate message when a non-existent model is specified.
- This change improves the robustness of the OpenAI API integration and enhances the clarity of error reporting.
* fix: improve test for unsupported OpenAI model handling
- Refactored the test case in test_openai.py to create the LLM instance after mocking the OpenAI client, ensuring proper error handling for unsupported models.
- This change enhances the clarity of the test by accurately checking for ValueError when a non-existent model is specified, aligning with recent improvements in error handling for the OpenAICompletion class.
* feat: bump versions to 1.0.0b1 (#3706)
* Lorenze/tools drop litellm (#3710)
* completely drop litellm and correctly pass config for qdrant
* feat: add support for additional embedding models in EmbeddingService
- Expanded the list of supported embedding models to include Google Vertex, Hugging Face, Jina, Ollama, OpenAI, Roboflow, Watson X, custom embeddings, Sentence Transformers, Text2Vec, OpenClip, and Instructor.
- This enhancement improves the versatility of the EmbeddingService by allowing integration with a wider range of embedding providers.
* fix: update collection parameter handling in CrewAIRagAdapter
- Changed the condition for setting vectors_config in the CrewAIRagAdapter to check for QdrantConfig instance instead of using hasattr. This improves type safety and ensures proper configuration handling for Qdrant integration.
* moved stagehand as optional dep (#3712)
* feat: bump versions to 1.0.0b2 (#3713)
* feat: enhance AnthropicCompletion class with additional client parame… (#3707)
* feat: enhance AnthropicCompletion class with additional client parameters and tool handling
- Added support for client_params in the AnthropicCompletion class to allow for additional client configuration.
- Refactored client initialization to use a dedicated method for retrieving client parameters.
- Implemented a new method to handle tool use conversation flow, ensuring proper execution and response handling.
- Introduced comprehensive test cases to validate the functionality of the AnthropicCompletion class, including tool use scenarios and parameter handling.
* drop print statements
* test: add fixture to mock ANTHROPIC_API_KEY for tests
- Introduced a pytest fixture to automatically mock the ANTHROPIC_API_KEY environment variable for all tests in the test_anthropic.py module.
- This change ensures that tests can run without requiring a real API key, improving test isolation and reliability.
* refactor: streamline streaming message handling in AnthropicCompletion class
- Removed the 'stream' parameter from the API call as it is set internally by the SDK.
- Simplified the handling of tool use events and response construction by extracting token usage from the final message.
- Enhanced the flow for managing tool use conversation, ensuring proper integration with the streaming API response.
* fix streaming here too
* fix: improve error handling in tool conversion for AnthropicCompletion class
- Enhanced exception handling during tool conversion by catching KeyError and ValueError.
- Added logging for conversion errors to aid in debugging and maintain robustness in tool integration.
* feat: enhance GeminiCompletion class with client parameter support (#3717)
* feat: enhance GeminiCompletion class with client parameter support
- Added support for client_params in the GeminiCompletion class to allow for additional client configuration.
- Refactored client initialization into a dedicated method for improved parameter handling.
- Introduced a new method to retrieve client parameters, ensuring compatibility with the base class.
- Enhanced error handling during client initialization to provide clearer messages for missing configuration.
- Updated documentation to reflect the changes in client parameter usage.
* add optional dependancies
* refactor: update test fixture to mock GOOGLE_API_KEY
- Renamed the fixture from `mock_anthropic_api_key` to `mock_google_api_key` to reflect the change in the environment variable being mocked.
- This update ensures that all tests in the module can run with a mocked GOOGLE_API_KEY, improving test isolation and reliability.
* fix tests
* feat: enhance BedrockCompletion class with advanced features
* feat: enhance BedrockCompletion class with advanced features and error handling
- Added support for guardrail configuration, additional model request fields, and custom response field paths in the BedrockCompletion class.
- Improved error handling for AWS exceptions and added token usage tracking with stop reason logging.
- Enhanced streaming response handling with comprehensive event management, including tool use and content block processing.
- Updated documentation to reflect new features and initialization parameters.
- Introduced a new test suite for BedrockCompletion to validate functionality and ensure robust integration with AWS Bedrock APIs.
* chore: add boto typing
* fix: use typing_extensions.Required for Python 3.10 compatibility
---------
Co-authored-by: Greyson Lalonde <greyson.r.lalonde@gmail.com>
* feat: azure native tests
* feat: add Azure AI Inference support and related tests
- Introduced the `azure-ai-inference` package with version `1.0.0b9` and its dependencies in `uv.lock` and `pyproject.toml`.
- Added new test files for Azure LLM functionality, including tests for Azure completion and tool handling.
- Implemented comprehensive test cases to validate Azure-specific behavior and integration with the CrewAI framework.
- Enhanced the testing framework to mock Azure credentials and ensure proper isolation during tests.
* feat: enhance AzureCompletion class with Azure OpenAI support
- Added support for the Azure OpenAI endpoint in the AzureCompletion class, allowing for flexible endpoint configurations.
- Implemented endpoint validation and correction to ensure proper URL formats for Azure OpenAI deployments.
- Enhanced error handling to provide clearer messages for common HTTP errors, including authentication and rate limit issues.
- Updated tests to validate the new endpoint handling and error messaging, ensuring robust integration with Azure AI Inference.
- Refactored parameter preparation to conditionally include the model parameter based on the endpoint type.
* refactor: convert project module to metaclass with full typing
* Lorenze/OpenAI base url backwards support (#3723)
* fix: enhance OpenAICompletion class base URL handling
- Updated the base URL assignment in the OpenAICompletion class to prioritize the new `api_base` attribute and fallback to the environment variable `OPENAI_BASE_URL` if both are not set.
- Added `api_base` to the list of parameters in the OpenAICompletion class to ensure proper configuration and flexibility in API endpoint management.
* feat: enhance OpenAICompletion class with api_base support
- Added the `api_base` parameter to the OpenAICompletion class to allow for flexible API endpoint configuration.
- Updated the `_get_client_params` method to prioritize `base_url` over `api_base`, ensuring correct URL handling.
- Introduced comprehensive tests to validate the behavior of `api_base` and `base_url` in various scenarios, including environment variable fallback.
- Enhanced test coverage for client parameter retrieval, ensuring robust integration with the OpenAI API.
* fix: improve OpenAICompletion class configuration handling
- Added a debug print statement to log the client configuration parameters during initialization for better traceability.
- Updated the base URL assignment logic to ensure it defaults to None if no valid base URL is provided, enhancing robustness in API endpoint configuration.
- Refined the retrieval of the `api_base` environment variable to streamline the configuration process.
* drop print
* feat: improvements on import native sdk support (#3725)
* feat: add support for Anthropic provider and enhance logging
- Introduced the `anthropic` package with version `0.69.0` in `pyproject.toml` and `uv.lock`, allowing for integration with the Anthropic API.
- Updated logging in the LLM class to provide clearer error messages when importing native providers, enhancing debugging capabilities.
- Improved error handling in the AnthropicCompletion class to guide users on installation via the updated error message format.
- Refactored import error handling in other provider classes to maintain consistency in error messaging and installation instructions.
* feat: enhance LLM support with Bedrock provider and update dependencies
- Added support for the `bedrock` provider in the LLM class, allowing integration with AWS Bedrock APIs.
- Updated `uv.lock` to replace `boto3` with `bedrock` in the dependencies, reflecting the new provider structure.
- Introduced `SUPPORTED_NATIVE_PROVIDERS` to include `bedrock` and ensure proper error handling when instantiating native providers.
- Enhanced error handling in the LLM class to raise informative errors when native provider instantiation fails.
- Added tests to validate the behavior of the new Bedrock provider and ensure fallback mechanisms work correctly for unsupported providers.
* test: update native provider fallback tests to expect ImportError
* adjust the test with the expected bevaior - raising ImportError
* this is exoecting the litellm format, all gemini native tests are in test_google.py
---------
Co-authored-by: Greyson LaLonde <greyson.r.lalonde@gmail.com>
* fix: remove stdout prints, improve test determinism, and update trace handling
Removed `print` statements from the `LLMStreamChunkEvent` handler to prevent
LLM response chunks from being written directly to stdout. The listener now
only tracks chunks internally.
Fixes #3715
Added explicit return statements for trace-related tests.
Updated cassette for `test_failed_evaluation` to reflect new behavior where
an empty trace dict is used instead of returning early.
Ensured deterministic cleanup order in test fixtures by making
`clear_event_bus_handlers` depend on `setup_test_environment`. This guarantees
event bus shutdown and file handle cleanup occur before temporary directory
deletion, resolving intermittent “Directory not empty” errors in CI.
* chore: remove lib/crewai exclusion from pre-commit hooks
* feat: enhance task guardrail functionality and validation
* feat: enhance task guardrail functionality and validation
- Introduced support for multiple guardrails in the Task class, allowing for sequential processing of guardrails.
- Added a new `guardrails` field to the Task model to accept a list of callable guardrails or string descriptions.
- Implemented validation to ensure guardrails are processed correctly, including handling of retries and error messages.
- Enhanced the `_invoke_guardrail_function` method to manage guardrail execution and integrate with existing task output processing.
- Updated tests to cover various scenarios involving multiple guardrails, including success, failure, and retry mechanisms.
This update improves the flexibility and robustness of task execution by allowing for more complex validation scenarios.
* refactor: enhance guardrail type handling in Task model
- Updated the Task class to improve guardrail type definitions, introducing GuardrailType and GuardrailsType for better clarity and type safety.
- Simplified the validation logic for guardrails, ensuring that both single and multiple guardrails are processed correctly.
- Enhanced error messages for guardrail validation to provide clearer feedback when incorrect types are provided.
- This refactor improves the maintainability and robustness of task execution by standardizing guardrail handling.
* feat: implement per-guardrail retry tracking in Task model
- Introduced a new private attribute `_guardrail_retry_counts` to the Task class for tracking retry attempts on a per-guardrail basis.
- Updated the guardrail processing logic to utilize the new retry tracking, allowing for independent retry counts for each guardrail.
- Enhanced error handling to provide clearer feedback when guardrails fail validation after exceeding retry limits.
- Modified existing tests to validate the new retry tracking behavior, ensuring accurate assertions on guardrail retries.
This update improves the robustness and flexibility of task execution by allowing for more granular control over guardrail validation and retry mechanisms.
* chore: 1.0.0b3 bump (#3734)
* chore: full ruff and mypy
improved linting, pre-commit setup, and internal architecture. Configured Ruff to respect .gitignore, added stricter rules, and introduced a lock pre-commit hook with virtualenv activation. Fixed type shadowing in EXASearchTool using a type_ alias to avoid PEP 563 conflicts and resolved circular imports in agent executor and guardrail modules. Removed agent-ops attributes, deprecated watson alias, and dropped crewai-enterprise tools with corresponding test updates. Refactored cache and memoization for thread safety and cleaned up structured output adapters and related logic.
* New MCL DSL (#3738)
* Adding MCP implementation
* New tests for MCP implementation
* fix tests
* update docs
* Revert "New tests for MCP implementation"
This reverts commit 0bbe6dee90.
* linter
* linter
* fix
* verify mcp pacakge exists
* adjust docs to be clear only remote servers are supported
* reverted
* ensure args schema generated properly
* properly close out
---------
Co-authored-by: lorenzejay <lorenzejaytech@gmail.com>
Co-authored-by: Greyson Lalonde <greyson.r.lalonde@gmail.com>
* feat: a2a experimental
experimental a2a support
---------
Co-authored-by: Lucas Gomide <lucaslg200@gmail.com>
Co-authored-by: Greyson LaLonde <greyson.r.lalonde@gmail.com>
Co-authored-by: Tony Kipkemboi <iamtonykipkemboi@gmail.com>
Co-authored-by: Mike Plachta <mplachta@users.noreply.github.com>
Co-authored-by: João Moura <joaomdmoura@gmail.com>
This commit is contained in:
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
|
||||
|
||||
@@ -3,17 +3,24 @@ repos:
|
||||
hooks:
|
||||
- id: ruff
|
||||
name: ruff
|
||||
entry: uv run ruff check
|
||||
entry: bash -c 'source .venv/bin/activate && uv run ruff check --config pyproject.toml "$@"' --
|
||||
language: system
|
||||
pass_filenames: true
|
||||
types: [python]
|
||||
- id: ruff-format
|
||||
name: ruff-format
|
||||
entry: uv run ruff format
|
||||
entry: bash -c 'source .venv/bin/activate && uv run ruff format --config pyproject.toml "$@"' --
|
||||
language: system
|
||||
pass_filenames: true
|
||||
types: [python]
|
||||
- id: mypy
|
||||
name: mypy
|
||||
entry: uv run mypy
|
||||
entry: bash -c 'source .venv/bin/activate && uv run mypy --config-file pyproject.toml "$@"' --
|
||||
language: system
|
||||
pass_filenames: true
|
||||
types: [python]
|
||||
exclude: ^tests/
|
||||
- repo: https://github.com/astral-sh/uv-pre-commit
|
||||
rev: 0.9.3
|
||||
hooks:
|
||||
- id: uv-lock
|
||||
|
||||
|
||||
@@ -134,6 +134,7 @@
|
||||
"group": "MCP Integration",
|
||||
"pages": [
|
||||
"en/mcp/overview",
|
||||
"en/mcp/dsl-integration",
|
||||
"en/mcp/stdio",
|
||||
"en/mcp/sse",
|
||||
"en/mcp/streamable-http",
|
||||
@@ -361,10 +362,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",
|
||||
@@ -560,6 +571,7 @@
|
||||
"group": "Integração MCP",
|
||||
"pages": [
|
||||
"pt-BR/mcp/overview",
|
||||
"pt-BR/mcp/dsl-integration",
|
||||
"pt-BR/mcp/stdio",
|
||||
"pt-BR/mcp/sse",
|
||||
"pt-BR/mcp/streamable-http",
|
||||
@@ -773,10 +785,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",
|
||||
@@ -805,6 +827,12 @@
|
||||
"group": "Triggers",
|
||||
"pages": [
|
||||
"pt-BR/enterprise/guides/automation-triggers",
|
||||
"pt-BR/enterprise/guides/gmail-trigger",
|
||||
"pt-BR/enterprise/guides/google-calendar-trigger",
|
||||
"pt-BR/enterprise/guides/google-drive-trigger",
|
||||
"pt-BR/enterprise/guides/outlook-trigger",
|
||||
"pt-BR/enterprise/guides/onedrive-trigger",
|
||||
"pt-BR/enterprise/guides/microsoft-teams-trigger",
|
||||
"pt-BR/enterprise/guides/slack-trigger",
|
||||
"pt-BR/enterprise/guides/hubspot-trigger",
|
||||
"pt-BR/enterprise/guides/salesforce-trigger",
|
||||
@@ -963,6 +991,7 @@
|
||||
"group": "MCP 통합",
|
||||
"pages": [
|
||||
"ko/mcp/overview",
|
||||
"ko/mcp/dsl-integration",
|
||||
"ko/mcp/stdio",
|
||||
"ko/mcp/sse",
|
||||
"ko/mcp/streamable-http",
|
||||
@@ -1188,10 +1217,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",
|
||||
@@ -1220,6 +1259,12 @@
|
||||
"group": "트리거",
|
||||
"pages": [
|
||||
"ko/enterprise/guides/automation-triggers",
|
||||
"ko/enterprise/guides/gmail-trigger",
|
||||
"ko/enterprise/guides/google-calendar-trigger",
|
||||
"ko/enterprise/guides/google-drive-trigger",
|
||||
"ko/enterprise/guides/outlook-trigger",
|
||||
"ko/enterprise/guides/onedrive-trigger",
|
||||
"ko/enterprise/guides/microsoft-teams-trigger",
|
||||
"ko/enterprise/guides/slack-trigger",
|
||||
"ko/enterprise/guides/hubspot-trigger",
|
||||
"ko/enterprise/guides/salesforce-trigger",
|
||||
|
||||
@@ -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>
|
||||

|
||||
@@ -57,29 +57,37 @@ Tools & Integrations is the central hub for connecting third‑party apps and ma
|
||||
uv add crewai-tools
|
||||
```
|
||||
|
||||
### Environment Variable Setup
|
||||
|
||||
<Note>
|
||||
To use integrations with `Agent(apps=[])`, you must set the `CREWAI_PLATFORM_INTEGRATION_TOKEN` environment variable with your Enterprise Token.
|
||||
</Note>
|
||||
|
||||
```bash
|
||||
export CREWAI_PLATFORM_INTEGRATION_TOKEN="your_enterprise_token"
|
||||
```
|
||||
|
||||
Or add it to your `.env` file:
|
||||
|
||||
```
|
||||
CREWAI_PLATFORM_INTEGRATION_TOKEN=your_enterprise_token
|
||||
```
|
||||
|
||||
### 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 +110,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(
|
||||
|
||||
@@ -117,27 +117,50 @@ Before wiring a trigger into production, make sure you:
|
||||
- Decide whether to pass trigger context automatically using `allow_crewai_trigger_context`
|
||||
- Set up monitoring—webhook logs, CrewAI execution history, and optional external alerting
|
||||
|
||||
### Payload & Crew Examples Repository
|
||||
### Testing Triggers Locally with CLI
|
||||
|
||||
We maintain a comprehensive repository with end-to-end trigger examples to help you build and test your automations:
|
||||
The CrewAI CLI provides powerful commands to help you develop and test trigger-driven automations without deploying to production.
|
||||
|
||||
This repository contains:
|
||||
#### List Available Triggers
|
||||
|
||||
- **Realistic payload samples** for every supported trigger integration
|
||||
- **Ready-to-run crew implementations** that parse each payload and turn it into a business workflow
|
||||
- **Multiple scenarios per integration** (e.g., new events, updates, deletions) so you can match the shape of your data
|
||||
View all available triggers for your connected integrations:
|
||||
|
||||
| Integration | When it fires | Payload Samples | Crew Examples |
|
||||
| :-- | :-- | :-- | :-- |
|
||||
| Gmail | New messages, thread updates | [New alerts, thread updates](https://github.com/crewAIInc/crewai-enterprise-trigger-examples/tree/main/gmail) | [`new-email-crew.py`, `gmail-alert-crew.py`](https://github.com/crewAIInc/crewai-enterprise-trigger-examples/tree/main/gmail) |
|
||||
| Google Calendar | Event created / updated / started / ended / cancelled | [Event lifecycle payloads](https://github.com/crewAIInc/crewai-enterprise-trigger-examples/tree/main/google_calendar) | [`calendar-event-crew.py`, `calendar-meeting-crew.py`, `calendar-working-location-crew.py`](https://github.com/crewAIInc/crewai-enterprise-trigger-examples/tree/main/google_calendar) |
|
||||
| Google Drive | File created / updated / deleted | [File lifecycle payloads](https://github.com/crewAIInc/crewai-enterprise-trigger-examples/tree/main/google_drive) | [`drive-file-crew.py`, `drive-file-deletion-crew.py`](https://github.com/crewAIInc/crewai-enterprise-trigger-examples/tree/main/google_drive) |
|
||||
| Outlook | New email, calendar event removed | [Outlook payloads](https://github.com/crewAIInc/crewai-enterprise-trigger-examples/tree/main/outlook) | [`outlook-message-crew.py`, `outlook-event-removal-crew.py`](https://github.com/crewAIInc/crewai-enterprise-trigger-examples/tree/main/outlook) |
|
||||
| OneDrive | File operations (create, update, share, delete) | [OneDrive payloads](https://github.com/crewAIInc/crewai-enterprise-trigger-examples/tree/main/onedrive) | [`onedrive-file-crew.py`](https://github.com/crewAIInc/crewai-enterprise-trigger-examples/tree/main/onedrive) |
|
||||
| HubSpot | Record created / updated (contacts, companies, deals) | [HubSpot payloads](https://github.com/crewAIInc/crewai-enterprise-trigger-examples/tree/main/hubspot) | [`hubspot-company-crew.py`, `hubspot-contact-crew.py`, `hubspot-record-crew.py`](https://github.com/crewAIInc/crewai-enterprise-trigger-examples/tree/main/hubspot) |
|
||||
| Microsoft Teams | Chat thread created | [Teams chat payload](https://github.com/crewAIInc/crewai-enterprise-trigger-examples/tree/main/microsoft-teams) | [`teams-chat-created-crew.py`](https://github.com/crewAIInc/crewai-enterprise-trigger-examples/tree/main/microsoft-teams) |
|
||||
```bash
|
||||
crewai triggers list
|
||||
```
|
||||
|
||||
This command displays all triggers available based on your connected integrations, showing:
|
||||
- Integration name and connection status
|
||||
- Available trigger types
|
||||
- Trigger names and descriptions
|
||||
|
||||
#### Simulate Trigger Execution
|
||||
|
||||
Test your crew with realistic trigger payloads before deployment:
|
||||
|
||||
```bash
|
||||
crewai triggers run <trigger_name>
|
||||
```
|
||||
|
||||
For example:
|
||||
|
||||
```bash
|
||||
crewai triggers run microsoft_onedrive/file_changed
|
||||
```
|
||||
|
||||
This command:
|
||||
- Executes your crew locally
|
||||
- Passes a complete, realistic trigger payload
|
||||
- Simulates exactly how your crew will be called in production
|
||||
|
||||
<Warning>
|
||||
**Important Development Notes:**
|
||||
- Use `crewai triggers run <trigger>` to simulate trigger execution during development
|
||||
- Using `crewai run` will NOT simulate trigger calls and won't pass the trigger payload
|
||||
- After deployment, your crew will be executed with the actual trigger payload
|
||||
- If your crew expects parameters that aren't in the trigger payload, execution may fail
|
||||
</Warning>
|
||||
|
||||
Use these samples to understand payload shape, copy the matching crew, and then replace the test payload with your live trigger data.
|
||||
|
||||
### Triggers with Crew
|
||||
|
||||
@@ -241,15 +264,20 @@ def delegate_to_crew(self, crewai_trigger_payload: dict = None):
|
||||
## Troubleshooting
|
||||
|
||||
**Trigger not firing:**
|
||||
- Verify the trigger is enabled
|
||||
- Check integration connection status
|
||||
- Verify the trigger is enabled in your deployment's Triggers tab
|
||||
- Check integration connection status under Tools & Integrations
|
||||
- Ensure all required environment variables are properly configured
|
||||
|
||||
**Execution failures:**
|
||||
- Check the execution logs for error details
|
||||
- If you are developing, make sure the inputs include the `crewai_trigger_payload` parameter with the correct payload
|
||||
- Use `crewai triggers run <trigger_name>` to test locally and see the exact payload structure
|
||||
- Verify your crew can handle the `crewai_trigger_payload` parameter
|
||||
- Ensure your crew doesn't expect parameters that aren't included in the trigger payload
|
||||
|
||||
**Development issues:**
|
||||
- Always test with `crewai triggers run <trigger>` before deploying to see the complete payload
|
||||
- Remember that `crewai run` does NOT simulate trigger calls—use `crewai triggers run` instead
|
||||
- Use `crewai triggers list` to verify which triggers are available for your connected integrations
|
||||
- After deployment, your crew will receive the actual trigger payload, so test thoroughly locally first
|
||||
|
||||
Automation triggers transform your CrewAI deployments into responsive, event-driven systems that can seamlessly integrate with your existing business processes and tools.
|
||||
|
||||
<Card title="CrewAI AMP Trigger Examples" href="https://github.com/crewAIInc/crewai-enterprise-trigger-examples" icon="github">
|
||||
Check them out on GitHub!
|
||||
</Card>
|
||||
|
||||
@@ -51,16 +51,25 @@ class GmailProcessingCrew:
|
||||
)
|
||||
```
|
||||
|
||||
The Gmail payload will be available via the standard context mechanisms. See the payload samples repository for structure and fields.
|
||||
The Gmail payload will be available via the standard context mechanisms.
|
||||
|
||||
### Sample payloads & crews
|
||||
### Testing Locally
|
||||
|
||||
The [CrewAI AMP Trigger Examples repository](https://github.com/crewAIInc/crewai-enterprise-trigger-examples/tree/main/gmail) includes:
|
||||
Test your Gmail trigger integration locally using the CrewAI CLI:
|
||||
|
||||
- `new-email-payload-1.json` / `new-email-payload-2.json` — production-style new message alerts with matching crews in `new-email-crew.py`
|
||||
- `thread-updated-sample-1.json` — follow-up messages on an existing thread, processed by `gmail-alert-crew.py`
|
||||
```bash
|
||||
# View all available triggers
|
||||
crewai triggers list
|
||||
|
||||
Use these samples to validate your parsing logic locally before wiring the trigger to your live Gmail accounts.
|
||||
# Simulate a Gmail trigger with realistic payload
|
||||
crewai triggers run gmail/new_email
|
||||
```
|
||||
|
||||
The `crewai triggers run` command will execute your crew with a complete Gmail payload, allowing you to test your parsing logic before deployment.
|
||||
|
||||
<Warning>
|
||||
Use `crewai triggers run gmail/new_email` (not `crewai run`) to simulate trigger execution during development. After deployment, your crew will automatically receive the trigger payload.
|
||||
</Warning>
|
||||
|
||||
## Monitoring Executions
|
||||
|
||||
@@ -70,16 +79,10 @@ Track history and performance of triggered runs:
|
||||
<img src="/images/enterprise/list-executions.png" alt="List of executions triggered by automation" />
|
||||
</Frame>
|
||||
|
||||
## Payload Reference
|
||||
|
||||
See the sample payloads and field descriptions:
|
||||
|
||||
<Card title="Gmail samples in Trigger Examples Repo" href="https://github.com/crewAIInc/crewai-enterprise-trigger-examples/tree/main/gmail" icon="envelopes-bulk">
|
||||
Gmail samples in Trigger Examples Repo
|
||||
</Card>
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
- Ensure Gmail is connected in Tools & Integrations
|
||||
- Verify the Gmail Trigger is enabled on the Triggers tab
|
||||
- Test locally with `crewai triggers run gmail/new_email` to see the exact payload structure
|
||||
- Check the execution logs and confirm the payload is passed as `crewai_trigger_payload`
|
||||
- Remember: use `crewai triggers run` (not `crewai run`) to simulate trigger execution
|
||||
|
||||
@@ -39,16 +39,23 @@ print(result.raw)
|
||||
|
||||
Use `crewai_trigger_payload` exactly as it is delivered by the trigger so the crew can extract the proper fields.
|
||||
|
||||
## Sample payloads & crews
|
||||
## Testing Locally
|
||||
|
||||
The [Google Calendar examples](https://github.com/crewAIInc/crewai-enterprise-trigger-examples/tree/main/google_calendar) show how to handle multiple event types:
|
||||
Test your Google Calendar trigger integration locally using the CrewAI CLI:
|
||||
|
||||
- `new-event.json` → standard event creation handled by `calendar-event-crew.py`
|
||||
- `event-updated.json` / `event-started.json` / `event-ended.json` → in-flight updates processed by `calendar-meeting-crew.py`
|
||||
- `event-canceled.json` → cancellation workflow that alerts attendees via `calendar-meeting-crew.py`
|
||||
- Working location events use `calendar-working-location-crew.py` to extract on-site schedules
|
||||
```bash
|
||||
# View all available triggers
|
||||
crewai triggers list
|
||||
|
||||
Each crew transforms raw event metadata (attendees, rooms, working locations) into the summaries your teams need.
|
||||
# Simulate a Google Calendar trigger with realistic payload
|
||||
crewai triggers run google_calendar/event_changed
|
||||
```
|
||||
|
||||
The `crewai triggers run` command will execute your crew with a complete Calendar payload, allowing you to test your parsing logic before deployment.
|
||||
|
||||
<Warning>
|
||||
Use `crewai triggers run google_calendar/event_changed` (not `crewai run`) to simulate trigger execution during development. After deployment, your crew will automatically receive the trigger payload.
|
||||
</Warning>
|
||||
|
||||
## Monitoring Executions
|
||||
|
||||
@@ -61,5 +68,7 @@ The **Executions** list in the deployment dashboard tracks every triggered run a
|
||||
## Troubleshooting
|
||||
|
||||
- Ensure the correct Google account is connected and the trigger is enabled
|
||||
- Test locally with `crewai triggers run google_calendar/event_changed` to see the exact payload structure
|
||||
- Confirm your workflow handles all-day events (payloads use `start.date` and `end.date` instead of timestamps)
|
||||
- Check execution logs if reminders or attendee arrays are missing—calendar permissions can limit fields in the payload
|
||||
- Remember: use `crewai triggers run` (not `crewai run`) to simulate trigger execution
|
||||
|
||||
@@ -36,15 +36,23 @@ crew.kickoff({
|
||||
})
|
||||
```
|
||||
|
||||
## Sample payloads & crews
|
||||
## Testing Locally
|
||||
|
||||
Explore the [Google Drive examples](https://github.com/crewAIInc/crewai-enterprise-trigger-examples/tree/main/google_drive) to cover different operations:
|
||||
Test your Google Drive trigger integration locally using the CrewAI CLI:
|
||||
|
||||
- `new-file.json` → new uploads processed by `drive-file-crew.py`
|
||||
- `updated-file.json` → file edits and metadata changes handled by `drive-file-crew.py`
|
||||
- `deleted-file.json` → deletion events routed through `drive-file-deletion-crew.py`
|
||||
```bash
|
||||
# View all available triggers
|
||||
crewai triggers list
|
||||
|
||||
Each crew highlights the file name, operation type, owner, permissions, and security considerations so downstream systems can respond appropriately.
|
||||
# Simulate a Google Drive trigger with realistic payload
|
||||
crewai triggers run google_drive/file_changed
|
||||
```
|
||||
|
||||
The `crewai triggers run` command will execute your crew with a complete Drive payload, allowing you to test your parsing logic before deployment.
|
||||
|
||||
<Warning>
|
||||
Use `crewai triggers run google_drive/file_changed` (not `crewai run`) to simulate trigger execution during development. After deployment, your crew will automatically receive the trigger payload.
|
||||
</Warning>
|
||||
|
||||
## Monitoring Executions
|
||||
|
||||
@@ -57,5 +65,7 @@ Track history and performance of triggered runs with the **Executions** list in
|
||||
## Troubleshooting
|
||||
|
||||
- Verify Google Drive is connected and the trigger toggle is enabled
|
||||
- Test locally with `crewai triggers run google_drive/file_changed` to see the exact payload structure
|
||||
- If a payload is missing permission data, ensure the connected account has access to the file or folder
|
||||
- The trigger sends file IDs only; use the Drive API if you need to fetch binary content during the crew run
|
||||
- Remember: use `crewai triggers run` (not `crewai run`) to simulate trigger execution
|
||||
|
||||
@@ -49,16 +49,4 @@ This guide provides a step-by-step process to set up HubSpot triggers for CrewAI
|
||||
</Step>
|
||||
</Steps>
|
||||
|
||||
## Additional Resources
|
||||
|
||||
### Sample payloads & crews
|
||||
|
||||
You can jump-start development with the [HubSpot examples in the trigger repository](https://github.com/crewAIInc/crewai-enterprise-trigger-examples/tree/main/hubspot):
|
||||
|
||||
- `record-created-contact.json`, `record-updated-contact.json` → contact lifecycle events handled by `hubspot-contact-crew.py`
|
||||
- `record-created-company.json`, `record-updated-company.json` → company enrichment flows in `hubspot-company-crew.py`
|
||||
- `record-created-deals.json`, `record-updated-deals.json` → deal pipeline automation in `hubspot-record-crew.py`
|
||||
|
||||
Each crew demonstrates how to parse HubSpot record fields, enrich context, and return structured insights.
|
||||
|
||||
For more detailed information on available actions and customization options, refer to the [HubSpot Workflows Documentation](https://knowledge.hubspot.com/workflows/create-workflows).
|
||||
|
||||
@@ -37,16 +37,28 @@ print(result.raw)
|
||||
|
||||
The crew parses thread metadata (subject, created time, roster) and generates an action plan for the receiving team.
|
||||
|
||||
## Sample payloads & crews
|
||||
## Testing Locally
|
||||
|
||||
The [Microsoft Teams examples](https://github.com/crewAIInc/crewai-enterprise-trigger-examples/tree/main/microsoft-teams) include:
|
||||
Test your Microsoft Teams trigger integration locally using the CrewAI CLI:
|
||||
|
||||
- `chat-created.json` → chat creation payload processed by `teams-chat-created-crew.py`
|
||||
```bash
|
||||
# View all available triggers
|
||||
crewai triggers list
|
||||
|
||||
The crew demonstrates how to extract participants, initial messages, tenant information, and compliance metadata from the Microsoft Graph webhook payload.
|
||||
# Simulate a Microsoft Teams trigger with realistic payload
|
||||
crewai triggers run microsoft_teams/teams_message_created
|
||||
```
|
||||
|
||||
The `crewai triggers run` command will execute your crew with a complete Teams payload, allowing you to test your parsing logic before deployment.
|
||||
|
||||
<Warning>
|
||||
Use `crewai triggers run microsoft_teams/teams_message_created` (not `crewai run`) to simulate trigger execution during development. After deployment, your crew will automatically receive the trigger payload.
|
||||
</Warning>
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
- Ensure the Teams connection is active; it must be refreshed if the tenant revokes permissions
|
||||
- Test locally with `crewai triggers run microsoft_teams/teams_message_created` to see the exact payload structure
|
||||
- Confirm the webhook subscription in Microsoft 365 is still valid if payloads stop arriving
|
||||
- Review execution logs for payload shape mismatches—Graph notifications may omit fields when a chat is private or restricted
|
||||
- Remember: use `crewai triggers run` (not `crewai run`) to simulate trigger execution
|
||||
|
||||
@@ -36,18 +36,28 @@ crew.kickoff({
|
||||
|
||||
The crew inspects file metadata, user activity, and permission changes to produce a compliance-friendly summary.
|
||||
|
||||
## Sample payloads & crews
|
||||
## Testing Locally
|
||||
|
||||
The [OneDrive examples](https://github.com/crewAIInc/crewai-enterprise-trigger-examples/tree/main/onedrive) showcase how to:
|
||||
Test your OneDrive trigger integration locally using the CrewAI CLI:
|
||||
|
||||
- Parse file metadata, size, and folder paths
|
||||
- Track who created and last modified the file
|
||||
- Highlight permission and external sharing changes
|
||||
```bash
|
||||
# View all available triggers
|
||||
crewai triggers list
|
||||
|
||||
`onedrive-file-crew.py` bundles the analysis and summarization tasks so you can add remediation steps as needed.
|
||||
# Simulate a OneDrive trigger with realistic payload
|
||||
crewai triggers run microsoft_onedrive/file_changed
|
||||
```
|
||||
|
||||
The `crewai triggers run` command will execute your crew with a complete OneDrive payload, allowing you to test your parsing logic before deployment.
|
||||
|
||||
<Warning>
|
||||
Use `crewai triggers run microsoft_onedrive/file_changed` (not `crewai run`) to simulate trigger execution during development. After deployment, your crew will automatically receive the trigger payload.
|
||||
</Warning>
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
- Ensure the connected account has permission to read the file metadata included in the webhook
|
||||
- Test locally with `crewai triggers run microsoft_onedrive/file_changed` to see the exact payload structure
|
||||
- If the trigger fires but the payload is missing `permissions`, confirm the site-level sharing settings allow Graph to return this field
|
||||
- For large tenants, filter notifications upstream so the crew only runs on relevant directories
|
||||
- Remember: use `crewai triggers run` (not `crewai run`) to simulate trigger execution
|
||||
|
||||
@@ -36,17 +36,28 @@ crew.kickoff({
|
||||
|
||||
The crew extracts sender details, subject, body preview, and attachments before generating a structured response.
|
||||
|
||||
## Sample payloads & crews
|
||||
## Testing Locally
|
||||
|
||||
Review the [Outlook examples](https://github.com/crewAIInc/crewai-enterprise-trigger-examples/tree/main/outlook) for two common scenarios:
|
||||
Test your Outlook trigger integration locally using the CrewAI CLI:
|
||||
|
||||
- `new-message.json` → new mail notifications parsed by `outlook-message-crew.py`
|
||||
- `event-removed.json` → calendar cleanup handled by `outlook-event-removal-crew.py`
|
||||
```bash
|
||||
# View all available triggers
|
||||
crewai triggers list
|
||||
|
||||
Each crew demonstrates how to handle Microsoft Graph payloads, normalize headers, and keep humans in-the-loop with concise summaries.
|
||||
# Simulate an Outlook trigger with realistic payload
|
||||
crewai triggers run microsoft_outlook/email_received
|
||||
```
|
||||
|
||||
The `crewai triggers run` command will execute your crew with a complete Outlook payload, allowing you to test your parsing logic before deployment.
|
||||
|
||||
<Warning>
|
||||
Use `crewai triggers run microsoft_outlook/email_received` (not `crewai run`) to simulate trigger execution during development. After deployment, your crew will automatically receive the trigger payload.
|
||||
</Warning>
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
- Verify the Outlook connector is still authorized; the subscription must be renewed periodically
|
||||
- Test locally with `crewai triggers run microsoft_outlook/email_received` to see the exact payload structure
|
||||
- If attachments are missing, confirm the webhook subscription includes the `includeResourceData` flag
|
||||
- Review execution logs when events fail to match—cancellation payloads lack attendee lists by design and the crew should account for that
|
||||
- Remember: use `crewai triggers run` (not `crewai run`) to simulate trigger execution
|
||||
|
||||
@@ -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
|
||||
|
||||
344
docs/en/mcp/dsl-integration.mdx
Normal file
344
docs/en/mcp/dsl-integration.mdx
Normal file
@@ -0,0 +1,344 @@
|
||||
---
|
||||
title: MCP DSL Integration
|
||||
description: Learn how to use CrewAI's simple DSL syntax to integrate MCP servers directly with your agents using the mcps field.
|
||||
icon: code
|
||||
mode: "wide"
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
CrewAI's MCP DSL (Domain Specific Language) integration provides the **simplest way** to connect your agents to MCP (Model Context Protocol) servers. Just add an `mcps` field to your agent and CrewAI handles all the complexity automatically.
|
||||
|
||||
<Info>
|
||||
This is the **recommended approach** for most MCP use cases. For advanced scenarios requiring manual connection management, see [MCPServerAdapter](/en/mcp/overview#advanced-mcpserveradapter).
|
||||
</Info>
|
||||
|
||||
## Basic Usage
|
||||
|
||||
Add MCP servers to your agent using the `mcps` field:
|
||||
|
||||
```python
|
||||
from crewai import Agent
|
||||
|
||||
agent = Agent(
|
||||
role="Research Assistant",
|
||||
goal="Help with research and analysis tasks",
|
||||
backstory="Expert assistant with access to advanced research tools",
|
||||
mcps=[
|
||||
"https://mcp.exa.ai/mcp?api_key=your_key&profile=research"
|
||||
]
|
||||
)
|
||||
|
||||
# MCP tools are now automatically available!
|
||||
# No need for manual connection management or tool configuration
|
||||
```
|
||||
|
||||
## Supported Reference Formats
|
||||
|
||||
### External MCP Remote Servers
|
||||
|
||||
```python
|
||||
# Basic HTTPS server
|
||||
"https://api.example.com/mcp"
|
||||
|
||||
# Server with authentication
|
||||
"https://mcp.exa.ai/mcp?api_key=your_key&profile=your_profile"
|
||||
|
||||
# Server with custom path
|
||||
"https://services.company.com/api/v1/mcp"
|
||||
```
|
||||
|
||||
### Specific Tool Selection
|
||||
|
||||
Use the `#` syntax to select specific tools from a server:
|
||||
|
||||
```python
|
||||
# Get only the forecast tool from weather server
|
||||
"https://weather.api.com/mcp#get_forecast"
|
||||
|
||||
# Get only the search tool from Exa
|
||||
"https://mcp.exa.ai/mcp?api_key=your_key#web_search_exa"
|
||||
```
|
||||
|
||||
### CrewAI AMP Marketplace
|
||||
|
||||
Access tools from the CrewAI AMP marketplace:
|
||||
|
||||
```python
|
||||
# Full service with all tools
|
||||
"crewai-amp:financial-data"
|
||||
|
||||
# Specific tool from AMP service
|
||||
"crewai-amp:research-tools#pubmed_search"
|
||||
|
||||
# Multiple AMP services
|
||||
mcps=[
|
||||
"crewai-amp:weather-insights",
|
||||
"crewai-amp:market-analysis",
|
||||
"crewai-amp:social-media-monitoring"
|
||||
]
|
||||
```
|
||||
|
||||
## Complete Example
|
||||
|
||||
Here's a complete example using multiple MCP servers:
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew, Process
|
||||
|
||||
# Create agent with multiple MCP sources
|
||||
multi_source_agent = Agent(
|
||||
role="Multi-Source Research Analyst",
|
||||
goal="Conduct comprehensive research using multiple data sources",
|
||||
backstory="""Expert researcher with access to web search, weather data,
|
||||
financial information, and academic research tools""",
|
||||
mcps=[
|
||||
# External MCP servers
|
||||
"https://mcp.exa.ai/mcp?api_key=your_exa_key&profile=research",
|
||||
"https://weather.api.com/mcp#get_current_conditions",
|
||||
|
||||
# CrewAI AMP marketplace
|
||||
"crewai-amp:financial-insights",
|
||||
"crewai-amp:academic-research#pubmed_search",
|
||||
"crewai-amp:market-intelligence#competitor_analysis"
|
||||
]
|
||||
)
|
||||
|
||||
# Create comprehensive research task
|
||||
research_task = Task(
|
||||
description="""Research the impact of AI agents on business productivity.
|
||||
Include current weather impacts on remote work, financial market trends,
|
||||
and recent academic publications on AI agent frameworks.""",
|
||||
expected_output="""Comprehensive report covering:
|
||||
1. AI agent business impact analysis
|
||||
2. Weather considerations for remote work
|
||||
3. Financial market trends related to AI
|
||||
4. Academic research citations and insights
|
||||
5. Competitive landscape analysis""",
|
||||
agent=multi_source_agent
|
||||
)
|
||||
|
||||
# Create and execute crew
|
||||
research_crew = Crew(
|
||||
agents=[multi_source_agent],
|
||||
tasks=[research_task],
|
||||
process=Process.sequential,
|
||||
verbose=True
|
||||
)
|
||||
|
||||
result = research_crew.kickoff()
|
||||
print(f"Research completed with {len(multi_source_agent.mcps)} MCP data sources")
|
||||
```
|
||||
|
||||
## Tool Naming and Organization
|
||||
|
||||
CrewAI automatically handles tool naming to prevent conflicts:
|
||||
|
||||
```python
|
||||
# Original MCP server has tools: "search", "analyze"
|
||||
# CrewAI creates tools: "mcp_exa_ai_search", "mcp_exa_ai_analyze"
|
||||
|
||||
agent = Agent(
|
||||
role="Tool Organization Demo",
|
||||
goal="Show how tool naming works",
|
||||
backstory="Demonstrates automatic tool organization",
|
||||
mcps=[
|
||||
"https://mcp.exa.ai/mcp?api_key=key", # Tools: mcp_exa_ai_*
|
||||
"https://weather.service.com/mcp", # Tools: weather_service_com_*
|
||||
"crewai-amp:financial-data" # Tools: financial_data_*
|
||||
]
|
||||
)
|
||||
|
||||
# Each server's tools get unique prefixes based on the server name
|
||||
# This prevents naming conflicts between different MCP servers
|
||||
```
|
||||
|
||||
## Error Handling and Resilience
|
||||
|
||||
The MCP DSL is designed to be robust and user-friendly:
|
||||
|
||||
### Graceful Server Failures
|
||||
|
||||
```python
|
||||
agent = Agent(
|
||||
role="Resilient Researcher",
|
||||
goal="Research despite server issues",
|
||||
backstory="Experienced researcher who adapts to available tools",
|
||||
mcps=[
|
||||
"https://primary-server.com/mcp", # Primary data source
|
||||
"https://backup-server.com/mcp", # Backup if primary fails
|
||||
"https://unreachable-server.com/mcp", # Will be skipped with warning
|
||||
"crewai-amp:reliable-service" # Reliable AMP service
|
||||
]
|
||||
)
|
||||
|
||||
# Agent will:
|
||||
# 1. Successfully connect to working servers
|
||||
# 2. Log warnings for failing servers
|
||||
# 3. Continue with available tools
|
||||
# 4. Not crash or hang on server failures
|
||||
```
|
||||
|
||||
### Timeout Protection
|
||||
|
||||
All MCP operations have built-in timeouts:
|
||||
|
||||
- **Connection timeout**: 10 seconds
|
||||
- **Tool execution timeout**: 30 seconds
|
||||
- **Discovery timeout**: 15 seconds
|
||||
|
||||
```python
|
||||
# These servers will timeout gracefully if unresponsive
|
||||
mcps=[
|
||||
"https://slow-server.com/mcp", # Will timeout after 10s if unresponsive
|
||||
"https://overloaded-api.com/mcp" # Will timeout if discovery takes > 15s
|
||||
]
|
||||
```
|
||||
|
||||
## Performance Features
|
||||
|
||||
### Automatic Caching
|
||||
|
||||
Tool schemas are cached for 5 minutes to improve performance:
|
||||
|
||||
```python
|
||||
# First agent creation - discovers tools from server
|
||||
agent1 = Agent(role="First", goal="Test", backstory="Test",
|
||||
mcps=["https://api.example.com/mcp"])
|
||||
|
||||
# Second agent creation (within 5 minutes) - uses cached tool schemas
|
||||
agent2 = Agent(role="Second", goal="Test", backstory="Test",
|
||||
mcps=["https://api.example.com/mcp"]) # Much faster!
|
||||
```
|
||||
|
||||
### On-Demand Connections
|
||||
|
||||
Tool connections are established only when tools are actually used:
|
||||
|
||||
```python
|
||||
# Agent creation is fast - no MCP connections made yet
|
||||
agent = Agent(
|
||||
role="On-Demand Agent",
|
||||
goal="Use tools efficiently",
|
||||
backstory="Efficient agent that connects only when needed",
|
||||
mcps=["https://api.example.com/mcp"]
|
||||
)
|
||||
|
||||
# MCP connection is made only when a tool is actually executed
|
||||
# This minimizes connection overhead and improves startup performance
|
||||
```
|
||||
|
||||
## Integration with Existing Features
|
||||
|
||||
MCP tools work seamlessly with other CrewAI features:
|
||||
|
||||
```python
|
||||
from crewai.tools import BaseTool
|
||||
|
||||
class CustomTool(BaseTool):
|
||||
name: str = "custom_analysis"
|
||||
description: str = "Custom analysis tool"
|
||||
|
||||
def _run(self, **kwargs):
|
||||
return "Custom analysis result"
|
||||
|
||||
agent = Agent(
|
||||
role="Full-Featured Agent",
|
||||
goal="Use all available tool types",
|
||||
backstory="Agent with comprehensive tool access",
|
||||
|
||||
# All tool types work together
|
||||
tools=[CustomTool()], # Custom tools
|
||||
apps=["gmail", "slack"], # Platform integrations
|
||||
mcps=[ # MCP servers
|
||||
"https://mcp.exa.ai/mcp?api_key=key",
|
||||
"crewai-amp:research-tools"
|
||||
],
|
||||
|
||||
verbose=True,
|
||||
max_iter=15
|
||||
)
|
||||
```
|
||||
|
||||
## Best Practices
|
||||
|
||||
### 1. Use Specific Tools When Possible
|
||||
|
||||
```python
|
||||
# Good - only get the tools you need
|
||||
mcps=["https://weather.api.com/mcp#get_forecast"]
|
||||
|
||||
# Less efficient - gets all tools from server
|
||||
mcps=["https://weather.api.com/mcp"]
|
||||
```
|
||||
|
||||
### 2. Handle Authentication Securely
|
||||
|
||||
```python
|
||||
import os
|
||||
|
||||
# Store API keys in environment variables
|
||||
exa_key = os.getenv("EXA_API_KEY")
|
||||
exa_profile = os.getenv("EXA_PROFILE")
|
||||
|
||||
agent = Agent(
|
||||
role="Secure Agent",
|
||||
goal="Use MCP tools securely",
|
||||
backstory="Security-conscious agent",
|
||||
mcps=[f"https://mcp.exa.ai/mcp?api_key={exa_key}&profile={exa_profile}"]
|
||||
)
|
||||
```
|
||||
|
||||
### 3. Plan for Server Failures
|
||||
|
||||
```python
|
||||
# Always include backup options
|
||||
mcps=[
|
||||
"https://primary-api.com/mcp", # Primary choice
|
||||
"https://backup-api.com/mcp", # Backup option
|
||||
"crewai-amp:reliable-service" # AMP fallback
|
||||
]
|
||||
```
|
||||
|
||||
### 4. Use Descriptive Agent Roles
|
||||
|
||||
```python
|
||||
agent = Agent(
|
||||
role="Weather-Enhanced Market Analyst",
|
||||
goal="Analyze markets considering weather impacts",
|
||||
backstory="Financial analyst with access to weather data for agricultural market insights",
|
||||
mcps=[
|
||||
"https://weather.service.com/mcp#get_forecast",
|
||||
"crewai-amp:financial-data#stock_analysis"
|
||||
]
|
||||
)
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Common Issues
|
||||
|
||||
**No tools discovered:**
|
||||
```python
|
||||
# Check your MCP server URL and authentication
|
||||
# Verify the server is running and accessible
|
||||
mcps=["https://mcp.example.com/mcp?api_key=valid_key"]
|
||||
```
|
||||
|
||||
**Connection timeouts:**
|
||||
```python
|
||||
# Server may be slow or overloaded
|
||||
# CrewAI will log warnings and continue with other servers
|
||||
# Check server status or try backup servers
|
||||
```
|
||||
|
||||
**Authentication failures:**
|
||||
```python
|
||||
# Verify API keys and credentials
|
||||
# Check server documentation for required parameters
|
||||
# Ensure query parameters are properly URL encoded
|
||||
```
|
||||
|
||||
## Advanced: MCPServerAdapter
|
||||
|
||||
For complex scenarios requiring manual connection management, use the `MCPServerAdapter` class from `crewai-tools`. Using a Python context manager (`with` statement) is the recommended approach as it automatically handles starting and stopping the connection to the MCP server.
|
||||
@@ -8,14 +8,39 @@ mode: "wide"
|
||||
## Overview
|
||||
|
||||
The [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) provides a standardized way for AI agents to provide context to LLMs by communicating with external services, known as MCP Servers.
|
||||
The `crewai-tools` library extends CrewAI's capabilities by allowing you to seamlessly integrate tools from these MCP servers into your agents.
|
||||
This gives your crews access to a vast ecosystem of functionalities.
|
||||
|
||||
CrewAI offers **two approaches** for MCP integration:
|
||||
|
||||
### Simple DSL Integration** (Recommended)
|
||||
|
||||
Use the `mcps` field directly on agents for seamless MCP tool integration:
|
||||
|
||||
```python
|
||||
from crewai import Agent
|
||||
|
||||
agent = Agent(
|
||||
role="Research Analyst",
|
||||
goal="Research and analyze information",
|
||||
backstory="Expert researcher with access to external tools",
|
||||
mcps=[
|
||||
"https://mcp.exa.ai/mcp?api_key=your_key", # External MCP server
|
||||
"https://api.weather.com/mcp#get_forecast", # Specific tool from server
|
||||
"crewai-amp:financial-data", # CrewAI AMP marketplace
|
||||
"crewai-amp:research-tools#pubmed_search" # Specific AMP tool
|
||||
]
|
||||
)
|
||||
# MCP tools are now automatically available to your agent!
|
||||
```
|
||||
|
||||
### 🔧 **Advanced: MCPServerAdapter** (For Complex Scenarios)
|
||||
|
||||
For advanced use cases requiring manual connection management, the `crewai-tools` library provides the `MCPServerAdapter` class.
|
||||
|
||||
We currently support the following transport mechanisms:
|
||||
|
||||
- **Stdio**: for local servers (communication via standard input/output between processes on the same machine)
|
||||
- **Server-Sent Events (SSE)**: for remote servers (unidirectional, real-time data streaming from server to client over HTTP)
|
||||
- **Streamable HTTP**: for remote servers (flexible, potentially bi-directional communication over HTTP, often utilizing SSE for server-to-client streams)
|
||||
- **Streamable HTTPS**: for remote servers (flexible, potentially bi-directional communication over HTTPS, often utilizing SSE for server-to-client streams)
|
||||
|
||||
## Video Tutorial
|
||||
Watch this video tutorial for a comprehensive guide on MCP integration with CrewAI:
|
||||
@@ -31,17 +56,125 @@ Watch this video tutorial for a comprehensive guide on MCP integration with Crew
|
||||
|
||||
## Installation
|
||||
|
||||
Before you start using MCP with `crewai-tools`, you need to install the `mcp` extra `crewai-tools` dependency with the following command:
|
||||
CrewAI MCP integration requires the `mcp` library:
|
||||
|
||||
```shell
|
||||
# For Simple DSL Integration (Recommended)
|
||||
uv add mcp
|
||||
|
||||
# For Advanced MCPServerAdapter usage
|
||||
uv pip install 'crewai-tools[mcp]'
|
||||
```
|
||||
|
||||
## Key Concepts & Getting Started
|
||||
## Quick Start: Simple DSL Integration
|
||||
|
||||
The `MCPServerAdapter` class from `crewai-tools` is the primary way to connect to an MCP server and make its tools available to your CrewAI agents. It supports different transport mechanisms and simplifies connection management.
|
||||
The easiest way to integrate MCP servers is using the `mcps` field on your agents:
|
||||
|
||||
Using a Python context manager (`with` statement) is the **recommended approach** for `MCPServerAdapter`. It automatically handles starting and stopping the connection to the MCP server.
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
# Create agent with MCP tools
|
||||
research_agent = Agent(
|
||||
role="Research Analyst",
|
||||
goal="Find and analyze information using advanced search tools",
|
||||
backstory="Expert researcher with access to multiple data sources",
|
||||
mcps=[
|
||||
"https://mcp.exa.ai/mcp?api_key=your_key&profile=your_profile",
|
||||
"crewai-amp:weather-service#current_conditions"
|
||||
]
|
||||
)
|
||||
|
||||
# Create task
|
||||
research_task = Task(
|
||||
description="Research the latest developments in AI agent frameworks",
|
||||
expected_output="Comprehensive research report with citations",
|
||||
agent=research_agent
|
||||
)
|
||||
|
||||
# Create and run crew
|
||||
crew = Crew(agents=[research_agent], tasks=[research_task])
|
||||
result = crew.kickoff()
|
||||
```
|
||||
|
||||
That's it! The MCP tools are automatically discovered and available to your agent.
|
||||
|
||||
## MCP Reference Formats
|
||||
|
||||
The `mcps` field supports various reference formats for maximum flexibility:
|
||||
|
||||
### External MCP Servers
|
||||
|
||||
```python
|
||||
mcps=[
|
||||
# Full server - get all available tools
|
||||
"https://mcp.example.com/api",
|
||||
|
||||
# Specific tool from server using # syntax
|
||||
"https://api.weather.com/mcp#get_current_weather",
|
||||
|
||||
# Server with authentication parameters
|
||||
"https://mcp.exa.ai/mcp?api_key=your_key&profile=your_profile"
|
||||
]
|
||||
```
|
||||
|
||||
### CrewAI AMP Marketplace
|
||||
|
||||
```python
|
||||
mcps=[
|
||||
# Full AMP MCP service - get all available tools
|
||||
"crewai-amp:financial-data",
|
||||
|
||||
# Specific tool from AMP service using # syntax
|
||||
"crewai-amp:research-tools#pubmed_search",
|
||||
|
||||
# Multiple AMP services
|
||||
"crewai-amp:weather-service",
|
||||
"crewai-amp:market-analysis"
|
||||
]
|
||||
```
|
||||
|
||||
### Mixed References
|
||||
|
||||
```python
|
||||
mcps=[
|
||||
"https://external-api.com/mcp", # External server
|
||||
"https://weather.service.com/mcp#forecast", # Specific external tool
|
||||
"crewai-amp:financial-insights", # AMP service
|
||||
"crewai-amp:data-analysis#sentiment_tool" # Specific AMP tool
|
||||
]
|
||||
```
|
||||
|
||||
## Key Features
|
||||
|
||||
- 🔄 **Automatic Tool Discovery**: Tools are automatically discovered and integrated
|
||||
- 🏷️ **Name Collision Prevention**: Server names are prefixed to tool names
|
||||
- ⚡ **Performance Optimized**: On-demand connections with schema caching
|
||||
- 🛡️ **Error Resilience**: Graceful handling of unavailable servers
|
||||
- ⏱️ **Timeout Protection**: Built-in timeouts prevent hanging connections
|
||||
- 📊 **Transparent Integration**: Works seamlessly with existing CrewAI features
|
||||
|
||||
## Error Handling
|
||||
|
||||
The MCP DSL integration is designed to be resilient:
|
||||
|
||||
```python
|
||||
agent = Agent(
|
||||
role="Resilient Agent",
|
||||
goal="Continue working despite server issues",
|
||||
backstory="Agent that handles failures gracefully",
|
||||
mcps=[
|
||||
"https://reliable-server.com/mcp", # Will work
|
||||
"https://unreachable-server.com/mcp", # Will be skipped gracefully
|
||||
"https://slow-server.com/mcp", # Will timeout gracefully
|
||||
"crewai-amp:working-service" # Will work
|
||||
]
|
||||
)
|
||||
# Agent will use tools from working servers and log warnings for failing ones
|
||||
```
|
||||
|
||||
## Advanced: MCPServerAdapter
|
||||
|
||||
For complex scenarios requiring manual connection management, use the `MCPServerAdapter` class from `crewai-tools`. Using a Python context manager (`with` statement) is the recommended approach as it automatically handles starting and stopping the connection to the MCP server.
|
||||
|
||||
## Connection Configuration
|
||||
|
||||
@@ -241,11 +374,19 @@ class CrewWithCustomTimeout:
|
||||
## Explore MCP Integrations
|
||||
|
||||
<CardGroup cols={2}>
|
||||
<Card
|
||||
title="Simple DSL Integration"
|
||||
icon="code"
|
||||
href="/en/mcp/dsl-integration"
|
||||
color="#3B82F6"
|
||||
>
|
||||
**Recommended**: Use the simple `mcps=[]` field syntax for effortless MCP integration.
|
||||
</Card>
|
||||
<Card
|
||||
title="Stdio Transport"
|
||||
icon="server"
|
||||
href="/en/mcp/stdio"
|
||||
color="#3B82F6"
|
||||
color="#10B981"
|
||||
>
|
||||
Connect to local MCP servers via standard input/output. Ideal for scripts and local executables.
|
||||
</Card>
|
||||
@@ -253,7 +394,7 @@ class CrewWithCustomTimeout:
|
||||
title="SSE Transport"
|
||||
icon="wifi"
|
||||
href="/en/mcp/sse"
|
||||
color="#10B981"
|
||||
color="#F59E0B"
|
||||
>
|
||||
Integrate with remote MCP servers using Server-Sent Events for real-time data streaming.
|
||||
</Card>
|
||||
@@ -261,7 +402,7 @@ class CrewWithCustomTimeout:
|
||||
title="Streamable HTTP Transport"
|
||||
icon="globe"
|
||||
href="/en/mcp/streamable-http"
|
||||
color="#F59E0B"
|
||||
color="#8B5CF6"
|
||||
>
|
||||
Utilize flexible Streamable HTTP for robust communication with remote MCP servers.
|
||||
</Card>
|
||||
@@ -269,7 +410,7 @@ class CrewWithCustomTimeout:
|
||||
title="Connecting to Multiple Servers"
|
||||
icon="layer-group"
|
||||
href="/en/mcp/multiple-servers"
|
||||
color="#8B5CF6"
|
||||
color="#EF4444"
|
||||
>
|
||||
Aggregate tools from several MCP servers simultaneously using a single adapter.
|
||||
</Card>
|
||||
@@ -277,7 +418,7 @@ class CrewWithCustomTimeout:
|
||||
title="Security Considerations"
|
||||
icon="lock"
|
||||
href="/en/mcp/security"
|
||||
color="#EF4444"
|
||||
color="#DC2626"
|
||||
>
|
||||
Review important security best practices for MCP integration to keep your agents safe.
|
||||
</Card>
|
||||
|
||||
@@ -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>
|
||||

|
||||
@@ -57,26 +57,37 @@ mode: "wide"
|
||||
uv add crewai-tools
|
||||
```
|
||||
|
||||
### 환경 변수 설정
|
||||
|
||||
<Note>
|
||||
`Agent(apps=[])`와 함께 통합을 사용하려면 Enterprise Token으로 `CREWAI_PLATFORM_INTEGRATION_TOKEN` 환경 변수를 설정해야 합니다.
|
||||
</Note>
|
||||
|
||||
```bash
|
||||
export CREWAI_PLATFORM_INTEGRATION_TOKEN="your_enterprise_token"
|
||||
```
|
||||
|
||||
또는 `.env` 파일에 추가하세요:
|
||||
|
||||
```
|
||||
CREWAI_PLATFORM_INTEGRATION_TOKEN=your_enterprise_token
|
||||
```
|
||||
|
||||
### 사용 예시
|
||||
|
||||
<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 +103,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(
|
||||
|
||||
@@ -110,19 +110,49 @@ CrewAI AMP 트리거는 팀이 이미 사용하고 있는 도구의 실시간
|
||||
- `allow_crewai_trigger_context` 옵션으로 컨텍스트 자동 주입 여부를 결정했나요?
|
||||
- 웹훅 로그, CrewAI 실행 기록, 외부 알림 등 모니터링을 준비했나요?
|
||||
|
||||
### Payload & Crew 예제 저장소
|
||||
### CLI로 로컬에서 트리거 테스트
|
||||
|
||||
| 통합 | 동작 시점 | Payload 예제 | Crew 예제 |
|
||||
| :-- | :-- | :-- | :-- |
|
||||
| Gmail | 신규 메일, 스레드 업데이트 | [Gmail payload](https://github.com/crewAIInc/crewai-enterprise-trigger-examples/tree/main/gmail) | [`new-email-crew.py`, `gmail-alert-crew.py`](https://github.com/crewAIInc/crewai-enterprise-trigger-examples/tree/main/gmail) |
|
||||
| Google Calendar | 이벤트 생성/수정/시작/종료/취소 | [Calendar payload](https://github.com/crewAIInc/crewai-enterprise-trigger-examples/tree/main/google_calendar) | [`calendar-event-crew.py`, `calendar-meeting-crew.py`, `calendar-working-location-crew.py`](https://github.com/crewAIInc/crewai-enterprise-trigger-examples/tree/main/google_calendar) |
|
||||
| Google Drive | 파일 생성/수정/삭제 | [Drive payload](https://github.com/crewAIInc/crewai-enterprise-trigger-examples/tree/main/google_drive) | [`drive-file-crew.py`, `drive-file-deletion-crew.py`](https://github.com/crewAIInc/crewai-enterprise-trigger-examples/tree/main/google_drive) |
|
||||
| Outlook | 새 이메일, 이벤트 제거 | [Outlook payload](https://github.com/crewAIInc/crewai-enterprise-trigger-examples/tree/main/outlook) | [`outlook-message-crew.py`, `outlook-event-removal-crew.py`](https://github.com/crewAIInc/crewai-enterprise-trigger-examples/tree/main/outlook) |
|
||||
| OneDrive | 파일 작업(생성, 수정, 공유, 삭제) | [OneDrive payload](https://github.com/crewAIInc/crewai-enterprise-trigger-examples/tree/main/onedrive) | [`onedrive-file-crew.py`](https://github.com/crewAIInc/crewai-enterprise-trigger-examples/tree/main/onedrive) |
|
||||
| HubSpot | 레코드 생성/업데이트(연락처, 회사, 딜) | [HubSpot payload](https://github.com/crewAIInc/crewai-enterprise-trigger-examples/tree/main/hubspot) | [`hubspot-company-crew.py`, `hubspot-contact-crew.py`, `hubspot-record-crew.py`](https://github.com/crewAIInc/crewai-enterprise-trigger-examples/tree/main/hubspot) |
|
||||
| Microsoft Teams | 채팅 생성 | [Teams payload](https://github.com/crewAIInc/crewai-enterprise-trigger-examples/tree/main/microsoft-teams) | [`teams-chat-created-crew.py`](https://github.com/crewAIInc/crewai-enterprise-trigger-examples/tree/main/microsoft-teams) |
|
||||
CrewAI CLI는 프로덕션에 배포하기 전에 트리거 기반 자동화를 개발하고 테스트할 수 있는 강력한 명령을 제공합니다.
|
||||
|
||||
예제 payload를 참고해 파싱 로직을 검증하고, 제공되는 crew를 복사해 실제 데이터로 교체하세요.
|
||||
#### 사용 가능한 트리거 목록 보기
|
||||
|
||||
연결된 통합에 사용 가능한 모든 트리거를 확인하세요:
|
||||
|
||||
```bash
|
||||
crewai triggers list
|
||||
```
|
||||
|
||||
이 명령은 연결된 통합을 기반으로 사용 가능한 모든 트리거를 표시합니다:
|
||||
- 통합 이름 및 연결 상태
|
||||
- 사용 가능한 트리거 유형
|
||||
- 트리거 이름 및 설명
|
||||
|
||||
#### 트리거 실행 시뮬레이션
|
||||
|
||||
배포 전에 실제 트리거 payload로 크루를 테스트하세요:
|
||||
|
||||
```bash
|
||||
crewai triggers run <트리거_이름>
|
||||
```
|
||||
|
||||
예시:
|
||||
|
||||
```bash
|
||||
crewai triggers run microsoft_onedrive/file_changed
|
||||
```
|
||||
|
||||
이 명령은:
|
||||
- 로컬에서 크루를 실행합니다
|
||||
- 완전하고 실제적인 트리거 payload를 전달합니다
|
||||
- 프로덕션에서 크루가 호출되는 방식을 정확히 시뮬레이션합니다
|
||||
|
||||
<Warning>
|
||||
**중요한 개발 노트:**
|
||||
- 개발 중 트리거 실행을 시뮬레이션하려면 `crewai triggers run <trigger>`를 사용하세요
|
||||
- `crewai run`을 사용하면 트리거 호출을 시뮬레이션하지 않으며 트리거 payload를 전달하지 않습니다
|
||||
- 배포 후에는 실제 트리거 payload로 크루가 실행됩니다
|
||||
- 크루가 트리거 payload에 없는 매개변수를 기대하면 실행이 실패할 수 있습니다
|
||||
</Warning>
|
||||
|
||||
### 트리거와 Crew 연동
|
||||
|
||||
@@ -191,17 +221,20 @@ def delegate_to_crew(self, crewai_trigger_payload: dict = None):
|
||||
## 문제 해결
|
||||
|
||||
**트리거가 실행되지 않나요?**
|
||||
- 트리거가 활성 상태인지 확인하세요.
|
||||
- 통합 연결 상태를 확인하세요.
|
||||
- 배포의 Triggers 탭에서 트리거가 활성화되어 있는지 확인하세요
|
||||
- Tools & Integrations에서 통합 연결 상태를 확인하세요
|
||||
- 필요한 모든 환경 변수가 올바르게 구성되어 있는지 확인하세요
|
||||
|
||||
**실행 중 오류가 발생하나요?**
|
||||
- 실행 로그에서 오류 메시지를 확인하세요.
|
||||
- 개발 중이라면 `crewai_trigger_payload`가 올바른 데이터로 전달되고 있는지 확인하세요.
|
||||
- 실행 로그에서 오류 세부 정보를 확인하세요
|
||||
- `crewai triggers run <트리거_이름>`을 사용하여 로컬에서 테스트하고 정확한 payload 구조를 확인하세요
|
||||
- 크루가 `crewai_trigger_payload` 매개변수를 처리할 수 있는지 확인하세요
|
||||
- 크루가 트리거 payload에 포함되지 않은 매개변수를 기대하지 않는지 확인하세요
|
||||
|
||||
**개발 문제:**
|
||||
- 배포하기 전에 항상 `crewai triggers run <trigger>`로 테스트하여 전체 payload를 확인하세요
|
||||
- `crewai run`은 트리거 호출을 시뮬레이션하지 않으므로 `crewai triggers run`을 대신 사용하세요
|
||||
- `crewai triggers list`를 사용하여 연결된 통합에 사용 가능한 트리거를 확인하세요
|
||||
- 배포 후 크루는 실제 트리거 payload를 받으므로 먼저 로컬에서 철저히 테스트하세요
|
||||
|
||||
트리거를 활용하면 CrewAI 자동화를 이벤트 기반 시스템으로 전환하여 기존 비즈니스 프로세스와 도구에 자연스럽게 녹여낼 수 있습니다.
|
||||
|
||||
<Callout icon="github" title="예제 저장소">
|
||||
<a href="https://github.com/crewAIInc/crewai-enterprise-trigger-examples">
|
||||
CrewAI AMP Trigger Examples
|
||||
</a>
|
||||
</Callout>
|
||||
|
||||
@@ -51,16 +51,25 @@ class GmailProcessingCrew:
|
||||
)
|
||||
```
|
||||
|
||||
The Gmail payload will be available via the standard context mechanisms. See the payload samples repository for structure and fields.
|
||||
The Gmail payload will be available via the standard context mechanisms.
|
||||
|
||||
### Sample payloads & crews
|
||||
### 로컬에서 테스트
|
||||
|
||||
The [CrewAI AMP Trigger Examples repository](https://github.com/crewAIInc/crewai-enterprise-trigger-examples/tree/main/gmail) includes:
|
||||
CrewAI CLI를 사용하여 Gmail 트리거 통합을 로컬에서 테스트하세요:
|
||||
|
||||
- `new-email-payload-1.json` / `new-email-payload-2.json` — production-style new message alerts with matching crews in `new-email-crew.py`
|
||||
- `thread-updated-sample-1.json` — follow-up messages on an existing thread, processed by `gmail-alert-crew.py`
|
||||
```bash
|
||||
# 사용 가능한 모든 트리거 보기
|
||||
crewai triggers list
|
||||
|
||||
Use these samples to validate your parsing logic locally before wiring the trigger to your live Gmail accounts.
|
||||
# 실제 payload로 Gmail 트리거 시뮬레이션
|
||||
crewai triggers run gmail/new_email
|
||||
```
|
||||
|
||||
`crewai triggers run` 명령은 완전한 Gmail payload로 크루를 실행하여 배포 전에 파싱 로직을 테스트할 수 있게 해줍니다.
|
||||
|
||||
<Warning>
|
||||
개발 중에는 `crewai triggers run gmail/new_email`을 사용하세요 (`crewai run`이 아님). 배포 후에는 크루가 자동으로 트리거 payload를 받습니다.
|
||||
</Warning>
|
||||
|
||||
## Monitoring Executions
|
||||
|
||||
@@ -70,16 +79,10 @@ Track history and performance of triggered runs:
|
||||
<img src="/images/enterprise/list-executions.png" alt="List of executions triggered by automation" />
|
||||
</Frame>
|
||||
|
||||
## Payload Reference
|
||||
|
||||
See the sample payloads and field descriptions:
|
||||
|
||||
<Card title="Gmail samples in Trigger Examples Repo" href="https://github.com/crewAIInc/crewai-enterprise-trigger-examples/tree/main/gmail" icon="envelopes-bulk">
|
||||
Gmail samples in Trigger Examples Repo
|
||||
</Card>
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
- Ensure Gmail is connected in Tools & Integrations
|
||||
- Verify the Gmail Trigger is enabled on the Triggers tab
|
||||
- `crewai triggers run gmail/new_email`로 로컬 테스트하여 정확한 payload 구조를 확인하세요
|
||||
- Check the execution logs and confirm the payload is passed as `crewai_trigger_payload`
|
||||
- 주의: 트리거 실행을 시뮬레이션하려면 `crewai triggers run`을 사용하세요 (`crewai run`이 아님)
|
||||
|
||||
@@ -39,16 +39,23 @@ print(result.raw)
|
||||
|
||||
Use `crewai_trigger_payload` exactly as it is delivered by the trigger so the crew can extract the proper fields.
|
||||
|
||||
## Sample payloads & crews
|
||||
## 로컬에서 테스트
|
||||
|
||||
The [Google Calendar examples](https://github.com/crewAIInc/crewai-enterprise-trigger-examples/tree/main/google_calendar) show how to handle multiple event types:
|
||||
CrewAI CLI를 사용하여 Google Calendar 트리거 통합을 로컬에서 테스트하세요:
|
||||
|
||||
- `new-event.json` → standard event creation handled by `calendar-event-crew.py`
|
||||
- `event-updated.json` / `event-started.json` / `event-ended.json` → in-flight updates processed by `calendar-meeting-crew.py`
|
||||
- `event-canceled.json` → cancellation workflow that alerts attendees via `calendar-meeting-crew.py`
|
||||
- Working location events use `calendar-working-location-crew.py` to extract on-site schedules
|
||||
```bash
|
||||
# 사용 가능한 모든 트리거 보기
|
||||
crewai triggers list
|
||||
|
||||
Each crew transforms raw event metadata (attendees, rooms, working locations) into the summaries your teams need.
|
||||
# 실제 payload로 Google Calendar 트리거 시뮬레이션
|
||||
crewai triggers run google_calendar/event_changed
|
||||
```
|
||||
|
||||
`crewai triggers run` 명령은 완전한 Calendar payload로 크루를 실행하여 배포 전에 파싱 로직을 테스트할 수 있게 해줍니다.
|
||||
|
||||
<Warning>
|
||||
개발 중에는 `crewai triggers run google_calendar/event_changed`를 사용하세요 (`crewai run`이 아님). 배포 후에는 크루가 자동으로 트리거 payload를 받습니다.
|
||||
</Warning>
|
||||
|
||||
## Monitoring Executions
|
||||
|
||||
@@ -61,5 +68,7 @@ The **Executions** list in the deployment dashboard tracks every triggered run a
|
||||
## Troubleshooting
|
||||
|
||||
- Ensure the correct Google account is connected and the trigger is enabled
|
||||
- `crewai triggers run google_calendar/event_changed`로 로컬 테스트하여 정확한 payload 구조를 확인하세요
|
||||
- Confirm your workflow handles all-day events (payloads use `start.date` and `end.date` instead of timestamps)
|
||||
- Check execution logs if reminders or attendee arrays are missing—calendar permissions can limit fields in the payload
|
||||
- 주의: 트리거 실행을 시뮬레이션하려면 `crewai triggers run`을 사용하세요 (`crewai run`이 아님)
|
||||
|
||||
@@ -36,15 +36,23 @@ crew.kickoff({
|
||||
})
|
||||
```
|
||||
|
||||
## Sample payloads & crews
|
||||
## 로컬에서 테스트
|
||||
|
||||
Explore the [Google Drive examples](https://github.com/crewAIInc/crewai-enterprise-trigger-examples/tree/main/google_drive) to cover different operations:
|
||||
CrewAI CLI를 사용하여 Google Drive 트리거 통합을 로컬에서 테스트하세요:
|
||||
|
||||
- `new-file.json` → new uploads processed by `drive-file-crew.py`
|
||||
- `updated-file.json` → file edits and metadata changes handled by `drive-file-crew.py`
|
||||
- `deleted-file.json` → deletion events routed through `drive-file-deletion-crew.py`
|
||||
```bash
|
||||
# 사용 가능한 모든 트리거 보기
|
||||
crewai triggers list
|
||||
|
||||
Each crew highlights the file name, operation type, owner, permissions, and security considerations so downstream systems can respond appropriately.
|
||||
# 실제 payload로 Google Drive 트리거 시뮬레이션
|
||||
crewai triggers run google_drive/file_changed
|
||||
```
|
||||
|
||||
`crewai triggers run` 명령은 완전한 Drive payload로 크루를 실행하여 배포 전에 파싱 로직을 테스트할 수 있게 해줍니다.
|
||||
|
||||
<Warning>
|
||||
개발 중에는 `crewai triggers run google_drive/file_changed`를 사용하세요 (`crewai run`이 아님). 배포 후에는 크루가 자동으로 트리거 payload를 받습니다.
|
||||
</Warning>
|
||||
|
||||
## Monitoring Executions
|
||||
|
||||
@@ -57,5 +65,7 @@ Track history and performance of triggered runs with the **Executions** list in
|
||||
## Troubleshooting
|
||||
|
||||
- Verify Google Drive is connected and the trigger toggle is enabled
|
||||
- `crewai triggers run google_drive/file_changed`로 로컬 테스트하여 정확한 payload 구조를 확인하세요
|
||||
- If a payload is missing permission data, ensure the connected account has access to the file or folder
|
||||
- The trigger sends file IDs only; use the Drive API if you need to fetch binary content during the crew run
|
||||
- 주의: 트리거 실행을 시뮬레이션하려면 `crewai triggers run`을 사용하세요 (`crewai run`이 아님)
|
||||
|
||||
@@ -49,6 +49,4 @@ mode: "wide"
|
||||
</Step>
|
||||
</Steps>
|
||||
|
||||
## 추가 자료
|
||||
|
||||
사용 가능한 작업과 사용자 지정 옵션에 대한 자세한 정보는 [HubSpot 워크플로우 문서](https://knowledge.hubspot.com/workflows/create-workflows)를 참고하세요.
|
||||
|
||||
@@ -37,16 +37,28 @@ print(result.raw)
|
||||
|
||||
The crew parses thread metadata (subject, created time, roster) and generates an action plan for the receiving team.
|
||||
|
||||
## Sample payloads & crews
|
||||
## 로컬에서 테스트
|
||||
|
||||
The [Microsoft Teams examples](https://github.com/crewAIInc/crewai-enterprise-trigger-examples/tree/main/microsoft-teams) include:
|
||||
CrewAI CLI를 사용하여 Microsoft Teams 트리거 통합을 로컬에서 테스트하세요:
|
||||
|
||||
- `chat-created.json` → chat creation payload processed by `teams-chat-created-crew.py`
|
||||
```bash
|
||||
# 사용 가능한 모든 트리거 보기
|
||||
crewai triggers list
|
||||
|
||||
The crew demonstrates how to extract participants, initial messages, tenant information, and compliance metadata from the Microsoft Graph webhook payload.
|
||||
# 실제 payload로 Microsoft Teams 트리거 시뮬레이션
|
||||
crewai triggers run microsoft_teams/teams_message_created
|
||||
```
|
||||
|
||||
`crewai triggers run` 명령은 완전한 Teams payload로 크루를 실행하여 배포 전에 파싱 로직을 테스트할 수 있게 해줍니다.
|
||||
|
||||
<Warning>
|
||||
개발 중에는 `crewai triggers run microsoft_teams/teams_message_created`를 사용하세요 (`crewai run`이 아님). 배포 후에는 크루가 자동으로 트리거 payload를 받습니다.
|
||||
</Warning>
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
- Ensure the Teams connection is active; it must be refreshed if the tenant revokes permissions
|
||||
- `crewai triggers run microsoft_teams/teams_message_created`로 로컬 테스트하여 정확한 payload 구조를 확인하세요
|
||||
- Confirm the webhook subscription in Microsoft 365 is still valid if payloads stop arriving
|
||||
- Review execution logs for payload shape mismatches—Graph notifications may omit fields when a chat is private or restricted
|
||||
- 주의: 트리거 실행을 시뮬레이션하려면 `crewai triggers run`을 사용하세요 (`crewai run`이 아님)
|
||||
|
||||
@@ -36,18 +36,28 @@ crew.kickoff({
|
||||
|
||||
The crew inspects file metadata, user activity, and permission changes to produce a compliance-friendly summary.
|
||||
|
||||
## Sample payloads & crews
|
||||
## 로컬에서 테스트
|
||||
|
||||
The [OneDrive examples](https://github.com/crewAIInc/crewai-enterprise-trigger-examples/tree/main/onedrive) showcase how to:
|
||||
CrewAI CLI를 사용하여 OneDrive 트리거 통합을 로컬에서 테스트하세요:
|
||||
|
||||
- Parse file metadata, size, and folder paths
|
||||
- Track who created and last modified the file
|
||||
- Highlight permission and external sharing changes
|
||||
```bash
|
||||
# 사용 가능한 모든 트리거 보기
|
||||
crewai triggers list
|
||||
|
||||
`onedrive-file-crew.py` bundles the analysis and summarization tasks so you can add remediation steps as needed.
|
||||
# 실제 payload로 OneDrive 트리거 시뮬레이션
|
||||
crewai triggers run microsoft_onedrive/file_changed
|
||||
```
|
||||
|
||||
`crewai triggers run` 명령은 완전한 OneDrive payload로 크루를 실행하여 배포 전에 파싱 로직을 테스트할 수 있게 해줍니다.
|
||||
|
||||
<Warning>
|
||||
개발 중에는 `crewai triggers run microsoft_onedrive/file_changed`를 사용하세요 (`crewai run`이 아님). 배포 후에는 크루가 자동으로 트리거 payload를 받습니다.
|
||||
</Warning>
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
- Ensure the connected account has permission to read the file metadata included in the webhook
|
||||
- `crewai triggers run microsoft_onedrive/file_changed`로 로컬 테스트하여 정확한 payload 구조를 확인하세요
|
||||
- If the trigger fires but the payload is missing `permissions`, confirm the site-level sharing settings allow Graph to return this field
|
||||
- For large tenants, filter notifications upstream so the crew only runs on relevant directories
|
||||
- 주의: 트리거 실행을 시뮬레이션하려면 `crewai triggers run`을 사용하세요 (`crewai run`이 아님)
|
||||
|
||||
@@ -36,17 +36,28 @@ crew.kickoff({
|
||||
|
||||
The crew extracts sender details, subject, body preview, and attachments before generating a structured response.
|
||||
|
||||
## Sample payloads & crews
|
||||
## 로컬에서 테스트
|
||||
|
||||
Review the [Outlook examples](https://github.com/crewAIInc/crewai-enterprise-trigger-examples/tree/main/outlook) for two common scenarios:
|
||||
CrewAI CLI를 사용하여 Outlook 트리거 통합을 로컬에서 테스트하세요:
|
||||
|
||||
- `new-message.json` → new mail notifications parsed by `outlook-message-crew.py`
|
||||
- `event-removed.json` → calendar cleanup handled by `outlook-event-removal-crew.py`
|
||||
```bash
|
||||
# 사용 가능한 모든 트리거 보기
|
||||
crewai triggers list
|
||||
|
||||
Each crew demonstrates how to handle Microsoft Graph payloads, normalize headers, and keep humans in-the-loop with concise summaries.
|
||||
# 실제 payload로 Outlook 트리거 시뮬레이션
|
||||
crewai triggers run microsoft_outlook/email_received
|
||||
```
|
||||
|
||||
`crewai triggers run` 명령은 완전한 Outlook payload로 크루를 실행하여 배포 전에 파싱 로직을 테스트할 수 있게 해줍니다.
|
||||
|
||||
<Warning>
|
||||
개발 중에는 `crewai triggers run microsoft_outlook/email_received`를 사용하세요 (`crewai run`이 아님). 배포 후에는 크루가 자동으로 트리거 payload를 받습니다.
|
||||
</Warning>
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
- Verify the Outlook connector is still authorized; the subscription must be renewed periodically
|
||||
- `crewai triggers run microsoft_outlook/email_received`로 로컬 테스트하여 정확한 payload 구조를 확인하세요
|
||||
- If attachments are missing, confirm the webhook subscription includes the `includeResourceData` flag
|
||||
- Review execution logs when events fail to match—cancellation payloads lack attendee lists by design and the crew should account for that
|
||||
- 주의: 트리거 실행을 시뮬레이션하려면 `crewai triggers run`을 사용하세요 (`crewai run`이 아님)
|
||||
|
||||
@@ -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
|
||||
|
||||
232
docs/ko/mcp/dsl-integration.mdx
Normal file
232
docs/ko/mcp/dsl-integration.mdx
Normal file
@@ -0,0 +1,232 @@
|
||||
---
|
||||
title: MCP DSL 통합
|
||||
description: CrewAI의 간단한 DSL 구문을 사용하여 mcps 필드로 MCP 서버를 에이전트와 직접 통합하는 방법을 알아보세요.
|
||||
icon: code
|
||||
mode: "wide"
|
||||
---
|
||||
|
||||
## 개요
|
||||
|
||||
CrewAI의 MCP DSL(Domain Specific Language) 통합은 에이전트를 MCP(Model Context Protocol) 서버에 연결하는 **가장 간단한 방법**을 제공합니다. 에이전트에 `mcps` 필드만 추가하면 CrewAI가 모든 복잡성을 자동으로 처리합니다.
|
||||
|
||||
<Info>
|
||||
이는 대부분의 MCP 사용 사례에 **권장되는 접근 방식**입니다. 수동 연결 관리가 필요한 고급 시나리오의 경우 [MCPServerAdapter](/ko/mcp/overview#advanced-mcpserveradapter)를 참조하세요.
|
||||
</Info>
|
||||
|
||||
## 기본 사용법
|
||||
|
||||
`mcps` 필드를 사용하여 에이전트에 MCP 서버를 추가하세요:
|
||||
|
||||
```python
|
||||
from crewai import Agent
|
||||
|
||||
agent = Agent(
|
||||
role="연구 보조원",
|
||||
goal="연구 및 분석 업무 지원",
|
||||
backstory="고급 연구 도구에 접근할 수 있는 전문가 보조원",
|
||||
mcps=[
|
||||
"https://mcp.exa.ai/mcp?api_key=your_key&profile=research"
|
||||
]
|
||||
)
|
||||
|
||||
# MCP 도구들이 이제 자동으로 사용 가능합니다!
|
||||
# 수동 연결 관리나 도구 구성이 필요 없습니다
|
||||
```
|
||||
|
||||
## 지원되는 참조 형식
|
||||
|
||||
### 외부 MCP 원격 서버
|
||||
|
||||
```python
|
||||
# 기본 HTTPS 서버
|
||||
"https://api.example.com/mcp"
|
||||
|
||||
# 인증이 포함된 서버
|
||||
"https://mcp.exa.ai/mcp?api_key=your_key&profile=your_profile"
|
||||
|
||||
# 사용자 정의 경로가 있는 서버
|
||||
"https://services.company.com/api/v1/mcp"
|
||||
```
|
||||
|
||||
### 특정 도구 선택
|
||||
|
||||
`#` 구문을 사용하여 서버에서 특정 도구를 선택하세요:
|
||||
|
||||
```python
|
||||
# 날씨 서버에서 예보 도구만 가져오기
|
||||
"https://weather.api.com/mcp#get_forecast"
|
||||
|
||||
# Exa에서 검색 도구만 가져오기
|
||||
"https://mcp.exa.ai/mcp?api_key=your_key#web_search_exa"
|
||||
```
|
||||
|
||||
### CrewAI AMP 마켓플레이스
|
||||
|
||||
CrewAI AMP 마켓플레이스의 도구에 액세스하세요:
|
||||
|
||||
```python
|
||||
# 모든 도구가 포함된 전체 서비스
|
||||
"crewai-amp:financial-data"
|
||||
|
||||
# AMP 서비스의 특정 도구
|
||||
"crewai-amp:research-tools#pubmed_search"
|
||||
|
||||
# 다중 AMP 서비스
|
||||
mcps=[
|
||||
"crewai-amp:weather-insights",
|
||||
"crewai-amp:market-analysis",
|
||||
"crewai-amp:social-media-monitoring"
|
||||
]
|
||||
```
|
||||
|
||||
## 완전한 예제
|
||||
|
||||
다음은 여러 MCP 서버를 사용하는 완전한 예제입니다:
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew, Process
|
||||
|
||||
# 다중 MCP 소스를 가진 에이전트 생성
|
||||
multi_source_agent = Agent(
|
||||
role="다중 소스 연구 분석가",
|
||||
goal="다중 데이터 소스를 사용한 종합적인 연구 수행",
|
||||
backstory="""웹 검색, 날씨 데이터, 금융 정보,
|
||||
학술 연구 도구에 접근할 수 있는 전문가 연구원""",
|
||||
mcps=[
|
||||
# 외부 MCP 서버
|
||||
"https://mcp.exa.ai/mcp?api_key=your_exa_key&profile=research",
|
||||
"https://weather.api.com/mcp#get_current_conditions",
|
||||
|
||||
# CrewAI AMP 마켓플레이스
|
||||
"crewai-amp:financial-insights",
|
||||
"crewai-amp:academic-research#pubmed_search",
|
||||
"crewai-amp:market-intelligence#competitor_analysis"
|
||||
]
|
||||
)
|
||||
|
||||
# 종합적인 연구 작업 생성
|
||||
research_task = Task(
|
||||
description="""AI 에이전트가 비즈니스 생산성에 미치는 영향을 연구하세요.
|
||||
원격 근무에 대한 현재 날씨 영향, 금융 시장 트렌드,
|
||||
AI 에이전트 프레임워크에 대한 최근 학술 발표를 포함하세요.""",
|
||||
expected_output="""다음을 다루는 종합 보고서:
|
||||
1. AI 에이전트 비즈니스 영향 분석
|
||||
2. 원격 근무를 위한 날씨 고려사항
|
||||
3. AI 관련 금융 시장 트렌드
|
||||
4. 학술 연구 인용 및 통찰
|
||||
5. 경쟁 환경 분석""",
|
||||
agent=multi_source_agent
|
||||
)
|
||||
|
||||
# crew 생성 및 실행
|
||||
research_crew = Crew(
|
||||
agents=[multi_source_agent],
|
||||
tasks=[research_task],
|
||||
process=Process.sequential,
|
||||
verbose=True
|
||||
)
|
||||
|
||||
result = research_crew.kickoff()
|
||||
print(f"{len(multi_source_agent.mcps)}개의 MCP 데이터 소스로 연구 완료")
|
||||
```
|
||||
|
||||
## 주요 기능
|
||||
|
||||
- 🔄 **자동 도구 발견**: 도구들이 자동으로 발견되고 통합됩니다
|
||||
- 🏷️ **이름 충돌 방지**: 서버 이름이 도구 이름에 접두사로 붙습니다
|
||||
- ⚡ **성능 최적화**: 스키마 캐싱과 온디맨드 연결
|
||||
- 🛡️ **오류 복원력**: 사용할 수 없는 서버의 우아한 처리
|
||||
- ⏱️ **타임아웃 보호**: 내장 타임아웃으로 연결 중단 방지
|
||||
- 📊 **투명한 통합**: 기존 CrewAI 기능과 완벽한 연동
|
||||
|
||||
## 오류 처리
|
||||
|
||||
MCP DSL 통합은 복원력 있게 설계되었습니다:
|
||||
|
||||
```python
|
||||
agent = Agent(
|
||||
role="복원력 있는 에이전트",
|
||||
goal="서버 문제에도 불구하고 작업 계속",
|
||||
backstory="장애를 우아하게 처리하는 에이전트",
|
||||
mcps=[
|
||||
"https://reliable-server.com/mcp", # 작동할 것
|
||||
"https://unreachable-server.com/mcp", # 우아하게 건너뛸 것
|
||||
"https://slow-server.com/mcp", # 우아하게 타임아웃될 것
|
||||
"crewai-amp:working-service" # 작동할 것
|
||||
]
|
||||
)
|
||||
# 에이전트는 작동하는 서버의 도구를 사용하고 실패한 서버에 대한 경고를 로그에 남깁니다
|
||||
```
|
||||
|
||||
## 성능 기능
|
||||
|
||||
### 자동 캐싱
|
||||
|
||||
도구 스키마는 성능 향상을 위해 5분간 캐시됩니다:
|
||||
|
||||
```python
|
||||
# 첫 번째 에이전트 생성 - 서버에서 도구 발견
|
||||
agent1 = Agent(role="첫 번째", goal="테스트", backstory="테스트",
|
||||
mcps=["https://api.example.com/mcp"])
|
||||
|
||||
# 두 번째 에이전트 생성 (5분 이내) - 캐시된 도구 스키마 사용
|
||||
agent2 = Agent(role="두 번째", goal="테스트", backstory="테스트",
|
||||
mcps=["https://api.example.com/mcp"]) # 훨씬 빠릅니다!
|
||||
```
|
||||
|
||||
### 온디맨드 연결
|
||||
|
||||
도구 연결은 실제로 사용될 때만 설정됩니다:
|
||||
|
||||
```python
|
||||
# 에이전트 생성은 빠름 - 아직 MCP 연결을 만들지 않음
|
||||
agent = Agent(
|
||||
role="온디맨드 에이전트",
|
||||
goal="도구를 효율적으로 사용",
|
||||
backstory="필요할 때만 연결하는 효율적인 에이전트",
|
||||
mcps=["https://api.example.com/mcp"]
|
||||
)
|
||||
|
||||
# MCP 연결은 도구가 실제로 실행될 때만 만들어집니다
|
||||
# 이는 연결 오버헤드를 최소화하고 시작 성능을 개선합니다
|
||||
```
|
||||
|
||||
## 모범 사례
|
||||
|
||||
### 1. 가능하면 특정 도구 사용
|
||||
|
||||
```python
|
||||
# 좋음 - 필요한 도구만 가져오기
|
||||
mcps=["https://weather.api.com/mcp#get_forecast"]
|
||||
|
||||
# 덜 효율적 - 서버의 모든 도구 가져오기
|
||||
mcps=["https://weather.api.com/mcp"]
|
||||
```
|
||||
|
||||
### 2. 인증을 안전하게 처리
|
||||
|
||||
```python
|
||||
import os
|
||||
|
||||
# 환경 변수에 API 키 저장
|
||||
exa_key = os.getenv("EXA_API_KEY")
|
||||
exa_profile = os.getenv("EXA_PROFILE")
|
||||
|
||||
agent = Agent(
|
||||
role="안전한 에이전트",
|
||||
goal="MCP 도구를 안전하게 사용",
|
||||
backstory="보안을 고려하는 에이전트",
|
||||
mcps=[f"https://mcp.exa.ai/mcp?api_key={exa_key}&profile={exa_profile}"]
|
||||
)
|
||||
```
|
||||
|
||||
### 3. 서버 장애 계획
|
||||
|
||||
```python
|
||||
# 항상 백업 옵션 포함
|
||||
mcps=[
|
||||
"https://primary-api.com/mcp", # 주요 선택
|
||||
"https://backup-api.com/mcp", # 백업 옵션
|
||||
"crewai-amp:reliable-service" # AMP 폴백
|
||||
]
|
||||
```
|
||||
@@ -8,12 +8,37 @@ mode: "wide"
|
||||
## 개요
|
||||
|
||||
[Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP)는 AI 에이전트가 MCP 서버로 알려진 외부 서비스와 통신함으로써 LLM에 컨텍스트를 제공할 수 있도록 표준화된 방식을 제공합니다.
|
||||
`crewai-tools` 라이브러리는 CrewAI의 기능을 확장하여, 이러한 MCP 서버에서 제공하는 툴을 에이전트에 원활하게 통합할 수 있도록 해줍니다.
|
||||
이를 통해 여러분의 crew는 방대한 기능 에코시스템에 접근할 수 있습니다.
|
||||
|
||||
CrewAI는 MCP 통합을 위한 **두 가지 접근 방식**을 제공합니다:
|
||||
|
||||
### 🚀 **새로운 기능: 간단한 DSL 통합** (권장)
|
||||
|
||||
에이전트에 `mcps` 필드를 직접 사용하여 완벽한 MCP 도구 통합을 구현하세요:
|
||||
|
||||
```python
|
||||
from crewai import Agent
|
||||
|
||||
agent = Agent(
|
||||
role="연구 분석가",
|
||||
goal="정보를 연구하고 분석",
|
||||
backstory="외부 도구에 접근할 수 있는 전문가 연구원",
|
||||
mcps=[
|
||||
"https://mcp.exa.ai/mcp?api_key=your_key", # 외부 MCP 서버
|
||||
"https://api.weather.com/mcp#get_forecast", # 서버의 특정 도구
|
||||
"crewai-amp:financial-data", # CrewAI AMP 마켓플레이스
|
||||
"crewai-amp:research-tools#pubmed_search" # 특정 AMP 도구
|
||||
]
|
||||
)
|
||||
# MCP 도구들이 이제 자동으로 에이전트에서 사용 가능합니다!
|
||||
```
|
||||
|
||||
### 🔧 **고급: MCPServerAdapter** (복잡한 시나리오용)
|
||||
|
||||
수동 연결 관리가 필요한 고급 사용 사례의 경우 `crewai-tools` 라이브러리는 `MCPServerAdapter` 클래스를 제공합니다.
|
||||
|
||||
현재 다음과 같은 전송 메커니즘을 지원합니다:
|
||||
|
||||
- **Stdio**: 로컬 서버용 (동일 머신 내 프로세스 간 표준 입력/출력을 통한 통신)
|
||||
- **HTTPS**: 원격 서버용 (HTTPS를 통한 보안 통신)
|
||||
- **Server-Sent Events (SSE)**: 원격 서버용 (서버에서 클라이언트로의 일방향, 실시간 데이터 스트리밍, HTTP 기반)
|
||||
- **Streamable HTTP**: 원격 서버용 (유연하며 잠재적으로 양방향 통신이 가능, 주로 SSE를 활용한 서버-클라이언트 스트림 제공, HTTP 기반)
|
||||
|
||||
|
||||
@@ -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>
|
||||

|
||||
@@ -57,26 +57,37 @@ Ferramentas & Integrações é o hub central para conectar aplicações de terce
|
||||
uv add crewai-tools
|
||||
```
|
||||
|
||||
### Configuração de variável de ambiente
|
||||
|
||||
<Note>
|
||||
Para usar integrações com `Agent(apps=[])`, você deve definir a variável de ambiente `CREWAI_PLATFORM_INTEGRATION_TOKEN` com seu Enterprise Token.
|
||||
</Note>
|
||||
|
||||
```bash
|
||||
export CREWAI_PLATFORM_INTEGRATION_TOKEN="seu_enterprise_token"
|
||||
```
|
||||
|
||||
Ou adicione ao seu arquivo `.env`:
|
||||
|
||||
```
|
||||
CREWAI_PLATFORM_INTEGRATION_TOKEN=seu_enterprise_token
|
||||
```
|
||||
|
||||
### 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 +103,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(
|
||||
|
||||
@@ -116,19 +116,49 @@ Antes de ativar em produção, confirme que você:
|
||||
- Decidiu se usará `allow_crewai_trigger_context` para injetar contexto automaticamente
|
||||
- Configurou monitoramento (webhooks, históricos da CrewAI, alertas externos)
|
||||
|
||||
### Repositório de Payloads e Crews de Exemplo
|
||||
### Testando Triggers Localmente com CLI
|
||||
|
||||
| Integração | Quando dispara | Amostras de payload | Crews de exemplo |
|
||||
| :-- | :-- | :-- | :-- |
|
||||
| Gmail | Novas mensagens, atualização de threads | [Payloads de alertas e threads](https://github.com/crewAIInc/crewai-enterprise-trigger-examples/tree/main/gmail) | [`new-email-crew.py`, `gmail-alert-crew.py`](https://github.com/crewAIInc/crewai-enterprise-trigger-examples/tree/main/gmail) |
|
||||
| Google Calendar | Evento criado/atualizado/iniciado/encerrado/cancelado | [Payloads de eventos](https://github.com/crewAIInc/crewai-enterprise-trigger-examples/tree/main/google_calendar) | [`calendar-event-crew.py`, `calendar-meeting-crew.py`, `calendar-working-location-crew.py`](https://github.com/crewAIInc/crewai-enterprise-trigger-examples/tree/main/google_calendar) |
|
||||
| Google Drive | Arquivo criado/atualizado/excluído | [Payloads de arquivos](https://github.com/crewAIInc/crewai-enterprise-trigger-examples/tree/main/google_drive) | [`drive-file-crew.py`, `drive-file-deletion-crew.py`](https://github.com/crewAIInc/crewai-enterprise-trigger-examples/tree/main/google_drive) |
|
||||
| Outlook | Novo e‑mail, evento removido | [Payloads do Outlook](https://github.com/crewAIInc/crewai-enterprise-trigger-examples/tree/main/outlook) | [`outlook-message-crew.py`, `outlook-event-removal-crew.py`](https://github.com/crewAIInc/crewai-enterprise-trigger-examples/tree/main/outlook) |
|
||||
| OneDrive | Operações de arquivo (criar, atualizar, compartilhar, excluir) | [Payloads do OneDrive](https://github.com/crewAIInc/crewai-enterprise-trigger-examples/tree/main/onedrive) | [`onedrive-file-crew.py`](https://github.com/crewAIInc/crewai-enterprise-trigger-examples/tree/main/onedrive) |
|
||||
| HubSpot | Registros criados/atualizados (contatos, empresas, negócios) | [Payloads do HubSpot](https://github.com/crewAIInc/crewai-enterprise-trigger-examples/tree/main/hubspot) | [`hubspot-company-crew.py`, `hubspot-contact-crew.py`, `hubspot-record-crew.py`](https://github.com/crewAIInc/crewai-enterprise-trigger-examples/tree/main/hubspot) |
|
||||
| Microsoft Teams | Chat criado | [Payload do Teams](https://github.com/crewAIInc/crewai-enterprise-trigger-examples/tree/main/microsoft-teams) | [`teams-chat-created-crew.py`](https://github.com/crewAIInc/crewai-enterprise-trigger-examples/tree/main/microsoft-teams) |
|
||||
A CLI da CrewAI fornece comandos poderosos para ajudá-lo a desenvolver e testar automações orientadas por triggers sem fazer deploy para produção.
|
||||
|
||||
Use essas amostras para ajustar o parsing, copiar a crew correspondente e substituir o payload de teste pelo dado real.
|
||||
#### Listar Triggers Disponíveis
|
||||
|
||||
Visualize todos os triggers disponíveis para suas integrações conectadas:
|
||||
|
||||
```bash
|
||||
crewai triggers list
|
||||
```
|
||||
|
||||
Este comando exibe todos os triggers disponíveis baseados nas suas integrações conectadas, mostrando:
|
||||
- Nome da integração e status de conexão
|
||||
- Tipos de triggers disponíveis
|
||||
- Nomes e descrições dos triggers
|
||||
|
||||
#### Simular Execução de Trigger
|
||||
|
||||
Teste sua crew com payloads realistas de triggers antes do deployment:
|
||||
|
||||
```bash
|
||||
crewai triggers run <nome_do_trigger>
|
||||
```
|
||||
|
||||
Por exemplo:
|
||||
|
||||
```bash
|
||||
crewai triggers run microsoft_onedrive/file_changed
|
||||
```
|
||||
|
||||
Este comando:
|
||||
- Executa sua crew localmente
|
||||
- Passa um payload de trigger completo e realista
|
||||
- Simula exatamente como sua crew será chamada em produção
|
||||
|
||||
<Warning>
|
||||
**Notas Importantes de Desenvolvimento:**
|
||||
- Use `crewai triggers run <trigger>` para simular execução de trigger durante o desenvolvimento
|
||||
- Usar `crewai run` NÃO simulará chamadas de trigger e não passará o payload do trigger
|
||||
- Após o deployment, sua crew será executada com o payload real do trigger
|
||||
- Se sua crew espera parâmetros que não estão no payload do trigger, a execução pode falhar
|
||||
</Warning>
|
||||
|
||||
### Triggers com Crews
|
||||
|
||||
@@ -203,17 +233,20 @@ def delegar_para_crew(self, crewai_trigger_payload: dict = None):
|
||||
## Solução de Problemas
|
||||
|
||||
**Trigger não dispara:**
|
||||
- Verifique se está habilitado
|
||||
- Confira o status da conexão
|
||||
- Verifique se o trigger está habilitado na aba Triggers do seu deployment
|
||||
- Confira o status da conexão em Tools & Integrations
|
||||
- Garanta que todas as variáveis de ambiente necessárias estão configuradas
|
||||
|
||||
**Falhas de execução:**
|
||||
- Consulte os logs para entender o erro
|
||||
- Durante o desenvolvimento, garanta que `crewai_trigger_payload` está presente com o payload correto
|
||||
- Consulte os logs de execução para detalhes do erro
|
||||
- Use `crewai triggers run <nome_do_trigger>` para testar localmente e ver a estrutura exata do payload
|
||||
- Verifique se sua crew pode processar o parâmetro `crewai_trigger_payload`
|
||||
- Garanta que sua crew não espera parâmetros que não estão incluídos no payload do trigger
|
||||
|
||||
**Problemas de desenvolvimento:**
|
||||
- Sempre teste com `crewai triggers run <trigger>` antes de fazer deploy para ver o payload completo
|
||||
- Lembre-se que `crewai run` NÃO simula chamadas de trigger—use `crewai triggers run` em vez disso
|
||||
- Use `crewai triggers list` para verificar quais triggers estão disponíveis para suas integrações conectadas
|
||||
- Após o deployment, sua crew receberá o payload real do trigger, então teste minuciosamente localmente primeiro
|
||||
|
||||
Os triggers transformam suas implantações CrewAI em sistemas orientados por eventos, integrando-se perfeitamente aos processos e ferramentas já usados pelo seu time.
|
||||
|
||||
<Callout icon="github" title="Exemplos na prática">
|
||||
<a href="https://github.com/crewAIInc/crewai-enterprise-trigger-examples">
|
||||
Repositório CrewAI AMP Trigger Examples
|
||||
</a>
|
||||
</Callout>
|
||||
|
||||
@@ -51,16 +51,25 @@ class GmailProcessingCrew:
|
||||
)
|
||||
```
|
||||
|
||||
The Gmail payload will be available via the standard context mechanisms. See the payload samples repository for structure and fields.
|
||||
The Gmail payload will be available via the standard context mechanisms.
|
||||
|
||||
### Sample payloads & crews
|
||||
### Testando Localmente
|
||||
|
||||
The [CrewAI AMP Trigger Examples repository](https://github.com/crewAIInc/crewai-enterprise-trigger-examples/tree/main/gmail) includes:
|
||||
Teste sua integração de trigger do Gmail localmente usando a CLI da CrewAI:
|
||||
|
||||
- `new-email-payload-1.json` / `new-email-payload-2.json` — production-style new message alerts with matching crews in `new-email-crew.py`
|
||||
- `thread-updated-sample-1.json` — follow-up messages on an existing thread, processed by `gmail-alert-crew.py`
|
||||
```bash
|
||||
# Visualize todos os triggers disponíveis
|
||||
crewai triggers list
|
||||
|
||||
Use these samples to validate your parsing logic locally before wiring the trigger to your live Gmail accounts.
|
||||
# Simule um trigger do Gmail com payload realista
|
||||
crewai triggers run gmail/new_email
|
||||
```
|
||||
|
||||
O comando `crewai triggers run` executará sua crew com um payload completo do Gmail, permitindo que você teste sua lógica de parsing antes do deployment.
|
||||
|
||||
<Warning>
|
||||
Use `crewai triggers run gmail/new_email` (não `crewai run`) para simular execução de trigger durante o desenvolvimento. Após o deployment, sua crew receberá automaticamente o payload do trigger.
|
||||
</Warning>
|
||||
|
||||
## Monitoring Executions
|
||||
|
||||
@@ -70,16 +79,10 @@ Track history and performance of triggered runs:
|
||||
<img src="/images/enterprise/list-executions.png" alt="List of executions triggered by automation" />
|
||||
</Frame>
|
||||
|
||||
## Payload Reference
|
||||
|
||||
See the sample payloads and field descriptions:
|
||||
|
||||
<Card title="Gmail samples in Trigger Examples Repo" href="https://github.com/crewAIInc/crewai-enterprise-trigger-examples/tree/main/gmail" icon="envelopes-bulk">
|
||||
Gmail samples in Trigger Examples Repo
|
||||
</Card>
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
- Ensure Gmail is connected in Tools & Integrations
|
||||
- Verify the Gmail Trigger is enabled on the Triggers tab
|
||||
- Teste localmente com `crewai triggers run gmail/new_email` para ver a estrutura exata do payload
|
||||
- Check the execution logs and confirm the payload is passed as `crewai_trigger_payload`
|
||||
- Lembre-se: use `crewai triggers run` (não `crewai run`) para simular execução de trigger
|
||||
|
||||
@@ -39,16 +39,23 @@ print(result.raw)
|
||||
|
||||
Use `crewai_trigger_payload` exactly as it is delivered by the trigger so the crew can extract the proper fields.
|
||||
|
||||
## Sample payloads & crews
|
||||
## Testando Localmente
|
||||
|
||||
The [Google Calendar examples](https://github.com/crewAIInc/crewai-enterprise-trigger-examples/tree/main/google_calendar) show how to handle multiple event types:
|
||||
Teste sua integração de trigger do Google Calendar localmente usando a CLI da CrewAI:
|
||||
|
||||
- `new-event.json` → standard event creation handled by `calendar-event-crew.py`
|
||||
- `event-updated.json` / `event-started.json` / `event-ended.json` → in-flight updates processed by `calendar-meeting-crew.py`
|
||||
- `event-canceled.json` → cancellation workflow that alerts attendees via `calendar-meeting-crew.py`
|
||||
- Working location events use `calendar-working-location-crew.py` to extract on-site schedules
|
||||
```bash
|
||||
# Visualize todos os triggers disponíveis
|
||||
crewai triggers list
|
||||
|
||||
Each crew transforms raw event metadata (attendees, rooms, working locations) into the summaries your teams need.
|
||||
# Simule um trigger do Google Calendar com payload realista
|
||||
crewai triggers run google_calendar/event_changed
|
||||
```
|
||||
|
||||
O comando `crewai triggers run` executará sua crew com um payload completo do Calendar, permitindo que você teste sua lógica de parsing antes do deployment.
|
||||
|
||||
<Warning>
|
||||
Use `crewai triggers run google_calendar/event_changed` (não `crewai run`) para simular execução de trigger durante o desenvolvimento. Após o deployment, sua crew receberá automaticamente o payload do trigger.
|
||||
</Warning>
|
||||
|
||||
## Monitoring Executions
|
||||
|
||||
@@ -61,5 +68,7 @@ The **Executions** list in the deployment dashboard tracks every triggered run a
|
||||
## Troubleshooting
|
||||
|
||||
- Ensure the correct Google account is connected and the trigger is enabled
|
||||
- Teste localmente com `crewai triggers run google_calendar/event_changed` para ver a estrutura exata do payload
|
||||
- Confirm your workflow handles all-day events (payloads use `start.date` and `end.date` instead of timestamps)
|
||||
- Check execution logs if reminders or attendee arrays are missing—calendar permissions can limit fields in the payload
|
||||
- Lembre-se: use `crewai triggers run` (não `crewai run`) para simular execução de trigger
|
||||
|
||||
@@ -36,15 +36,23 @@ crew.kickoff({
|
||||
})
|
||||
```
|
||||
|
||||
## Sample payloads & crews
|
||||
## Testando Localmente
|
||||
|
||||
Explore the [Google Drive examples](https://github.com/crewAIInc/crewai-enterprise-trigger-examples/tree/main/google_drive) to cover different operations:
|
||||
Teste sua integração de trigger do Google Drive localmente usando a CLI da CrewAI:
|
||||
|
||||
- `new-file.json` → new uploads processed by `drive-file-crew.py`
|
||||
- `updated-file.json` → file edits and metadata changes handled by `drive-file-crew.py`
|
||||
- `deleted-file.json` → deletion events routed through `drive-file-deletion-crew.py`
|
||||
```bash
|
||||
# Visualize todos os triggers disponíveis
|
||||
crewai triggers list
|
||||
|
||||
Each crew highlights the file name, operation type, owner, permissions, and security considerations so downstream systems can respond appropriately.
|
||||
# Simule um trigger do Google Drive com payload realista
|
||||
crewai triggers run google_drive/file_changed
|
||||
```
|
||||
|
||||
O comando `crewai triggers run` executará sua crew com um payload completo do Drive, permitindo que você teste sua lógica de parsing antes do deployment.
|
||||
|
||||
<Warning>
|
||||
Use `crewai triggers run google_drive/file_changed` (não `crewai run`) para simular execução de trigger durante o desenvolvimento. Após o deployment, sua crew receberá automaticamente o payload do trigger.
|
||||
</Warning>
|
||||
|
||||
## Monitoring Executions
|
||||
|
||||
@@ -57,5 +65,7 @@ Track history and performance of triggered runs with the **Executions** list in
|
||||
## Troubleshooting
|
||||
|
||||
- Verify Google Drive is connected and the trigger toggle is enabled
|
||||
- Teste localmente com `crewai triggers run google_drive/file_changed` para ver a estrutura exata do payload
|
||||
- If a payload is missing permission data, ensure the connected account has access to the file or folder
|
||||
- The trigger sends file IDs only; use the Drive API if you need to fetch binary content during the crew run
|
||||
- Lembre-se: use `crewai triggers run` (não `crewai run`) para simular execução de trigger
|
||||
|
||||
@@ -37,16 +37,28 @@ print(result.raw)
|
||||
|
||||
The crew parses thread metadata (subject, created time, roster) and generates an action plan for the receiving team.
|
||||
|
||||
## Sample payloads & crews
|
||||
## Testando Localmente
|
||||
|
||||
The [Microsoft Teams examples](https://github.com/crewAIInc/crewai-enterprise-trigger-examples/tree/main/microsoft-teams) include:
|
||||
Teste sua integração de trigger do Microsoft Teams localmente usando a CLI da CrewAI:
|
||||
|
||||
- `chat-created.json` → chat creation payload processed by `teams-chat-created-crew.py`
|
||||
```bash
|
||||
# Visualize todos os triggers disponíveis
|
||||
crewai triggers list
|
||||
|
||||
The crew demonstrates how to extract participants, initial messages, tenant information, and compliance metadata from the Microsoft Graph webhook payload.
|
||||
# Simule um trigger do Microsoft Teams com payload realista
|
||||
crewai triggers run microsoft_teams/teams_message_created
|
||||
```
|
||||
|
||||
O comando `crewai triggers run` executará sua crew com um payload completo do Teams, permitindo que você teste sua lógica de parsing antes do deployment.
|
||||
|
||||
<Warning>
|
||||
Use `crewai triggers run microsoft_teams/teams_message_created` (não `crewai run`) para simular execução de trigger durante o desenvolvimento. Após o deployment, sua crew receberá automaticamente o payload do trigger.
|
||||
</Warning>
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
- Ensure the Teams connection is active; it must be refreshed if the tenant revokes permissions
|
||||
- Teste localmente com `crewai triggers run microsoft_teams/teams_message_created` para ver a estrutura exata do payload
|
||||
- Confirm the webhook subscription in Microsoft 365 is still valid if payloads stop arriving
|
||||
- Review execution logs for payload shape mismatches—Graph notifications may omit fields when a chat is private or restricted
|
||||
- Lembre-se: use `crewai triggers run` (não `crewai run`) para simular execução de trigger
|
||||
|
||||
@@ -36,18 +36,28 @@ crew.kickoff({
|
||||
|
||||
The crew inspects file metadata, user activity, and permission changes to produce a compliance-friendly summary.
|
||||
|
||||
## Sample payloads & crews
|
||||
## Testando Localmente
|
||||
|
||||
The [OneDrive examples](https://github.com/crewAIInc/crewai-enterprise-trigger-examples/tree/main/onedrive) showcase how to:
|
||||
Teste sua integração de trigger do OneDrive localmente usando a CLI da CrewAI:
|
||||
|
||||
- Parse file metadata, size, and folder paths
|
||||
- Track who created and last modified the file
|
||||
- Highlight permission and external sharing changes
|
||||
```bash
|
||||
# Visualize todos os triggers disponíveis
|
||||
crewai triggers list
|
||||
|
||||
`onedrive-file-crew.py` bundles the analysis and summarization tasks so you can add remediation steps as needed.
|
||||
# Simule um trigger do OneDrive com payload realista
|
||||
crewai triggers run microsoft_onedrive/file_changed
|
||||
```
|
||||
|
||||
O comando `crewai triggers run` executará sua crew com um payload completo do OneDrive, permitindo que você teste sua lógica de parsing antes do deployment.
|
||||
|
||||
<Warning>
|
||||
Use `crewai triggers run microsoft_onedrive/file_changed` (não `crewai run`) para simular execução de trigger durante o desenvolvimento. Após o deployment, sua crew receberá automaticamente o payload do trigger.
|
||||
</Warning>
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
- Ensure the connected account has permission to read the file metadata included in the webhook
|
||||
- Teste localmente com `crewai triggers run microsoft_onedrive/file_changed` para ver a estrutura exata do payload
|
||||
- If the trigger fires but the payload is missing `permissions`, confirm the site-level sharing settings allow Graph to return this field
|
||||
- For large tenants, filter notifications upstream so the crew only runs on relevant directories
|
||||
- Lembre-se: use `crewai triggers run` (não `crewai run`) para simular execução de trigger
|
||||
|
||||
@@ -36,17 +36,28 @@ crew.kickoff({
|
||||
|
||||
The crew extracts sender details, subject, body preview, and attachments before generating a structured response.
|
||||
|
||||
## Sample payloads & crews
|
||||
## Testando Localmente
|
||||
|
||||
Review the [Outlook examples](https://github.com/crewAIInc/crewai-enterprise-trigger-examples/tree/main/outlook) for two common scenarios:
|
||||
Teste sua integração de trigger do Outlook localmente usando a CLI da CrewAI:
|
||||
|
||||
- `new-message.json` → new mail notifications parsed by `outlook-message-crew.py`
|
||||
- `event-removed.json` → calendar cleanup handled by `outlook-event-removal-crew.py`
|
||||
```bash
|
||||
# Visualize todos os triggers disponíveis
|
||||
crewai triggers list
|
||||
|
||||
Each crew demonstrates how to handle Microsoft Graph payloads, normalize headers, and keep humans in-the-loop with concise summaries.
|
||||
# Simule um trigger do Outlook com payload realista
|
||||
crewai triggers run microsoft_outlook/email_received
|
||||
```
|
||||
|
||||
O comando `crewai triggers run` executará sua crew com um payload completo do Outlook, permitindo que você teste sua lógica de parsing antes do deployment.
|
||||
|
||||
<Warning>
|
||||
Use `crewai triggers run microsoft_outlook/email_received` (não `crewai run`) para simular execução de trigger durante o desenvolvimento. Após o deployment, sua crew receberá automaticamente o payload do trigger.
|
||||
</Warning>
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
- Verify the Outlook connector is still authorized; the subscription must be renewed periodically
|
||||
- Teste localmente com `crewai triggers run microsoft_outlook/email_received` para ver a estrutura exata do payload
|
||||
- If attachments are missing, confirm the webhook subscription includes the `includeResourceData` flag
|
||||
- Review execution logs when events fail to match—cancellation payloads lack attendee lists by design and the crew should account for that
|
||||
- Lembre-se: use `crewai triggers run` (não `crewai run`) para simular execução de trigger
|
||||
|
||||
@@ -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
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user