Yandex.Alisa او Telegram bot په PHP کې د ورته فعالیت سره

ښه ماسپښین.

د ټیلیګرام بوټونو په اړه ډیری مقالې شتون لري ، مګر لږ خلک د ایلیس لپاره د مهارتونو په اړه لیکي ، او ما د یو بوټ جوړولو څرنګوالي په اړه هیڅ معلومات ونه موندل ، نو ما پریکړه وکړه چې څنګه خپله تجربه شریکه کړم. ساده ټیلیګرام بوټ او د ورته فعالیت سایټ لپاره د Yandex.Alice مهارت.

نو ، زه به تاسو ته ونه وایم چې څنګه د ویب سرور رامینځته کول او د ایس ایس ایل سند ترلاسه کول ، د دې په اړه کافي لیکل شوي.

د ټیلیګرام بوټ رامینځته کول

لومړی، راځئ چې د ټیلیګرام بوټ جوړ کړو، د دې لپاره موږ ټیلیګرام ته ځو او هلته د BotFather بوټ ومومئ.

Yandex.Alisa او Telegram bot په PHP کې د ورته فعالیت سره

Yandex.Alisa او Telegram bot په PHP کې د ورته فعالیت سره

/نوی بوټ غوره کړئ

Yandex.Alisa او Telegram bot په PHP کې د ورته فعالیت سره

موږ د بوټ نوم دننه کوو چې دا به ځواب ورکړي، بیا موږ د بوټ نوم داخلوو، په ځواب کې موږ د بوټ کنټرول لپاره نښه ترلاسه کوو، موږ دا کیلي لیکو، دا به په راتلونکي کې زموږ لپاره ګټور وي.

Yandex.Alisa او Telegram bot په PHP کې د ورته فعالیت سره

بل ګام دا دی چې د ټیلیګرام سرورونو ته ووایاست چې کوم سرور له بوټ څخه ډیټا لیږئ. د دې کولو لپاره، موږ د فورمې لینک جوړوو:

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

___TOKEN___ موږ د بوټ څخه زموږ د نښه سره ځای په ځای کوو، مخکې ترلاسه شوی

____PATH_TO_SCRIPT____ موږ په خپل سرور کې د سکریپټ پته سره ځای په ځای کوو چیرې چې ډاټا پروسس کیږي (د مثال په توګه، www.my_server.ru/webhook_telegram.php).

دلته یوه ستونزه ده، د api.telegram.org سرور د بندیدو لاندې دی، مګر تاسو دا کولی شئ: ارزانه سرور کرایه کړئ چیرې چې هیڅ محدودیت شتون نلري او د دې سرور کنسول څخه قوماندې ورکړئ

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

دا دی، د ټیلیګرام بوټ جوړ شوی او ستاسو له سرور سره وصل شوی.

د Yandex.Alisa لپاره مهارت جوړول

راځئ چې د Yandex.Alice لپاره مهارت رامینځته کولو ته لاړ شو.

د مهارت رامینځته کولو لپاره، تاسو اړتیا لرئ د Yandex.Dialogues پراختیا کونکو پاڼې ته لاړ شئ د Yandex.Dialogs پرمخ وړونکي پاڼه، هلته کلیک وکړئ "ډیالوګ رامینځته کړئ" او "په ایلیس کې مهارت" غوره کړئ.

Yandex.Alisa او Telegram bot په PHP کې د ورته فعالیت سره

د مهارتونو ترتیباتو ډیالوګ به خلاص شي.

Yandex.Alisa او Telegram bot په PHP کې د ورته فعالیت سره

موږ د مهارتونو ترتیباتو ته ننوتل پیل کوو.

د خپل مهارت نوم ولیکئ.

Yandex.Alisa او Telegram bot په PHP کې د ورته فعالیت سره

د فعالولو نوم باید په ډیر دقت سره غوره شي ترڅو ایلیس دا په سمه توګه درک کړي ، له باریکیو څخه - د الیس سره یو ګرځنده غوښتنلیک او کالمونه لکه Yandex.Station یا Irbis A کولی شي ټکي په مختلف ډول درک کړي.

موږ په خپل سرور کې سکریپټ ته لاره په ورته ډول د ټیلیګرام لپاره دننه کوو ، مګر دا به په ځانګړي ډول د ایلیس لپاره سکریپټ وي ، د مثال په توګه www.my_server.ru/webhook_alice.php.

Yandex.Alisa او Telegram bot په PHP کې د ورته فعالیت سره

موږ هغه غږ غوره کوو چې په مهارت سره به خبرې وکړي، زه د ایلیس غږ ډیر خوښوم.

Yandex.Alisa او Telegram bot په PHP کې د ورته فعالیت سره

که تاسو پلان لرئ چې یوازې په ګرځنده وسیلو یا براوزر کې کار وکړئ ، نو "تاسو د سکرین سره وسیله ته اړتیا لرئ" غوره کړئ.

بیا، د ایلیس د مهارتونو کتلاګ لپاره ترتیبات داخل کړئ. که تاسو د فعالولو لپاره د "برانډ" کلمه کارولو پلان لرئ، نو تاسو اړتیا لرئ چې د ویب پاڼې ویب پاڼه webmaster.yandex.ru کې تایید کړئ.

Yandex.Alisa او Telegram bot په PHP کې د ورته فعالیت سره

دا ټول د ترتیباتو سره دي، راځئ چې سکریپټونو ته لاړ شو.

د ټیلیګرام بوټ سکریپټ

راځئ چې د ټیلیګرام لپاره د سکریپټ سره پیل وکړو.

موږ کتابتون سره وصل کوو چیرې چې د بوټ او ایلیس پیغامونه به پروسس شي:

include_once 'webhook_parse.php';

موږ د خپل بوټ نښه جوړه کړه:

$tg_bot_token = "_____YOUR_BOT_TOKEN_____";

موږ معلومات ترلاسه کوو:

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

په متغیرونو کې د معلوماتو تحلیل:

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

اوس تاسو کولی شئ د متغیرونو سره کار وکړئ:

$tokens - دلته اوس ټول هغه ټکي دي چې کارونکي داخل کړي

$user_id - د کارن id دلته

$msg_chat_id - چیټ په کوم کې چې بوټ کمانډ ترلاسه کړ

$msg_user_name - کارن نوم

بیا، موږ د پروسس لپاره د پارس_ټوکنز فنکشن ته زنګ ووهئ:

$Out_Str = Parse_Tokens($tokens);

او ځواب ولېږئ:

Send_Out($user_id, $Out_Str);

د Send_Out فعالیت ساده دی او داسې ښکاري:

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

د Yandex.Alisa لپاره د مهارت سکریپټ

اوس راځئ چې د ایلیس لپاره سکریپټ ته لاړ شو، دا تقریبا د ټیلیګرام لپاره ورته دی.

موږ کتابتون هم وصل کوو چیرې چې د بوټ او ایلیس پیغامونه به پروسس شي ، او همدارنګه د ایلیس لپاره د ټولګیو سره یو کتابتون:

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

موږ معلومات ترلاسه کوو:

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

په متغیرونو کې د معلوماتو تحلیل:

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

دلته یو څو لږ تغیرات شتون لري:

$tokens - دلته اوس ټول هغه ټکي دي چې کارونکي داخل کړي

$user_id - د کارن id دلته

یاندیکس په دوامداره توګه خپاره شوي مهارتونه پینګ کوي ، او ما د پیغام بشپړ پروسس پیل کولو پرته سمدلاسه له سکریپټ څخه وتلو لپاره یوه کرښه اضافه کړه:

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

موږ د پروسس کولو لپاره د پارس_ټوکن فنکشن وایو، دا د ټیلیګرام لپاره ورته دی:

$Out_Str = Parse_Tokens($tokens);

او ځواب ولېږئ:

Send_Out($user_id, $Out_Str);

د Send_Out فعالیت دلته ډیر پیچلی دی:

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

د الیس لپاره سکریپټ بشپړ کړ.

د Parse_Tokens پروسس کولو سکریپټ پخپله خالص د مثال لپاره جوړ شوی و، تاسو کولی شئ هلته هر ډول چک او پروسس وکړئ.

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

که تاسو اړتیا لرئ د پوښتنې ځواب په پرتله د خورا پیچلي بڼې کارونکي سره اړیکه ونیسئ، نو تاسو به اړتیا ولرئ د کارونکي $user_id او هغه معلومات چې دمخه یې په ډیټابیس کې د کارونکي څخه ترلاسه شوي خوندي کړئ (د مثال په توګه، mysql) او په کې یې تحلیل کړئ. د پارس_ټوکنز فعالیت.

په حقیقت کې ، دا نږدې هرڅه دي ، که هرڅه سم ترسره شي ، نو د ټیلیګرام بوټ لا دمخه شتون لري ، د ایلیس مهارت چیک کیدی شي dialogs.yandex.ru/developerد ازموینې ټب کې خپل نوي مهارت ته د تګ له لارې.

Yandex.Alisa او Telegram bot په PHP کې د ورته فعالیت سره

که هرڅه سم کار وکړي، تاسو کولی شئ د "اعتدال لپاره" تڼۍ په کلیک کولو سره د اعتدال لپاره مهارت واستوئ.

اوس تاسو په یوځل کې د مختلف پلیټ فارمونو لپاره دوه بوټونه لرئ ، کوم چې په ورته ډول کار کوي.

د Yandex.Dialogues خدمت لپاره اسناد دلته

بشپړ سکریپټونه په ګیتوب کې خپاره شوي скачать.

سرچینه: www.habr.com

Add a comment