الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

برمجة Microsoft Agent

بدأه wazzz في 16 سبتمبر 2010 · 4 رد · 1,920 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

مقدمة :

لقد تطورت منصات العمل والمكاتب البرمجية بشكل كبير بحيث باتت تلبي معظم الاحتياجات .فامست المشاكل التي يتعرض لها المطور developer تتطلب نمطين من الحلول .

النمط الاول : هو ان يكون لدى المشكلة حل وبنى معطيات data structure اساسية متوفرة في تلك المكتبات كمثال على ذلك بنى مشكلة معينة تعتمد في حلها على بنية معطيات stack,hash, Queue

والنمط الثاني : هو ان يكون لدى متطلبات حل المشكلة بنى معطيات غير ذلك وبالتالي نحن امام إيجاد بنية معطيات جديدة لتناسب الحل .

كمثال على ذلك بنية المعطيات في منطق لغة برمجة prolog التي تعتمد على مبدأ المحاكمات والمنطق . والتي وفقاً لذلك تم تطوير بنية معطيات خاصة لتلبية متطلبات المحاكمات المنطقية والعقلية .

بناء على الكلام السابق فإنه يمكن ان نقسم المبرمجين Developers الى نمطين

1- الزبون client

مهمة المبرمج الزبون هي التعرف على الخدمات المقدمة من قبل منصات عمل ومكاتب برمجية عديدة كمنصة dot net frame work وكيفية الاستخدام الامثل لتلك الخدمات المقدمة لحل القضايا .

الصلاحيات المتاحة : هي استعمال الصفوف classes والتوابع methods ذات الخاصية public

2- المبرمج implementers

مهمة المبرمج هو القيام بإنشاء بنى معطيات وصفوف classes من الصفر . وهي المهمة الاصعب ولكنها تتيح لك كامل صلاحيات التحكم .

الصلاحيات المتاحة : له كامل الصلاحيات كونه منشأ المكتبة .

ويجب التنويه الى انه يجب الاهتمام بالجانبين كونه لا يجب اعادة اختراع العجلة من البداية في معظم الاحيان ولا يمكن ان يكون المطور عبارة عن فهرس للمكتبات البرمجية فحسب .

يهدف هذا الدرس بالتحديد الى التعريف ببعض تقنيات مكتبة dot net frame work الاصدار 3 من وجهة نظر client programmer

متطلبات النظام :

• دعم مكونات عميل مايكروسوفت Microsoft Agent core components

نظام تشغيل Windows يدعم بشكل افتراضي Microsoft Agent core components بجميع النسخ ,

ولكن في النسخة Windows 7 لا توفر حالياً دعم لتلك المكونات مع وعد مايكروسوفت بتوفيرها بالتحديثات اللاحقة . للتحقق من دعم نظام تشغيل ويندوز 7 لتلك المكونات :

اذهب الى قرص النظام (بشكل افتراضي C) ثم المجلد windows

اذا وجدت مجلد باسم MSAGENT فاعلم ان الميزة مدعومة .

في حال عدم توفر ذلك المجلد في مجلد النظام قم بداية بتحميل المكونات الاساسية

الكلمات المفتاحية : hot fix for Microsoft agent +windows 7

في حال لم تكن تملك المكونات السابقة قم بالبحث عن Microsoft Agent 2.0 SDK

• نماذج وموديلات Models من لاحقة acs :

يمكنك تحميل شخصيات بشكل مجاني من الانترنت من لاحقة asc كما يوفر الرابط التالي بعض النماذج الجاهزة. http://www.cantoche....ery/msagent.htm

في حال اردت تصميم شخصيتك الخاصة قم بتحميل برنامج Microsoft Agent Character Editor المجاني

• محرك تعرف على الصوت speech recognition (اختياري لتفعيل بعض الميزات )

• محرك Text to speech لتمكين العميل من الكلام .

• المحركين السابقين متوفرين بشكل افتراضي ضمن بيئة تشغيل ويندوز فيستا ومايليها من اصدارات .

ما هو عميل مايكروسوفت Microsoft Agent ؟

2108article9-7.gif

هو تقنية جديدة طبقت من قبل شركة مايكروسوفت لتنمذج شخصيات كرتونية متحركة تفاعلية تعتمد محرك Text To Speech والتعرف على الصوت speech recognition بهدف تحسين عملية التفاعل مع المستخدمين .

يتم تعريف عميل مايكروسوفت بانه عنصر activeX وبالتالي يمكنه العمل على صفحات الويب بشكل مباشر بدون اي برامج اضافية .

الاساس النظري وراء تقنية عميل مايكروسوفت تأتي من دراسة ومعالجة اللغات الطبيعية .

أول ظهور لعميل مايكروسوفت كان في حزمة برامج Microsoft office 97

كيفية إضافة عميل مايكروسوفت ؟

طبعا العمل وفق برنامج visual studio

المرحلة الاولى : إنشاء برنامج application windows form

1- قم بفتح برنامج visual studio واختر جديد new project

2- قم باختيار WindowsFormsApplication C#

المرحلة الثانية : قم بإضافة Agent control الى مشروعك

1- من نافذة الادوات toolbar قم بالضغط على زر الفأرة الايمن ثم اختيار choose items ثم قم بإضافة Microsoft Agent Control 2.0 ستجدها ضمن COM Components tab .

components.jpg

في هذه المرحلة سيقوم visual studio بالبحث عن جميع المكتبات ضمن مجلد النظام system ومسار النظام المحدد ضمن خيارات الكمبيوتر variables path .

2-عند الإضافة ستظهر لك هذه الايقونة في شريط الادوات . قم بعمل drag and drop لهذه الوحدة التحكمية في مشروعك على الواجهة form كما تقوم بإضافة اي زر او اي اداة اخرى وقم بتسمية الغرض الناشىء ب MainAgent حالياً بعد تحديده وعمل الخطوة السابقة ضمن مربع properties .

.تهانينا لقد اصبح لديك عميل مايكروسوفت ضمن تطبيقك ولكن ليس هو الرئيسي .

form1.gif

-قم بتعريف متحول ضمن الصف class 1form.

public AgentObjects.IAgentCtlCharacter speaker ;

سيكون هذا المتحول speaker هو المتحول الذي سنتعامل معه من الآن فصاعداً

4-قم بعمل تهيئة للمتحول speaker قم بإنشاء تابع وليكن Load_MS_Agents() وقم باستدعاءه في باني constructer صف form class .

private void Load_MS_Agents()
        {
            try
            {
                MainAgent.Characters.Load("Check ", @"C:\Agents\ Check.acs");                
                *speaker = MainAgent.Characters["Check"];
                speaker.Show(0);
            }
            catch (FileNotFoundException)
            {
                MessageBox.Show("No such character ");
            }
        }

التعليمة MainAgent.Characters.Load

تاخذ محددين المحدد الاول يكون اسم الشخصيةID لكي نتعامل معها والمتحول الثاني هو المكان الذي يوجد فيه الموديل او النموذج الكرتوني .

نقوم بعد ذلك باسناد الشخصية الكرتونية الى الغرض speaker وفق التعليمة *

ثم نقوم بعرضه عن طريق التابع method show(0)

وفي حال لم نجد الملف سيظهر رسالة خطأ لنا .

المرحلة الثالثة : برمجة العميل :

خصائص العميل :

1- تحميل الشخصية وعرضها

:


MainAgent.Characters.Load("CharacterID", path);
Speaker = MainAgent.Characters("CharacterID");
public  AgentObjects.IAgentCtlCharacter speaker ;

يتم تعريف MainAgent عن طريق عملية drop item التي قمنا بها قبل قليل .

بينما يتم تعريف Speaker كغرض instance من نمط .IAgentCtlCharacter

بعد ذلك يتم تحميل الشخصية الناطقة من قبل MainAgent بحيث يمكن تصور كلا من الغرضين بكرة مرسومة في عالم ثلاثي البعد بحيث نخزن المواصفات الرياضية للكرة بصف و نخزن مواصفات الكرة الرسومية في صف آخر .

تعيين اللغة الافتراضية الى اللغة الإنجليزية :

Speaker.LanguageID = &H409;

لإظهار العميل :

Speaker.Show();

لإخفاء العميل :

Speaker.Hide();

لإلغاء تحميل شخصية :

MainAgent.Characters.Unload("CharacterID")

form2.jpg

2- الحصول على معلومات العميل :

من الهام جداً الحصول على معلومات العميل كي نستطيع تحديد الحركات التي يمكن ان يقوم بها على سبيل المثال لا الحصر ومعلومات اخرى :



sName = Speaker.Name //Character's Name property
sDescription = Speaker.Description // Character's Description
sExtraData = Speaker.ExtraData // Character's ExtraData
String sName , sDescription , sExtraData;

الحصول على اسماء الحركات التي يمكن للعميل ان يقوم بها :

سنقوم بوضع جميع اسماء الحركات ضمن ComboBox بغرض instance يدعى cboCombo

string animationName ;
cboCombo.Items.Clear() ; // Clear the ComboBox
For Each (animationName In Character.AnimationNames)
	cboCombo.Items.Add(animationName)

سنرى اهمية هذه الخطوة بعد قليل .

الجدول التالي يوضح قائمة بحركات الشخصية peedy

Animation Return Animation Supports Speaking Description

------------ ---------------------------------------------------------------------------------

Announce exit branches yes Paper airplane flies in and unfolds

Congratulate exit branches yes Displays blue ribbons

DoMagic1 none yes Raises magic wand

GetAttention GetAttentionReturn yes Jumps up with wings outstretched

Greet exit branches yes Bows

Pleased exit branches yes Smiles

Process none no Uses calculator

Read ReadReturn yes Opens magazine, reads, and looks up

RestPose none yes Neutral position

Search none no Rotates with telescope

Suggest exit branches yes Displays light bulb

Think exit branches yes Looks up with wing on face

Wave exit branches yes Waves

Write WriteReturn yes Takes out pencil and pad, writes, and looks up

- إضفاء الحركة والكلام للعميل :

جعل العميل يتكلم :

تحتاج الى محرك text to speech (موجودة افتراضياً ضمن ويندوز فيستا ومابعد)

Speaker.Speak("Hello");

form3.jpg

تحريك العميل في المكان animation:

لتحريك العميل لابد من معرفة اسم الحركة التي سيقوم بالعمل وفقها ومن هنا يتبين اهمية خطوة تحصيل معلومات العميل .

لنفترض العميل merlin الذي يملك الحركة ذات الاسم Sad لذا يمكنني ان اقوم بالتالي :

Speaker.Play("Sad");

من المهم وضع معالجة للاخطاء هنا ففي حال كانت الشخصية لا تملك هذه الحركة سيعطي خطأ اثناء التنفيذ .

4- نقل العميل وفق محاور احداثيات والإيماءات :

تحريك العميل في الشاشة transformation:

لنقل العميل الى الاحداثيات X coordinate 20, Y coordinate 45

Speaker.MoveTo(20, 45);

form4.jpg

إيماء العميل في الشاشة gesture :

الإيماء يقصد به تحريك العميل بسرعة الضوء والفرق بينه وبين الخطوة السابقة هي امكانية ظهور الحركة من النقطة ا الى النقطة ب في الحالة الاولى وعدمها في الحالة الثانية

Speaker.GestureAt(20, 45);

diagram.jpg

5- التعرف على الصوت Speech recognition:

إضافة تعليمات الى العميل :

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

Speaker.Commands.Add("LetsGoForLunch.", , _"Lets go for lunch.", True, False)

تقوم الجملة السابقة بإضافة التعليمة "LetsGoForLunch" الى العميل كي يفهمها لاحقاً .

ويجب التفريق بين اول LetsGoForLunch مكتوبة بالتعليمة وبين الثانية بحيث ان الاولى تدل على اسم التعليمة والثانية هي الاسم المفترض ان يتم سماعه من قبل المستخدم .

فيمكن ان يوجد لدينا تعليمة مسماة A1 وعند سماع الجملة التالية Come on سيقوم البرنامج عند سماعه come on بالبحث عن تابع ليقوم بمعالجة التعليمة المدعوة A1 .

سنتخصص في هذا الموضوع بشكل تفصيلي اكثر في دروس اخرى

ارجو ان ينال الدرس اعجابكم

إعداد : م.وسيم أبوزينة

الصور من موقع

تم تعديل هذه المشاركة بواسطة GamingMasteR في 6 أكتوبر 2010 في 12:30 — السبب: وضع الكود داخل الاوسمة المناسبة

1

There's no place like 127.0.0.1

#2

ارجو ان ينال موضوعي اعجابكم (:

There's no place like 127.0.0.1

#3

طبعا نال الموضوع اعجابي وسأقرأه بتمعن في وقت اخر ان شاء الله

اللهم صلّ على سيدنا محمد وعلى آله وصحبه وسلّم


موقعي الرياضي

#4

ماشاء الله موضوع جداً جداً مميز

جزاك الله ألف خير يا أخي

#5
/index.php?showtopic=201798

مواضيع مشابهة