ښه ماسپښین.
د ټیلیګرام بوټونو په اړه ډیری مقالې شتون لري ، مګر لږ خلک د ایلیس لپاره د مهارتونو په اړه لیکي ، او ما د یو بوټ جوړولو څرنګوالي په اړه هیڅ معلومات ونه موندل ، نو ما پریکړه وکړه چې څنګه خپله تجربه شریکه کړم. ساده ټیلیګرام بوټ او د ورته فعالیت سایټ لپاره د Yandex.Alice مهارت.
نو ، زه به تاسو ته ونه وایم چې څنګه د ویب سرور رامینځته کول او د ایس ایس ایل سند ترلاسه کول ، د دې په اړه کافي لیکل شوي.
د ټیلیګرام بوټ رامینځته کول
لومړی، راځئ چې د ټیلیګرام بوټ جوړ کړو، د دې لپاره موږ ټیلیګرام ته ځو او هلته د BotFather بوټ ومومئ.
/نوی بوټ غوره کړئ
موږ د بوټ نوم دننه کوو چې دا به ځواب ورکړي، بیا موږ د بوټ نوم داخلوو، په ځواب کې موږ د بوټ کنټرول لپاره نښه ترلاسه کوو، موږ دا کیلي لیکو، دا به په راتلونکي کې زموږ لپاره ګټور وي.
بل ګام دا دی چې د ټیلیګرام سرورونو ته ووایاست چې کوم سرور له بوټ څخه ډیټا لیږئ. د دې کولو لپاره، موږ د فورمې لینک جوړوو:
https: //api.telegram.org/bot___ТОКЕН___/setWebhook?url=https://____ПУТЬ_ДО_СКРПИТА___
___TOKEN___ موږ د بوټ څخه زموږ د نښه سره ځای په ځای کوو، مخکې ترلاسه شوی
____PATH_TO_SCRIPT____ موږ په خپل سرور کې د سکریپټ پته سره ځای په ځای کوو چیرې چې ډاټا پروسس کیږي (د مثال په توګه،
دلته یوه ستونزه ده، د api.telegram.org سرور د بندیدو لاندې دی، مګر تاسو دا کولی شئ: ارزانه سرور کرایه کړئ چیرې چې هیڅ محدودیت شتون نلري او د دې سرور کنسول څخه قوماندې ورکړئ
wget ___ПОЛУЧИВШИЙСЯ_АДРЕС___
دا دی، د ټیلیګرام بوټ جوړ شوی او ستاسو له سرور سره وصل شوی.
د Yandex.Alisa لپاره مهارت جوړول
راځئ چې د Yandex.Alice لپاره مهارت رامینځته کولو ته لاړ شو.
د مهارت رامینځته کولو لپاره، تاسو اړتیا لرئ د Yandex.Dialogues پراختیا کونکو پاڼې ته لاړ شئ
د مهارتونو ترتیباتو ډیالوګ به خلاص شي.
موږ د مهارتونو ترتیباتو ته ننوتل پیل کوو.
د خپل مهارت نوم ولیکئ.
د فعالولو نوم باید په ډیر دقت سره غوره شي ترڅو ایلیس دا په سمه توګه درک کړي ، له باریکیو څخه - د الیس سره یو ګرځنده غوښتنلیک او کالمونه لکه Yandex.Station یا Irbis A کولی شي ټکي په مختلف ډول درک کړي.
موږ په خپل سرور کې سکریپټ ته لاره په ورته ډول د ټیلیګرام لپاره دننه کوو ، مګر دا به په ځانګړي ډول د ایلیس لپاره سکریپټ وي ، د مثال په توګه
موږ هغه غږ غوره کوو چې په مهارت سره به خبرې وکړي، زه د ایلیس غږ ډیر خوښوم.
که تاسو پلان لرئ چې یوازې په ګرځنده وسیلو یا براوزر کې کار وکړئ ، نو "تاسو د سکرین سره وسیله ته اړتیا لرئ" غوره کړئ.
بیا، د ایلیس د مهارتونو کتلاګ لپاره ترتیبات داخل کړئ. که تاسو د فعالولو لپاره د "برانډ" کلمه کارولو پلان لرئ، نو تاسو اړتیا لرئ چې د ویب پاڼې ویب پاڼه webmaster.yandex.ru کې تایید کړئ.
دا ټول د ترتیباتو سره دي، راځئ چې سکریپټونو ته لاړ شو.
د ټیلیګرام بوټ سکریپټ
راځئ چې د ټیلیګرام لپاره د سکریپټ سره پیل وکړو.
موږ کتابتون سره وصل کوو چیرې چې د بوټ او ایلیس پیغامونه به پروسس شي:
include_once 'webhook_parse.php';
موږ د خپل بوټ نښه جوړه کړه:
$tg_bot_token = "_____YOUR_BOT_TOKEN_____";
موږ معلومات ترلاسه کوو:
$request = file_get_contents('php://input');
$request = json_decode($request, TRUE);
په متغیرونو کې د معلوماتو تحلیل:
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);
}
اوس تاسو کولی شئ د متغیرونو سره کار وکړئ:
$tokens - دلته اوس ټول هغه ټکي دي چې کارونکي داخل کړي
$user_id - د کارن id دلته
$msg_chat_id - چیټ په کوم کې چې بوټ کمانډ ترلاسه کړ
$msg_user_name - کارن نوم
بیا، موږ د پروسس لپاره د پارس_ټوکنز فنکشن ته زنګ ووهئ:
$Out_Str = Parse_Tokens($tokens);
او ځواب ولېږئ:
Send_Out($user_id, $Out_Str);
د Send_Out فعالیت ساده دی او داسې ښکاري:
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);
}
د Yandex.Alisa لپاره د مهارت سکریپټ
اوس راځئ چې د ایلیس لپاره سکریپټ ته لاړ شو، دا تقریبا د ټیلیګرام لپاره ورته دی.
موږ کتابتون هم وصل کوو چیرې چې د بوټ او ایلیس پیغامونه به پروسس شي ، او همدارنګه د ایلیس لپاره د ټولګیو سره یو کتابتون:
include_once 'classes_alice.php';
include_once 'webhook_parse.php';
موږ معلومات ترلاسه کوو:
$data = json_decode(trim(file_get_contents('php://input')), true);
په متغیرونو کې د معلوماتو تحلیل:
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'];}
}
}
دلته یو څو لږ تغیرات شتون لري:
$tokens - دلته اوس ټول هغه ټکي دي چې کارونکي داخل کړي
$user_id - د کارن id دلته
یاندیکس په دوامداره توګه خپاره شوي مهارتونه پینګ کوي ، او ما د پیغام بشپړ پروسس پیل کولو پرته سمدلاسه له سکریپټ څخه وتلو لپاره یوه کرښه اضافه کړه:
if (strpos($tokens[0], "ping") > -1) {Send_Out("pong", "", true);}
موږ د پروسس کولو لپاره د پارس_ټوکن فنکشن وایو، دا د ټیلیګرام لپاره ورته دی:
$Out_Str = Parse_Tokens($tokens);
او ځواب ولېږئ:
Send_Out($user_id, $Out_Str);
د Send_Out فعالیت دلته ډیر پیچلی دی:
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();
}
د الیس لپاره سکریپټ بشپړ کړ.
د Parse_Tokens پروسس کولو سکریپټ پخپله خالص د مثال لپاره جوړ شوی و، تاسو کولی شئ هلته هر ډول چک او پروسس وکړئ.
function Parse_Tokens($tokens)
{
$out = "";
// do something with tokens //
$out = "Your eneter " . count($tokens) . " words: " . implode($tokens, " ");
return $out;
}
که تاسو اړتیا لرئ د پوښتنې ځواب په پرتله د خورا پیچلي بڼې کارونکي سره اړیکه ونیسئ، نو تاسو به اړتیا ولرئ د کارونکي $user_id او هغه معلومات چې دمخه یې په ډیټابیس کې د کارونکي څخه ترلاسه شوي خوندي کړئ (د مثال په توګه، mysql) او په کې یې تحلیل کړئ. د پارس_ټوکنز فعالیت.
په حقیقت کې ، دا نږدې هرڅه دي ، که هرڅه سم ترسره شي ، نو د ټیلیګرام بوټ لا دمخه شتون لري ، د ایلیس مهارت چیک کیدی شي
که هرڅه سم کار وکړي، تاسو کولی شئ د "اعتدال لپاره" تڼۍ په کلیک کولو سره د اعتدال لپاره مهارت واستوئ.
اوس تاسو په یوځل کې د مختلف پلیټ فارمونو لپاره دوه بوټونه لرئ ، کوم چې په ورته ډول کار کوي.
د Yandex.Dialogues خدمت لپاره اسناد
بشپړ سکریپټونه په ګیتوب کې خپاره شوي
سرچینه: www.habr.com