گڈ آفٹر نون.
ٹیلیگرام بوٹس کے موضوع پر بہت سارے مضامین موجود ہیں، لیکن ایلس کی مہارت کے بارے میں بہت کم لوگ لکھتے ہیں، اور مجھے ایک بوٹ بنانے کے بارے میں کوئی معلومات نہیں ملی، اس لیے میں نے اپنا تجربہ شیئر کرنے کا فیصلہ کیا سادہ ٹیلیگرام بوٹ اور Yandex.Alice کی مہارت ایک جیسی فعالیت والی سائٹ کے لیے۔
لہذا، میں آپ کو یہ نہیں بتاؤں گا کہ ویب سرور کو کیسے بڑھایا جائے اور ایس ایس ایل سرٹیفکیٹ کیسے حاصل کیا جائے، اس کے بارے میں کافی لکھا جا چکا ہے۔
ٹیلیگرام بوٹ بنانا
سب سے پہلے، ایک ٹیلیگرام بوٹ بنائیں، اس کے لیے ہم ٹیلی گرام پر جائیں اور وہاں BotFather بوٹ تلاش کریں۔
/نئے بوٹ کا انتخاب کریں۔
ہم بوٹ کا نام درج کرتے ہیں جس سے وہ جواب دے گا، پھر ہم بوٹ کا نام درج کرتے ہیں، جواب میں ہمیں بوٹ کو کنٹرول کرنے کے لیے ایک ٹوکن ملتا ہے، ہم اس کلید کو لکھ دیتے ہیں، یہ مستقبل میں ہمارے کام آئے گی۔
اگلا مرحلہ ٹیلی گرام سرورز کو بتانا ہے کہ بوٹ سے ڈیٹا کس سرور کو بھیجنا ہے۔ ایسا کرنے کے لیے، ہم فارم کا ایک لنک بناتے ہیں:
https: //api.telegram.org/bot___ТОКЕН___/setWebhook?url=https://____ПУТЬ_ДО_СКРПИТА___
___TOKEN___ ہم بوٹ کے اپنے ٹوکن سے بدل دیتے ہیں، جو پہلے موصول ہوا تھا۔
____PATH_TO_SCRIPT____ ہم اپنے سرور پر اسکرپٹ کے ایڈریس کو تبدیل کرتے ہیں جہاں ڈیٹا پر کارروائی کی جائے گی (مثال کے طور پر،
یہاں ایک مسئلہ ہے، api.telegram.org کا سرور بلاک ہو رہا ہے، لیکن آپ یہ کر سکتے ہیں: سب سے سستا سرور کرایہ پر لیں جہاں کوئی پابندی نہ ہو اور اس سرور کے کنسول سے کمانڈ دیں۔
wget ___ПОЛУЧИВШИЙСЯ_АДРЕС___
بس، ٹیلیگرام بوٹ بن گیا اور آپ کے سرور سے منسلک ہو گیا۔
Yandex.Alisa کے لیے مہارت پیدا کرنا
آئیے Yandex.Alice کے لیے مہارت پیدا کرنے کی طرف بڑھتے ہیں۔
مہارت پیدا کرنے کے لیے، آپ کو Yandex.Dialogues کے ڈویلپرز کے صفحہ پر جانا ہوگا۔
مہارت کی ترتیبات کا ڈائیلاگ کھل جائے گا۔
ہم مہارت کی ترتیبات میں داخل ہونا شروع کرتے ہیں۔
اپنی مہارت کا نام درج کریں۔
ایکٹیویشن کا نام بہت احتیاط سے منتخب کیا جانا چاہیے تاکہ ایلس اسے صحیح طریقے سے سمجھے، باریکیوں سے - ایلس کے ساتھ ایک موبائل ایپلیکیشن اور کالم جیسے Yandex.Station یا Irbis A الفاظ کو مختلف طریقے سے سمجھ سکتے ہیں۔
ہم اپنے سرور پر اسکرپٹ کا راستہ اسی طرح داخل کرتے ہیں جیسے ٹیلیگرام کے لیے، لیکن یہ خاص طور پر ایلس کے لیے اسکرپٹ ہو گا، مثال کے طور پر
ہم اس آواز کا انتخاب کرتے ہیں جس کے ساتھ مہارت بولے گی، مجھے ایلس کی آواز زیادہ پسند ہے۔
اگر آپ صرف موبائل آلات پر یا براؤزر میں کام کرنے کا ارادہ رکھتے ہیں، تو پھر "آپ کو اسکرین کے ساتھ ڈیوائس کی ضرورت ہے" کو منتخب کریں۔
اگلا، ایلس کی مہارت کی کیٹلاگ کی ترتیبات درج کریں۔ اگر آپ ایکٹیویشن کے لیے لفظ "برانڈ" استعمال کرنے کا ارادہ رکھتے ہیں، تو آپ کو webmaster.yandex.ru سروس میں برانڈ کی ویب سائٹ کی تصدیق کرنی ہوگی۔
ترتیبات کے ساتھ بس اتنا ہی ہے، آئیے اسکرپٹ کی طرف چلتے ہیں۔
ٹیلیگرام بوٹ اسکرپٹ
آئیے ٹیلیگرام کے لیے ایک اسکرپٹ کے ساتھ شروع کرتے ہیں۔
ہم لائبریری کو جوڑتے ہیں جہاں بوٹ اور ایلس کے پیغامات پر کارروائی کی جائے گی:
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) کو محفوظ کرنا ہوگا اور ان کا تجزیہ کرنا ہوگا۔ پارس_ٹوکن فنکشن۔
دراصل، یہ تقریباً سب کچھ ہے، اگر سب کچھ صحیح طریقے سے کیا جائے تو ٹیلی گرام بوٹ پہلے سے موجود ہے، ایلس کی مہارت کو جانچا جا سکتا ہے۔
اگر سب کچھ صحیح طریقے سے کام کرتا ہے، تو آپ "اعتدال کے لیے" بٹن پر کلک کر کے اعتدال کے لیے ہنر بھیج سکتے ہیں۔
اب آپ کے پاس ایک ساتھ مختلف پلیٹ فارمز کے لیے دو بوٹس ہیں، جو ایک ہی طرح سے کام کرتے ہیں۔
Yandex.Dialogues سروس کے لیے دستاویزات
مکمل اسکرپٹ گیتھب پر پوسٹ کی گئی ہیں۔
ماخذ: www.habr.com