خوب بالاخره اين نسخه هم آماده شد.
اول از همه از دوستان بابت پيشنهاد هايي كه درباره امكانات جا افتاده ي بات دادند ممنونم... از دوستاني كه به پيشرفت بات با توسعه ي اون كمك كردن مثل اضافه كردن /status و منو و ... هم خيلي متشكرم.
و اما امكانات جديد! توي اين نسخه موارد جديد زير اضافه شدند:
- اضافه شدن Webremote: براي دسترسي به اون بعد از اجرا كردن برنامه كافي هست Ctrl+W رو بزنيد و سرويس وب رو فعال كنيد. به صورت پيشفرض مي تونيد از اين آدرس به اين سرويس دسترسي داشته باشيد:
كد:
http://localhost:1367/
http://###.###.###.###:1367
كه به جاي # ها آدرس آيپيتون رو مي تونيد قرار بديد. در صورتي كه آيپيتون وليد باشه از كامپيوتر هاي ديگه هم مي تونيد بهش دسترسي داشته باشيد.
در حال حاضر اين قابليت براي تست هست فقط بنابراين پسوردي براش گذاشته نشده. اگر مشخص بشه Stable هست روش بيشتر كار خواهيم كرد.
- اضافه شدن قابليت جواب تصادفي دادن از سطر هاي يك Table: چند تا از دوستان مي خواستند مثلاً وقتي /joke زدند يك سطر از جدول Jokes رو به عنوان مثال جواب بده. يك سويچ مانند همين درخواست رو با نام /tip در ورژن جديد قرار دادم كه با زند /tip يك عبارت رو از جدول Tips بيرون مي كشه و به كاربر نشون ميده. در ضمن در صورتي كه /tip 2 مثلاً زده بشه دومين عبارت رو از جدول ميكشه بيرون و پاسخ مي ده. با ديدن اين مثال كه در فايل modSwitchTip.bas قرار داره مي تونيد سويچ هاي ديگري شبيه اين مورد رو اضافه كنيد.
- تعويض كلي ساختار پردازش سوال: قبلاً تمام سويج ها در يك فايل تعريف شده بودند و خيلي ساختار جالبي نداشتند. در اين نسخه هر سويچ در فايل مجزايي مثل modSwitchTest.bas قرار داره. اين به دوستان كمك مي كنه تا سويچ هايي كه مي نويسند رو راحت تر بتونن به اشتراك بگذارند و همينطور استفاده از سويچ هاي دوستان رو آسونتر خواهد كرد. هر سويچ مي تونه هر تعدادي ورودي داشته باشه و در نهايت جوابي كه بايد به كاربر داده بشرو به عنوان خروجي بر مي گردونه. در اين نسخه چند سويچ به عنوان مثال موجود هست. در ضمن در متود getPM يك بخش براي افزودن سويچ هاي جديد مشخص شده كه مي تونيد سويچ هاي جديدي كه درست مي كنيد رو در اون بخش به بات متصل كنيد.
- اضافه شدن سويچ /status و /help كه كارايي اونا از اسمشون مشخص هست. (با تشكر از دوستان)
- اضافه شدن قابليت دسترسي به وب: اين يك امكاني هست كه خيلي وقت پي بايد اضافه مي شد اما خوشبختانه توي اين نسخه بالاخره اضافه شد. يك آبجكت با نام Web در اين نسخه داريم كه شما مي تونيد در هر جا از كد از اون استفاده كنيد و اطلاعات يك آدرس اينترنت رو دريافت كنيد و از اون براي جواب بات استفاده كنيد. استفاده از اون هم خيلي ساده است، مثلا دستور زير:
كد:
result = Web.getURL("http://www.Syavash.com")
محتواي سايت سياوش.كام رو داخل متغير result ميريزه و شما مي تونيد مثلا آخرين خبر هاي سايت رو از result استخراج كنيد. يا حتي با اين ابزار مي تونيد RSS Feed ها رو باز كنيد و مطالب رو از اونا استخراج كنيد.
براي اينكه ارزش اين ابزار مشخص بشه يك سويچ با نام /search به عنوان مثال در اين نسخه وجود داره كه سايت گوگل رو به دنبال كلمه اي كه جلوي اين سويچ وجود داره مي گرده و 5 نتيجه ي اول رو به كاربر نشون ميده.
- امكان بعدي كه اضافه شد، ايجاد يك Constant در ابتداي فايل frmMain.frm با نام repeatSafeTerms هست كه مشخص مي كنه كدام عبارات مشكلي ندارند چند بار پشت سر هم تكرار بشن (مثلاً براي /joke ميتونه استفاده بشه). هر عبارت با يك ; جدا ميشه و اول و آخر مقدار اين Constant هم بايد ; داشته باشه.
- چند باگ هم برطرف شدن از جمله حذف نشدن افراد از ليست كاربران فعال بعد از اينكه زمان فعاليتشون صفر مي شد.
- بر طرف كردن مشكل شكلك ها:در حال حاضر يك Tableجديد با نام Exacts به بانك اطلاعاتي اضافه شده كه قبل از هر گونه پردازشي روي سوال سعي ميشه جواب از اين جدول استخراج بشه. مي تونيد شكلك ها رو در اين جدول با جوابشون تعريف كنيد. در ورژن هاي آينده رويكرد ديگري براي شكلك ها و علامت ها معرفي خواهد شد انشاالله.
- آخرين ولي يكي از مهمترين تغييراتي كه در حال حاضر يادم مياد هم اضافه شدن امكان موضوع گيري در بات هست كه در آموزش زير ميگن فايده ي اون چي هست.
فرض كنيد به بات همينطوري بگيد aReh! خوب اين مفهوم خاصي نداره.
حالا فرض كنيد بعد از اينكه بات از من سوال كرد Man ro doost dari? بگم aReh. همونطوري كه ميبينيد اينجا كلمه ي آره مفهوم پيدا مي كنه و به معني من تو را دوست دارم هست.
حالا فرض كنيد در جواب حالت خوب هست بگم آره! در اين صورت معني آره، حالم خوب هست ميشه.
پس يك كلمه ي aReh در جاهاي مختلف با توجه به موضوع بحث معني هاي متفاوتي مي تونه داشته باشه! اينجاست كه مبحث موضوع دادن مطرح ميشه.
اگر به جدول Patterns نگاه كنيد يك تگ جديد معرفي شده با نام <subject>. اين تگ موضوع صحبت رو تغيير مي ده.
براي بهتر فهميدن موضوع يك مثال از حرف زدن من با بات رو ببينيد:
كد:
Siavash: Mano doost dari?
Bot: aReh azizam, to mano doost dari?
Siavash: aReh dooste khoobam
Bot: MerC golam Man bishtar dooset daram.
Siavash: Mano doost dari robot?
Bot: aReh azizam, to mano doost dari?
Siavash: Hava chetore?
Bot: Javabamo bede dige, doosam dari? Areh ya na?
Siavash: Na aslan
Bot: Amma man dooset daram
Siavash: Na aslan
Bot: Motevajeh nashodam!
خوب حالا بيايم بررسي كنيم! اول پرسيدم منو دوست داره و بات به ما جواب داده و از ما پرسيده كه آيا ما هم اونو دوست داريم يا نه. اگر در جدول Patterns نگاه كنيد داخل تگ <subject> مقدار TO MANO DOOST DARI قرار گرفته. اين يعني موضوع بحث دوست داشتن روبات هست (چون روبات سوالي با اين موضوع پرسيده).
حالا اگر ادامه ي جدول رو نگاه كنيد سه سطر با TO MANO DOOST DARI به عنوان Subject وجود داره. يعني اين سه سطر جواب هايي هستند كه فقط وقتي موضوع اين هست بايد چك بشن. اين سه سطر مشخص مي كنند كه اگر در پاسخ are موجود بود و موضوع TO MANO DOOST DARI بود يك جواب بخصوص داده بشده اگر na موجود بود جواب ديگري داده بشه و اگر جواب ديگري بود و بات براي اون جوابي نداشت سوالش رو كه من رو دوست داري هست تكرار كنه. دقت كنيد اگر جواب كاربر آره يا نه باشه از تگ جديدي با نامه <subject /> استفاده شده كه معادل <subject></subject> هست. يعني موضوع تهي بشه. چون وقتي كاربر جواب سوال رو يك بار با بله با نه بگه ديگه موضوع منو دوست داري نيست و بايد موضوع خالي بشه.
اگر در گفتگوي من با بات دقت كنيد اين موارد رو ميبينيد.
در ابتدا جواب آره داده شده به سوال بات و بات هم عكس العمل مناسبي نشون داده.
بعد يك بار ديگه سوال پرسيده شده اما اين بار من جواب بي ربطي دادم و بات به سراغ * با اين موضوع رفته و سوال رو تكرار كرده (موضوع همچنان منو دوست داري هست) بعد كه جواب رو نه گفتم بات مجدداً عكس العمل مناسبي داشته. در نهايت من يك بار ديگه نه اصلاً رو تكرار كردم و بات گفته متوجه نمي شم! كه منطقي هم هست. دليلش اين هست كه با جواب نه كه دفعه ي پيش داده شده موضوع تهي شده با تگ <subject />.
موضوع Subject كمي در ابتدا پيچيده هست. اگر جاييش رو متوجه نشديد بگيد تا بيشتر توضيح بدم.
كم كم مي تونيم يك مسابقه ي واقعي بين بات ها داشته باشيم!
در صورتي كه باگ يا مشكلي ديديد داخل نسخه ي جديد حتماً همينجا اطلاع بديد.