Feasgar math.
Tha tòrr artaigilean ann air cuspair botaichean Telegram, ach chan eil mòran dhaoine a’ sgrìobhadh mu sgilean airson Alice, agus cha do lorg mi fiosrachadh sam bith air mar a nì mi aon bot, agus mar sin chuir mi romham an t-eòlas agam a cho-roinn air mar a nì mi bot. bot Telegram sìmplidh agus sgil Yandex.Alice airson an làrach leis an aon ghoireas.
Mar sin, chan innis mi dhut mar a thogas tu frithealaiche lìn agus a gheibh thu teisteanas ssl, chaidh gu leòr a sgrìobhadh mu dheidhinn.
A 'cruthachadh Telegram bot
An toiseach, cruthaichidh sinn bot Telegram, airson seo thèid sinn gu Telegram agus lorg sinn am bot BotFather an sin.
Tagh / newbot
Bidh sinn a’ cuir a-steach ainm a’ bot leis am freagair e, an uairsin cuiridh sinn a-steach ainm a’ bot, mar fhreagairt gheibh sinn comharra airson smachd a chumail air a’ bot, bidh sinn a’ sgrìobhadh sìos an iuchair seo, bidh e feumail dhuinn san àm ri teachd.
Is e an ath cheum innse dha na frithealaichean Telegram dè am frithealaiche a chuireas dàta bhon bot gu. Gus seo a dhèanamh, nì sinn ceangal den fhoirm:
https: //api.telegram.org/bot___ТОКЕН___/setWebhook?url=https://____ПУТЬ_ДО_СКРПИТА___
___TOKEN___ cuiridh sinn an comharra bhon bhot againn na àite, a fhuaireadh na bu thràithe
____PATH_TO_SCRIPT____ cuiridh sinn an àite seòladh an sgriobt air an fhrithealaiche againn far an tèid an dàta a phròiseasadh (mar eisimpleir,
Tha duilgheadas an seo, tha am frithealaiche api.telegram.org fo bhacadh, ach faodaidh tu seo a dhèanamh: màl am frithealaiche as saoire far nach eil bacadh sam bith agus thoir an àithne bho chonsail an fhrithealaiche seo
wget ___ПОЛУЧИВШИЙСЯ_АДРЕС___
Sin e, tha an Telegram bot air a chruthachadh agus ceangailte ris an t-seirbheisiche agad.
A 'cruthachadh sgil airson Yandex.Alisa
Nach gluais sinn air adhart gu bhith a 'cruthachadh sgil airson Yandex.Alice.
Gus sgil a chruthachadh, feumaidh tu a dhol gu duilleag luchd-leasachaidh Yandex.Dialogues
Fosglaidh an còmhradh roghainnean sgil.
Bidh sinn a 'tòiseachadh a' dol a-steach do na roghainnean sgil.
Cuir a-steach ainm do sgil.
Bu chòir an t-ainm gnìomhachaidh a thaghadh gu faiceallach gus am bi Alice ga thuigsinn gu ceart, bho na nuances - faodaidh tagradh gluasadach le Alice agus colbhan mar Yandex.Station no Irbis A faclan fhaicinn ann an dòigh eadar-dhealaichte.
Bidh sinn a’ dol a-steach don t-slighe chun sgriobt air an t-seirbheisiche againn san aon dòigh ri Telegram, ach bidh e na sgriobt gu sònraichte airson Alice, mar eisimpleir
Bidh sinn a’ taghadh an guth leis am bi an sgil a’ bruidhinn, is toil leam guth Alice nas motha.
Ma tha thu an dùil a bhith ag obair a-mhàin air innealan-làimhe no ann am brabhsair, an uair sin tagh "Feumaidh tu inneal le sgrion."
An ath rud, cuir a-steach na roghainnean airson catalog sgilean Alice. Ma tha thu an dùil am facal "brand" a chleachdadh airson gnìomhachd, feumaidh tu làrach-lìn a 'bhrand a dhearbhadh anns an t-seirbheis webmaster.yandex.ru.
Tha sin uile leis na roghainnean, gluaisidh sinn air adhart gu na sgriobtaichean.
Sgriobt bot telegram
Feuch an tòisich sinn le sgriobt airson Telegram.
Bidh sinn a’ ceangal an leabharlann far an tèid teachdaireachdan bhon bhot agus Alice a ghiullachd:
include_once 'webhook_parse.php';
Shuidhich sinn comharra ar bot:
$tg_bot_token = "_____YOUR_BOT_TOKEN_____";
Gheibh sinn dàta:
$request = file_get_contents('php://input');
$request = json_decode($request, TRUE);
A’ parsadh an dàta gu caochladairean:
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);
}
A-nis faodaidh tu obrachadh le caochladairean:
$tokens - seo a-nis a h-uile facal a chuir an cleachdaiche a-steach
$user_id - ID cleachdaiche an seo
$msg_chat_id - cabadaich anns an d’ fhuair am bot an àithne
$msg_user_name - ainm-cleachdaiche
An ath rud, canaidh sinn an gnìomh Parse_Tokens airson giullachd:
$Out_Str = Parse_Tokens($tokens);
Agus cuir freagairt:
Send_Out($user_id, $Out_Str);
tha an gnìomh Send_Out sìmplidh agus tha e coltach ri seo:
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);
}
Sgriobt sgil airson Yandex.Alisa
A-nis gluaisidh sinn air adhart chun sgriobt airson Alice, tha e cha mhòr an aon rud ri Telegram.
Bidh sinn cuideachd a’ ceangal an leabharlann far an tèid teachdaireachdan bhon bot agus Alice a phròiseasadh, a bharrachd air leabharlann le clasaichean airson Alice:
include_once 'classes_alice.php';
include_once 'webhook_parse.php';
Gheibh sinn dàta:
$data = json_decode(trim(file_get_contents('php://input')), true);
A’ parsadh an dàta gu caochladairean:
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'];}
}
}
Tha beagan nas lugha de chaochladairean an seo:
$tokens - seo a-nis a h-uile facal a chuir an cleachdaiche a-steach
$user_id - ID cleachdaiche an seo
Bidh Yandex an-còmhnaidh a’ putadh sgilean foillsichte, agus chuir mi loidhne ris gus an sgriobt fhàgail sa bhad gun a bhith a’ tòiseachadh air làn ghiollachd na teachdaireachd:
if (strpos($tokens[0], "ping") > -1) {Send_Out("pong", "", true);}
Canaidh sinn an gnìomh Parse_Tokens airson giullachd, tha e an aon rud ri Telegram:
$Out_Str = Parse_Tokens($tokens);
Agus cuir freagairt:
Send_Out($user_id, $Out_Str);
Tha an gnìomh Send_Out nas toinnte an seo:
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();
}
Chrìochnaich an sgriobt airson Alice.
Chaidh an sgriobt giollachd Parse_Tokens fhèin a dhèanamh dìreach mar eisimpleir, faodaidh tu sgrùdaidhean agus giullachd sam bith a dhèanamh an sin.
function Parse_Tokens($tokens)
{
$out = "";
// do something with tokens //
$out = "Your eneter " . count($tokens) . " words: " . implode($tokens, " ");
return $out;
}
Ma dh’fheumas tu conaltradh a dhèanamh ri neach-cleachdaidh ann an cruth nas iom-fhillte na freagairt ceist, feumaidh tu $user_id an neach-cleachdaidh agus an dàta a fhuaireadh bhon neach-cleachdaidh san stòr-dàta mu thràth (mar eisimpleir, mysql) a shàbhaladh agus an sgrùdadh ann an an gnìomh Parse_Tokens.
Gu fìrinneach, is e seo cha mhòr a h-uile càil, ma thèid a h-uile càil a dhèanamh ceart, tha an Telegram bot ri fhaighinn mu thràth, faodar sgil Alice a sgrùdadh
Ma dh’ obraicheas a h-uile càil ceart, faodaidh tu an sgil airson measadh a chuir air falbh le bhith a’ briogadh air a’ phutan “Airson moderation”.
A-nis tha dà bhot agad airson diofar àrd-ùrlaran aig an aon àm, a bhios ag obair san aon dòigh.
Sgrìobhainnean airson seirbheis Yandex.Dialogues
Sgriobtaichean slàn air an postadh air github
Source: www.habr.com