Yandex.Alisa le Telegraph bot ho PHP ka ts'ebetso e ts'oanang

Thapama.

Ho na le lingoliloeng tse ngata tse mabapi le bots ea Telegraph, empa ke batho ba fokolang ba ngolang ka litsebo tsa Alice, 'me ha kea ka ka fumana tlhahisoleseling mabapi le mokhoa oa ho etsa bot e le' ngoe, kahoo ke ile ka etsa qeto ea ho arolelana phihlelo ea ka mabapi le mokhoa oa ho etsa bot. bot e bonolo ea Telegraph le tsebo ea Yandex.Alice bakeng sa sebaka se nang le ts'ebetso e ts'oanang.

Kahoo, nke ke ka u bolella mokhoa oa ho phahamisa seva sa marang-rang le ho fumana setifikeiti sa ssl, ho lekane ho ngotsoe ka eona.

Ho theha bot ea Telegraph

Taba ea pele, ha re theheng bot ea Telegraph, bakeng sa sena re ea Telegraph mme re fumana botFather bot moo.

Yandex.Alisa le Telegraph bot ho PHP ka ts'ebetso e ts'oanang

Yandex.Alisa le Telegraph bot ho PHP ka ts'ebetso e ts'oanang

Khetha /newbot

Yandex.Alisa le Telegraph bot ho PHP ka ts'ebetso e ts'oanang

Re kenya lebitso la bot eo e tla arabela ka eona, ebe re kenya lebitso la bot, ha re arabela re fumana letšoao la ho laola bot, re ngola senotlolo sena, se tla ba molemo ho rona nakong e tlang.

Yandex.Alisa le Telegraph bot ho PHP ka ts'ebetso e ts'oanang

Mohato o latelang ke ho bolella li-server tsa Telegraph hore na ke seva sefe se lokelang ho romella data ho tsoa bot ho. Ho etsa sena, re etsa sehokelo sa foromo:

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

___TOKEN___ re kenya lets'oao la rona ho tsoa bot, e amohetseng pejana

____PATH_TO_SCRIPT____ re nkela sebaka ka aterese ea script ho seva sa rona moo data e tla sebetsoa (mohlala, www.my_server.ru/webhook_telegram.php).

Ho na le bothata mona, seva sa api.telegram.org se ntse se thibetsoe, empa u ka etsa sena: hira seva e theko e tlaase moo ho se nang lithibelo 'me u fane ka taelo e tsoang ho console ea seva sena.

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

Ke phetho, bot ea Telegraph e entsoe mme e hokahantsoe le seva sa hau.

Ho theha tsebo ea Yandex.Alisa

Ha re tsoeleng pele ho theha tsebo ea Yandex.Alice.

Ho theha bokhoni, o hloka ho ea leqepheng la baetsi ba Yandex.Dialogues Leqephe la moqapi oa Yandex.Dialogs, tobetsa moo "Etsa puisano" 'me u khethe "Skill in Alice".

Yandex.Alisa le Telegraph bot ho PHP ka ts'ebetso e ts'oanang

Puisano ea litlhophiso tsa bokhoni e tla buleha.

Yandex.Alisa le Telegraph bot ho PHP ka ts'ebetso e ts'oanang

Re qala ho kenya litlhophiso tsa bokhoni.

Kenya lebitso la tsebo ea hau.

Yandex.Alisa le Telegraph bot ho PHP ka ts'ebetso e ts'oanang

Lebitso la ts'ebetso le lokela ho khethoa ka hloko haholo e le hore Alice a le utloisise ka nepo, ho tloha ho li-nuances - sesebelisoa sa selefouno se nang le Alice le likholomo tse kang Yandex.Station kapa Irbis A li ka lemoha mantsoe ka tsela e fapaneng.

Re kenya tsela e eang ho script ho seva sa rona ka tsela e ts'oanang le ea Telegraph, empa e tla ba script ka ho khetheha bakeng sa Alice, mohlala. www.my_server.ru/webhook_alice.php.

Yandex.Alisa le Telegraph bot ho PHP ka ts'ebetso e ts'oanang

Re khetha lentsoe leo bokhoni bo tla bua ka lona, ​​​​ke rata lentsoe la Alice haholoanyane.

Yandex.Alisa le Telegraph bot ho PHP ka ts'ebetso e ts'oanang

Haeba u rerile ho sebetsa feela ka lisebelisoa tsa mohala kapa ho sebatli, khetha "U hloka sesebelisoa se nang le skrine."

E latelang, kenya litlhophiso tsa lethathamo la litsebo tsa Alice. Haeba u rerile ho sebelisa lentsoe "brand" bakeng sa ts'ebetsong, u lokela ho netefatsa sebaka sa marang-rang sa marang-rang ho webmaster.yandex.ru tšebeletso.

Yandex.Alisa le Telegraph bot ho PHP ka ts'ebetso e ts'oanang

Ke tsohle tse nang le li-setting, ha re feteleng ho li-script.

Telegraph bot script

Ha re qaleng ka mongolo oa Telegraph.

Re hokahanya laebrari moo melaetsa e tsoang ho bot le Alice e tla sebetsoa:

include_once 'webhook_parse.php';

Re beha letšoao la bot ea rona:

$tg_bot_token = "_____YOUR_BOT_TOKEN_____";

Re fumana lintlha:

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

Ho arola data ka mefuta e fapaneng:

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

Hona joale o ka sebetsa le mefuta e fapaneng:

$tokens - mona ke mantsoe ohle ao mosebelisi a a kentseng

$user_id - id ea mosebelisi mona

$msg_chat_id - qoqa moo bot e amohetseng taelo

$msg_user_name - lebitso la mosebelisi

E latelang, re bitsa mosebetsi oa Parse_Tokens bakeng sa ho sebetsa:

$Out_Str = Parse_Tokens($tokens);

'Me u romelle karabo:

Send_Out($user_id, $Out_Str);

mosebetsi oa Send_Out o bonolo ebile o shebahala tjena:

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 script bakeng sa Yandex.Alisa

Joale ha re feteleng ho script bakeng sa Alice, e batla e tšoana le ea Telegraph.

Re boetse re hokela laeborari moo melaetsa e tsoang bot le Alice e tla sebetsoa, ​​hammoho le laeborari e nang le litlelase tsa Alice:

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

Re fumana lintlha:

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

Ho arola data ka mefuta e fapaneng:

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

Ho na le likhetho tse 'maloa mona:

$tokens - mona ke mantsoe ohle ao mosebelisi a a kentseng

$user_id - id ea mosebelisi mona

Yandex e lula e penya litsebo tse hatisitsoeng, 'me ke kentse mohala ho tsoa hang-hang ntle le ho qala ts'ebetso e felletseng ea molaetsa:

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

Re bitsa mosebetsi oa Parse_Tokens bakeng sa ts'ebetso, o tšoana le oa Telegraph:

$Out_Str = Parse_Tokens($tokens);

'Me u romelle karabo:

Send_Out($user_id, $Out_Str);

Mosebetsi oa Send_Out o rarahane ho feta mona:

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

O qetile mongolo oa Alice.

Sengoloa sa ts'ebetso sa Parse_Tokens ka boeona se entsoe mohlala feela, o ka etsa licheke le ho sebetsa moo.

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

Haeba o hloka ho buisana le mosebelisi oa foromo e rarahaneng ho feta karabo ea potso, joale o tla hloka ho boloka $user_id ea mosebelisi le data e seng e amohetsoe ho tsoa ho mosebelisi sebakeng sa polokelo ea litaba (mohlala, mysql) le ho li sekaseka ho mosebetsi oa Parse_Tokens.

Ha e le hantle, sena ke hoo e batlang e le ntho e 'ngoe le e' ngoe, haeba ntho e 'ngoe le e' ngoe e etsoa ka nepo, joale bot ea Telegram e se e fumaneha, bokhoni ba Alice bo ka hlahlojoa. dialogs.yandex.ru/developerka ho ea ho tsebo ea hau e ncha tabeng ea teko.

Yandex.Alisa le Telegraph bot ho PHP ka ts'ebetso e ts'oanang

Haeba ntho e 'ngoe le e' ngoe e sebetsa ka nepo, o ka romela tsebo ea ho lekanya ka ho tobetsa konopo ea "Ho lekanya".

Hona joale o na le li-bots tse peli tsa li-platform tse fapaneng ka nako e le 'ngoe, tse sebetsang ka tsela e ts'oanang.

Litokomane tsa tšebeletso ea Yandex.Dialogues mona

Lingoloa tse felletseng li kentsoe ho github скачать.

Source: www.habr.com

Eketsa ka tlhaloso