Skip to content
تم إنشاء هذه الصفحة وترجمتها بمساعدة الذكاء الاصطناعي. إذا لاحظت أي أخطاء، لا تتردد في المساهمة في تحسينها. تعديل على GitHub

أنواع الوكلاء

الوكلاء هم وحدات الإرسال الأساسية في OpenPR-Webhook. يعرّف كل وكيل كيفية التعامل مع حدث webhook مطابق. يمكنك إعداد وكلاء متعددين في نشر واحد، وتُوجَّه الأحداث إلى الوكيل المناسب بناءً على bot_context في حمولة webhook.

نظرة عامة

النوعحالة الاستخداميتطلب علامة ميزة
openclawإرسال إشعارات عبر Signal/Telegram باستخدام OpenClaw CLIلا
openprxإرسال رسائل عبر OpenPRX Signal API أو CLIلا
webhookإعادة توجيه الأحداث إلى نقاط نهاية HTTP (Slack، Discord، الخ)لا
customتشغيل أوامر shell اعتباطيةلا
cliتنفيذ وكلاء ترميز الذكاء الاصطناعي (codex، claude-code، opencode)نعم (cli_enabled)

هيكل إعداد الوكيل

كل وكيل لديه هذه الحقول المشتركة:

toml
[[agents]]
id = "unique-id"              # Unique identifier, used for matching
name = "Human-Readable Name"  # Display name, also used for matching
agent_type = "openclaw"       # One of: openclaw, openprx, webhook, custom, cli
message_template = "..."      # Optional: custom message format

ثم، بناءً على agent_type، تقدم كتلة الإعداد الخاصة بالنوع:

  • [agents.openclaw] لوكلاء openclaw
  • [agents.openprx] لوكلاء openprx
  • [agents.webhook] لوكلاء webhook
  • [agents.custom] لوكلاء custom
  • [agents.cli] لوكلاء cli

قوالب الرسائل

حقل message_template يدعم placeholders تُستبدَل بقيم من حمولة webhook:

المُعلّمالمصدرمثال
{event}payload.eventissue.updated
{title}payload.data.issue.titleFix login bug
{key}payload.data.issue.keyPROJ-42
{issue_id}payload.data.issue.id123
{reason}payload.bot_context.trigger_reasonassigned_to_bot
{actor}payload.actor.namealice
{project}payload.project.namebackend
{workspace}payload.workspace.nameIM
{state}payload.data.issue.statein_progress
{priority}payload.data.issue.priorityhigh
{url}مُشتقissue/123

القالب الافتراضي (لـ openclaw وopenprx وwebhook وcustom):

[{project}] {event}: {key} {title}
{actor} | Trigger: {reason}

منطق مطابقة الوكيل

عند وصول حدث webhook مع bot_context.is_bot_task = true:

  1. تستخرج الخدمة bot_context.bot_name وbot_context.bot_agent_type
  2. تبحث في الوكلاء عن وكيل id أو name (بدون حساسية لحالة الأحرف) يطابق bot_name
  3. إذا لم يكن هناك تطابق بالاسم، تعود إلى أول وكيل يكون agent_type يطابق bot_agent_type
  4. إذا لم يتطابق أي وكيل، يُقرّ بالحدث لكن لا يُرسَل

مثال متعدد الوكلاء

toml
# Agent 1: Notification via Telegram
[[agents]]
id = "notify-tg"
name = "Telegram Notifier"
agent_type = "openclaw"
message_template = "[{project}] {event}: {key} {title}"

[agents.openclaw]
command = "/usr/local/bin/openclaw"
channel = "telegram"
target = "@my-channel"

# Agent 2: Forward to Slack
[[agents]]
id = "notify-slack"
name = "Slack Forwarder"
agent_type = "webhook"

[agents.webhook]
url = "https://hooks.slack.com/services/T.../B.../xxx"

# Agent 3: AI coding agent with MCP closed-loop
[[agents]]
id = "coder"
name = "Code Agent"
agent_type = "cli"

[agents.cli]
executor = "claude-code"
workdir = "/opt/projects/backend"
timeout_secs = 600
skip_callback_state = true  # يُدير الذكاء الاصطناعي الحالة مباشرة عبر MCP

[agents.cli.env_vars]
OPENPR_API_URL = "http://localhost:3000"
OPENPR_BOT_TOKEN = "opr_xxx"

في هذا الإعداد، يمكن لـ OpenPR توجيه الأحداث المختلفة إلى وكلاء مختلفين بضبط حقل bot_name في حمولة webhook.

الخطوات التالية

Released under the Apache-2.0 License.