Yandex.Alisa thiab Telegram bot hauv PHP nrog tib lub luag haujlwm

Zoo tav su.

Muaj ntau cov lus hais txog lub ntsiab lus ntawm Telegram bots, tab sis ob peb tus neeg sau txog kev txawj ntse rau Alice, thiab kuv tsis pom cov ntaub ntawv yuav ua li cas thiaj ua tau ib lub bot, yog li kuv txiav txim siab los qhia kuv cov kev paub txog yuav ua li cas thiaj ua tau ib lub bot. yooj yim Telegram bot thiab Yandex.Alice txuj ci rau lub xaib muaj cov haujlwm zoo ib yam.

Yog li, kuv yuav tsis qhia koj yuav ua li cas tsa lub web server thiab tau txais daim ntawv pov thawj ssl, txaus tau sau txog nws.

Tsim ib tug Telegram bot

Ua ntej, cia peb tsim Telegram bot, rau qhov no peb mus rau Telegram thiab nrhiav BotFather bot nyob ntawd.

Yandex.Alisa thiab Telegram bot hauv PHP nrog tib lub luag haujlwm

Yandex.Alisa thiab Telegram bot hauv PHP nrog tib lub luag haujlwm

Xaiv /newbot

Yandex.Alisa thiab Telegram bot hauv PHP nrog tib lub luag haujlwm

Peb nkag mus rau lub npe ntawm tus bot uas nws yuav teb, ces peb sau lub npe ntawm bot, nyob rau hauv cov lus teb peb tau txais ib tug token los tswj lub bot, peb sau tus yuam sij no, nws yuav pab tau rau peb yav tom ntej.

Yandex.Alisa thiab Telegram bot hauv PHP nrog tib lub luag haujlwm

Cov kauj ruam tom ntej yog qhia rau Telegram servers uas server xa cov ntaub ntawv los ntawm bot mus rau. Txhawm rau ua qhov no, peb ua qhov txuas ntawm daim ntawv:

https: //api.telegram.org/bot___Π’ΠžΠšΠ•Π___/setWebhook?url=https://____ПУВЬ_Π”Πž_БКРПИВА___

___TOKEN___ peb hloov nrog peb token los ntawm bot, tau txais ua ntej

____PATH_TO_SCRIPT____ peb hloov nrog qhov chaw nyob ntawm tsab ntawv ntawm peb lub server qhov twg cov ntaub ntawv yuav raug ua tiav (piv txwv li, www.my_server.ru/webhook_telegram.php).

Muaj ib qho teeb meem ntawm no, api.telegram.org server tab tom thaiv, tab sis koj tuaj yeem ua qhov no: xauj lub server pheej yig tshaj qhov twg tsis muaj kev txwv thiab muab cov lus txib los ntawm lub console ntawm lub server no

wget ___ΠŸΠžΠ›Π£Π§Π˜Π’Π¨Π˜Π™Π‘Π―_АДРЕБ___

Qhov ntawd yog nws, Telegram bot yog tsim thiab txuas nrog koj lub server.

Tsim ib qho txuj ci rau Yandex.Alisa

Cia peb txav mus los tsim kev txawj rau Yandex.Alice.

Txhawm rau tsim cov txuj ci, koj yuav tsum mus rau nplooj ntawv Yandex.Dialogues developers Yandex.Dialogs tus tsim tawm nplooj, nyem qhov "Tsim kev sib tham" thiab xaiv "Skill in Alice".

Yandex.Alisa thiab Telegram bot hauv PHP nrog tib lub luag haujlwm

Cov txheej txheem kev txawj dialog yuav qhib.

Yandex.Alisa thiab Telegram bot hauv PHP nrog tib lub luag haujlwm

Peb pib nkag mus rau qhov kev txawj ntse.

Sau lub npe ntawm koj qhov kev txawj ntse.

Yandex.Alisa thiab Telegram bot hauv PHP nrog tib lub luag haujlwm

Lub npe qhib yuav tsum tau xaiv ua tib zoo kom Alice nkag siab nws kom raug, los ntawm nuances - daim ntawv thov mobile nrog Alice thiab txhua kab xws li Yandex.Station lossis Irbis A tuaj yeem nkag siab cov lus sib txawv.

Peb nkag mus rau txoj hauv kev rau tsab ntawv ntawm peb cov neeg rau zaub mov tib yam li Telegram, tab sis nws yuav yog tsab ntawv tshwj xeeb rau Alice, piv txwv li. www.my_server.ru/webhook_alice.php.

Yandex.Alisa thiab Telegram bot hauv PHP nrog tib lub luag haujlwm

Peb xaiv lub suab uas cov txuj ci yuav hais, Kuv nyiam Alice lub suab ntau dua.

Yandex.Alisa thiab Telegram bot hauv PHP nrog tib lub luag haujlwm

Yog tias koj npaj ua haujlwm tsuas yog hauv cov khoom siv mobile lossis hauv browser, xaiv "Koj xav tau lub cuab yeej nrog lub vijtsam."

Tom ntej no, nkag mus rau qhov chaw rau Alice's kev txawj ntawv teev npe. Yog tias koj npaj yuav siv lo lus "brand" rau kev ua kom tiav, koj yuav tsum txheeb xyuas lub vev xaib ntawm lub vev xaib webmaster.yandex.ru.

Yandex.Alisa thiab Telegram bot hauv PHP nrog tib lub luag haujlwm

Qhov ntawd yog txhua yam nrog cov kev teeb tsa, cia peb txav mus rau cov ntawv sau.

Telegram bot tsab ntawv

Cia peb pib nrog tsab ntawv rau Telegram.

Peb txuas lub tsev qiv ntawv uas cov lus los ntawm bot thiab Alice yuav ua tiav:

include_once 'webhook_parse.php';

Peb teeb lub token ntawm peb bot:

$tg_bot_token = "_____YOUR_BOT_TOKEN_____";

Peb tau txais cov ntaub ntawv:

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

Parsing cov ntaub ntawv rau hauv variables:

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

Tam sim no koj tuaj yeem ua haujlwm nrog cov hloov pauv:

$tokens - ntawm no yog tam sim no tag nrho cov lus uas tus neeg siv nkag

$user_id - tus neeg siv id ntawm no

$msg_chat_id - sib tham uas bot tau txais cov lus txib

$msg_user_name - username

Tom ntej no, peb hu rau Parse_Tokens muaj nuj nqi rau kev ua:

$Out_Str = Parse_Tokens($tokens);

Thiab xa lus teb:

Send_Out($user_id, $Out_Str);

Send_Out muaj nuj nqi yog yooj yim thiab zoo li no:

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

Skill tsab ntawv rau Yandex.Alisa

Tam sim no cia peb mus rau tsab ntawv rau Alice, nws yuav luag zoo ib yam li Telegram.

Peb kuj txuas lub tsev qiv ntawv uas cov lus los ntawm bot thiab Alice yuav ua tiav, ntxiv rau lub tsev qiv ntawv nrog cov chav kawm rau Alice:

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

Peb tau txais cov ntaub ntawv:

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

Parsing cov ntaub ntawv rau hauv variables:

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

Muaj ob peb qhov txawv txav ntawm no:

$tokens - ntawm no yog tam sim no tag nrho cov lus uas tus neeg siv nkag

$user_id - tus neeg siv id ntawm no

Yandex tas li pings tshaj tawm cov txuj ci, thiab kuv tau ntxiv ib kab kom tawm ntawm tsab ntawv tam sim yam tsis tau pib ua tiav cov lus:

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

Peb hu rau Parse_Tokens muaj nuj nqi rau kev ua, nws yog tib yam li Telegram:

$Out_Str = Parse_Tokens($tokens);

Thiab xa lus teb:

Send_Out($user_id, $Out_Str);

Lub Send_Out muaj nuj nqi yog qhov nyuaj ntawm no:

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

Ua tiav tsab ntawv rau Alice.

Cov ntawv sau Parse_Tokens nws tus kheej tau tsim los ua piv txwv nkaus xwb, koj tuaj yeem ua ib qho kev kuaj xyuas thiab ua tiav rau ntawd.

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

Yog tias koj xav tau kev sib txuas lus nrog tus neeg siv ntawm daim ntawv nyuaj tshaj li cov lus nug-lus teb, ces koj yuav tsum tau txuag tus neeg siv $user_id thiab cov ntaub ntawv twb tau txais los ntawm tus neeg siv hauv database (piv txwv li, mysql) thiab txheeb xyuas lawv hauv Parse_Tokens muaj nuj nqi.

Qhov tseeb, qhov no yuav luag txhua yam, yog tias txhua yam ua tiav, ces Telegram bot twb muaj lawm, Alice cov txuj ci tuaj yeem kuaj xyuas. dialogs.yandex.ru/developerlos ntawm kev mus rau koj cov txuj ci tshiab ntawm qhov kev sim tab.

Yandex.Alisa thiab Telegram bot hauv PHP nrog tib lub luag haujlwm

Yog tias txhua yam ua haujlwm raug, koj tuaj yeem xa cov txuj ci rau kev ua kom zoo los ntawm nias lub pob "Rau moderation".

Tam sim no koj muaj ob lub bots rau ntau lub platforms ib zaug, uas ua haujlwm tib yam.

Cov ntaub ntawv rau Yandex.Dialogues kev pabcuam S, SΡ“S,

Cov ntawv sau tag nrho muab tso rau ntawm github download.

Tau qhov twg los: www.hab.com

Ntxiv ib saib