Dea-tráthnóna.
Tá go leor alt ar an ábhar róbónna Telegram, ach is beag duine a scríobhann faoi scileanna do Alice, agus ní bhfuair mé aon fhaisnéis faoi conas bot amháin a dhéanamh, agus mar sin shocraigh mé mo thaithí a roinnt ar conas a dhéanamh. bot Telegram simplí agus an scil Yandex.Alice don suíomh a bhfuil an fheidhmiúlacht chéanna.
Mar sin, ní inseoidh mé duit conas freastalaí gréasáin a ardú agus teastas ssl a fháil, tá go leor scríofa faoi.
Bot Telegram a chruthú
Gcéad dul síos, déanaimis bot Telegram a chruthú, le haghaidh seo téann muid go Telegram agus aimsímid an bot BotFather ann.
Roghnaigh / newbot
Cuirimid isteach ainm an bot trína bhfreagróidh sé, ansin cuirimid isteach ainm an bot, mar fhreagra air sin faigheann muid comhartha chun an bot a rialú, scríobhann muid síos an eochair seo, beidh sé úsáideach dúinn sa todhchaí.
Is é an chéad chéim eile a insint do na freastalaithe Telegram cén freastalaí chun sonraí a sheoladh ón bot. Chun seo a dhéanamh, déanaimid nasc den fhoirm:
https: //api.telegram.org/bot___ТОКЕН___/setWebhook?url=https://____ПУТЬ_ДО_СКРПИТА___
___TOKEN___ cuirimid ár chomhartha ón bot, a fuarthas níos luaithe, ina áit
____PATH_TO_SCRIPT____ cuirimid seoladh na scripte ar ár bhfreastalaí ina ionad sin ina bpróiseálfar na sonraí (mar shampla,
Tá fadhb anseo, tá an freastalaí api.telegram.org faoi bhlocáil, ach is féidir leat é seo a dhéanamh: lig an freastalaí is saoire ar cíos nuair nach bhfuil aon srianta ann agus tabhair ordú ó chonsól an fhreastalaí seo
wget ___ПОЛУЧИВШИЙСЯ_АДРЕС___
Sin é, cruthaítear an bot Telegram agus nasctar é le do fhreastalaí.
Scil a chruthú do Yandex.Alisa
Bogaimis ar aghaidh chuig scil a chruthú do Yandex.Alice.
Chun scil a chruthú, ní mór duit dul go dtí leathanach forbróirí Yandex.Dialogues
Osclófar an dialóg socruithe scileanna.
Tosaímid ag dul isteach sna socruithe scileanna.
Cuir isteach ainm do scile.
Ba cheart an t-ainm gníomhachtaithe a roghnú go han-chúramach ionas go dtuigeann Alice i gceart é, ó na nuances - is féidir le feidhmchlár soghluaiste le Alice agus colúin mar Yandex.Station nó Irbis A focail a bhrath ar bhealach difriúil.
Cuirimid an cosán chuig an script ar ár bhfreastalaí ar an mbealach céanna le Telegram, ach beidh sé ina script go sonrach le haghaidh Alice, mar shampla
Roghnóimid an guth a labhróidh an scil, is maith liom guth Alice níos mó.
Má tá ar intinn agat a bheith ag obair ach amháin ar gléasanna soghluaiste nó i bhrabhsálaí, ansin roghnaigh "Ní mór duit gléas le scáileán."
Ansin, cuir isteach na socruithe do chatalóg scileanna Alice. Má tá sé ar intinn agat an focal "branda" a úsáid le haghaidh gníomhachtaithe, ní mór duit láithreán gréasáin an bhranda a fhíorú sa tseirbhís webmaster.yandex.ru.
Sin go léir leis na socruithe, a ligean ar bogadh ar aghaidh go dtí na scripteanna.
Script bot telegram
Tosaímid le script le haghaidh Telegram.
Ceanglaíonn muid an leabharlann áit a bpróiseálfar teachtaireachtaí ón bot agus Alice:
include_once 'webhook_parse.php';
Shocraigh muid comhartha ár bot:
$tg_bot_token = "_____YOUR_BOT_TOKEN_____";
Faighimid sonraí:
$request = file_get_contents('php://input');
$request = json_decode($request, TRUE);
Na sonraí a pharsáil in athróga:
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);
}
Anois is féidir leat oibriú le hathróga:
$tokens - seo anois na focail go léir a chuir an t-úsáideoir isteach
$user_id - aitheantas úsáideora anseo
$msg_chat_id - comhrá ina bhfuair an bot an t-ordú
$msg_user_name - ainm úsáideora
Ansin, tugaimid an fheidhm Parse_Tokens le haghaidh próiseála:
$Out_Str = Parse_Tokens($tokens);
Agus seol freagra:
Send_Out($user_id, $Out_Str);
tá an fheidhm Send_Out simplí agus tá an chuma air 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);
}
Script scileanna do Yandex Alisa
Anois, a ligean ar bogadh ar aghaidh go dtí an script le haghaidh Alice, tá sé beagnach mar an gcéanna do Telegram.
Nascaimid an leabharlann freisin ina bpróiseálfar teachtaireachtaí ón bot agus Alice, chomh maith le leabharlann le ranganna do Alice:
include_once 'classes_alice.php';
include_once 'webhook_parse.php';
Faighimid sonraí:
$data = json_decode(trim(file_get_contents('php://input')), true);
Na sonraí a pharsáil in athróga:
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'];}
}
}
Tá cúpla athróg níos lú anseo:
$tokens - seo anois na focail go léir a chuir an t-úsáideoir isteach
$user_id - aitheantas úsáideora anseo
Bíonn Yandex i gcónaí ag pingin scileanna foilsithe, agus chuir mé líne leis chun an script a fhágáil láithreach gan tús a chur le próiseáil iomlán na teachtaireachta:
if (strpos($tokens[0], "ping") > -1) {Send_Out("pong", "", true);}
Glaoimid an fheidhm Parse_Tokens le haghaidh próiseála, tá sé mar an gcéanna le Telegram:
$Out_Str = Parse_Tokens($tokens);
Agus seol freagra:
Send_Out($user_id, $Out_Str);
Tá an fheidhm Send_Out níos casta anseo:
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íochnaigh an script le haghaidh Alice.
Rinneadh an script próiseála Parse_Tokens féin mar shampla amháin, is féidir leat aon seiceálacha agus próiseáil a dhéanamh ann.
function Parse_Tokens($tokens)
{
$out = "";
// do something with tokens //
$out = "Your eneter " . count($tokens) . " words: " . implode($tokens, " ");
return $out;
}
Más gá duit cumarsáid a dhéanamh le húsáideoir ar fhoirm níos casta ná freagra ceiste, beidh ort $user_id an úsáideora agus na sonraí atá faighte cheana ón úsáideoir sa bhunachar sonraí a shábháil (mar shampla, mysql) agus anailís a dhéanamh orthu i an fheidhm Parse_Tokens.
I ndáiríre, is beagnach gach rud é seo, má dhéantar gach rud i gceart, ansin tá an bot Telegram ar fáil cheana féin, is féidir scil Alice a sheiceáil
Má oibríonn gach rud i gceart, is féidir leat an scil le haghaidh modhnóireachta a sheoladh trí chliceáil ar an gcnaipe "For moderation".
Anois tá dhá róbón agat le haghaidh ardáin éagsúla ag an am céanna, a oibríonn ar an mbealach céanna.
Doiciméadú don tseirbhís Yandex.Dialogues
Scripteanna iomlána postáilte ar github
Foinse: will.com