Guten Tag.
Es gibt viele Artikel zum Thema Telegramm-Bots, aber nur wenige schreiben über Fähigkeiten für Alice, und ich habe keine Informationen darüber gefunden, wie man einen einzelnen Bot erstellt. Deshalb habe ich beschlossen, meine Erfahrungen darüber zu teilen, wie man einen einfachen Telegramm-Bot und Yandex.Alice-Fähigkeiten für die Site erstellt mit einer einzigen Funktion.
Ich werde Ihnen also nicht sagen, wie Sie einen Webserver einrichten und ein SSL-Zertifikat erhalten können. Es wurde genug darüber geschrieben.
Erstellen eines Telegramm-Bots
Erstellen Sie zunächst einen Telegramm-Bot. Gehen Sie dazu zu Telegramm und suchen Sie dort den BotFather-Bot.


Wähle / newbot

Wir geben den Namen des Bots ein, unter dem er antworten wird, und geben dann den Namen des Bots ein. Als Antwort erhalten wir ein Token zur Steuerung des Bots. Wir schreiben diesen Schlüssel. Er wird uns in Zukunft nützlich sein.

Der nächste Schritt besteht darin, den Telegrammservern mitzuteilen, an welchen Server Daten vom Bot gesendet werden sollen. Erstellen Sie dazu einen Link zum Formular:
https: //api.telegram.org/bot______/setWebhook?url=https://_________
___ TOKEN ___ durch unser zuvor erhaltenes Bot-Token ersetzen
____ PATH_DO_SCRIPT ___ wird durch die Adresse des Skripts auf unserem Server ersetzt, auf dem die Daten verarbeitet werden (z. B.
www.my_server.ru/webhook_telegram.php ).
Es gibt ein Problem, der api.telegram.org-Server ist gesperrt, aber Sie können dies tun: Mieten Sie den billigsten Server, auf dem es keine Einschränkungen gibt, und geben Sie den Befehl von der Konsole dieses Servers aus
wget _______
Das war's, der Telegramm-Bot wird erstellt und mit Ihrem Server verbunden.
Eine Fertigkeit für Yandex.Alice erstellen
Fahren wir mit der Erstellung der Fertigkeit für Yandex.Alice fort.
Um eine Fertigkeit zu erstellen, müssen Sie zur Entwicklerseite von Yandex.Dialogs und zur Entwicklerseite von Yandex.Dialogs gehen, auf "Dialog erstellen" klicken und "Fertigkeit in Alice" auswählen.

Das Dialogfeld für die Skill-Einstellungen wird geöffnet.

Wir beginnen mit der Eingabe der Skill-Einstellungen.
Geben Sie den Namen Ihrer Fertigkeit ein.

Der Aktivierungsname sollte sehr sorgfältig ausgewählt werden, damit Alice ihn anhand der Nuancen richtig versteht - eine mobile Anwendung mit Alice und Spalten wie Yandex.Station oder Irbis A kann Wörter auf unterschiedliche Weise wahrnehmen.
Wir geben den Pfad zum Skript auf unserem Server auf die gleiche Weise wie für Telegramm ein, aber es wird ein Skript speziell für Alice sein, zum Beispiel
www.my_server.ru/webhook_alice.php .

Wir wählen die Stimme, die die Fähigkeit sprechen wird, ich bevorzuge die Stimme von Alice.

Wenn Sie nur auf Mobilgeräten oder in einem Browser arbeiten möchten, wählen Sie "Benötigen Sie ein Gerät mit einem Bildschirm".
Geben Sie als Nächstes die Einstellungen für den Alice-Skills-Katalog ein. Wenn Sie das Wort Marke zur Aktivierung verwenden möchten, müssen Sie die Überprüfung der Markenwebsite im Dienst webmaster.yandex.ru durchführen.

Gehen Sie mit den Einstellungen zu den Skripten.
Telegramm-Bot-Skript
Beginnen wir mit dem Skript für Telegramm.
Wir verbinden die Bibliothek, in der Nachrichten vom Bot und Alice verarbeitet werden:
include_once 'webhook_parse.php';
Wir setzen das Zeichen unseres Bots:
$tg_bot_token = "_____YOUR_BOT_TOKEN_____";
Wir bekommen die Daten:
$request = file_get_contents('php://input'); $request = json_decode($request, TRUE);
Wir analysieren die Daten in Variablen:
if (!$request) { die();
Jetzt können Sie mit Variablen arbeiten:
$ tokens - jetzt alle Wörter, die der Benutzer hier eingegeben hat
$ user_id - hier ist die Benutzer-ID
$ msg_chat_id - Chat, in dem der Bot einen Befehl erhalten hat
$ msg_user_name - Benutzername
Als nächstes rufen wir die Parse_Tokens-Funktion zur Verarbeitung auf:
$Out_Str = Parse_Tokens($tokens);
Und wir senden die Antwort:
Send_Out($user_id, $Out_Str);
Die Send_Out-Funktion ist einfach und sieht folgendermaßen aus:
function Send_Out($user_id, $text, $is_end = true) { global $tg_bot_token; if (strlen($user_id) < 1 || strlen($text) < 1) {return;} $json = file_get_contents('https://api.telegram.org/bot' . $tg_bot_token . '/sendMessage?chat_id=' . $user_id . '&text=' . $text); }
Fähigkeitsskript für Yandex.Alice
Fahren wir nun mit dem Skript für Alice fort, es ist fast dasselbe wie für Telegramm.
Wir verbinden auch die Bibliothek, in der Nachrichten vom Bot und Alice verarbeitet werden, sowie eine Bibliothek mit Klassen für Alice:
include_once 'classes_alice.php'; include_once 'webhook_parse.php';
Wir bekommen die Daten:
$data = json_decode(trim(file_get_contents('php://input')), true);
Wir analysieren die Daten in Variablen:
if (isset($data['request'])) {
Hier sind die notwendigen Variablen etwas geringer:
$ tokens - jetzt alle Wörter, die der Benutzer hier eingegeben hat
$ user_id - hier ist die Benutzer-ID
Yandex pingt ständig veröffentlichte Fähigkeiten an, und ich habe eine Zeile hinzugefügt, um das Skript sofort zu beenden, ohne die vollständige Nachrichtenverarbeitung zu starten:
if (strpos($tokens[0], "ping") > -1) {Send_Out("pong", "", true);}
Wir rufen die Parse_Tokens-Funktion zur Verarbeitung auf, sie ist dieselbe wie für Telegramm:
$Out_Str = Parse_Tokens($tokens);
Und wir senden die Antwort:
Send_Out($user_id, $Out_Str);
Die Send_Out-Funktion ist hier komplizierter:
function Send_Out($user_id, $out_text, $out_tts = "", $is_end = false) { global $data_msg_sess_id, $user_id;
Fertig das Drehbuch für Alice.
Das Verarbeitungsskript Parse_Tokens selbst wurde nur zum Beispiel ausgeführt, Sie können dort alle Überprüfungen und Verarbeitungen durchführen.
function Parse_Tokens($tokens) { $out = "";
Wenn Sie mit einem Benutzer einer komplexeren Form als einer Frage und Antwort kommunizieren müssen, müssen Sie in der Datenbank (z. B. mysql) $ user_id des Benutzers und die bereits vom Benutzer empfangenen Daten speichern und in der Funktion Parse_Tokens analysieren.
Eigentlich ist dies fast alles. Wenn alles richtig gemacht wurde, ist der Telegramm-Bot bereits verfügbar. Die Fähigkeiten von Alice können durch
dialogs.yandex.ru/developer überprüft werden. Gehen Sie zu Ihrer neuen Fähigkeit auf der Registerkarte "Testen".

Wenn alles richtig funktioniert, können Sie die Fertigkeit zur Moderation senden, indem Sie auf die Schaltfläche "Moderation" klicken.
Jetzt haben Sie zwei Bots für verschiedene Plattformen, die auf die gleiche Weise funktionieren.
Yandex.Dialog Service Dokumentation
hierVollständige Skripte werden beim
Download von Github
veröffentlicht .
Update: Alles in Klassen verpackt und das Repository auf Github aktualisiert