مرحبا بالجميع! يواجه جميع المطورين الرغبة في القيام بشيء لأنفسهم ، وحتى تصبح القيمة المادية للمنتج غير مهمة ، والشيء الرئيسي هو أنه يعمل من تلقاء نفسه. كايف.
لذا ، كنت وحيدًا في عطلة مايو ، أردت الجمع بين معرفة الترميز وبعضها الآخر الحيوي في مشروع واحد. لقد تحولت ، في رأيي ، إلى خدمة مثيرة للاهتمام أريد أن أعطيها الحياة وأتحدث عنها.
أنا لست أخصائي تغذية ، وليس رياضياً محترفاً ، وأنا بالطبع لا أدعي أنهم سيثقون بي دون سؤال. لكن ، ذات مرة ، كنت مهتمًا جدًا بموضوع التغذية السليمة ، وبدأت في دراسة المقالات والتحدث مع مدربين رائعين في القاعات التي قمت بزيارتها ، ولاحظت شيئًا كهذا: ينفق الناس الكثير من المال على وضع خطط التغذية.
لقد قررت: لكنني سأقوم بإنشاء نظام يقوم بحساب منتجات الأشخاص تلقائيًا بالجرام ، اعتمادًا على الغرض والمعلمات.
نظرًا لأنني مطور خلفية ، نادراً ما واجهت الواجهة ، فكرت في الأمر وقررت إنشاء روبوت. تأثر اختيار messenger بعدة عوامل: الطلب وتوافر أنظمة الدفع. وجاءت الشبكة الاجتماعية فكونتاكتي.
بالنسبة للحسابات ، استخدمت صيغة هاريس بينيديكت. لقد أخذت في الاعتبار معلمات الإدخال هذه (التي يدخلها مستخدم bot):
- الوزن
- نمو
- الهدف (فقدان الوزن / زيادة الوزن / المحافظة)
- النشاط البدني (جميع المعلومات متوفرة ومعيارية لإجراء العمليات الحسابية وفقًا لصيغة هاريس بينيديكت)
- اللاكتوز التسامح
- بول
إنشاء قاعدة بيانات للمنتج تحتوي على مجالات الحقول: البروتينات والدهون والكربوهيدرات و Kcal و GI (فهرس نسبة السكر في الدم) ، وكذلك محتوى اللاكتوز. بشكل عام ، أريد تقديم قائمة والتعليق على طول الطريق.
فكونتاكتي لديه
API الوصول إليها ومفهومة
استخدم لغة PHP.
أولاً ، حددت العديد من الوظائف والثوابت الضرورية:
header('Content-Type: text/html; charset=utf-8'); $request = file_get_contents("php://input"); $input = json_decode($request, true); define('VK_API_VERSION', '5.95');
في إعدادات برنامج الروبوت ، يمكنك تحديد رابط للبرنامج النصي الخاص بك (webhook). بالمناسبة ، في VK API ، يمكنك استخدام طريقتين لتلقي الرسائل. اعتدت webhooks. يبدو لي أنه أكثر ملاءمة وأكثر دراية.
بعد ذلك ، أعالج json الناتجة.
$test_type=$input['type']; $test_group_id=$input['group_id']; $user_id=$input['object']['user_id']; $text=$input['object']['body']; $text_body=explode(" ", $text); $vk_pay=$text_body[0]; $caption=$input['object']['attachments'][0]['link']['caption']; $url=$input['object']['attachments'][0]['link']['url']; $str3=$input['object']['attachments'][0]['link']['title']; $str2 = explode(" ", $str3); $money =(int)$str2[0]; $money=strstr($str3, ' ', true); $money=(int)$money;
نظرًا لأن VK لديها أنظمة دفع ، فقد توقعت الدفع عن طريق VK pay (ترسل خوادم VK مثل هذه الطلبات إلى webhook الخاص بك ، ولكن فقط إذا كان جمهورك مدرجًا على أنه STORE وكان هناك منتج يمكن دفعه من خلال VK pay) ، وكذلك دفع نقدي بسيط ترجمة يمكن إرفاقها بالرسالة.
أقوم بحفظ كل مستخدم يكتب شيئًا ما إلى bot في قاعدة البيانات ، ثم تتم جميع الاتصالات مع bot اعتمادًا على الدفع. إذا لم يكن هناك دفع ، سيقول الروبوت أنك بحاجة إلى الدفع أولاً ، وإذا حدث الدفع ، فسيخبرك بما يجب عليك فعله بعد ذلك. للاختبار ، يمكنك إدخال أي رسالة إلى الروبوت للتخطيط.
بعد الدفع ، سيطلب الروبوت من المعلمات اللازمة للحساب ، وأقوم بحفظه في قاعدة البيانات لمستخدم معين ، وبعد تلقي جميع المعلومات ، أعتقد وأقدم إجابة. أقوم بإرسال رسالة باستخدام الوظيفة التي تم إنشاؤها ، مع الإشارة إلى user_id للمستخدم:
vkApi_messagesSend($user_id, '! ?');
كما تم مراعاة اللحظة التي أدخل فيها المستخدم بعض المعلومات بشكل غير صحيح: في هذه الحالة ، تحتاج إلى إرسال الرقم 404 إلى الروبوت ، وسيبدأ السؤال أولاً ، إعادة تعيين البيانات في قاعدة البيانات.
بالنسبة لبعض الرسائل ، كان من المناسب بالنسبة لي عمل أزرار ، عندما نقرت عليها ، كانت رسالة تحتوي على النص الذي تمت الإشارة إليه على الزر قد طارت لي على webhook.
$buttons='{ "one_time":true, "buttons":[[{ "action":{ "type":"text", "payload":"{\"button\": \"1\"}", "label":" " }, "color":"primary" }, { "action":{ "type":"text", "payload":"{\"button\": \"2\"}", "label":" " }, "color":"primary"}]]}'; vkApi_buttonSend($user_id,' ',$buttons) ;
ثم كل المتعة! بعد البيانات التي تم جمعها ، يحدث الحساب نفسه. أنا لا أخترع أي شيء بنفسي ، بل أرسم الصيغ الضرورية بشكل صحيح ، استنادًا إلى صيغة هاريس - بنديكت ، بالإضافة إلى المعرفة في مجال التغذية السليمة (عدد الوجبات ، والنسبة المئوية لتوزيع البروتينات / الدهون / الكربوهيدرات لهذه الاستقبالات ، وما إلى ذلك مهمة هنا).
بشكل عام ، أشياء مثل هذا:
$BMR=88.363+(13.397*$weight)+(4.799*$height)-(5.677*$age); $BMR_AMR=$BMR*1.2-500; $b_kkal=0.35*$BMR_AMR; $b_gr=$b_kkal/4; $g_kkal=0.3*$BMR_AMR; $g_gr=$g_kkal/9; $u_kkal=0.35*$BMR_AMR; $u_gr=$u_kkal/4; $break_b=0.15*$b_gr; $break_u=0.25*$u_gr; $break_g=0.25*$g_gr; $break_kk=0.25*$BMR_AMR; $snack_b=0.1*$b_gr; $snack_u=0.1*$u_gr; $snack_g=0.15*$g_gr; $snack_kk=1*$BMR_AMR; $snack2_b=0.05*$b_gr; $snack2_u=0.05*$u_gr; $snack2_kk=0.05*$BMR_AMR; $lunch_b=0.45*$b_gr; $lunch_u=0.4*$u_gr; $lunch_g=0.4*$g_gr; $lunch_kk=0.4*$BMR_AMR; $dinner_b=0.25*$b_gr; $dinner_u=0.2*$u_gr; $dinner_g=0.2*$g_gr; $dinner_kk=0.2*$BMR_AMR;
وفقا لذلك ، بالنسبة للأشخاص الذين يعانون من نمط حياة مستقر والأشخاص الذين يعانون من فرط النشاط ، سيكون هناك عوامل أخرى ، أعطيت مثالا صغيرا.
بعد حساب BZHU و KKAL أجمع مجموعة من المنتجات. بالمناسبة ، إذا قمت بعد إدخال خطة التغذية المستلمة بإدخال الرقم 404 والبدء من جديد (من الممكن فقدان الوزن / زيادة الوزن ، تغيير نمط الحياة ، وما إلى ذلك) ، ستتغير مجموعة المنتجات بشكل عشوائي. والآن لديك خطة التغذية المختلفة!
نتيجةً لذلك ، حصلنا على هذه الخدمة هنا (لقد قمت بنشرها رسميًا للاختبار ، المطور هو مبتدئ ، وأنا لا أستطيع التقاط جميع الأخطاء إذا وجدت فجأة):
من الأخطاء التي لاحظتها (يحتاج إلى تحسين):
- أزرار لا تفتح على الفور. تحتاج إلى العثور على رمز لوحة المفاتيح بالقرب من زر "إرسال". هذا يربك الناس حقًا ، ويكتبون بشكل غير صحيح (إذا تم الضغط على الزر ، فعندئذ أعالج النص من الزر ، يتم تجاهل البيانات التي يدخلها المستخدم).
- ليست قاعدة بيانات كبيرة جدا من المنتجات ، تواجه حقيقة أن لا أحد سوف يأكل هذا.
بالنسبة لأولئك الذين يريدون اختبار ورؤية الرابط
للجمهور .