Yandex.Alisa na Telegram bot na PHP nwere otu ọrụ ahụ

Ezi ehihie.

Enwere ọtụtụ akụkọ na isiokwu nke bots Telegram, mana mmadụ ole na ole na-ede maka nka maka Alice, ahụghịkwa m ozi ọ bụla gbasara otu esi eme otu bot, yabụ ekpebiri m ịkọrọ ahụmịhe m banyere otu esi eme a. mfe Telegram bot na Yandex.Alice nka maka saịtị nwere otu ọrụ.

Yabụ, agaghị m agwa gị otu esi ebulite sava weebụ wee nweta asambodo ssl, edeela ya nke ọma.

Ịmepụta bot Telegram

Nke mbụ, ka anyị mepụta bot Telegram, maka nke a, anyị na-aga Telegram wee chọta BotFather bot n'ebe ahụ.

Yandex.Alisa na Telegram bot na PHP nwere otu ọrụ ahụ

Yandex.Alisa na Telegram bot na PHP nwere otu ọrụ ahụ

Họrọ / ọhụrụbot

Yandex.Alisa na Telegram bot na PHP nwere otu ọrụ ahụ

Anyị na-abanye aha bot nke ọ ga-aza, wee tinye aha bot, na nzaghachi anyị na-enweta akara iji chịkwaa bot, anyị na-edepụta igodo a, ọ ga-abara anyị uru n'ọdịnihu.

Yandex.Alisa na Telegram bot na PHP nwere otu ọrụ ahụ

Nzọụkwụ ọzọ bụ ịgwa ndị sava Telegram nke sava ha ga-eziga data site na bot gaa. Iji mee nke a, anyị na-eme njikọ nke ụdị:

https: //api.telegram.org/bot___ТОКЕН___/setWebhook?url=https://____ПУТЬ_ДО_СКРПИТА___

___TOKEN____ anyị jiri akara ngosi si na bot dochie ya na mbụ

____PATH_TO_SCRIPT____ anyị na-eji adreesị nke edemede dị na sava anyị dochie data ebe a ga-ahazi data (dịka ọmụmaatụ, www.my_server.ru/webhook_telegram.php).

Enwere nsogbu ebe a, ihe nkesa api.telegram.org nọ na-egbochi, mana ị nwere ike ime nke a: gbazite ihe nkesa dị ọnụ ala ebe enweghị ihe mgbochi ma nye iwu site na njikwa nke ihe nkesa a.

wget ___ПОЛУЧИВШИЙСЯ_АДРЕС___

Nke ahụ bụ ya, a na-emepụta bot Telegram ma jikọọ na sava gị.

Ịmepụta nka maka Yandex.Alisa

Ka anyị gaa n'ihu n'ịmepụta nka maka Yandex.Alice.

Iji mepụta nka, ịkwesịrị ịga na ibe ndị mmepe Yandex.Dialogues Yandex.Dialogs ibe onye nrụpụta, pịa ebe ahụ "Mepụta mkparịta ụka" wee họrọ "Skill in Alice".

Yandex.Alisa na Telegram bot na PHP nwere otu ọrụ ahụ

Mkparịta ụka ntọala nka ga-emeghe.

Yandex.Alisa na Telegram bot na PHP nwere otu ọrụ ahụ

Anyị na-amalite ịbanye nka ntọala.

Tinye aha nka gị.

Yandex.Alisa na Telegram bot na PHP nwere otu ọrụ ahụ

Ekwesịrị ịhọrọ nke ọma nke ọma ka Alice ghọta ya nke ọma, site na nuances - ngwa mkpanaka nwere Alice na ogidi dị ka Yandex.Station ma ọ bụ Irbis A nwere ike ịghọta okwu dị iche iche.

Anyị na-abanye n'ụzọ nke edemede na ihe nkesa anyị n'otu ụzọ ahụ maka Telegram, mana ọ ga-abụ edemede kpọmkwem maka Alice, dịka ọmụmaatụ. www.my_server.ru/webhook_alice.php.

Yandex.Alisa na Telegram bot na PHP nwere otu ọrụ ahụ

Anyị na-ahọrọ olu nke nka ga-eji kwuo okwu, olu Alice na-amasị m karịa.

Yandex.Alisa na Telegram bot na PHP nwere otu ọrụ ahụ

Ọ bụrụ na ị na-eme atụmatụ ịrụ ọrụ naanị na ngwaọrụ mkpanaka ma ọ bụ na ihe nchọgharị, wee họrọ "Ịchọrọ ngwaọrụ nwere ihuenyo."

Ọzọ, tinye ntọala maka katalọgụ nka nka Alice. Ọ bụrụ na ị na-eme atụmatụ iji okwu "akara" maka ịgbalite, ịkwesịrị ịlele webụsaịtị ika na ọrụ webmaster.yandex.ru.

Yandex.Alisa na Telegram bot na PHP nwere otu ọrụ ahụ

Nke ahụ bụ ihe niile na ntọala, ka anyị gaa na scripts.

Ederede bot Telegram

Ka anyị jiri edemede maka Telegram bido.

Anyị jikọtara ọbá akwụkwọ ebe a ga-ahazi ozi sitere na bot na Alice:

include_once 'webhook_parse.php';

Anyị debere akara nke bot anyị:

$tg_bot_token = "_____YOUR_BOT_TOKEN_____";

Anyị na-enweta data:

$request = file_get_contents('php://input');
$request = json_decode($request, TRUE);

Na-atụgharị data na mgbanwe:

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);
}

Ugbu a ị nwere ike ịrụ ọrụ na variables:

$tokens - ebe a bụ okwu niile onye ọrụ tinyere

$user_id - id onye ọrụ ebe a

$msg_chat_id - nkata nke bot nwetara iwu

$msg_user_name - aha njirimara

Ọzọ, anyị na-akpọ ọrụ Parse_Tokens maka nhazi:

$Out_Str = Parse_Tokens($tokens);

Ma ziga nzaghachi:

Send_Out($user_id, $Out_Str);

Ọrụ Send_Out dị mfe ma yie nke a:

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);
}

Edemede nka maka Yandex.Alisa

Ugbu a, ka anyị gaa n'ihu na edemede maka Alice, ọ fọrọ nke nta ka ọ bụrụ otu maka Telegram.

Anyị jikọtara ọbá akwụkwọ ebe a ga-ahazi ozi sitere na bot na Alice, gbakwunyere ọbá akwụkwọ nwere klaasị Alice:

include_once 'classes_alice.php';
include_once 'webhook_parse.php';

Anyị na-enweta data:

$data = json_decode(trim(file_get_contents('php://input')), true);

Na-atụgharị data na mgbanwe:

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'];}
  }
}

Enwere mgbanwe ole na ole ebe a:

$tokens - ebe a bụ okwu niile onye ọrụ tinyere

$user_id - id onye ọrụ ebe a

Yandex na-ebipụta nka mgbe niile, agbakwunyere m ahịrị ka ị pụọ ozugbo na edemede ahụ na-amaliteghị nhazi ozi ahụ:

  if (strpos($tokens[0], "ping") > -1)     {Send_Out("pong", "", true);}

Anyị na-akpọ ọrụ Parse_Tokens maka nhazi, ọ bụ otu maka Telegram:

$Out_Str = Parse_Tokens($tokens);

Ma ziga nzaghachi:

Send_Out($user_id, $Out_Str);

Ọrụ Send_Out dị mgbagwoju anya ebe a:

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();
}

Emechaala edemede maka Alice.

Edemede nhazi Parse_Tokens n'onwe ya bụ naanị maka ọmụmaatụ, ị nwere ike ịme nlele na nhazi ọ bụla ebe ahụ.

function Parse_Tokens($tokens)
{
  $out = "";
  // do something with tokens //
  $out =  "Your eneter " . count($tokens) . " words: " . implode($tokens, " ");
  return $out;
}

Ọ bụrụ na ịchọrọ ka gị na onye ọrụ nwee ụdị dị mgbagwoju anya karịa azịza ajụjụ, ị ga-achọ ịchekwa $user_id onye ọrụ yana data enwetagoro n'aka onye ọrụ na nchekwa data (dịka ọmụmaatụ, mysql) wee nyochaa ha na ya. ọrụ Parse_Tokens.

N'ezie, nke a fọrọ nke nta ka ọ bụrụ ihe niile, ọ bụrụ na emechara ihe niile nke ọma, mgbe ahụ bot Telegram adịlarị, enwere ike ịlele nka Alice. dialogs.yandex.ru/developersite na ịga na nka ọhụrụ gị na taabụ ule.

Yandex.Alisa na Telegram bot na PHP nwere otu ọrụ ahụ

Ọ bụrụ na ihe niile na-arụ ọrụ nke ọma, ị nwere ike izipu nkà maka imeru ihe n'ókè site na ịpị bọtịnụ "Maka imeru ihe".

Ugbu a ị nwere bots abụọ maka nyiwe dị iche iche n'otu oge, nke na-arụ ọrụ n'otu ụzọ ahụ.

Akwụkwọ maka ọrụ Yandex.Dialogues ebe a

Ebiputere n'uju edemede na github скачать.

isi: www.habr.com

Tinye a comment