နေ့သည်ကောင်းသော။
Telegram bot များအကြောင်း ဆောင်းပါးများစွာရှိသော်လည်း လူအနည်းငယ်က Alice အတွက် ကျွမ်းကျင်မှုများအကြောင်း ရေးသားကြပြီး bot တစ်ခုဖန်တီးနည်းနှင့်ပတ်သက်သည့် အချက်အလက်ကို ကျွန်ုပ်မတွေ့သောကြောင့် ကျွန်ုပ်၏အတွေ့အကြုံကို မျှဝေရန် ဆုံးဖြတ်ခဲ့သည်။ ရိုးရှင်းသော Telegram bot နှင့် Yandex.Alice ကျွမ်းကျင်မှု တူညီသော လုပ်ဆောင်နိုင်စွမ်းရှိသော ဆိုဒ်။
ထို့ကြောင့်၊ ဝဘ်ဆာဗာကို မြှင့်တင်ရန်နှင့် ssl လက်မှတ်ရရန် သင့်အား ငါပြောပြမည်မဟုတ်ပါ၊ လုံလောက်ပြီဟု ရေးထားသည်။
Telegram bot တစ်ခုဖန်တီးခြင်း။
ပထမဦးစွာ Telegram bot တစ်ခုကိုဖန်တီးလိုက်ရအောင်၊ အဲဒါအတွက် Telegram ကိုသွားပြီး BotFather bot ကိုရှာလိုက်ပါ။
/newbot ကိုရွေးပါ။
တုံ့ပြန်မည့် bot ၏အမည်ကိုကျွန်ုပ်တို့ထည့်ပါ၊ ထို့နောက် bot ၏အမည်ကိုထည့်ပါ၊ တုံ့ပြန်သည့်အနေဖြင့် bot ကိုထိန်းချုပ်ရန်တိုကင်တစ်ခုရရှိသည်၊ ဤသော့ကိုချရေးပါ၊ ၎င်းသည်အနာဂတ်တွင်ကျွန်ုပ်တို့အတွက်အသုံးဝင်လိမ့်မည်။
နောက်တစ်ဆင့်မှာ Telegram ဆာဗာများကို မည်သည့်ဆာဗာမှ bot ထံသို့ ဒေတာပေးပို့ရန်ဖြစ်သည်။ ဒါကိုလုပ်ဖို့၊ ဖောင်ရဲ့ လင့်ခ်တစ်ခုကို လုပ်ပါတယ်။
https: //api.telegram.org/bot___ТОКЕН___/setWebhook?url=https://____ПУТЬ_ДО_СКРПИТА___
___TOKEN___ ကျွန်ုပ်တို့သည် အစောပိုင်းရရှိထားသော bot မှ ကျွန်ုပ်တို့၏ တိုကင်ဖြင့် အစားထိုးပါသည်။
____PATH_TO_SCRIPT____ ဒေတာကို စီမံဆောင်ရွက်မည့် ကျွန်ုပ်တို့၏ဆာဗာရှိ script လိပ်စာဖြင့် အစားထိုးပါသည် (ဥပမာ၊
ဤနေရာတွင် ပြဿနာရှိပါသည်၊ api.telegram.org ဆာဗာသည် ပိတ်ဆို့ခြင်းခံနေရသော်လည်း ၎င်းကို သင်လုပ်ဆောင်နိုင်သည်- ကန့်သတ်ချက်များမရှိသော ဈေးအသက်သာဆုံး ဆာဗာကို ငှားပြီး ဤဆာဗာ၏ ကွန်ဆိုးလ်မှ အမိန့်ပေးလိုက်ပါ။
wget ___ПОЛУЧИВШИЙСЯ_АДРЕС___
ဒါပါပဲ၊ Telegram bot ကို ဖန်တီးပြီး သင့်ဆာဗာနဲ့ ချိတ်ဆက်ထားပါတယ်။
Yandex.Alisa အတွက် ကျွမ်းကျင်မှုတစ်ခု ဖန်တီးခြင်း။
Yandex.Alice အတွက် ကျွမ်းကျင်မှုတစ်ခု ဖန်တီးခြင်းသို့ ဆက်သွားကြပါစို့။
ကျွမ်းကျင်မှုတစ်ခုဖန်တီးရန် Yandex.Dialogues developers စာမျက်နှာသို့ သွားရန်လိုအပ်သည်။
ကျွမ်းကျင်မှု ဆက်တင် ဒိုင်ယာလော့ဂ် ပွင့်လာပါမည်။
ကျွန်ုပ်တို့သည် ကျွမ်းကျင်မှု ဆက်တင်များကို စတင်ဝင်ရောက်ပါ။
သင်၏ကျွမ်းကျင်မှုအမည်ကိုထည့်ပါ။
Alice ၏ ကွဲပြားချက်များမှ မှန်ကန်စွာ နားလည်နိုင်စေရန်အတွက် activation အမည်ကို Alice နှင့် Yandex.Station သို့မဟုတ် Irbis A ကဲ့သို့သော ကော်လံများပါသည့် Alice ပါသည့် မိုဘိုင်းအက်ပလီကေးရှင်းများမှ စကားလုံးများကို ကွဲပြားစွာ နားလည်နိုင်စေရန်အတွက် အလွန်ဂရုတစိုက်ရွေးချယ်သင့်ပါသည်။
ကျွန်ုပ်တို့သည် Telegram အတွက်ကဲ့သို့ပင် ကျွန်ုပ်တို့၏ဆာဗာရှိ Script လမ်းကြောင်းသို့ ကျွန်ုပ်တို့ ဝင်ရောက်သည်၊ သို့သော် ၎င်းသည် Alice အတွက် သီးသန့် script တစ်ခုဖြစ်လိမ့်မည်၊
ကျွမ်းကျင်စွာပြောမည့်အသံကို ကျွန်ုပ်တို့ရွေးချယ်သည်၊ ကျွန်ုပ်သည် အဲလစ်၏အသံကို ပို၍နှစ်သက်သည်။
အကယ်၍ သင်သည် မိုဘိုင်းလ်ကိရိယာများ သို့မဟုတ် ဘရောက်ဆာတစ်ခုတွင်သာ လုပ်ဆောင်ရန် စီစဉ်ထားပါက၊ ထို့နောက် "သင်စခရင်ပါသည့် စက်ပစ္စည်းတစ်ခု လိုအပ်သည်" ကို ရွေးချယ်ပါ။
ထို့နောက် Alice ၏ကျွမ်းကျင်မှုကတ်တလောက်အတွက် ဆက်တင်များကိုဝင်ပါ။ အသက်သွင်းရန်အတွက် "အမှတ်တံဆိပ်" ဟူသော စကားလုံးကို အသုံးပြုရန် စီစဉ်ထားပါက၊ webmaster.yandex.ru ဝန်ဆောင်မှုတွင် အမှတ်တံဆိပ်၏ဝဘ်ဆိုဒ်ကို အတည်ပြုရန် လိုအပ်ပါသည်။
ဆက်တင်များပါပြီးပြီ၊ ဇာတ်ညွှန်းများဆီသို့ ဆက်သွားကြပါစို့။
Telegram bot ပဲဗျ။
Telegram အတွက် script တစ်ခုနဲ့ စလိုက်ရအောင်။
bot နှင့် Alice မှ မက်ဆေ့ချ်များကို လုပ်ဆောင်မည့် စာကြည့်တိုက်ကို ကျွန်ုပ်တို့ ချိတ်ဆက်သည်-
include_once 'webhook_parse.php';
ကျွန်ုပ်တို့သည် ကျွန်ုပ်တို့၏ bot ၏ တိုကင်ကို သတ်မှတ်သည်-
$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);
}
ယခု သင်သည် variable များဖြင့် လုပ်ဆောင်နိုင်သည်-
$tokens - ယခုတွင် အသုံးပြုသူထည့်သွင်းထားသော စကားလုံးများအားလုံးသည် ဤတွင်ဖြစ်သည်။
$user_id - အသုံးပြုသူ id ဤနေရာတွင်
$msg_chat_id - bot က အမိန့်ကို လက်ခံရရှိသည့် ချတ်
$msg_user_name - အသုံးပြုသူအမည်
ထို့နောက်၊ ကျွန်ုပ်တို့လုပ်ဆောင်ရန်အတွက် Parse_Tokens လုပ်ဆောင်ချက်ကို ခေါ်သည်-
$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 အတွက် ကျွမ်းကျင်မှု script
အခု Alice အတွက် ဇာတ်ညွှန်းကို ဆက်ကြည့်ရအောင်၊ အဲဒါက Telegram အတွက်နဲ့ အတူတူပါပဲ။
bot နှင့် Alice မှ မက်ဆေ့ချ်များကို လုပ်ဆောင်ပေးမည့် စာကြည့်တိုက်အပြင် Alice အတွက် အတန်းများပါရှိသော စာကြည့်တိုက်တစ်ခုကိုလည်း ချိတ်ဆက်ပေးပါသည်။
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 ဤနေရာတွင်
Yandex သည် ထုတ်ဝေထားသော ကျွမ်းကျင်မှုများကို အဆက်မပြတ် ping လုပ်ပြီး မက်ဆေ့ချ်၏ အပြည့်အဝ လုပ်ဆောင်ခြင်းကို မစတင်ဘဲ script ကို ချက်ချင်းထွက်ရန် စာကြောင်းတစ်ကြောင်း ထပ်ထည့်လိုက်သည်-
if (strpos($tokens[0], "ping") > -1) {Send_Out("pong", "", true);}
ကျွန်ုပ်တို့လုပ်ဆောင်ရန်အတွက် Parse_Tokens လုပ်ဆောင်ချက်ကိုခေါ်ဆိုသည်၊ ၎င်းသည် Telegram အတွက်နှင့်အတူတူပင်ဖြစ်သည်
$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 လုပ်ဆောင်ခြင်း script ကိုယ်တိုင်က ဥပမာတစ်ခုအတွက် သက်သက် ဖန်တီးထားခြင်းဖြစ်ပြီး၊ သင်သည် မည်သည့်စစ်ဆေးမှုနှင့်မဆို လုပ်ဆောင်နိုင်သည် ။
function Parse_Tokens($tokens)
{
$out = "";
// do something with tokens //
$out = "Your eneter " . count($tokens) . " words: " . implode($tokens, " ");
return $out;
}
အကယ်၍ သင်သည် အမေးအဖြေထက် ပိုမိုရှုပ်ထွေးသောပုံစံရှိသော အသုံးပြုသူတစ်ဦးနှင့် ဆက်သွယ်ရန် လိုအပ်ပါက၊ အသုံးပြုသူ၏ $user_id နှင့် ဒေတာဘေ့စ်ရှိ အသုံးပြုသူထံမှ ရရှိပြီးသားဒေတာ (ဥပမာ mysql) ကို သိမ်းဆည်းပြီး ၎င်းတို့ကို ခွဲခြမ်းစိတ်ဖြာရန် လိုအပ်မည်ဖြစ်သည်။ Parse_Tokens လုပ်ဆောင်ချက်။
နောက်တစ်ခုက၊ ဒါကအားလုံးနီးပါးပါပဲ၊ အားလုံးမှန်တယ်ဆိုရင် Telegram bot ကရနေပြီ၊ Alice ရဲ့ကျွမ်းကျင်မှုကိုစစ်ဆေးနိုင်ပါတယ်။
အရာအားလုံး မှန်ကန်စွာ လုပ်ဆောင်ပါက၊ သင်သည် "စိစစ်ရန်" ခလုတ်ကို နှိပ်ခြင်းဖြင့် ကျွမ်းကျင်မှုကို ပေးပို့နိုင်ပါသည်။
ယခု သင့်တွင် မတူညီသောပလက်ဖောင်းများအတွက် ဘော့တ်နှစ်ခုကို တစ်ပြိုင်နက်တည်း လုပ်ဆောင်နိုင်ပြီဖြစ်ပြီး တူညီသောနည်းလမ်းဖြင့် လုပ်ဆောင်သည်။
Yandex.Dialogues ဝန်ဆောင်မှုအတွက် စာရွက်စာတမ်း
ဇာတ်ညွှန်းအပြည့်အစုံကို github တွင် တင်ထားသည်။
source: www.habr.com