ื‘ื•ื˜ Yandex.Alisa ื•-Telegram ื‘-PHP ืขื ืื•ืชื” ืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช

ืฉึธืืœื•ึนื.

ื™ืฉ ื”ืจื‘ื” ืžืืžืจื™ื ื‘ื ื•ืฉื ื‘ื•ื˜ื™ื ืฉืœ ื˜ืœื’ืจื, ืื‘ืœ ืžืขื˜ ืื ืฉื™ื ื›ื•ืชื‘ื™ื ืขืœ ืžื™ื•ืžื ื•ื™ื•ืช ืขื‘ื•ืจ ืืœื™ืก, ื•ืœื ืžืฆืืชื™ ืฉื•ื ืžื™ื“ืข ืขืœ ืื™ืš ืœื™ืฆื•ืจ ื‘ื•ื˜ ื‘ื•ื“ื“, ืื– ื”ื—ืœื˜ืชื™ ืœืฉืชืฃ ืืช ื”ื ื™ืกื™ื•ืŸ ืฉืœื™ ืขืœ ืื™ืš ืœื™ืฆื•ืจ ื‘ื•ื˜ ื‘ื•ื“ื“. ื‘ื•ื˜ ื˜ืœื’ืจื ืคืฉื•ื˜ ื•ืžื™ื•ืžื ื•ืช Yandex.Alice ืขื‘ื•ืจ ื”ืืชืจ ื‘ืขืœ ืื•ืชื” ืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช.

ืื–, ืื ื™ ืœื ืื’ื™ื“ ืœืš ืื™ืš ืœื”ืขืœื•ืช ืฉืจืช ืื™ื ื˜ืจื ื˜ ื•ืœืงื‘ืœ ืชืขื•ื“ืช ssl, ืžืกืคื™ืง ื ื›ืชื‘ ืขืœ ื–ื”.

ื™ืฆื™ืจืช ื‘ื•ื˜ ืฉืœ ื˜ืœื’ืจื

ืจืืฉื™ืช, ื‘ื•ืื• ื ื™ืฆื•ืจ ื‘ื•ื˜ ืฉืœ ื˜ืœื’ืจื, ืœืฉื ื›ืš ื ืœืš ืœื˜ืœื’ืจื ื•ื ืžืฆื ืฉื ืืช ื”ื‘ื•ื˜ BotFather.

ื‘ื•ื˜ Yandex.Alisa ื•-Telegram ื‘-PHP ืขื ืื•ืชื” ืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช

ื‘ื•ื˜ Yandex.Alisa ื•-Telegram ื‘-PHP ืขื ืื•ืชื” ืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช

ื‘ื—ืจ /newbot

ื‘ื•ื˜ Yandex.Alisa ื•-Telegram ื‘-PHP ืขื ืื•ืชื” ืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช

ื ื–ื™ืŸ ืืช ืฉื ื”ื‘ื•ื˜ ืฉืœืคื™ื• ื”ื•ื ื™ื’ื™ื‘, ืœืื—ืจ ืžื›ืŸ ื ื–ื™ืŸ ืืช ืฉื ื”ื‘ื•ื˜, ื‘ืชื’ื•ื‘ื” ื ืงื‘ืœ ืืกื™ืžื•ืŸ ืœืฉืœื™ื˜ื” ื‘ื‘ื•ื˜, ื ืจืฉื•ื ืืช ื”ืžืคืชื— ื”ื–ื”, ื–ื” ื™ื”ื™ื” ืฉื™ืžื•ืฉื™ ืขื‘ื•ืจื ื• ื‘ืขืชื™ื“.

ื‘ื•ื˜ Yandex.Alisa ื•-Telegram ื‘-PHP ืขื ืื•ืชื” ืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช

ื”ืฉืœื‘ ื”ื‘ื ื”ื•ื ืœื•ืžืจ ืœืฉืจืชื™ ื”ื˜ืœื’ืจื ืœืื™ื–ื” ืฉืจืช ืœืฉืœื•ื— ื ืชื•ื ื™ื ืžื”ื‘ื•ื˜. ืœืฉื ื›ืš, ืื ื• ื™ื•ืฆืจื™ื ืงื™ืฉื•ืจ ืœื˜ื•ืคืก:

https: //api.telegram.org/bot___ะขะžะšะ•ะ___/setWebhook?url=https://____ะŸะฃะขะฌ_ะ”ะž_ะกะšะ ะŸะ˜ะขะ___

___TOKEN___ ืื ื• ืžื—ืœื™ืคื™ื ื‘ื˜ื•ืงืŸ ืฉืœื ื• ืžื”ื‘ื•ื˜, ืฉื”ืชืงื‘ืœ ืงื•ื“ื ืœื›ืŸ

____PATH_TO_SCRIPT____ ืื ื• ืžื—ืœื™ืคื™ื ื‘ื›ืชื•ื‘ืช ืฉืœ ื”ืกืงืจื™ืคื˜ ื‘ืฉืจืช ืฉืœื ื• ืฉื‘ื• ื”ื ืชื•ื ื™ื ื™ืขื•ื‘ื“ื• (ืœื“ื•ื’ืžื”, www.my_server.ru/webhook_telegram.php).

ื™ืฉ ื›ืืŸ ื‘ืขื™ื”, ืฉืจืช api.telegram.org ื ืžืฆื ืชื—ืช ื—ืกื™ืžื”, ืื‘ืœ ืืชื” ื™ื›ื•ืœ ืœืขืฉื•ืช ื–ืืช: ืœืฉื›ื•ืจ ืืช ื”ืฉืจืช ื”ื–ื•ืœ ื‘ื™ื•ืชืจ ืฉื‘ื• ืื™ืŸ ื”ื’ื‘ืœื•ืช ื•ืœืชืช ืืช ื”ืคืงื•ื“ื” ืžื”ืžืกื•ืฃ ืฉืœ ื”ืฉืจืช ื”ื–ื”

wget ___ะŸะžะ›ะฃะงะ˜ะ’ะจะ˜ะ™ะกะฏ_ะะ”ะ ะ•ะก___

ื–ื”ื•, ื”ื‘ื•ื˜ ืฉืœ ื”ื˜ืœื’ืจื ื ื•ืฆืจ ื•ืžื—ื•ื‘ืจ ืœืฉืจืช ืฉืœืš.

ื™ืฆื™ืจืช ืžื™ื•ืžื ื•ืช ืขื‘ื•ืจ Yandex.Alisa

ื‘ื•ืื• ื ืขื‘ื•ืจ ืœื™ืฆื™ืจืช ืžื™ื•ืžื ื•ืช ืขื‘ื•ืจ Yandex.Alice.

ื›ื“ื™ ืœื™ืฆื•ืจ ืžื™ื•ืžื ื•ืช, ืขืœื™ืš ืœืขื‘ื•ืจ ืœื“ืฃ ื”ืžืคืชื—ื™ื ืฉืœ Yandex.Dialogues ื“ืฃ ื”ืžืคืชื—ื™ื ืฉืœ Yandex.Dialogs, ืœื—ืฅ ืฉื "ืฆื•ืจ ื“ื™ืืœื•ื’" ื•ื‘ื—ืจ "ืžื™ื•ืžื ื•ืช ื‘ืืœื™ืก".

ื‘ื•ื˜ Yandex.Alisa ื•-Telegram ื‘-PHP ืขื ืื•ืชื” ืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช

ืชื™ืคืชื— ืชื™ื‘ืช ื”ื“ื•-ืฉื™ื— ืฉืœ ื”ื’ื“ืจื•ืช ื”ืžื™ื•ืžื ื•ืช.

ื‘ื•ื˜ Yandex.Alisa ื•-Telegram ื‘-PHP ืขื ืื•ืชื” ืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช

ืื ื• ืžืชื—ื™ืœื™ื ืœื”ื™ื›ื ืก ืœื”ื’ื“ืจื•ืช ื”ืžื™ื•ืžื ื•ืช.

ื”ื–ืŸ ืืช ืฉื ื”ืžื™ื•ืžื ื•ืช ืฉืœืš.

ื‘ื•ื˜ Yandex.Alisa ื•-Telegram ื‘-PHP ืขื ืื•ืชื” ืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช

ื™ืฉ ืœื‘ื—ื•ืจ ืืช ืฉื ื”ื”ืคืขืœื” ื‘ืงืคื™ื“ื” ืจื‘ื” ื›ื“ื™ ืฉืืœื™ืก ืชื‘ื™ืŸ ืื•ืชื• ื ื›ื•ืŸ, ืžืชื•ืš ื”ื ื™ื•ืื ืกื™ื - ืืคืœื™ืงืฆื™ื” ืกืœื•ืœืจื™ืช ืขื ืืœื™ืก ื•ืขืžื•ื“ื•ืช ื›ืžื• Yandex.Station ืื• Irbis A ื™ื›ื•ืœื” ืœืชืคื•ืก ืžื™ืœื™ื ืื—ืจืช.

ืื ื—ื ื• ืžื›ื ื™ืกื™ื ืืช ื”ื ืชื™ื‘ ืœืกืงืจื™ืคื˜ ื‘ืฉืจืช ืฉืœื ื• ื‘ืื•ืชื• ืื•ืคืŸ ื›ืžื• ืœื˜ืœื’ืจื, ืื‘ืœ ื–ื” ื™ื”ื™ื” ืกืงืจื™ืคื˜ ืกืคืฆื™ืคื™ ืœืืœื™ืก, ืœืžืฉืœ www.my_server.ru/webhook_alice.php.

ื‘ื•ื˜ Yandex.Alisa ื•-Telegram ื‘-PHP ืขื ืื•ืชื” ืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช

ืื ื—ื ื• ื‘ื•ื—ืจื™ื ืืช ื”ืงื•ืœ ืื™ืชื• ื”ืžื™ื•ืžื ื•ืช ืชื“ื‘ืจ, ืื ื™ ืื•ื”ื‘ ื™ื•ืชืจ ืืช ื”ืงื•ืœ ืฉืœ ืืœื™ืก.

ื‘ื•ื˜ Yandex.Alisa ื•-Telegram ื‘-PHP ืขื ืื•ืชื” ืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช

ืื ืืชื” ืžืชื›ื ืŸ ืœืขื‘ื•ื“ ืจืง ื‘ืžื›ืฉื™ืจื™ื ื ื™ื™ื“ื™ื ืื• ื‘ื“ืคื“ืคืŸ, ื‘ื—ืจ "ืืชื” ืฆืจื™ืš ืžื›ืฉื™ืจ ืขื ืžืกืš".

ืœืื—ืจ ืžื›ืŸ, ื”ื™ื›ื ืก ืœื”ื’ื“ืจื•ืช ืขื‘ื•ืจ ืงื˜ืœื•ื’ ื”ื›ื™ืฉื•ืจื™ื ืฉืœ ืืœื™ืก. ืื ืืชื” ืžืชื›ื ืŸ ืœื”ืฉืชืžืฉ ื‘ืžื™ืœื” "ืžื•ืชื’" ืœื”ืคืขืœื”, ืขืœื™ืš ืœืืžืช ืืช ืืชืจ ื”ืื™ื ื˜ืจื ื˜ ืฉืœ ื”ืžื•ืชื’ ื‘ืฉื™ืจื•ืช webmaster.yandex.ru.

ื‘ื•ื˜ Yandex.Alisa ื•-Telegram ื‘-PHP ืขื ืื•ืชื” ืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช

ื–ื” ื”ื›ืœ ืขื ื”ื”ื’ื“ืจื•ืช, ื‘ื•ืื• ื ืขื‘ื•ืจ ืœืชืกืจื™ื˜ื™ื.

ืชืกืจื™ื˜ ื‘ื•ื˜ ืฉืœ ื˜ืœื’ืจื

ื ืชื—ื™ืœ ืขื ืชืกืจื™ื˜ ืœื˜ืœื’ืจื.

ืื ื• ืžื—ื‘ืจื™ื ืืช ื”ืกืคืจื™ื™ื” ืฉื‘ื” ื™ืขื•ื‘ื“ื• ื”ื•ื“ืขื•ืช ืžื”ื‘ื•ื˜ ื•ืžืืœื™ืก:

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.

ืœืžืขืฉื”, ื–ื” ื›ืžืขื˜ ื”ื›ืœ, ืื ื”ื›ืœ ื ืขืฉื” ื ื›ื•ืŸ, ืื– ื”ื‘ื•ื˜ ืฉืœ ื”ื˜ืœื’ืจื ื›ื‘ืจ ื–ืžื™ืŸ, ื ื™ืชืŸ ืœื‘ื“ื•ืง ืืช ื”ืžื™ื•ืžื ื•ืช ืฉืœ ืืœื™ืก dialogs.yandex.ru/developerืขืœ ื™ื“ื™ ืžืขื‘ืจ ืœืžื™ื•ืžื ื•ืช ื”ื—ื“ืฉื” ืฉืœืš ื‘ื›ืจื˜ื™ืกื™ื™ืช ื”ื‘ื“ื™ืงื•ืช.

ื‘ื•ื˜ Yandex.Alisa ื•-Telegram ื‘-PHP ืขื ืื•ืชื” ืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช

ืื ื”ื›ืœ ืขื•ื‘ื“ ื›ืžื• ืฉืฆืจื™ืš, ืืชื” ื™ื›ื•ืœ ืœืฉืœื•ื— ืืช ื”ืžื™ื•ืžื ื•ืช ืœื ื™ื”ื•ืœ ืขืœ ื™ื“ื™ ืœื—ื™ืฆื” ืขืœ ื›ืคืชื•ืจ "ืœื ื™ื”ื•ืœ".

ืขื›ืฉื™ื• ื™ืฉ ืœืš ืฉื ื™ ื‘ื•ื˜ื™ื ืœืคืœื˜ืคื•ืจืžื•ืช ืฉื•ื ื•ืช ื‘ื• ื–ืžื ื™ืช, ืฉืคื•ืขืœื™ื ื‘ืื•ืชื• ืื•ืคืŸ.

ืชื™ืขื•ื“ ืขื‘ื•ืจ ืฉื™ืจื•ืช Yandex.Dialogues ื›ืืŸ

ืกืงืจื™ืคื˜ื™ื ืžืœืื™ื ืฉืคื•ืจืกืžื• ื‘-github ืœื”ื•ืจื™ื“.

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”