mirror of
https://github.com/crewAIInc/crewAI.git
synced 2026-07-07 16:09:30 +00:00
* feat: adopt directory-based docs versioning with Edge channel Switch docs.crewai.com from navigation-only versioning (every version selector entry rendered the same docs/<lang>/* source files) to Mintlify's directory-based versioning so each version selector entry renders its own snapshot. Add an "Edge" channel under docs/edge/<lang>/* that always reflects main HEAD for unreleased work, eliminating pre-release leakage onto frozen release labels. External links to canonical /<lang>/* URLs are preserved via wildcard redirects that always land on the current default version. Layout: - docs/edge/<lang>/* rolling source (you edit here) - docs/edge/enterprise-api.*.yaml - docs/v<X.Y.Z>/<lang>/* frozen, immutable snapshots - docs/v<X.Y.Z>/enterprise-api.*.yaml - docs/images/ shared, append-only - docs/docs.json nav + redirects URLs follow the Mintlify-idiomatic shape: /edge/<lang>/<page> for Edge, /v<X.Y.Z>/<lang>/<page> for every frozen snapshot. The wildcard redirects /<lang>/:slug* -> /<default>/<lang>/:slug* keep stale links working, and every freeze rewrites them (plus all per-section/per-page redirects) so destinations always resolve to the current default without depending on a second redirect hop. Release flow integration (devtools release): - New module crewai_devtools.docs_versioning.freeze() materialises docs/v<X.Y.Z>/ from docs/edge/, rewrites openapi: refs inside the snapshot, inserts the version into every language block in docs.json, and refreshes all redirect destinations. - _update_docs_and_create_pr() in cli.py now calls that freeze during Phase 2 of devtools release. Edge changelogs are updated first (so the snapshot freeze picks them up), then the snapshot is staged alongside docs.json, branched as docs/freeze-v<X.Y.Z>, and the PR is titled [docs-freeze] docs: snapshot and changelog for v<X.Y.Z> — the title prefix the new CI guard reads. - The PR still gates tag, GitHub release, PyPI publish, and the enterprise release as before; no new PRs are added. - Pre-releases (1.X.YaN, 1.X.YbN, ...) skip the snapshot — they ride Edge — and the docs PR title omits the [docs-freeze] prefix. - docs_check (AI-generated docs scaffolding) writes to docs/edge/<lang>/* so newly-generated unreleased docs land in Edge and never accidentally touch a frozen snapshot. Migration scripts (one-shot): - scripts/docs/freeze_historical_versions.py reconstructs all 16 historical snapshots (v1.10.0 .. v1.14.7) from git tags via git archive | tar, rewriting openapi: MDX refs so each snapshot reads its own enterprise-api YAML rather than the live one. - scripts/docs/prefix_version_paths.py one-shot-migrates docs.json: rewrites every page path in 16 versioned blocks to point under docs/v<X.Y.Z>/, inserts a new Edge entry per language, tags v1.14.7 as Latest (default), prunes pages whose target file doesn't exist in the snapshot (e.g. docs/ar/ didn't exist before v1.12.0), and writes the wildcard + per-section redirects. - scripts/docs/freeze_current_edge.py is now a thin CLI wrapper around docs_versioning.freeze for manual one-off freezes (e.g. retroactively snapshotting a forgotten release). CI guards (.github/workflows/docs-snapshots.yml): - Frozen snapshots under docs/v[0-9]*/ are immutable; only PRs whose title contains [docs-freeze] (i.e. release-cut PRs generated by devtools release or the manual wrapper) may modify them. - Images under docs/images/ are append-only since snapshots share a single image directory. Deleting or renaming an image breaks every historical snapshot that still references it. Restored docs/images/crewai-otel-export.png from PR #3673; it was deleted in PR #4908 but v1.10.0 / v1.10.1 snapshots still reference it. Restoring instead of editing the snapshots preserves historical rendering fidelity and validates the new append-only rule retroactively. Tests: - lib/devtools/tests/test_docs_versioning.py covers the freeze: file copy, openapi rewrite, version insertion, default demotion, redirect upserts, per-section redirect rewriting, idempotency, and invalid inputs. Verified locally with mintlify broken-links: 0 broken links across the full site (Edge + 16 frozen versions, 4 locales). AGENTS.md (repo root) is the contributor guide for the new model; RELEASING.md is the release-cut runbook; README's Contribution section links to both. Co-authored-by: Cursor <cursoragent@cursor.com> * style: resolve linter issues --------- Co-authored-by: Cursor <cursoragent@cursor.com>
322 lines
13 KiB
Plaintext
322 lines
13 KiB
Plaintext
---
|
|
title: "نظرة عامة على المشغلات"
|
|
description: "فهم كيفية عمل مشغلات CrewAI AMP وكيفية إدارتها وأين تجد أدلة التكامل الخاصة بكل خدمة"
|
|
icon: "face-smile"
|
|
mode: "wide"
|
|
---
|
|
|
|
تربط مشغلات CrewAI AMP أتمتاتك بالأحداث الفورية عبر الأدوات التي تستخدمها فرقك بالفعل. بدلاً من الاستعلام المتكرر عن الأنظمة أو الاعتماد على التشغيل اليدوي، تستمع المشغلات للتغييرات — رسائل بريد إلكتروني جديدة، تحديثات التقويم، تغييرات حالة CRM — وتطلق فوراً الطاقم أو التدفق الذي تحدده.
|
|
|
|
<Frame>
|
|

|
|
</Frame>
|
|
|
|
### أدلة التكامل
|
|
|
|
تقدم الأدلة المفصلة شرحاً لعملية الإعداد وأمثلة على سير العمل لكل تكامل:
|
|
|
|
<CardGroup cols={2}>
|
|
<Card title="مشغل Gmail" icon="envelope">
|
|
<a href="/ar/enterprise/guides/gmail-trigger">فعّل الطواقم عند وصول رسائل بريد إلكتروني أو تحديث سلاسل المحادثات.</a>
|
|
</Card>
|
|
|
|
{" "}
|
|
<Card title="مشغل Google Calendar" icon="calendar-days">
|
|
<a href="/ar/enterprise/guides/google-calendar-trigger">
|
|
استجب لأحداث التقويم عند إنشائها أو تحديثها أو إلغائها.
|
|
</a>
|
|
</Card>
|
|
|
|
{" "}
|
|
<Card title="مشغل Google Drive" icon="folder-open">
|
|
<a href="/ar/enterprise/guides/google-drive-trigger">
|
|
تعامل مع تحميلات وتعديلات وحذف ملفات Drive.
|
|
</a>
|
|
</Card>
|
|
|
|
{" "}
|
|
<Card title="مشغل Outlook" icon="envelope-open">
|
|
<a href="/ar/enterprise/guides/outlook-trigger">
|
|
أتمت الاستجابات لرسائل Outlook الجديدة وتحديثات التقويم.
|
|
</a>
|
|
</Card>
|
|
|
|
{" "}
|
|
<Card title="مشغل OneDrive" icon="cloud">
|
|
<a href="/ar/enterprise/guides/onedrive-trigger">
|
|
راقب نشاط الملفات وتغييرات المشاركة في OneDrive.
|
|
</a>
|
|
</Card>
|
|
|
|
{" "}
|
|
<Card title="مشغل Microsoft Teams" icon="comments">
|
|
<a href="/ar/enterprise/guides/microsoft-teams-trigger">
|
|
ابدأ سير العمل عند إنشاء محادثات Teams جديدة.
|
|
</a>
|
|
</Card>
|
|
|
|
{" "}
|
|
<Card title="مشغل HubSpot" icon="hubspot">
|
|
<a href="/ar/enterprise/guides/hubspot-trigger">
|
|
أطلق الأتمتات من سير عمل HubSpot وأحداث دورة الحياة.
|
|
</a>
|
|
</Card>
|
|
|
|
{" "}
|
|
<Card title="مشغل Salesforce" icon="salesforce">
|
|
<a href="/ar/enterprise/guides/salesforce-trigger">
|
|
اربط عمليات Salesforce بـ CrewAI لأتمتة CRM.
|
|
</a>
|
|
</Card>
|
|
|
|
{" "}
|
|
<Card title="مشغل Slack" icon="slack">
|
|
<a href="/ar/enterprise/guides/slack-trigger">
|
|
ابدأ الطواقم مباشرة من أوامر Slack.
|
|
</a>
|
|
</Card>
|
|
|
|
<Card title="مشغل Zapier" icon="bolt">
|
|
<a href="/ar/enterprise/guides/zapier-trigger">اربط CrewAI بآلاف التطبيقات المدعومة من Zapier.</a>
|
|
</Card>
|
|
</CardGroup>
|
|
|
|
## قدرات المشغلات
|
|
|
|
مع المشغلات، يمكنك:
|
|
|
|
- **الاستجابة للأحداث الفورية** - تنفيذ سير العمل تلقائياً عند استيفاء شروط محددة
|
|
- **التكامل مع الأنظمة الخارجية** - الاتصال بمنصات مثل Gmail وOutlook وOneDrive وJIRA وSlack وStripe والمزيد
|
|
- **توسيع نطاق الأتمتة** - التعامل مع أحداث كبيرة الحجم دون تدخل يدوي
|
|
- **الحفاظ على السياق** - الوصول إلى بيانات المشغل داخل طواقمك وتدفقاتك
|
|
|
|
## إدارة المشغلات
|
|
|
|
### عرض المشغلات المتاحة
|
|
|
|
للوصول إلى مشغلات الأتمتة وإدارتها:
|
|
|
|
1. انتقل إلى عملية النشر في لوحة تحكم CrewAI
|
|
2. انقر على علامة تبويب **Triggers** لعرض جميع تكاملات المشغلات المتاحة
|
|
|
|
<Frame caption="مثال على مشغلات الأتمتة المتاحة لنشر Gmail">
|
|
<img
|
|
src="/images/enterprise/list-available-triggers.png"
|
|
alt="قائمة مشغلات الأتمتة المتاحة"
|
|
/>
|
|
</Frame>
|
|
|
|
يعرض هذا العرض جميع تكاملات المشغلات المتاحة لعملية النشر، مع حالة الاتصال الحالية.
|
|
|
|
### تفعيل وتعطيل المشغلات
|
|
|
|
يمكن تفعيل أو تعطيل كل مشغل بسهولة باستخدام مفتاح التبديل:
|
|
|
|
<Frame caption="تفعيل أو تعطيل المشغلات بالتبديل">
|
|
<img
|
|
src="/images/enterprise/trigger-selected.png"
|
|
alt="تفعيل أو تعطيل المشغلات بالتبديل"
|
|
/>
|
|
</Frame>
|
|
|
|
- **مُفعّل (تبديل أزرق)**: المشغل نشط وسينفذ عملية النشر تلقائياً عند حدوث الأحداث المحددة
|
|
- **مُعطّل (تبديل رمادي)**: المشغل غير نشط ولن يستجيب للأحداث
|
|
|
|
انقر ببساطة على التبديل لتغيير حالة المشغل. تسري التغييرات فوراً.
|
|
|
|
### مراقبة عمليات تنفيذ المشغلات
|
|
|
|
تتبع أداء وسجل عمليات التنفيذ المُشغّلة:
|
|
|
|
<Frame caption="قائمة عمليات التنفيذ المُشغّلة بواسطة الأتمتة">
|
|
<img
|
|
src="/images/enterprise/list-executions.png"
|
|
alt="قائمة عمليات التنفيذ المُشغّلة بواسطة الأتمتة"
|
|
/>
|
|
</Frame>
|
|
|
|
## بناء أتمتات مدفوعة بالمشغلات
|
|
|
|
قبل بناء أتمتتك، من المفيد فهم هيكل حمولات المشغلات التي ستتلقاها طواقمك وتدفقاتك.
|
|
|
|
### قائمة فحص إعداد المشغل
|
|
|
|
قبل ربط مشغل بالإنتاج، تأكد من:
|
|
|
|
- ربط التكامل تحت **Tools & Integrations** وإكمال خطوات OAuth أو مفتاح API
|
|
- تفعيل تبديل المشغل في عملية النشر التي يجب أن تستجيب للأحداث
|
|
- توفير متغيرات البيئة المطلوبة (رموز API، معرّفات المستأجر، الأسرار المشتركة)
|
|
- إنشاء أو تحديث المهام التي يمكنها تحليل الحمولة الواردة في أول مهمة طاقم أو خطوة تدفق
|
|
- تحديد ما إذا كنت ستمرر سياق المشغل تلقائياً باستخدام `allow_crewai_trigger_context`
|
|
- إعداد المراقبة — سجلات webhook وسجل تنفيذ CrewAI والتنبيهات الخارجية الاختيارية
|
|
|
|
### اختبار المشغلات محلياً باستخدام CLI
|
|
|
|
يوفر CrewAI CLI أوامر قوية لمساعدتك في تطوير واختبار الأتمتات المدفوعة بالمشغلات دون النشر في الإنتاج.
|
|
|
|
#### عرض المشغلات المتاحة
|
|
|
|
اعرض جميع المشغلات المتاحة للتكاملات المتصلة:
|
|
|
|
```bash
|
|
crewai triggers list
|
|
```
|
|
|
|
يعرض هذا الأمر جميع المشغلات المتاحة بناءً على تكاملاتك المتصلة، ويظهر:
|
|
|
|
- اسم التكامل وحالة الاتصال
|
|
- أنواع المشغلات المتاحة
|
|
- أسماء وأوصاف المشغلات
|
|
|
|
#### محاكاة تنفيذ المشغل
|
|
|
|
اختبر طاقمك بحمولات مشغل واقعية قبل النشر:
|
|
|
|
```bash
|
|
crewai triggers run <trigger_name>
|
|
```
|
|
|
|
على سبيل المثال:
|
|
|
|
```bash
|
|
crewai triggers run microsoft_onedrive/file_changed
|
|
```
|
|
|
|
يقوم هذا الأمر بـ:
|
|
|
|
- تنفيذ طاقمك محلياً
|
|
- تمرير حمولة مشغل كاملة وواقعية
|
|
- محاكاة كيفية استدعاء طاقمك في الإنتاج بالضبط
|
|
|
|
<Warning>
|
|
**ملاحظات تطوير مهمة:**
|
|
- استخدم `crewai triggers run <trigger>` لمحاكاة تنفيذ المشغل أثناء التطوير
|
|
- استخدام `crewai run` لن يحاكي استدعاءات المشغل ولن يمرر حمولة المشغل
|
|
- بعد النشر، سيتم تنفيذ طاقمك بحمولة المشغل الفعلية
|
|
- إذا كان طاقمك يتوقع معاملات غير موجودة في حمولة المشغل، فقد يفشل التنفيذ
|
|
</Warning>
|
|
|
|
### المشغلات مع الطاقم
|
|
|
|
تعمل تعريفات طاقمك الحالية بسلاسة مع المشغلات، تحتاج فقط إلى مهمة لتحليل الحمولة المستلمة:
|
|
|
|
```python
|
|
@CrewBase
|
|
class MyAutomatedCrew:
|
|
@agent
|
|
def researcher(self) -> Agent:
|
|
return Agent(
|
|
config=self.agents_config['researcher'],
|
|
)
|
|
|
|
@task
|
|
def parse_trigger_payload(self) -> Task:
|
|
return Task(
|
|
config=self.tasks_config['parse_trigger_payload'],
|
|
agent=self.researcher(),
|
|
)
|
|
|
|
@task
|
|
def analyze_trigger_content(self) -> Task:
|
|
return Task(
|
|
config=self.tasks_config['analyze_trigger_data'],
|
|
agent=self.researcher(),
|
|
)
|
|
```
|
|
|
|
سيتلقى الطاقم تلقائياً حمولة المشغل ويمكنه الوصول إليها عبر آليات سياق CrewAI القياسية.
|
|
|
|
<Note>
|
|
يمكن أن تتضمن مدخلات الطاقم والتدفق `crewai_trigger_payload`. يحقن CrewAI
|
|
هذه الحمولة تلقائياً: - المهام: تُلحق بوصف المهمة الأولى افتراضياً ("Trigger Payload: {crewai_trigger_payload}") - التحكم
|
|
عبر `allow_crewai_trigger_context`: عيّن `True` للحقن دائماً، `False` لعدم
|
|
الحقن أبداً - التدفقات: أي دالة `@start()` تقبل معامل
|
|
`crewai_trigger_payload` ستستلمه
|
|
</Note>
|
|
|
|
### التكامل مع التدفقات
|
|
|
|
للتدفقات، لديك تحكم أكبر في كيفية التعامل مع بيانات المشغل:
|
|
|
|
#### الوصول إلى حمولة المشغل
|
|
|
|
جميع دوال `@start()` في تدفقاتك ستقبل معاملاً إضافياً يسمى `crewai_trigger_payload`:
|
|
|
|
```python
|
|
from crewai.flow import Flow, start, listen
|
|
|
|
class MyAutomatedFlow(Flow):
|
|
@start()
|
|
def handle_trigger(self, crewai_trigger_payload: dict = None):
|
|
"""
|
|
This start method can receive trigger data
|
|
"""
|
|
if crewai_trigger_payload:
|
|
# Process the trigger data
|
|
trigger_id = crewai_trigger_payload.get('id')
|
|
event_data = crewai_trigger_payload.get('payload', {})
|
|
|
|
# Store in flow state for use by other methods
|
|
self.state.trigger_id = trigger_id
|
|
self.state.trigger_type = event_data
|
|
|
|
return event_data
|
|
|
|
# Handle manual execution
|
|
return None
|
|
|
|
@listen(handle_trigger)
|
|
def process_data(self, trigger_data):
|
|
"""
|
|
Process the data from the trigger
|
|
"""
|
|
# ... process the trigger
|
|
```
|
|
|
|
#### تشغيل الطواقم من التدفقات
|
|
|
|
عند تشغيل طاقم داخل تدفق تم تشغيله بمشغل، مرر حمولة المشغل كما هي:
|
|
|
|
```python
|
|
@start()
|
|
def delegate_to_crew(self, crewai_trigger_payload: dict = None):
|
|
"""
|
|
Delegate processing to a specialized crew
|
|
"""
|
|
crew = MySpecializedCrew()
|
|
|
|
# Pass the trigger payload to the crew
|
|
result = crew.crew().kickoff(
|
|
inputs={
|
|
'a_custom_parameter': "custom_value",
|
|
'crewai_trigger_payload': crewai_trigger_payload
|
|
},
|
|
)
|
|
|
|
return result
|
|
```
|
|
|
|
## استكشاف الأخطاء وإصلاحها
|
|
|
|
**المشغل لا يعمل:**
|
|
|
|
- تحقق من أن المشغل مُفعّل في علامة تبويب Triggers الخاصة بعملية النشر
|
|
- تحقق من حالة اتصال التكامل تحت Tools & Integrations
|
|
- تأكد من تهيئة جميع متغيرات البيئة المطلوبة بشكل صحيح
|
|
|
|
**فشل التنفيذ:**
|
|
|
|
- تحقق من سجلات التنفيذ لتفاصيل الأخطاء
|
|
- استخدم `crewai triggers run <trigger_name>` للاختبار محلياً ورؤية هيكل الحمولة بالضبط
|
|
- تحقق من أن طاقمك يمكنه التعامل مع معامل `crewai_trigger_payload`
|
|
- تأكد من أن طاقمك لا يتوقع معاملات غير مضمنة في حمولة المشغل
|
|
|
|
**مشاكل التطوير:**
|
|
|
|
- اختبر دائماً باستخدام `crewai triggers run <trigger>` قبل النشر لرؤية الحمولة الكاملة
|
|
- تذكر أن `crewai run` لا يحاكي استدعاءات المشغل — استخدم `crewai triggers run` بدلاً من ذلك
|
|
- استخدم `crewai triggers list` للتحقق من المشغلات المتاحة لتكاملاتك المتصلة
|
|
- بعد النشر، سيتلقى طاقمك حمولة المشغل الفعلية، لذا اختبر بدقة محلياً أولاً
|
|
|
|
تحوّل مشغلات الأتمتة عمليات نشر CrewAI إلى أنظمة استجابة مدفوعة بالأحداث يمكنها التكامل بسلاسة مع عمليات عملك وأدواتك الحالية.
|