Kuhle ntambama.
Kunezindatshana eziningi ngesihloko se-Telegraph bots, kepha bambalwa abantu ababhala ngamakhono ka-Alice, futhi angizange ngithole ulwazi lwendlela yokwenza i-bot eyodwa, ngakho-ke nginqume ukwabelana ngolwazi lwami mayelana nendlela yokwenza i-bot eyodwa. I-Telegram bot elula kanye nekhono le-Yandex.Alice lesayithi elinomsebenzi ofanayo.
Ngakho-ke, ngeke ngikutshele indlela yokukhulisa iseva yewebhu futhi uthole isitifiketi se-ssl, ngokwanele kubhaliwe ngakho.
Ukudala i-Telegraph bot
Okokuqala, ake sakhe ibhodlela yeTelegramu, kulokhu siya kuTelegram futhi sithole i-BotFather bot lapho.
Khetha /newbot
Sifaka igama le-bot elizophendula ngalo, bese sifaka igama le-bot, ekuphenduleni sithola ithokheni yokulawula i-bot, sibhala phansi lesi sihluthulelo, sizoba usizo kithi esikhathini esizayo.
Isinyathelo esilandelayo ukutshela amaseva eTelegram ukuthi iyiphi iseva okufanele ithumele idatha isuka ku-bot iye kuyo. Ukwenza lokhu, senza isixhumanisi sefomu:
https: //api.telegram.org/bot___Π’ΠΠΠΠ___/setWebhook?url=https://____ΠΠ£Π’Π¬_ΠΠ_Π‘ΠΠ ΠΠΠ’Π___
___TOKEN___ sifaka ithokheni yethu evela ku-bot, etholwe ngaphambili
__PATH_TO_SCRIPT__ sifaka ikheli lombhalo kuseva yethu lapho idatha izocutshungulwa khona (isibonelo,
Kunenkinga lapha, iseva ye-api.telegram.org ingaphansi kokuvinjwa, kodwa ungakwenza lokhu: qasha iseva eshibhe lapho kungekho mingcele futhi unikeze umyalo ovela kukhonsoli yale seva.
wget ___ΠΠΠΠ£Π§ΠΠΠ¨ΠΠΠ‘Π―_ΠΠΠ ΠΠ‘___
Yilokho kuphela, i-Telegraph bot idaliwe futhi ixhunywe kuseva yakho.
Ukudala ikhono le-Yandex.Alisa
Asiqhubekele ekudaleni ikhono le-Yandex.Alice.
Ukuze udale ikhono, udinga ukuya ekhasini labathuthukisi be-Yandex.Dialogues
Ibhokisi lezilungiselelo zekhono lizovuleka.
Siqala ukufaka izilungiselelo zamakhono.
Faka igama lekhono lakho.
Igama lokwenza kusebenze kufanele likhethwe ngokucophelela kakhulu ukuze u-Alice aliqonde kahle, kusukela kumanuances - uhlelo lokusebenza lweselula oluno-Alice namakholomu afana ne-Yandex.Isiteshi noma i-Irbis A ingabona amagama ngendlela ehlukile.
Sifaka indlela eya kuskripthi kuseva yethu ngendlela efanayo neyeTelegramu, kodwa kuzoba umbhalo oqondene ngqo no-Alice, isibonelo.
Sikhetha izwi ikhono elizokhuluma ngalo, ngithanda izwi lika-Alice kakhulu.
Uma uhlele ukusebenza kuphela kumadivayisi eselula noma kusiphequluli, bese ukhetha okuthi "Udinga idivayisi enesikrini."
Okulandelayo, faka izilungiselelo zekhathalogi yamakhono ka-Alice. Uma uhlela ukusebenzisa igama elithi "brand" ukuze usebenze, udinga ukuqinisekisa iwebhusayithi yomkhiqizo kusevisi ye-webmaster.yandex.ru.
Yilokho kuphela ngezilungiselelo, ake sidlulele emibhalweni.
Isikripthi se-Telegram bot
Ake siqale ngombhalo weTelegramu.
Sixhuma umtapo wezincwadi lapho imilayezo evela ku-bot ne-Alice izocutshungulwa khona:
include_once 'webhook_parse.php';
Setha ithokheni ye-bot yethu:
$tg_bot_token = "_____YOUR_BOT_TOKEN_____";
Sithola idatha:
$request = file_get_contents('php://input');
$request = json_decode($request, TRUE);
Ukuhlaziya idatha ibe okuguquguqukayo:
if (!$request)
{
die();
// Some Error output (request is not valid JSON)
}
else if (!isset($request['update_id']) || !isset($request['message']))
{
die();
// Some Error output (request has not message)
}
else
{
$user_id = $request['message']['from']['id'];
$msg_user_name = $request['message']['from']['first_name'];
$msg_user_last_name = $request['message']['from']['last_name'];
$msg_user_nick_name = $request['message']['from']['username'];
$msg_chat_id = $request['message']['chat']['id'];
$msg_text = $request['message']['text'];
$msg_text = mb_strtolower($msg_text, 'UTF-8');
$tokens = explode(" ", $msg_text);
}
Manje usungasebenza ngokuguquguqukayo:
$amathokheni - nawa manje wonke amagama afakwe umsebenzisi
$user_id - id yomsebenzisi lapha
$msg_chat_id - xoxa lapho i-bot ithole khona umyalo
$msg_igama_lomsebenzisi - igama lomsebenzisi
Okulandelayo, sibiza umsebenzi we-Parse_Tokens wokucutshungulwa:
$Out_Str = Parse_Tokens($tokens);
Bese uthumela impendulo:
Send_Out($user_id, $Out_Str);
umsebenzi we-Send_Out ulula futhi ubukeka kanje:
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);
}
Isikripthi sekhono se-Yandex.Alisa
Manje ake sidlulele embhalweni ka-Alice, icishe ifane neyeTelegramu.
Futhi sixhuma umtapo wezincwadi lapho imilayezo evela ku-bot ne-Alice izocutshungulwa khona, kanye nelabhulali enamakilasi ka-Alice:
include_once 'classes_alice.php';
include_once 'webhook_parse.php';
Sithola idatha:
$data = json_decode(trim(file_get_contents('php://input')), true);
Ukuhlaziya idatha ibe okuguquguqukayo:
if (isset($data['request']))
{
//original_utterance
if (isset($data['meta']))
{
$data_meta = $data['meta'];
if (isset($data_meta['client_id'])) {$client_id = $data_meta['client_id'];}
}
if (isset($data['request']))
{
$data_req = $data['request'];
if (isset($data_req['original_utterance']))
{
$original_utterance = $data_req['original_utterance'];
}
if (isset($data_req['command'])) {$data_msg = $data_req['command'];}
if (isset($data_req['nlu']))
{
$data_nlu = $data_req['nlu'];
if (isset($data_nlu['tokens'])) {$tokens = $data_nlu['tokens'];}
// $data_token_count = count($data_tokens);
}
}
if (isset($data['session']))
{
$data_session = $data['session'];
if (isset($data_session['new'])) {$data_msg_new = $data_session['new'];}
if (isset($data_session['message_id'])) {$data_msg_id = $data_session['message_id'];}
if (isset($data_session['session_id'])) {$data_msg_sess_id = $data_session['session_id'];}
if (isset($data_session['skill_id'])) {$skill_id = $data_session['skill_id'];}
if (isset($data_session['user_id'])) {$user_id = $data_session['user_id'];}
}
}
Kukhona okuguquguqukayo okumbalwa lapha:
$amathokheni - nawa manje wonke amagama afakwe umsebenzisi
$user_id - id yomsebenzisi lapha
I-Yandex ihlale ibhala amakhono ashicilelwe, futhi ngengeza umugqa ukuze ngiphume ngokushesha kuskripthi ngaphandle kokuqala ukucutshungulwa okugcwele komlayezo:
if (strpos($tokens[0], "ping") > -1) {Send_Out("pong", "", true);}
Sibiza umsebenzi we-Parse_Tokens ukuze ucutshungulwe, kuyafana noweTelegramu:
$Out_Str = Parse_Tokens($tokens);
Bese uthumela impendulo:
Send_Out($user_id, $Out_Str);
Umsebenzi we-Send_Out uyinkimbinkimbi kakhulu lapha:
function Send_Out($user_id, $out_text, $out_tts = "", $is_end = false)
{
global $data_msg_sess_id, $user_id;
///// GENERATE BASE OF OUT //////
$Data_Out = new Alice_Data_Out();
$Data_Out->response = new Alice_Response();
$Data_Out->session = new Alice_Session();
///// GENERATE BASE OF OUT End //////
///// OUT MSG GENERATE /////
$Data_Out->session->session_id = $data_msg_sess_id;;
$Data_Out->session->user_id = $user_id;
$Data_Out->response->text = $out_text;
$Data_Out->response->tts = $out_tts;
if (strlen($out_tts) < 1) {$Data_Out->response->tts = $out_text;}
$Data_Out->response->end_session = $is_end;
header('Content-Type: application/json');
print(json_encode($Data_Out, JSON_HEX_TAG | JSON_HEX_AMP | JSON_HEX_APOS | JSON_HEX_QUOT));
die();
}
Uqedile ukubhala u-Alice.
Iskripthi sokucubungula se-Parse_Tokens ngokwaso senzelwe isibonelo nje, ungenza noma yikuphi ukuhlola nokucubungula lapho.
function Parse_Tokens($tokens)
{
$out = "";
// do something with tokens //
$out = "Your eneter " . count($tokens) . " words: " . implode($tokens, " ");
return $out;
}
Uma udinga ukuxhumana nomsebenzisi wefomu eliyinkimbinkimbi kunempendulo yombuzo, uzodinga ukuthi ulondoloze i-$user_id yomsebenzisi kanye nedatha esivele yamukelwe kumsebenzisi kusizindalwazi (ngokwesibonelo, mysql) futhi uyihlaziye ku- umsebenzi we-Parse_Tokens.
Eqinisweni, lokhu cishe konke, uma konke kwenziwa kahle, i-Telegram bot isivele itholakala, ikhono lika-Alice lingahlolwa.
Uma konke kusebenza kahle, ungathumela ikhono lokulinganisa ngokuchofoza inkinobho ethi "Ngokongamela".
Manje usunama-bot amabili amapulatifomu ahlukene ngesikhathi esisodwa, asebenza ngendlela efanayo.
Amadokhumenti esevisi ye-Yandex.Dialogues
Imibhalo egcwele ithunyelwe ku-github
Source: www.habr.com