Hallo allerseits! Alle Entwickler haben einmal den Wunsch, etwas für sich selbst zu tun, und selbst der materielle Wert des Produkts wird unwichtig. Hauptsache, es funktioniert von selbst. Buzz.
Deshalb wollte ich allein in den Maiferien Programmierkenntnisse und andere wichtige Informationen in einem Projekt kombinieren. Es stellte sich meiner Meinung nach als interessanter Dienst heraus, dem ich Leben geben und über den ich sprechen möchte.
Ich bin kein Ernährungsberater, kein Profisportler und natürlich tue ich nicht so, als würden sie mir ohne Frage vertrauen. Aber einmal interessierte ich mich sehr für das Thema richtige Ernährung, und ich begann Artikel zu studieren, mit coolen Trainern in den von mir besuchten Hallen zu sprechen und bemerkte so etwas: Die Leute geben ziemlich viel Geld für die Erstellung von Ernährungsplänen aus.
Und ich habe mich entschieden: Aber ich werde ein solches System erstellen, das die Produkte von Personen automatisch in Gramm berechnet, abhängig von ihrem Zweck und ihren Parametern.
Da ich ein Backend-Entwickler bin, stoße ich selten auf die Front. Ich habe darüber nachgedacht und beschlossen, einen Bot zu erstellen. Die Wahl des Messenger wurde von mehreren Faktoren beeinflusst: Nachfrage und Verfügbarkeit von Zahlungssystemen. Das soziale Netzwerk Vkontakte ist entstanden.
Für Berechnungen habe ich die Harris-Benedict-Formel verwendet. Ich habe solche Eingabeparameter berücksichtigt (die der Benutzer des Bots eingibt):
- Gewicht
- Wachstum
- Ziel (abnehmen / zunehmen / aufrechterhalten)
- Körperliche Aktivität (alle Informationen sind verfügbar und Standard für Berechnungen nach der Harris-Benedict-Formel)
- Laktosetoleranz
- Geschlecht
Erstellt eine Produktdatenbank, in der das Produkt Felder enthält: Proteine, Fette, Kohlenhydrate, Kcal, GI (glykämischer Index) sowie Laktosegehalt. Im Allgemeinen möchte ich eine Auflistung und einen Kommentar auf dem Weg geben.
Vkontakte verfügt über eine zugängliche und verständliche
APIVerwendete die PHP-Sprache.
Zunächst identifizierte ich mehrere notwendige Funktionen und Konstanten:
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');
In den Einstellungen des Bots geben Sie einen Link zu Ihrem Skript (Webhook) an. Übrigens können Sie in der VK-API zwei Methoden zum Empfangen von Nachrichten verwenden. Ich habe Webhooks verwendet. Es scheint mir, dass es bequemer und vertrauter ist.
Als nächstes verarbeite ich den resultierenden 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;
Da VK über Zahlungssysteme verfügt, habe ich die Zahlung per VK-Bezahlung (VK-Server senden solche Anfragen an Ihren Webhook, jedoch nur, wenn Ihre Öffentlichkeit als STORE angegeben ist und es ein PRODUKT gibt, das über VK-Bezahlung bezahlt werden kann) sowie eine einfache Barzahlung in Betracht gezogen Eine Übersetzung, die an die Nachricht angehängt werden kann.
Ich speichere jeden Benutzer, der etwas in den Bot schreibt, in die Datenbank, und dann findet die gesamte Kommunikation mit dem Bot abhängig von der Zahlung statt. Wenn es keine Zahlung gab, sagt der Bot, dass Sie zuerst bezahlen müssen. Wenn die Zahlung erfolgt ist, teilt er Ihnen mit, was als nächstes zu tun ist. Zum Testen können Sie eine beliebige Nachricht an den Bot eingeben, um ihn zu planen.
Nach der Zahlung fragt der Bot nach den für die Berechnung erforderlichen Parametern, ich speichere alles in der Datenbank für einen bestimmten Benutzer und nach all den erhaltenen Informationen denke ich nach und gebe eine Antwort. Ich sende eine Nachricht mit der erstellten Funktion und gebe die Benutzer-ID des Benutzers an:
vkApi_messagesSend($user_id, '! ?');
Es wurde auch der Moment berücksichtigt, in dem der Benutzer einige Informationen falsch eingegeben hat: In diesem Fall müssen Sie die Nummer 404 an den Bot senden, und er fragt zuerst und setzt die Daten in der Datenbank zurück.
Bei einigen Nachrichten war es für mich praktisch, Schaltflächen zu erstellen. Als ich darauf klickte, flog mir eine Nachricht mit dem auf der Schaltfläche angegebenen Text im Webhook zu.
$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) ;
Und dann den ganzen Spaß! Nach den gesammelten Daten erfolgt die Berechnung selbst. Ich erfinde selbst nichts, ich erstelle nur die notwendigen Formeln richtig, basierend auf der Harris-Benedict-Formel, sowie Kenntnisse auf dem Gebiet der richtigen Ernährung (die Anzahl der Mahlzeiten, die prozentuale Verteilung von Proteinen / Fetten / Kohlenhydraten für diese Empfänge usw. sind hier wichtig).
Im Allgemeinen sind solche Dinge:
$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;
Dementsprechend wird es für Menschen mit einem sitzenden Lebensstil und Menschen mit Hyperaktivität andere Faktoren geben, ich habe ein kleines Beispiel gegeben.
Nach der Berechnung von BZHU und KKAL sammle ich eine Reihe von Produkten. Übrigens, wenn Sie nach dem erhaltenen Ernährungsplan die Nummer 404 eingeben und erneut beginnen (es ist möglich, Gewicht zu verlieren / zuzunehmen, Änderungen des Lebensstils usw.), ändert sich die Produktmenge nach dem Zufallsprinzip. Und jetzt haben Sie einen anderen Ernährungsplan!
Infolgedessen haben wir hier einen solchen Service erhalten (ich habe ihn offiziell zum Testen veröffentlicht, der Entwickler ist ein Anfänger und ich selbst kann nicht alle meine Fehler abfangen, wenn sie plötzlich existieren):
Von den Fehlern, die ich bemerkt habe (muss verbessert werden):
- Tasten öffnen sich nicht sofort. Sie müssen das Tastatursymbol neben der Schaltfläche "Senden" finden. Dies verwirrt die Leute wirklich und sie schreiben falsch (wenn die Schaltfläche gedrückt wird, verarbeite ich den Text von der Schaltfläche, die Daten, die der Benutzer selbst eingibt, werden ignoriert).
- Keine sehr große Datenbank mit Produkten, angesichts der Tatsache, dass niemand dies essen wird.
Für diejenigen, die den Link zur
Öffentlichkeit testen und sehen möchten.