top of page

تحويل رسائل المرافق إلى طلبات خدمة باستخدام Power Automate وموجّه ذكاء اصطناعي (الجزء A)

قبل 3 دقائق
6 دقيقة قراءة

لدى كل فريق لإدارة المرافق صندوق وارد مشترك مثل facilities@ أو service@. يكتب إليه المستأجرون وموظفو المباني بلغة عادية: «الصنبور في الطابق 2 يسرّب من جديد»، «هناك رائحة شيء يحترق قرب رصيف التحميل»، «التكييف معطّل في غرفة الانتظار». ثم يقرأ أحدهم كل رسالة، ويحدد المبنى المقصود، ويقدّر مدى الاستعجال، ويُدخلها يدويًا في أداة متابعة.

خطوة النسخ هذه بطيئة وعرضة للأخطاء، وهي أول ما يتأخر في يوم مزدحم. في هذا الدليل نستبدلها بتدفق Power Automate وموجّه ذكاء اصطناعي واحد يقرأ كل رسالة، ويستخرج الحقول التي تحتاجها، وينشئ تذكرة في قائمة SharePoint، عادةً خلال دقيقة من وصول الرسالة.

هذا هو الجزء A من سلسلة من ثلاثة أجزاء:

  • الجزء A (هذا المقال): Power Automate وموجّه ذكاء اصطناعي يُرجع JSON منظّمًا.

  • الجزء B: المهمة نفسها عبر وكيل مستقل في Copilot Studio يستطيع طلب التفاصيل الناقصة واكتشاف الطلبات المكررة.

  • الجزء C: Microsoft 365 Copilot يجيب عن الأسئلة حول قائمة الطلبات.

هذا ما سنصل إليه: أربع رسائل بأسلوب واقعي تدخل، وأربع تذاكر تخرج، مع الأولوية والفئة والموقع التي يملؤها الذكاء الاصطناعي:

قائمة Service Requests في SharePoint مع أربع تذاكر تعرض الأولوية والفئة والحالة والموقع والمبنى والطابق والمكان التي استخرجها الذكاء الاصطناعي

ما ستحتاج إليه

  • Microsoft 365 مع Exchange Online وSharePoint وPower Automate.

  • صندوق بريد مشترك للطلبات. استخدمنا صندوقًا باسم Facilities Desk.

  • صلاحية الوصول إلى الموجّهات (Power Apps > AI hub > Prompts، أو Copilot Studio). تعمل الموجّهات بأرصدة Copilot Credits، لذا تحتاج بيئتك إلى سعة مدفوعة مسبقًا أو خطة فوترة حسب الاستخدام. المزيد عن التكلفة في النهاية.

  • قائمتا Sites وBuildings من تطبيق فحص المواقع الخاص بنا، أو أي قائمة بعقاراتك.

الخطوة 1: إنشاء صندوق البريد المشترك

في مركز إدارة Microsoft 365، انتقل إلى Teams & groups > Shared mailboxes > Add a shared mailbox. أعطه اسم عرض وعنوانًا، ثم أضف نفسك (وفريق المرافق) كأعضاء. لا تحتاج صناديق البريد المشتركة إلى ترخيص.

الخطوة 2: إنشاء قائمة Service Requests

في SharePoint، أنشئ قائمة باسم Service Requests. أعد تسمية العمود Title إلى Summary وأضف الأعمدة التالية:

  • TicketNo: سطر نصي واحد يملؤه التدفق.

  • SiteID وSiteName وBuilding وFloor وLocation: مكان المشكلة.

  • Category: اختيار من بين Plumbing وHVAC وElectrical وCleaning وSecurity وElevator وDoors & Access وOther (السباكة، التدفئة والتهوية والتكييف، الكهرباء، التنظيف، الأمن، المصاعد، الأبواب والدخول، أخرى).

  • Priority: اختيار من بين Emergency وUrgent وRoutine (طارئ، عاجل، روتيني).

  • PriorityReason: جملة واحدة من الذكاء الاصطناعي تشرح سبب الأولوية.

  • RequesterName وRequesterEmail وReceivedOn: من أرسل الطلب ومتى.

  • Status: اختيار من بين New وNeeds review وAssigned وIn progress وResolved (جديد، يحتاج إلى مراجعة، مُسنَد، قيد التنفيذ، تم الحل).

  • Confidence: رقم من 0 إلى 1.

  • MissingInfo وEmailSubject وEmailBody وMessageId: للمراجعة وإمكانية التتبع.

أضف تنسيقًا بسيطًا لعمودَي Priority وStatus كي تبرز العناصر العاجلة. تكفي شارة ملونة لكل قيمة.

الخطوة 3: كتابة الموجّه

هنا يقوم الذكاء الاصطناعي بالعمل. في Power Apps، افتح AI hub > Prompts > Build your own prompt وسمِّه Extract facility service request.

للموجّه أربعة مدخلات. اكتب / في التعليمات لإضافة كل منها كمدخل من نوع Text:

  • Sender: عنوان المرسل (From) في الرسالة.

  • Subject: موضوع الرسالة.

  • Body: نص الرسالة.

  • Sites: دليل مختصر لمواقعك ومبانيك، يبنيه التدفق من SharePoint.

ثم اكتب القواعد بلغة واضحة. القواعد التي أحدثت الفرق الأكبر في اختباراتنا هي:

  • طابِق الموقع من قائمة معروفة، واستخدم siteId 0 إذا لم تتمكن من تحديده. لا تخمّن أبدًا.

  • وضّح معنى Emergency وUrgent وRoutine، كي تكون الأولوية متسقة.

  • اطلب حقل missingInfo يسرد ما قد يحتاجه الفني بعد.

  • اطلب درجة ثقة، كي تُحال التذاكر منخفضة الثقة إلى شخص لمراجعتها.

  • لا تخترع أبدًا تفاصيل غير موجودة في الرسالة.

اضبط Output على JSON وقدّم مثالًا على البنية التي تريدها. بهذه الطريقة يحصل التدفق على حقول مسمّاة بدلًا من نص حر:

{"summary":"","siteId":0,"siteName":"","building":"","floor":"","location":"","category":"","priority":"","priorityReason":"","requesterName":"","missingInfo":"","confidence":0}

املأ بيانات نموذجية لكل مدخل واختر Test. مع رسالة عن صنبور يسرّب، طابق الموجّه الموقع والمبنى والطابق الصحيحة، واختار Plumbing وUrgent، وشرح السبب:

منشئ الموجّهات مع التعليمات والمدخلات الأربعة واستجابة JSON لرسالة عن صنبور يسرّب

الخطوة 4: إنشاء التدفق

أنشئ تدفقًا سحابيًا تلقائيًا باسم Facilities Inbox to Service Requests مع المشغّل Office 365 Outlook > When a new email arrives in a shared mailbox (V2). حدّد عنوان صندوق البريد ومجلد Inbox.

التدفق بأكمله قصير:

تدفق Facilities Inbox to Service Requests من مشغّل صندوق البريد المشترك حتى التحقق من الحالات الطارئة

الخطوة 5: تزويد الذكاء الاصطناعي بدليل المواقع

لا يستطيع الموجّه مطابقة موقع لا يعرفه. أضف SharePoint > Get items لقائمة Sites (مع عامل التصفية Active eq 1) وإجراءً آخر لقائمة Buildings. ثم أضف إجراءَي Select في وضع النص لتحويل كل صف إلى سطر واحد:

concat(item()?['ID'],' | ',item()?['Title'],' | ',item()?['Address'],', ',item()?['City'])
concat(item()?['SiteID'],' | ',item()?['Title'])

يجمعها إجراء Compose باسم Site directory في كتلة نصية واحدة:

concat(join(body('Site_lines'),decodeUriComponent('%0A')),decodeUriComponent('%0A'),decodeUriComponent('%0A'),'Buildings (site ID | building):',decodeUriComponent('%0A'),join(body('Building_lines'),decodeUriComponent('%0A')))

decodeUriComponent('%0A') هو ببساطة فاصل أسطر. ولأن الدليل يأتي من SharePoint في كل تشغيل، يصبح أي موقع جديد معروفًا بمجرد إضافته إلى القائمة، دون أي تعديل على الموجّه.

الخطوة 6: تشغيل الموجّه

أضف AI Builder > Run a prompt، واختر Extract facility service request واربط المدخلات: From بـ Sender، وSubject بـ Subject، وBody بـ Body، ومخرج Site directory بـ Sites.

إجراء Run a prompt يربط المرسل والموضوع ونص الرسالة ودليل المواقع بمدخلات الموجّه

يعود JSON ضمن structuredOutput، فيصبح كل حقل متاحًا باسمه. على سبيل المثال، الأولوية هي:

body('Extract_request_details')?['responsev2']?['predictionOutput']?['structuredOutput']?['priority']

الخطوة 7: تسجيل التذكرة

أضف SharePoint > Create item على قائمة Service Requests واربط كل حقل من structuredOutput. لمستان صغيرتان تجعلان القائمة أكثر فائدة بكثير. (في التعبيرات أدناه، structuredOutput اختصار للمسار الكامل الموضح في الخطوة 6.)

أولًا، اضبط Status على Needs review عندما لا يكون الذكاء الاصطناعي متأكدًا، أو عندما لا يجد الموقع، أو عندما تكون هناك تفاصيل ناقصة:

if(or(less(float(structuredOutput?['confidence']),0.7),equals(int(structuredOutput?['siteId']),0),not(empty(structuredOutput?['missingInfo']))),'Needs review','New')

ثانيًا، أضف SharePoint > Update item مباشرة بعده لإعطاء الطلب رقم تذكرة سهل القراءة مبنيًا على معرّفه (ID):

concat('FR-',string(add(1000,outputs('Log_service_request')?['body/ID'])))

الخطوة 8: الرد على مقدّم الطلب

أضف Office 365 Outlook > Send an email from a shared mailbox (V2) كي يأتي الرد من عنوان المرافق لا من شخص بعينه. ضع رقم التذكرة في الموضوع ولخّص ما تم تسجيله. وإذا لم يكن missingInfo فارغًا، فأضف سطرًا مميزًا يطلب تلك التفاصيل:

if(empty(structuredOutput?['missingInfo']),'',concat('<p>To send the right technician, please reply with the missing details: <b>',structuredOutput?['missingInfo'],'</b>.</p>'))

يحصل مقدّم الطلب على رقم تذكرة خلال ثوانٍ، ويحصل فريق المرافق على التفاصيل التي يحتاجها دون مراسلات متكررة:

رسالة إقرار من Facilities Desk مع التذكرة FR-1004 تطلب من مقدّم الطلب الموقع والمبنى والطابق الناقصة

الخطوة 9: تصعيد الحالات الطارئة

اختم بإجراء Condition يتحقق مما إذا كانت الأولوية تساوي Emergency. في الفرع True، أرسل رسالة بريد إلكتروني عالية الأهمية (أو رسالة Teams) إلى مدير المرافق تتضمن الملخص والموقع وسبب الذكاء الاصطناعي.

الخطوة 10: الاختبار

أرسلنا أربع رسائل إلى صندوق البريد المشترك، مكتوبة بالطريقة التي يكتب بها الناس فعلًا:

  • «الصنبور في دورة مياه الرجال في الطابق 2 من Tower A في Harbourfront يجري بلا توقف...» أصبحت FR-1001: Plumbing، Urgent، Harbourfront Office Tower، Tower A، الطابق 2.

  • «هناك رائحة احتراق قوية تخرج من غرفة الكهرباء بجوار رصيف التحميل في مستودع Northgate...» أصبحت FR-1002: Electrical، Emergency، مع وضع علامة للمراجعة لعدم ذكر الطابق، وتصعيدها إلى المدير.

  • «أوقع أحدهم وعاء القهوة في المطبخ الصغير بالطابق 2 في Tower A...» أصبحت FR-1003: Cleaning، Routine.

  • «التكييف في غرفة الانتظار لا يعمل، والحرارة نحو 28 درجة...» أصبحت FR-1004: HVAC، Routine، Needs review. لم تذكر الرسالة اسم الموقع، فترك الذكاء الاصطناعي الحقل فارغًا بدلًا من التخمين، وطلب الرد ذكر الموقع والمبنى والطابق.

هذه الحالة الأخيرة هي السلوك المطلوب تمامًا. فالذكاء الاصطناعي الذي يعترف بأنه لا يعرف أكثر فائدة بكثير من آخر يسجّل التذكرة بثقة تحت المبنى الخطأ.

صندوق الوارد قبل وبعد

قبل: يفتح أحدهم رسالة بعنوان «التكييف لا يعمل»، يقرؤها مرتين، يتصفح قائمة المواقع، يخمّن أنها على الأرجح Lakeview، يُدخلها في جدول بيانات، ينسى الرد، ثم تصله بعد ساعة رسالة متابعة تسأل إن كان أحد قد رآها.

بعد: تكون التذكرة قد أُنشئت قبل أن ينهي ذلك الشخص قهوته، ويعرف مقدّم الطلب رقم تذكرته مسبقًا، ولا تحتاج إلى تدخل بشري سوى الرسائل الموسومة Needs review.

كم يكلّف ذلك

تشغّل كل رسالة الموجّه مرة واحدة. في اختباراتنا كان ذلك نحو 0.3 من أرصدة Copilot Credits لكل رسالة، ويظهر ذلك مباشرة في منشئ الموجّهات بعد كل اختبار. إذا لم يكن لدى المستأجر (tenant) أرصدة Copilot Credits مدفوعة مسبقًا، فأعدّ خطة فوترة حسب الاستخدام في مركز إدارة Power Platform (Licensing > Billing plans)، واربطها باشتراك Azure، وقيّدها بعدّاد Copilot Studio وبالبيئة الوحيدة التي تحتاجها. وأضف تنبيه ميزانية في Azure Cost Management لتجنّب المفاجآت.

أفكار للتوسع

  • قراءة المرفقات: مرّر صور المشكلة إلى مدخل Image or document، كي يصف الذكاء الاصطناعي ما يراه.

  • تنظيف نص الرسالة أولًا: مرّر نص HTML عبر Html to text قبل الموجّه لتوفير الرموز (tokens) في سلاسل الرسائل الطويلة.

  • التوجيه حسب الفئة: ابحث عن الفني أو المورّد المناسب لكل فئة وموقع، وأسند التذكرة تلقائيًا.

  • معالجة الردود: عندما يجيب مقدّم الطلب عن سؤال التفاصيل الناقصة، طابِق رقم التذكرة في الموضوع وحدّث التذكرة الحالية بدلًا من إنشاء تذكرة جديدة. وهذا بالضبط ما سنسنده إلى وكيل Copilot Studio في الجزء B.

  • الربط بعمليات الفحص: اعرض طلبات الخدمة المفتوحة بجانب عمليات الفحص لكل موقع في تطبيق فحص المواقع.

لماذا يهم ذلك

تصل طلبات المرافق ومعها كل ما تحتاجه، لكنه مدفون داخل الجمل. والموجّه الذي يحوّل تلك الجمل إلى حقول هو أبسط طريقة وأكثرها عملية لتشغيل الذكاء الاصطناعي: اجمع البيانات من صندوق الوارد وقوائم عقاراتك في مكان واحد، وضع الذكاء الاصطناعي في الواجهة، ودع فريقك يقضي وقته في إصلاح الأعطال بدلًا من إعادة كتابتها.

هل تحتاج إلى مساعدة؟

تبني Smart Solutions حلول Power Automate وPower Apps وCopilot لفرق إدارة العقارات والمرافق في كندا، من أتمتة صناديق البريد المشتركة مثل هذه إلى مكاتب خدمة متكاملة. تواصل معنا للحديث عمّا تودّ أتمتته. في الجزء B القادم: سير العمل نفسه كوكيل في Copilot Studio.


تعليقات


bottom of page