توفر هذه المقالة مثالًا خطوة بخطوة لإنشاء روبوت محادثة بسيط على شبكة التواصل الاجتماعي VK على ASP.NET Core C #.
الفصل 1. التحضير
لنبدأ بإنشاء مجتمع وإنشاءه.


اختر أي نوع من المجتمع

ملء الحقول مع أي بيانات وانت القيام به! المجموعة التي تم إنشاؤها.

لنقم بإعداد API

إنشاء مفتاح API (السماح للكل)

للرد على أي أحداث ، يجب أن يتعلم البرنامج النصي عنها. هناك طريقتان لهذا - Callback API و Long Poll. سوف نطبق Callback API.
قليلا من الناحية النظريةCallback API هي أداة لتتبع نشاط المستخدم في مجتمع VKontakte. باستخدامه يمكنك تنفيذه ، على سبيل المثال:
- روبوت لإرسال ردود فورية على الرسائل الواردة.
- نظام الاعتدال التلقائي للمحتوى.
- خدمة لجمع ومعالجة مؤشرات إشراك الجمهور.
Long Polling هي تقنية تتيح لك تلقي بيانات عن أحداث جديدة باستخدام "استعلامات طويلة". يتلقى الخادم طلبًا ، لكنه لا يرسل استجابة إليه على الفور ، ولكن فقط عند حدوث حدث (على سبيل المثال ، وصول رسالة جديدة) أو انتهاء المهلة المحددة.
باستخدام Callback API ، لا نحتاج إلى تكرار الطلبات بانتظام لتتبع التحديثات - سنستلمها على الفور.
رد الاتصال API الإعداد
اختيار أحدث إصدار من API

حدد نوع الحدث "رسالة واردة".

معلومات مفيدة:
- تقديم VK API
- رد الاتصال API VK
- مخطط جسون
الفصل 2. تطبيق API رد الاتصال
قم بتشغيل IDE المفضل لديك ، وإنشاء تطبيق ويب ASP.NET ASP.NET.
نوع المشروع: Web Api
الإطار: netcoreapp 2.2

لتأكيد عنوان الخادم ، نحتاج إلى إرجاع سلسلة ذات قيمة فريدة.
نحن نأخذها في إعدادات Callback API.

دعونا توسيع تكوين تطبيق ASP.NET Core لدينا .
سنقوم هنا بتخزين جميع المفاتيح التي ستشارك في التطوير.

{ "Config": { "AccessToken": "0bd8573ea40badd694b4da0bbc7d54f52996", "Confirmation" : "b23557a3" }, "Logging": { "LogLevel": { "Default": "Warning" } }, "AllowedHosts": "*" }
عند حدوث حدث في المجتمع ، سترسل فكونتاكتي طلبًا إلى الخادم مع بيانات بتنسيق JSON مع معلومات أساسية حول الكائن الذي تسبب في هذا الحدث.
هيكل JSON واردة. { "type":< >, "object":<, >, "group_id":<ID , > }
على سبيل المثال:
{ "type":"group_join", "object":{ "user_id":1, "join_type":"approved" }, "group_id":1 }
من أجل راحة إلغاء تسلسل JSON الواردة ، سوف نستخدم نموذج كائن نقل البيانات (DTO) .
using System; using Newtonsoft.Json; namespace Cookie.Controllers { [Serializable] public class Updates {
لمعالجة الطلبات الواردة ، قم بإنشاء CallbackController.cs .
using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Configuration; namespace Cookie.Controllers { [Route("api/[controller]")] [ApiController] public class CallbackController : ControllerBase {
يرجى ملاحظة: بعد تلقي الإخطار ، يجب أن يعرض الخادم الخاص بك السلسلة "موافق" وحالة HTTP 200. إذا قام الخادم بإرجاع خطأ عدة مرات متتالية ، فسيتوقف Callback API مؤقتًا عن إرسال الإشعارات
Callback API جاهز!
معلومات مفيدة:
- جيثب سبيل المثال
- تسلسل وإلغاء تسلسل بيانات JSON
- دي IoC
- SDK لـ .NET Core 2.2
الفصل 3. كيه؟
للتفاعل مع VK API في C # ، سوف نستخدم مكتبة VkNET
التثبيت عبر Nuget:
مدير الحزمة:
PM> Install-Package VkNet
.NET CLI:
> dotnet add package VkNet
واجهة المستخدم:

معلومات مفيدة:
- وثائق VkNET
الفصل 4. المزيد من الوظائف!
قبل توسيع منطق الروبوت ، نؤذن للمجموعة في تطبيق الويب الخاص بنا.
للقيام بذلك ، قم بتسجيل IVkApi في حاوية IoC.
فئة Startup.cs طريقة ConfigureServices .
using VkNet; using VkNet.Abstractions; using VkNet.Model; services.AddSingleton<IVkApi>(sp => { var api = new VkApi(); api.Authorize(new ApiAuthParams{ AccessToken = Configuration["Config:AccessToken"] }); return api; });
الآن قم بتوسيع CallbackController.cs عن طريق إضافة معالجة الرسائل الواردة.
ننفذ IVkApi عن طريق القياس مع IConfiguration .
using VkNet.Abstractions; private readonly IConfiguration _configuration; private readonly IVkApi _vkApi; public CallbackController(IVkApi vkApi, IConfiguration configuration){ _vkApi = vkApi; _configuration = configuration; }
والقضية نفسها ، والتي سوف قبض رسائل جديدة. في ذلك نضيف المنطق قليلا.
بعض الوثائقRandomId - معرف فريد (بالنسبة لمعرف API_ID ومعرف المرسل) ، مصمم لمنع إرسال الرسالة نفسها مرة أخرى. يتم حفظه مع الرسالة ومتاح في سجل الرسائل.
يتم استخدام RandomId المحدد للتحقق من التفرد في سجل الرسائل بالكامل ، لذلك استخدم نطاقًا كبيرًا (حتى int32).
PeerId هو معرف الوجهة.
النص - نص الرسالة الشخصية. مطلوب إذا لم يتم تحديد المرفق.
using VkNet.Model; using VkNet.Model.RequestParams; using VkNet.Utils; case "message_new":{
الفصل 5. نشر
الآن نحن بحاجة إلى خادم حيث سيتم توجيه جميع الطلبات. أحد الخيارات المجانية هو Heroku .
بعد التسجيل على الموقع ، سوف نقدم إنشاء تطبيق جديد.

أدخل اسم المشروع.

بعد إنشاء المشروع ، سيتم إعادة التوجيه إلى صفحة النشر

Heroku CLI يتطلب بوابة . إذا لم يكن Git مثبتًا لديك بالفعل ، فقم بتنزيله قبل تثبيت CLI.
للبدء ، قم بتنزيل Heroku CLI .
نحن نعتمد حساب Heroku.
$ heroku login
انتقل إلى دليل المشروع.
$ cd ( )
قم بإنشاء الدليل الحالي بدليل فرعي جديد باسم .git يحتوي على جميع ملفات المستودع الضرورية - أساس مستودع Git.
$ git init
الاتصال بالمستودع عن بعد (مشروعنا)
$ heroku git:remote -a ( )
Buildpacks هي المسؤولة عن تحويل التعليمات البرمجية المنشورة إلى سبيكة ، والتي يمكن تنفيذها بعد ذلك على dyno.
$ heroku buildpacks:set https://github.com/jincod/dotnetcore-buildpack.git -a ( )
من أجل البدء في تتبع (إضافة إلى التحكم في الإصدار) ملفاتنا.
$ git add .
$ git commit -am "cookie"
$ git push heroku master
ودعنا نذهب جعل طيور النورس.
عندما يتم تحميل تطبيقنا إلى Heroku ، يمكننا فتحه على الرابط التالي https: //**PROJECT_NAME**.herokuapp.com/
نعود إلى مجموعتنا ، وفي إعدادات Callback API نحدد الرابط ،
تحول إلى وحدة تحكم رد الاتصال .
https: //----PROJECT_NAME**.herokuapp.com/api/callback

سوف ترسل VK طلب JSON إلى خادمنا لتأكيد العنوان. بعد الاستجابة ، سيتم عرض الإشعار التالي: تم حفظ عنوان الخادم بنجاح
الآن سوف نكتب روبوتنا في رسائل خاصة.

ترميز جيد!