ืฉึธืืืึนื.
ืืฉ ืืจืื ืืืืจืื ืื ืืฉื ืืืืื ืฉื ืืืืจื, ืืื ืืขื ืื ืฉืื ืืืชืืื ืขื ืืืืื ืืืืช ืขืืืจ ืืืืก, ืืื ืืฆืืชื ืฉืื ืืืืข ืขื ืืื ืืืฆืืจ ืืื ืืืื, ืื ืืืืืชื ืืฉืชืฃ ืืช ืื ืืกืืื ืฉืื ืขื ืืื ืืืฆืืจ ืืื ืืืื. ืืื ืืืืจื ืคืฉืื ืืืืืื ืืช Yandex.Alice ืขืืืจ ืืืชืจ ืืขื ืืืชื ืคืื ืงืฆืืื ืืืืช.
ืื, ืื ื ืื ืืืื ืื ืืื ืืืขืืืช ืฉืจืช ืืื ืืจื ื ืืืงืื ืชืขืืืช ssl, ืืกืคืืง ื ืืชื ืขื ืื.
ืืฆืืจืช ืืื ืฉื ืืืืจื
ืจืืฉืืช, ืืืื ื ืืฆืืจ ืืื ืฉื ืืืืจื, ืืฉื ืื ื ืื ืืืืืจื ืื ืืฆื ืฉื ืืช ืืืื BotFather.
ืืืจ /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);
}
ืขืืฉืื ืืชื ืืืื ืืขืืื ืขื ืืฉืชื ืื:
$tokens - ืื ื ืืขืช ืื ืืืืืื ืฉืืืฉืชืืฉ ืืืื
$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'];}
}
}
ืืฉ ืืื ืืื ืืฉืชื ืื ืคืืืช:
$tokens - ืื ื ืืขืช ืื ืืืืืื ืฉืืืฉืชืืฉ ืืืื
$user_id - ืืืื ืืฉืชืืฉ ืืื
Yandex ืื ืืืื ืคืื ื ืืืืื ืืืืช ืฉืคืืจืกืื, ืืืืกืคืชื ืฉืืจื ืืื ืืฆืืช ืืื ืืืกืงืจืืคื ืืืื ืืืชืืื ืืขืืืื ืืืื ืฉื ืืืืืขื:
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 ืขืฆืื ื ืืฆืจ ืจืง ืืืืืื, ืืชื ืืืื ืืขืฉืืช ืื ืืืืงื ืืขืืืื ืฉื.
function Parse_Tokens($tokens)
{
$out = "";
// do something with tokens //
$out = "Your eneter " . count($tokens) . " words: " . implode($tokens, " ");
return $out;
}
ืื ืืชื ืฆืจืื ืืชืงืฉืจ ืขื ืืฉืชืืฉ ืืฆืืจื ืืืจืืืช ืืืชืจ ืืืฉืจ ืฉืืื-ืชืฉืืื, ืื ืชืฆืืจื ืืฉืืืจ ืืช $user_id ืฉื ืืืฉืชืืฉ ืืืช ืื ืชืื ืื ืฉืืืจ ืืชืงืืื ืืืืฉืชืืฉ ืืืกื ืื ืชืื ืื (ืืืืืื, mysql) ืืื ืชื ืืืชื ื- ืืคืื ืงืฆืื Parse_Tokens.
ืืืขืฉื, ืื ืืืขื ืืื, ืื ืืื ื ืขืฉื ื ืืื, ืื ืืืื ืฉื ืืืืืจื ืืืจ ืืืื, ื ืืชื ืืืืืง ืืช ืืืืืื ืืช ืฉื ืืืืก
ืื ืืื ืขืืื ืืื ืฉืฆืจืื, ืืชื ืืืื ืืฉืืื ืืช ืืืืืื ืืช ืื ืืืื ืขื ืืื ืืืืฆื ืขื ืืคืชืืจ "ืื ืืืื".
ืขืืฉืื ืืฉ ืื ืฉื ื ืืืืื ืืคืืืคืืจืืืช ืฉืื ืืช ืื ืืื ืืช, ืฉืคืืขืืื ืืืืชื ืืืคื.
ืชืืขืื ืขืืืจ ืฉืืจืืช Yandex.Dialogues
ืกืงืจืืคืืื ืืืืื ืฉืคืืจืกืื ื-github
ืืงืืจ: www.habr.com