پی ایچ پی میں Yandex.Alisa اور Telegram bot ایک ہی فعالیت کے ساتھ

گڈ آفٹر نون.

ٹیلیگرام بوٹس کے موضوع پر بہت سارے مضامین موجود ہیں، لیکن ایلس کی مہارت کے بارے میں بہت کم لوگ لکھتے ہیں، اور مجھے ایک بوٹ بنانے کے بارے میں کوئی معلومات نہیں ملی، اس لیے میں نے اپنا تجربہ شیئر کرنے کا فیصلہ کیا سادہ ٹیلیگرام بوٹ اور Yandex.Alice کی مہارت ایک جیسی فعالیت والی سائٹ کے لیے۔

لہذا، میں آپ کو یہ نہیں بتاؤں گا کہ ویب سرور کو کیسے بڑھایا جائے اور ایس ایس ایل سرٹیفکیٹ کیسے حاصل کیا جائے، اس کے بارے میں کافی لکھا جا چکا ہے۔

ٹیلیگرام بوٹ بنانا

سب سے پہلے، ایک ٹیلیگرام بوٹ بنائیں، اس کے لیے ہم ٹیلی گرام پر جائیں اور وہاں BotFather بوٹ تلاش کریں۔

پی ایچ پی میں Yandex.Alisa اور Telegram bot ایک ہی فعالیت کے ساتھ

پی ایچ پی میں Yandex.Alisa اور Telegram bot ایک ہی فعالیت کے ساتھ

/نئے بوٹ کا انتخاب کریں۔

پی ایچ پی میں Yandex.Alisa اور Telegram bot ایک ہی فعالیت کے ساتھ

ہم بوٹ کا نام درج کرتے ہیں جس سے وہ جواب دے گا، پھر ہم بوٹ کا نام درج کرتے ہیں، جواب میں ہمیں بوٹ کو کنٹرول کرنے کے لیے ایک ٹوکن ملتا ہے، ہم اس کلید کو لکھ دیتے ہیں، یہ مستقبل میں ہمارے کام آئے گی۔

پی ایچ پی میں Yandex.Alisa اور Telegram bot ایک ہی فعالیت کے ساتھ

اگلا مرحلہ ٹیلی گرام سرورز کو بتانا ہے کہ بوٹ سے ڈیٹا کس سرور کو بھیجنا ہے۔ ایسا کرنے کے لیے، ہم فارم کا ایک لنک بناتے ہیں:

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 ڈویلپر صفحہوہاں "Create dialogue" پر کلک کریں اور "Skill in Alice" کو منتخب کریں۔

پی ایچ پی میں Yandex.Alisa اور Telegram bot ایک ہی فعالیت کے ساتھ

مہارت کی ترتیبات کا ڈائیلاگ کھل جائے گا۔

پی ایچ پی میں Yandex.Alisa اور Telegram bot ایک ہی فعالیت کے ساتھ

ہم مہارت کی ترتیبات میں داخل ہونا شروع کرتے ہیں۔

اپنی مہارت کا نام درج کریں۔

پی ایچ پی میں Yandex.Alisa اور Telegram bot ایک ہی فعالیت کے ساتھ

ایکٹیویشن کا نام بہت احتیاط سے منتخب کیا جانا چاہیے تاکہ ایلس اسے صحیح طریقے سے سمجھے، باریکیوں سے - ایلس کے ساتھ ایک موبائل ایپلیکیشن اور کالم جیسے Yandex.Station یا Irbis A الفاظ کو مختلف طریقے سے سمجھ سکتے ہیں۔

ہم اپنے سرور پر اسکرپٹ کا راستہ اسی طرح داخل کرتے ہیں جیسے ٹیلیگرام کے لیے، لیکن یہ خاص طور پر ایلس کے لیے اسکرپٹ ہو گا، مثال کے طور پر www.my_server.ru/webhook_alice.php.

پی ایچ پی میں Yandex.Alisa اور Telegram bot ایک ہی فعالیت کے ساتھ

ہم اس آواز کا انتخاب کرتے ہیں جس کے ساتھ مہارت بولے گی، مجھے ایلس کی آواز زیادہ پسند ہے۔

پی ایچ پی میں Yandex.Alisa اور Telegram bot ایک ہی فعالیت کے ساتھ

اگر آپ صرف موبائل آلات پر یا براؤزر میں کام کرنے کا ارادہ رکھتے ہیں، تو پھر "آپ کو اسکرین کے ساتھ ڈیوائس کی ضرورت ہے" کو منتخب کریں۔

اگلا، ایلس کی مہارت کی کیٹلاگ کی ترتیبات درج کریں۔ اگر آپ ایکٹیویشن کے لیے لفظ "برانڈ" استعمال کرنے کا ارادہ رکھتے ہیں، تو آپ کو webmaster.yandex.ru سروس میں برانڈ کی ویب سائٹ کی تصدیق کرنی ہوگی۔

پی ایچ پی میں Yandex.Alisa اور Telegram bot ایک ہی فعالیت کے ساتھ

ترتیبات کے ساتھ بس اتنا ہی ہے، آئیے اسکرپٹ کی طرف چلتے ہیں۔

ٹیلیگرام بوٹ اسکرپٹ

آئیے ٹیلیگرام کے لیے ایک اسکرپٹ کے ساتھ شروع کرتے ہیں۔

ہم لائبریری کو جوڑتے ہیں جہاں بوٹ اور ایلس کے پیغامات پر کارروائی کی جائے گی:

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 - صارف کی شناخت یہاں ہے۔

$msg_chat_id - چیٹ جس میں بوٹ کو کمانڈ موصول ہوئی تھی۔

$msg_user_name - صارف نام

اگلا، ہم پروسیسنگ کے لیے Parse_Tokens فنکشن کو کہتے ہیں:

$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 - صارف کی شناخت یہاں ہے۔

Yandex شائع شدہ مہارتوں کو مسلسل پنگ دیتا ہے، اور میں نے پیغام کی مکمل پروسیسنگ شروع کیے بغیر فوری طور پر اسکرپٹ سے باہر نکلنے کے لیے ایک لائن شامل کی:

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

ہم پروسیسنگ کے لیے Parse_Tokens فنکشن کہتے ہیں، یہ ٹیلیگرام کے لیے ویسا ہی ہے:

$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 ایک ہی فعالیت کے ساتھ

اگر سب کچھ صحیح طریقے سے کام کرتا ہے، تو آپ "اعتدال کے لیے" بٹن پر کلک کر کے اعتدال کے لیے ہنر بھیج سکتے ہیں۔

اب آپ کے پاس ایک ساتھ مختلف پلیٹ فارمز کے لیے دو بوٹس ہیں، جو ایک ہی طرح سے کام کرتے ہیں۔

Yandex.Dialogues سروس کے لیے دستاویزات یہاں

مکمل اسکرپٹ گیتھب پر پوسٹ کی گئی ہیں۔ ڈاؤن لوڈ، اتارنا.

ماخذ: www.habr.com

نیا تبصرہ شامل کریں