Yandex.Alisa ndi Telegraph bot mu PHP ndi magwiridwe omwewo

Π”ΠΎΠ±Ρ€Ρ‹ΠΉ Tsiku LAIBULALE.

Pali zolemba zambiri pamutu wa Telegraph bots, koma anthu ochepa amalemba za luso la Alice, ndipo sindinapeze chidziwitso cha momwe ndingapangire bot imodzi, kotero ndidaganiza zogawana zomwe ndakumana nazo pakupanga bot yosavuta ya Telegraph ndi luso la Yandex.Alice la tsambalo kukhala ndi magwiridwe antchito omwewo.

Chifukwa chake, sindikuwuzani momwe mungakwezere seva yapaintaneti ndikupeza satifiketi ya ssl, zokwanira zalembedwa za izo.

Kupanga bot ya Telegraph

Choyamba, tiyeni tipange bot ya Telegalamu, chifukwa chake timapita ku Telegalamu ndikupeza bot ya BotFather pamenepo.

Yandex.Alisa ndi Telegraph bot mu PHP ndi magwiridwe omwewo

Yandex.Alisa ndi Telegraph bot mu PHP ndi magwiridwe omwewo

Sankhani /newbot

Yandex.Alisa ndi Telegraph bot mu PHP ndi magwiridwe omwewo

Timalowetsa dzina la bot lomwe lidzayankhire, ndiye timalowetsa dzina la bot, poyankha timapeza chizindikiro chowongolera bot, timalemba fungulo ili, lidzakhala lothandiza kwa ife m'tsogolomu.

Yandex.Alisa ndi Telegraph bot mu PHP ndi magwiridwe omwewo

Chotsatira ndikuwuza ma seva a Telegraph kuti ndi seva iti yomwe ingatumize deta kuchokera ku bot kupita. Kuti tichite izi, timapanga ulalo wa fomu:

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

___TOKEN___ timasintha ndi chizindikiro chathu kuchokera ku bot, chomwe chidalandilidwa kale

____PATH_TO_SCRIPT____ timasintha ndi adilesi ya script pa seva yathu komwe deta idzasinthidwa (mwachitsanzo, www.my_server.ru/webhook_telegram.php).

Pali vuto pano, seva ya api.telegram.org ikutsekedwa, koma mutha kuchita izi: lendi seva yotsika mtengo kwambiri pomwe palibe zoletsa ndikupereka lamulo kuchokera ku console ya seva iyi.

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

Ndizo zonse, bot ya Telegraph idapangidwa ndikulumikizidwa ku seva yanu.

Kupanga luso la Yandex.Alisa

Tiyeni tipitirire kupanga luso la Yandex.Alice.

Kuti mupange luso, muyenera kupita ku tsamba la Yandex.Dialogues Tsamba lachitukuko la Yandex.Dialogs, dinani pamenepo "Pangani zokambirana" ndikusankha "Luso mu Alice".

Yandex.Alisa ndi Telegraph bot mu PHP ndi magwiridwe omwewo

Zokambirana za luso zidzatsegulidwa.

Yandex.Alisa ndi Telegraph bot mu PHP ndi magwiridwe omwewo

Timayamba kulowa zoikamo luso.

Lowetsani dzina la luso lanu.

Yandex.Alisa ndi Telegraph bot mu PHP ndi magwiridwe omwewo

Dzina loyambitsa liyenera kusankhidwa mosamala kwambiri kuti Alice amvetse bwino, kuchokera kuzinthu zina - pulogalamu yam'manja yokhala ndi Alice ndi mizati ngati Yandex.Station kapena Irbis A amatha kuzindikira mawu mosiyana.

Timalowetsa njira yopita ku script pa seva yathu mofanana ndi Telegalamu, koma idzakhala script makamaka kwa Alice, mwachitsanzo. www.my_server.ru/webhook_alice.php.

Yandex.Alisa ndi Telegraph bot mu PHP ndi magwiridwe omwewo

Timasankha mawu omwe luso lidzalankhula, ndimakonda mawu a Alice kwambiri.

Yandex.Alisa ndi Telegraph bot mu PHP ndi magwiridwe omwewo

Ngati mukufuna kugwira ntchito pazida zam'manja kapena msakatuli, ndiye sankhani "Mukufuna chipangizo chokhala ndi chophimba."

Kenako, lowetsani makonda a kalozera wa luso la Alice. Ngati mukufuna kugwiritsa ntchito mawu oti "chizindikiro" kuti mutsegule, muyenera kutsimikizira tsamba la mtunduwu mu service webmaster.yandex.ru.

Yandex.Alisa ndi Telegraph bot mu PHP ndi magwiridwe omwewo

Ndizo zonse ndi zoikamo, tiyeni tipite ku zolemba.

Telegraph bot script

Tiyeni tiyambe ndi script ya Telegalamu.

Timalumikiza laibulale komwe mauthenga ochokera ku bot ndi Alice adzasinthidwa:

include_once 'webhook_parse.php';

Timayika chizindikiro cha bot yathu:

$tg_bot_token = "_____YOUR_BOT_TOKEN_____";

Timalandila data:

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

Kugawa deta muzosintha:

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

Tsopano mutha kugwiritsa ntchito zosiyanasiyana:

$ zizindikiro - apa pali mawu onse omwe wosuta adalowa

$user_id - id ya ogwiritsa apa

$msg_chat_id - kucheza komwe bot idalandira lamulo

$msg_user_name - lolowera

Kenako, timatcha Parse_Tokens ntchito yokonza:

$Out_Str = Parse_Tokens($tokens);

Ndipo tumizani yankho:

Send_Out($user_id, $Out_Str);

Ntchito ya Send_Out ndiyosavuta ndipo imawoneka motere:

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 ya Yandex.Alisa

Tsopano tiyeni tipitirire ku zolemba za Alice, ndizofanana ndi za Telegalamu.

Timalumikizanso laibulale komwe mauthenga ochokera ku bot ndi Alice adzasinthidwa, komanso laibulale yokhala ndi makalasi a Alice:

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

Timalandila data:

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

Kugawa deta muzosintha:

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

Pali zosintha zochepa pano:

$ zizindikiro - apa pali mawu onse omwe wosuta adalowa

$user_id - id ya ogwiritsa apa

Yandex nthawi zonse imapanga luso lofalitsidwa, ndipo ndinawonjezera mzere kuti ndituluke nthawi yomweyo popanda kuyamba kukonzanso uthengawo:

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

Timatcha Parse_Tokens ntchito yokonza, ndizofanana ndi Telegalamu:

$Out_Str = Parse_Tokens($tokens);

Ndipo tumizani yankho:

Send_Out($user_id, $Out_Str);

Ntchito ya Send_Out ndiyovuta kwambiri apa:

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

Anamaliza kulemba Alice.

Parse_Tokens processing script yokha idapangidwa mwachitsanzo, mutha kuyang'ana ndikukonza pamenepo.

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

Ngati mukufuna kulankhulana ndi wogwiritsa ntchito mawonekedwe ovuta kwambiri kuposa yankho la funso, ndiye kuti muyenera kusunga $user_id ya wogwiritsa ntchito ndi zomwe mwalandira kale kuchokera kwa wogwiritsa ntchito mu nkhokwe (mwachitsanzo, mysql) ndi kuzisanthula mu. Parse_Tokens ntchito.

Kwenikweni, izi ndi pafupifupi chilichonse, ngati zonse zachitika molondola, ndiye Telegraph bot likupezeka kale, luso Alice akhoza kufufuzidwa. dialogs.yandex.ru/developerpopita ku luso lanu latsopano pa tabu yoyesera.

Yandex.Alisa ndi Telegraph bot mu PHP ndi magwiridwe omwewo

Ngati zonse zikuyenda bwino, mutha kutumiza luso lachiyembekezo podina batani la "Kuwongolera".

Tsopano muli ndi ma bots awiri amapulatifomu osiyanasiyana nthawi imodzi, omwe amagwira ntchito mofanana.

Zolemba za utumiki wa Yandex.Dialogues apa

Zolemba zonse zatumizidwa pa github ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ.

Source: www.habr.com

Kuwonjezera ndemanga