Microsoft Teams (plugin)
"Abandon all hope, ye who enter here."
الحالة الحالية
- ✅ النصوص + مرفقات DM مدعومة
- ⚠️ إرسال الملفات في القنوات يتطلب
sharePointSiteId+ أذونات Graph - ✅ الاستطلاعات تُرسل عبر Adaptive Cards
Plugin مطلوب
تغيير مهم (2026.1.15)
MS Teams انتقل خارج النواة. إذا كنت تستخدمه، يجب تثبيت plugin.
openclaw plugins install @openclaw/msteams
الإعداد السريع
- قم بتثبيت plugin Microsoft Teams
- أنشئ Azure Bot (App ID + client secret + tenant ID)
- قم بتكوين OpenClaw بهذه البيانات
- اكشف
/api/messages(المنفذ 3978 افتراضيًا) عبر URL عام أو tunnel
التكوين الأدنى
{
channels: {
msteams: {
enabled: true,
appId: "<APP_ID>",
appPassword: "<APP_PASSWORD>",
tenantId: "<TENANT_ID>",
webhook: {
port: 3978,
path: "/api/messages"
},
},
},
}إعداد Azure Bot
الخطوة 1: إنشاء Azure Bot
- انتقل إلى Create Azure Bot
- املأ علامة التبويب Basics:
- Bot handle: اسم البوت (يجب أن يكون فريدًا)
- Type of App: Single Tenant (موصى به)
- اضغط على Review + create → Create
الخطوة 2: الحصول على البيانات
- انتقل إلى Azure Bot resource → Configuration
- انسخ Microsoft App ID → هذا هو
appId - اضغط على Manage Password → انتقل إلى App Registration
- تحت Certificates & secrets → New client secret
- انسخ Value → هذا هو
appPassword - من Overview، انسخ Directory (tenant) ID
الخطوة 3: تكوين Messaging Endpoint
في Azure Bot → Configuration، اضبط Messaging endpoint:
- الإنتاج:
https://your-domain.com/api/messages - التطوير المحلي: استخدم tunnel (ngrok)
الخطوة 4: تفعيل Teams Channel
- في Azure Bot → Channels
- اضغط على Microsoft Teams → Configure → Save
- اقبل شروط الخدمة
التطوير المحلي (Tunneling)
Teams لا يمكنه الوصول إلى localhost. استخدم tunnel للتطوير المحلي:
الخيار A: ngrok
ngrok http 3978 # انسخ https URL، مثل https://abc123.ngrok.io # اضبط messaging endpoint على: https://abc123.ngrok.io/api/messages
التحكم في الوصول
الرسائل المباشرة
- الافتراضي:
dmPolicy = "pairing" allowFromيقبل AAD object IDs أو UPNs أو أسماء العرض
المجموعات
يتطلب الإشارات (@mentions) افتراضيًا للأمان.
إرسال الملفات في المجموعات
متطلبات إرسال الملفات
- الرسائل المباشرة: تعمل خارج الصندوق
- القنوات/المجموعات: تتطلب
sharePointSiteId+ أذونات Graph
أذونات Graph المطلوبة:
Sites.ReadWrite.All- رفع الملفات إلى SharePointChat.Read.All(اختياري) - روابط مشاركة لكل مستخدم
Teams Manifest
مثال أساسي (استبدل IDs و URLs):
{
"$schema": "https://developer.microsoft.com/json-schemas/teams/v1.23/...",
"manifestVersion": "1.23",
"version": "1.0.0",
"id": "YOUR-AZURE-BOT-APP-ID",
"name": { "short": "OpenClaw Bot" },
"bots": [{
"botId": "YOUR-AZURE-BOT-APP-ID",
"scopes": ["personal", "team", "groupchat"],
"supportsFiles": true
}],
"authorization": {
"permissions": {
"resourceSpecific": [
{ "type": "Application", "name": "ChannelMessage.Read.Group" },
{ "type": "Application", "name": "ChannelMessage.Send.Group" }
]
}
}
}القيود المعروفة
- مهلات Webhook: Teams يتوقع ردودًا سريعة؛ الردود البطيئة جدًا قد تسبب مشاكل
- التنسيق: Teams markdown محدود أكثر من Slack أو Discord
- القنوات الخاصة: دعم محدود للبوتات
استكشاف الأخطاء
- الصور لا تظهر في القنوات: أذونات Graph أو موافقة المسؤول مفقودة
- لا ردود في القناة: الإشارات مطلوبة افتراضيًا
- أخطاء رفع Manifest: تحقق من أن ملفات الأيقونات ليست فارغة وأن IDs تطابق
تحذير: معقد
تكامل Microsoft Teams هو الأكثر تعقيدًا بين جميع القنوات. يتطلب Azure Bot، Teams app manifest، وأذونات متعددة. للحصول على دليل كامل، راجع الوثائق الإنجليزية الكاملة.