Yandex.Alisa agus Telegram bot i PHP leis an bhfeidhmiúlacht chéanna

Dea-tráthnóna.

Tá go leor alt ar an ábhar róbónna Telegram, ach is beag duine a scríobhann faoi scileanna do Alice, agus ní bhfuair mé aon fhaisnéis faoi conas bot amháin a dhéanamh, agus mar sin shocraigh mé mo thaithí a roinnt ar conas a dhéanamh. bot Telegram simplí agus an scil Yandex.Alice don suíomh a bhfuil an fheidhmiúlacht chéanna.

Mar sin, ní inseoidh mé duit conas freastalaí gréasáin a ardú agus teastas ssl a fháil, tá go leor scríofa faoi.

Bot Telegram a chruthú

Gcéad dul síos, déanaimis bot Telegram a chruthú, le haghaidh seo téann muid go Telegram agus aimsímid an bot BotFather ann.

Yandex.Alisa agus Telegram bot i PHP leis an bhfeidhmiúlacht chéanna

Yandex.Alisa agus Telegram bot i PHP leis an bhfeidhmiúlacht chéanna

Roghnaigh / newbot

Yandex.Alisa agus Telegram bot i PHP leis an bhfeidhmiúlacht chéanna

Cuirimid isteach ainm an bot trína bhfreagróidh sé, ansin cuirimid isteach ainm an bot, mar fhreagra air sin faigheann muid comhartha chun an bot a rialú, scríobhann muid síos an eochair seo, beidh sé úsáideach dúinn sa todhchaí.

Yandex.Alisa agus Telegram bot i PHP leis an bhfeidhmiúlacht chéanna

Is é an chéad chéim eile a insint do na freastalaithe Telegram cén freastalaí chun sonraí a sheoladh ón bot. Chun seo a dhéanamh, déanaimid nasc den fhoirm:

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

___TOKEN___ cuirimid ár chomhartha ón bot, a fuarthas níos luaithe, ina áit

____PATH_TO_SCRIPT____ cuirimid seoladh na scripte ar ár bhfreastalaí ina ionad sin ina bpróiseálfar na sonraí (mar shampla, www.my_server.ru/webhook_telegram.php).

Tá fadhb anseo, tá an freastalaí api.telegram.org faoi bhlocáil, ach is féidir leat é seo a dhéanamh: lig an freastalaí is saoire ar cíos nuair nach bhfuil aon srianta ann agus tabhair ordú ó chonsól an fhreastalaí seo

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

Sin é, cruthaítear an bot Telegram agus nasctar é le do fhreastalaí.

Scil a chruthú do Yandex.Alisa

Bogaimis ar aghaidh chuig scil a chruthú do Yandex.Alice.

Chun scil a chruthú, ní mór duit dul go dtí leathanach forbróirí Yandex.Dialogues Leathanach forbróir Yandex.Dialogs, cliceáil ann "Cruthaigh dialóg" agus roghnaigh "Scil in Alice".

Yandex.Alisa agus Telegram bot i PHP leis an bhfeidhmiúlacht chéanna

Osclófar an dialóg socruithe scileanna.

Yandex.Alisa agus Telegram bot i PHP leis an bhfeidhmiúlacht chéanna

Tosaímid ag dul isteach sna socruithe scileanna.

Cuir isteach ainm do scile.

Yandex.Alisa agus Telegram bot i PHP leis an bhfeidhmiúlacht chéanna

Ba cheart an t-ainm gníomhachtaithe a roghnú go han-chúramach ionas go dtuigeann Alice i gceart é, ó na nuances - is féidir le feidhmchlár soghluaiste le Alice agus colúin mar Yandex.Station nó Irbis A focail a bhrath ar bhealach difriúil.

Cuirimid an cosán chuig an script ar ár bhfreastalaí ar an mbealach céanna le Telegram, ach beidh sé ina script go sonrach le haghaidh Alice, mar shampla www.my_server.ru/webhook_alice.php.

Yandex.Alisa agus Telegram bot i PHP leis an bhfeidhmiúlacht chéanna

Roghnóimid an guth a labhróidh an scil, is maith liom guth Alice níos mó.

Yandex.Alisa agus Telegram bot i PHP leis an bhfeidhmiúlacht chéanna

Má tá ar intinn agat a bheith ag obair ach amháin ar gléasanna soghluaiste nó i bhrabhsálaí, ansin roghnaigh "Ní mór duit gléas le scáileán."

Ansin, cuir isteach na socruithe do chatalóg scileanna Alice. Má tá sé ar intinn agat an focal "branda" a úsáid le haghaidh gníomhachtaithe, ní mór duit láithreán gréasáin an bhranda a fhíorú sa tseirbhís webmaster.yandex.ru.

Yandex.Alisa agus Telegram bot i PHP leis an bhfeidhmiúlacht chéanna

Sin go léir leis na socruithe, a ligean ar bogadh ar aghaidh go dtí na scripteanna.

Script bot telegram

Tosaímid le script le haghaidh Telegram.

Ceanglaíonn muid an leabharlann áit a bpróiseálfar teachtaireachtaí ón bot agus Alice:

include_once 'webhook_parse.php';

Shocraigh muid comhartha ár bot:

$tg_bot_token = "_____YOUR_BOT_TOKEN_____";

Faighimid sonraí:

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

Na sonraí a pharsáil in athróga:

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

Anois is féidir leat oibriú le hathróga:

$tokens - seo anois na focail go léir a chuir an t-úsáideoir isteach

$user_id - aitheantas úsáideora anseo

$msg_chat_id - comhrá ina bhfuair an bot an t-ordú

$msg_user_name - ainm úsáideora

Ansin, tugaimid an fheidhm Parse_Tokens le haghaidh próiseála:

$Out_Str = Parse_Tokens($tokens);

Agus seol freagra:

Send_Out($user_id, $Out_Str);

tá an fheidhm Send_Out simplí agus tá an chuma air seo:

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

Script scileanna do Yandex Alisa

Anois, a ligean ar bogadh ar aghaidh go dtí an script le haghaidh Alice, tá sé beagnach mar an gcéanna do Telegram.

Nascaimid an leabharlann freisin ina bpróiseálfar teachtaireachtaí ón bot agus Alice, chomh maith le leabharlann le ranganna do Alice:

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

Faighimid sonraí:

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

Na sonraí a pharsáil in athróga:

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

Tá cúpla athróg níos lú anseo:

$tokens - seo anois na focail go léir a chuir an t-úsáideoir isteach

$user_id - aitheantas úsáideora anseo

Bíonn Yandex i gcónaí ag pingin scileanna foilsithe, agus chuir mé líne leis chun an script a fhágáil láithreach gan tús a chur le próiseáil iomlán na teachtaireachta:

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

Glaoimid an fheidhm Parse_Tokens le haghaidh próiseála, tá sé mar an gcéanna le Telegram:

$Out_Str = Parse_Tokens($tokens);

Agus seol freagra:

Send_Out($user_id, $Out_Str);

Tá an fheidhm Send_Out níos casta anseo:

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

Chríochnaigh an script le haghaidh Alice.

Rinneadh an script próiseála Parse_Tokens féin mar shampla amháin, is féidir leat aon seiceálacha agus próiseáil a dhéanamh ann.

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

Más gá duit cumarsáid a dhéanamh le húsáideoir ar fhoirm níos casta ná freagra ceiste, beidh ort $user_id an úsáideora agus na sonraí atá faighte cheana ón úsáideoir sa bhunachar sonraí a shábháil (mar shampla, mysql) agus anailís a dhéanamh orthu i an fheidhm Parse_Tokens.

I ndáiríre, is beagnach gach rud é seo, má dhéantar gach rud i gceart, ansin tá an bot Telegram ar fáil cheana féin, is féidir scil Alice a sheiceáil dialogs.yandex.ru/forbróirtrí dul go dtí do scil nua ar an táb tástála.

Yandex.Alisa agus Telegram bot i PHP leis an bhfeidhmiúlacht chéanna

Má oibríonn gach rud i gceart, is féidir leat an scil le haghaidh modhnóireachta a sheoladh trí chliceáil ar an gcnaipe "For moderation".

Anois tá dhá róbón agat le haghaidh ardáin éagsúla ag an am céanna, a oibríonn ar an mbealach céanna.

Doiciméadú don tseirbhís Yandex.Dialogues anseo

Scripteanna iomlána postáilte ar github скачать.

Foinse: will.com

Add a comment