ಗುಡ್ ಮಧ್ಯಾಹ್ನ.
ಟೆಲಿಗ್ರಾಮ್ ಬಾಟ್ಗಳ ವಿಷಯದ ಕುರಿತು ಬಹಳಷ್ಟು ಲೇಖನಗಳಿವೆ, ಆದರೆ ಕೆಲವೇ ಜನರು ಆಲಿಸ್ಗೆ ಕೌಶಲ್ಯಗಳ ಬಗ್ಗೆ ಬರೆಯುತ್ತಾರೆ ಮತ್ತು ಒಂದೇ ಬೋಟ್ ಅನ್ನು ಹೇಗೆ ತಯಾರಿಸುವುದು ಎಂಬುದರ ಕುರಿತು ನನಗೆ ಯಾವುದೇ ಮಾಹಿತಿ ಸಿಗಲಿಲ್ಲ, ಆದ್ದರಿಂದ ನಾನು ಅದನ್ನು ಹೇಗೆ ತಯಾರಿಸುವುದು ಎಂಬುದರ ಕುರಿತು ನನ್ನ ಅನುಭವವನ್ನು ಹಂಚಿಕೊಳ್ಳಲು ನಿರ್ಧರಿಸಿದೆ. ಸರಳ ಟೆಲಿಗ್ರಾಮ್ ಬೋಟ್ ಮತ್ತು ಅದೇ ಕಾರ್ಯವನ್ನು ಹೊಂದಿರುವ ಸೈಟ್ಗಾಗಿ Yandex.Alice ಕೌಶಲ್ಯ.
ಆದ್ದರಿಂದ, ವೆಬ್ ಸರ್ವರ್ ಅನ್ನು ಹೇಗೆ ಹೆಚ್ಚಿಸುವುದು ಮತ್ತು ssl ಪ್ರಮಾಣಪತ್ರವನ್ನು ಹೇಗೆ ಪಡೆಯುವುದು ಎಂದು ನಾನು ನಿಮಗೆ ಹೇಳುವುದಿಲ್ಲ, ಅದರ ಬಗ್ಗೆ ಸಾಕಷ್ಟು ಬರೆಯಲಾಗಿದೆ.
ಟೆಲಿಗ್ರಾಮ್ ಬೋಟ್ ರಚಿಸಲಾಗುತ್ತಿದೆ
ಮೊದಲಿಗೆ, ನಾವು ಟೆಲಿಗ್ರಾಮ್ ಬೋಟ್ ಅನ್ನು ರಚಿಸೋಣ, ಇದಕ್ಕಾಗಿ ನಾವು ಟೆಲಿಗ್ರಾಮ್ಗೆ ಹೋಗುತ್ತೇವೆ ಮತ್ತು ಅಲ್ಲಿ ಬೋಟ್ಫಾದರ್ ಬೋಟ್ ಅನ್ನು ಕಂಡುಹಿಡಿಯುತ್ತೇವೆ.
/ newbot ಆಯ್ಕೆಮಾಡಿ
ನಾವು ಅದು ಪ್ರತಿಕ್ರಿಯಿಸುವ ಬೋಟ್ನ ಹೆಸರನ್ನು ನಮೂದಿಸಿ, ನಂತರ ನಾವು ಬೋಟ್ನ ಹೆಸರನ್ನು ನಮೂದಿಸುತ್ತೇವೆ, ಪ್ರತಿಕ್ರಿಯೆಯಾಗಿ ನಾವು ಬೋಟ್ ಅನ್ನು ನಿಯಂತ್ರಿಸಲು ಟೋಕನ್ ಅನ್ನು ಪಡೆಯುತ್ತೇವೆ, ನಾವು ಈ ಕೀಲಿಯನ್ನು ಬರೆಯುತ್ತೇವೆ, ಅದು ಭವಿಷ್ಯದಲ್ಲಿ ನಮಗೆ ಉಪಯುಕ್ತವಾಗಿರುತ್ತದೆ.
ಬೋಟ್ನಿಂದ ಯಾವ ಸರ್ವರ್ಗೆ ಡೇಟಾವನ್ನು ಕಳುಹಿಸಬೇಕೆಂದು ಟೆಲಿಗ್ರಾಮ್ ಸರ್ವರ್ಗಳಿಗೆ ತಿಳಿಸುವುದು ಮುಂದಿನ ಹಂತವಾಗಿದೆ. ಇದನ್ನು ಮಾಡಲು, ನಾವು ಫಾರ್ಮ್ನ ಲಿಂಕ್ ಅನ್ನು ಮಾಡುತ್ತೇವೆ:
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);
}
ಈಗ ನೀವು ಅಸ್ಥಿರಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಬಹುದು:
$ಟೋಕನ್ಗಳು - ಈಗ ಬಳಕೆದಾರರು ನಮೂದಿಸಿದ ಎಲ್ಲಾ ಪದಗಳು ಇಲ್ಲಿವೆ
$user_id - ಇಲ್ಲಿ ಬಳಕೆದಾರ ಐಡಿ
$msg_chat_id - ಬೋಟ್ ಆಜ್ಞೆಯನ್ನು ಸ್ವೀಕರಿಸಿದ ಚಾಟ್
$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 ಗಾಗಿ ಕೌಶಲ್ಯ ಸ್ಕ್ರಿಪ್ಟ್
ಈಗ ಆಲಿಸ್ಗಾಗಿ ಸ್ಕ್ರಿಪ್ಟ್ಗೆ ಹೋಗೋಣ, ಇದು ಟೆಲಿಗ್ರಾಮ್ನಂತೆಯೇ ಇರುತ್ತದೆ.
ಬೋಟ್ ಮತ್ತು ಆಲಿಸ್ನಿಂದ ಸಂದೇಶಗಳನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಲಾಗುವ ಲೈಬ್ರರಿಯನ್ನು ನಾವು ಸಂಪರ್ಕಿಸುತ್ತೇವೆ, ಜೊತೆಗೆ ಆಲಿಸ್ಗಾಗಿ ತರಗತಿಗಳೊಂದಿಗೆ ಲೈಬ್ರರಿ:
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'];}
}
}
ಇಲ್ಲಿ ಕೆಲವು ಕಡಿಮೆ ವೇರಿಯೇಬಲ್ಗಳಿವೆ:
$ಟೋಕನ್ಗಳು - ಈಗ ಬಳಕೆದಾರರು ನಮೂದಿಸಿದ ಎಲ್ಲಾ ಪದಗಳು ಇಲ್ಲಿವೆ
$user_id - ಇಲ್ಲಿ ಬಳಕೆದಾರ ಐಡಿ
Yandex ನಿರಂತರವಾಗಿ ಪ್ರಕಟಿಸಿದ ಕೌಶಲ್ಯಗಳನ್ನು ಪಿಂಗ್ ಮಾಡುತ್ತದೆ ಮತ್ತು ಸಂದೇಶದ ಪೂರ್ಣ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಪ್ರಾರಂಭಿಸದೆ ಸ್ಕ್ರಿಪ್ಟ್ನಿಂದ ತಕ್ಷಣವೇ ನಿರ್ಗಮಿಸಲು ನಾನು ಸಾಲನ್ನು ಸೇರಿಸಿದೆ:
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