Yandex.Alisa neTeregiramu bot muPHP ine mashandiro akafanana

Zvakanaka masikati.

Pane zvakawanda zvinyorwa pamusoro peTeregiramu bots, asi vanhu vashoma vanonyora nezvehunyanzvi hwaAlice, uye ini handina kuwana chero ruzivo rwekuita bot imwechete, saka ndakafunga kugovera ruzivo rwangu rwekuita nyore Telegraph bot uye Yandex.Alice hunyanzvi hwesaiti ine basa rakafanana.

Saka, ini handisi kuzokuudza nzira yekusimudza sevha yewebhu uye kuwana ssl chitupa, zvakakwana zvakanyorwa nezvazvo.

Kugadzira Telegraph bot

Kutanga, ngatigadzire bot yeTeregiramu, pane izvi tinoenda kuTeregiramu totsvaga BotFather bot ipapo.

Yandex.Alisa neTeregiramu bot muPHP ine mashandiro akafanana

Yandex.Alisa neTeregiramu bot muPHP ine mashandiro akafanana

Sarudza /newbot

Yandex.Alisa neTeregiramu bot muPHP ine mashandiro akafanana

Tinopinda zita rebhoti iro richapindura, zvino tinoisa zita rebhoti, mukupindura tinowana chiratidzo chekutonga bot, tinonyora pasi kiyi iyi, ichatibatsira mune ramangwana.

Yandex.Alisa neTeregiramu bot muPHP ine mashandiro akafanana

Nhanho inotevera ndeyekuudza maseva eTeregiramu kuti ndeipi server yekutumira data kubva kubhoti kuenda. Kuti tiite izvi, tinogadzira chinongedzo chefomu:

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

___TOKEN___ tinotsiva nechiratidzo chedu kubva kubhoti, yakagamuchirwa kare

__PATH_TO_SCRIPT____ tinotsiva nekero yescript pane server yedu apo data ichagadziriswa (semuenzaniso, www.my_server.ru/webhook_telegram.php).

Pane dambudziko pano, iyo api.telegram.org server iri pasi pekuvharika, asi iwe unogona kuita izvi: renda iyo yakachipa sevha uko pasina zvirambidzo uye ipa murairo kubva kune inonyaradza server.

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

Ndizvozvo, iyo Telegraph bot inogadzirwa uye yakabatana kune yako server.

Kugadzira hunyanzvi hweYandex.Alisa

Ngatienderere mberi nekugadzira hunyanzvi hweYandex.Alice.

Kuti ugadzire hunyanzvi, unofanirwa kuenda kune Yandex.Dialogues vanogadzira peji Yandex.Dialogs yekuvandudza peji, tinya ipapo "Gadzira nhaurirano" uye sarudza "Unyanzvi muAlice".

Yandex.Alisa neTeregiramu bot muPHP ine mashandiro akafanana

Iyo dialog yezvigadziriso zveunyanzvi ichavhurwa.

Yandex.Alisa neTeregiramu bot muPHP ine mashandiro akafanana

Tinotanga kupinda muzvirongwa zveunyanzvi.

Isa zita reunyanzvi hwako.

Yandex.Alisa neTeregiramu bot muPHP ine mashandiro akafanana

Zita rekushandisa rinofanira kusarudzwa zvakanyatsonaka kuitira kuti Alice arinzwisise nenzira kwayo, kubva kune nuances - nharembozha ine Alice uye makoramu seYandex.Station kana Irbis A anogona kuona mazwi zvakasiyana.

Isu tinopinda nzira yekuenda kune script pane yedu server nenzira yakafanana neyeTeregiramu, asi ichave script yakanangana naAlice, semuenzaniso. www.my_server.ru/webhook_alice.php.

Yandex.Alisa neTeregiramu bot muPHP ine mashandiro akafanana

Isu tinosarudza izwi iro hunyanzvi huchataura naro, ndinoda izwi raAlice zvakanyanya.

Yandex.Alisa neTeregiramu bot muPHP ine mashandiro akafanana

Kana ukaronga kushanda chete panharembozha kana mubrowser, wobva wasarudza "Unoda mudziyo une skrini."

Tevere, pinda marongero ehunyanzvi hwaAlice kabhuku. Kana iwe ukaronga kushandisa izwi rekuti "brand" kuita activation, unofanirwa kuongorora webhusaiti yemhando mune webmaster.yandex.ru service.

Yandex.Alisa neTeregiramu bot muPHP ine mashandiro akafanana

Ndizvo chete nezvirongwa, ngatienderere mberi kune zvinyorwa.

Telegraph bot script

Ngatitangei nechinyorwa cheTeregiramu.

Isu tinobatanidza raibhurari uko mameseji kubva ku bot naAlice achagadziriswa:

include_once 'webhook_parse.php';

Isu tinoseta chiratidzo chebhoti yedu:

$tg_bot_token = "_____YOUR_BOT_TOKEN_____";

Isu tinogamuchira data:

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

Kupatsanura data kuita zvakasiyana:

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

Iye zvino unogona kushanda nemhando dzakasiyana:

$tokens - heano ikozvino mazwi ese akaiswa nemushandisi

$user_id - mushandisi id pano

$msg_chat_id - chat umo bot yakagamuchira murairo

$msg_user_name - username

Tevere, tinodaidza Parse_Tokens basa rekugadzirisa:

$Out_Str = Parse_Tokens($tokens);

Uye tumira mhinduro:

Send_Out($user_id, $Out_Str);

iyo Send_Out basa iri nyore uye rinotaridzika seizvi:

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 yeYandex.Alisa

Zvino ngatienderere mberi kune script yaAlice, yakada kufanana neyeTeregiramu.

Isu tinobatanidzawo raibhurari uko mameseji kubva ku bot naAlice achagadziriswa, pamwe neraibhurari ine makirasi aAlice:

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

Isu tinogamuchira data:

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

Kupatsanura data kuita zvakasiyana:

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

Pane mashoma mashoma akasiyana pano:

$tokens - heano ikozvino mazwi ese akaiswa nemushandisi

$user_id - mushandisi id pano

Yandex inogara ichitsvaga hunyanzvi hwakadhindwa, uye ini ndakawedzera mutsara kuti ubve ipapo script pasina kutanga kuzara kwemeseji:

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

Isu tinodaidza Parse_Tokens basa rekugadzirisa, rakafanana neTeregiramu:

$Out_Str = Parse_Tokens($tokens);

Uye tumira mhinduro:

Send_Out($user_id, $Out_Str);

Basa reSend_Out rakanyanya kuomarara pano:

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

Akapedza script yaAlice.

Iyo Parse_Tokens yekugadzirisa script pachayo yakagadzirwa chete semuenzaniso, unogona kuita chero cheki uye kugadzirisa ipapo.

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

Kana iwe uchida kutaurirana nemushandisi wefomu yakaoma kunzwisisa kupfuura mubvunzo-mhinduro, saka iwe unozofanirwa kuchengetedza mushandisi $user_id uye data rakatogamuchirwa kubva kumushandisi mudura (semuenzaniso, mysql) uye ongorora mukati. iyo Parse_Tokens basa.

Chaizvoizvo, izvi zvinenge zvese, kana zvese zvikaitwa nemazvo, ipapo Telegraph bot yatovepo, hunyanzvi hwaAlice hunogona kuongororwa. dialogs.yandex.ru/developernekuenda kuhunyanzvi hwako hutsva pane tebhu yekuyedza.

Yandex.Alisa neTeregiramu bot muPHP ine mashandiro akafanana

Kana zvinhu zvose zvichishanda nemazvo, unogona kutumira unyanzvi hwekuenzanisa nekudzvanya bhatani re "For moderation".

Iye zvino une mabhoti maviri emapuratifomu akasiyana kamwechete, anoshanda nenzira imwechete.

Zvinyorwa zveYandex.Dialogues sevhisi pano

Zvinyorwa zvizere zvakatumirwa pa github ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ.

Source: www.habr.com

Voeg