ืืื ื ืึธืืืืืึธื.
ืขืก ืืขื ืขื ืึท ืคึผืืึทืฅ ืคืื ืึทืจืืืงืืขื ืืืืฃ ืืขืจ ืืขืืข ืคืื โโืืขืืขืืจืึทื ืืึธืฅ, ืึธืืขืจ ืืืืื ืืง ืืขื ืืฉื ืฉืจืืึทืื ืืืขืื ืกืงืืื ืคึฟืึทืจ ืึทืืืก, ืืื ืืื ืงืขื ื ืืฉื ืืขืคึฟืื ืขื ืงืืื ืืื ืคึฟืึธืจืืึทืฆืืข ืืืขืื ืืื ืฆื ืืึทืื ืึท ืืืื ืืึธื, ืึทืืื ืืื ืืึทืฉืืึธืกื ืฆื ืืืืื ืืืื ืืขืจืคืึทืจืื ื ืืื ืฆื ืืึทืื ืึท ืืึธื. ืคึผืฉืื ืืขืืขืืจืึทื ืืึธื ืืื ืื Yandex.Alice ืืงืืขืก ืคึฟืึทืจ ืื ืคึผืืึทืฅ ืืื ืื ืืขืืืข ืคืึทื ืืงืฉืึทื ืึทืืืื.
ืึทืืื, ืืื ืืืขื ื ืืฉื ืืึธืื ืืืจ ืืื ืฆื ืืึทืคึผื ืึท ืืืขื ืกืขืจืืืขืจ ืืื ืืึทืงืืืขื ืึท ssl ืืึทืืืืึทืื, ืืขื ืื ืืื ืืขืฉืจืืื ืืืขืื ืืื.
ืฉืึทืคึฟื ืึท ืืขืืขืืจืึทื ืืึธื
ืขืจืฉืืขืจ, ืืึธืืืจ ืืึทืื ืึท ืืขืืขืืจืึทื ืืึธื, ืคึฟืึทืจ ืืขื ืืืจ ืืืื ืฆื ืืขืืขืืจืึทื ืืื ืืขืคึฟืื ืขื ืื BotFather Bot ืืึธืจื.
ืงืืืึทืื / newbot
ืืืจ ืึทืจืืึทื ืื ื ืึธืืขื ืคืื ืื ืืึธื ืืืจื ืืืึธืก ืขืก ืืืขื ืจืืกืคึผืึทื ื, ืืขืืึธืื ืืืจ ืึทืจืืึทื ืื ื ืึธืืขื ืคืื ืื ืืึธื, ืืื ืขื ืืคืขืจ ืืืจ ืืึทืงืืืขื ืึท ืกืืืขื ืฆื ืงืึธื ืืจืึธืืืจื ืืขื ืืึธื, ืืืจ ืฉืจืืึทืื ืืขื ืฉืืืกื, ืขืก ืืืขื ืืืื ื ืืฆืืง ืคึฟืึทืจ ืืื ืื ืืื ืืขืจ ืฆืืงืื ืคึฟื.
ืืขืจ ืืืืึทืืขืจ ืฉืจืื ืืื ืฆื ืืึธืื ืื ืืขืืขืืจืึทื ืกืขืจืืืขืจืก ืฆื ืืืึธืก ืกืขืจืืืขืจ ืฆื ืฉืืงื ืืึทืื ืคึฟืื ืื ืืึธื. ืฆื ืืึธื ืืึธืก, ืืืจ ืืึทืื ืึท ืืื ืง ืคืื ืื ืคืึธืจืขื:
https: //api.telegram.org/bot___ะขะะะะ___/setWebhook?url=https://____ะะฃะขะฌ_ะะ_ะกะะ ะะะขะ___
___TOKEN___ ืืืจ ืคืึทืจืืืึทืื ืืื ืืื ืืืขืจ ืกืืืขื ืคืื ืื ืืึธื, ืืืงืืืขื ืคืจืืขืจ
____PATH_TO_SCRIPT____ ืืืจ ืคืึทืจืืืึทืื ืืื ืื ืึทืืจืขืก ืคืื ืื ืฉืจืืคื ืืืืฃ ืืื ืืืขืจ ืกืขืจืืืขืจ ืืื ืื ืืึทืื ืืืขื ืืืื ืคึผืจืึทืกืขืกื (ืืืฉื,
ืขืก ืืื ืึท ืคึผืจืึธืืืขื ืืึธ, ืืขืจ api.telegram.org ืกืขืจืืืขืจ ืืื ืืื ืืขืจ ืืืึทืงืื ื, ืึธืืขืจ ืืืจ ืงืขื ืขื ืืึธื ืืึธืก: ืืื ืืขื ืื ืืฉืืคึผืึทืกื ืกืขืจืืืขืจ ืืื ืขืก ืืขื ืขื ืงืืื ืจืืกืืจืืงืฉืึทื ื ืืื ืืขืื ืื ืืึทืคึฟืขื ืคืื ืื ืงืึทื ืกืึธืื ืคืื ืืขื ืกืขืจืืืขืจ.
wget ___ะะะะฃะงะะะจะะะกะฏ_ะะะ ะะก___
ืึทื ืก ืขืก, ืื ืืขืืขืืจืึทื ืืึธื ืืื ืืืฉืืคื ืืื ืงืึธื ื ืขืงืืขื ืฆื ืืืื ืกืขืจืืืขืจ.
ืฉืึทืคึฟื ืึท ืืงืืขืก ืคึฟืึทืจ ืืึทื ืืขืงืก.ืึทืืืกืึท
ืืื ืก ืืึทื ืืืืฃ ืฆื ืฉืึทืคึฟื ืึท ืืงืืขืก ืคึฟืึทืจ Yandex.Alice.
ืฆื ืฉืึทืคึฟื ืึท ืืงืืขืก, ืืืจ ืืึทืจืคึฟื ืฆื ืืืื ืฆื ืื Yandex.Dialoges ืืขืืืขืืึธืคึผืขืจืก ืืืึทื
ืืขืจ ืืืึทืืึธื ืคืื ืกืงืืื ืกืขืืืื ืืก ืืืขื ืขืคืขื ืขื.
ืืืจ ืึธื ืืืืื ืฆื ืึทืจืืึทื ืื ืกืงืืื ืกืขืืืื ืืก.
ืึทืจืืึทื ืื ื ืึธืืขื ืคืื ืืืื ืืงืืขืก.
ืื ืึทืงืืึทืืืืืฉืึทื ื ืึธืืขื ืืึธื ืืืื ืืืืกืืขืจืืืืืื ืืืืขืจ ืงืขืจืคืึทืื ืึทืืื ืึทื ืึทืืืก ืคึฟืึทืจืฉืืืื ืขืก ืจืืืืืง, ืคึฟืื ืื ื ืืึทื ืกืื - ืึท ืจืืจืขืืืืืง ืึทืคึผืืึทืงืืืฉืึทื ืืื ืึทืืืก ืืื ืฉืคืืืื ืืื Yandex.Station ืึธืืขืจ Irbis A ืงืขื ืขื ืืขื ืืืขืจืืขืจ ืึทื ืืขืจืฉ.
ืืืจ ืึทืจืืึทื ืืขื ืืจื ืฆื ืื ืฉืจืืคื ืืืืฃ ืืื ืืืขืจ ืกืขืจืืืขืจ ืืื ืื ืืขืืืข ืืืขื ืืื ืคึฟืึทืจ ืืขืืขืืจืึทื, ืึธืืขืจ ืขืก ืืืขื ืืืื ืึท ืฉืจืืคื ืกืคึผืึทืกืืคืืงืื ืคึฟืึทืจ ืึทืืืก, ืืืฉื
ืืืจ ืงืืืึทืื ืื ืงืื ืืื ืืืึธืก ืื ืืงืืขืก ืืืขื ืจืขืื, ืืื ืืื ืึทืืืก ืก ืงืื ืืขืจ.
ืืืื ืืืจ ืคึผืืึทื ืฆื ืึทืจืืขืื ืืืืื ืืืืฃ ืจืืจืขืืืืืง ืืขืืืืกืขืก ืึธืืขืจ ืืื ืึท ืืืขืืขืจืขืจ, โโืกืขืืขืงืืืจื "ืืืจ ืืึทืจืคึฟื ืึท ืืืื ืืื ืึท ืคืึทืจืฉืืขืื."
ืืขืจื ืึธื ืึทืจืืึทื ืื ืกืขืืืื ืืก ืคึฟืึทืจ ืึทืืืก ืก ืกืงืืื ืงืึทืืึทืืึธื. ืืืื ืืืจ ืคึผืืึทื ืฆื ื ืืฆื ืื ืืืึธืจื "ืกืึธืจื" ืคึฟืึทืจ ืึทืงืืึทืืืืืฉืึทื, ืืืจ ืืึทืจืคึฟื ืฆื ืืึทืฉืืขืืืงื ืื ืืืขืืืืืื ืคืื ืื ืกืึธืจื ืืื ืื ืืืขืmaster.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 - ืืึทื ืืฆืขืจ ืฉืืึทื ืืึธ
ืืึทื ืืขืงืก ืงืขืกืืืืขืจ ืคึผืื ืืก ืืจืืืก ืกืงืืื, ืืื ืืื ืฆืืืขืืขืื ืึท ืฉืืจื ืฆื ืืื ืึทืจืืืกืืึทื ื ืืขื ืฉืจืืคื ืึธื ืกืืึทืจืืื ื ืื ืคืื ืคึผืจืึทืกืขืกืื ื ืคืื ืืขื ืึธื ืืึธื:
if (strpos($tokens[0], "ping") > -1) {Send_Out("pong", "", true);}
ืืืจ ืจืืคื ืื Parse_Tokens ืคืื ืงืฆืืข ืคึฟืึทืจ ืคึผืจืึทืกืขืกืื ื, ืขืก ืืื ืื ืืขืืืข ืืื ืคึฟืึทืจ ืืขืืขืืจืึทื:
$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.Dialoges ืืื ืกื
ืืึทื ืฅ ืกืงืจืืคึผืก ืึทืจืืึทื ืืขืฉืืงื ืืืืฃ ืืืืืื
ืืงืืจ: www.habr.com