وباکا

آموزش تخصصی برنامه نویسی وب

در این جلسه از متد ارسال تصویر api  تلگرام استفاده کرده و تصویر ها را به تلگرام ارسال می کنیم. در جلسات قبل تعدادی متد تلگرام برای ارسال اطلاعات مختلف مثل متن، تصویر، صدا و … را معرفی کردیم. در این جلسه متد sendPhoto را برای ارسال تصویر استفاده می کنیم.

برنامه api ربات در این مثال هر بار که پیامی از طرف ربات دریافت کرد، یک تصویر را بصورت تصادفی انتخاب کرده و به صفحه چت می فرستد. همچنین به همراه تصویر، عنوان تصویر را هم ارسال می کند.

ربات ارسال تصویر تصادفی

برنامه api زیر طوری ربات را برنامه ریزی می کند تا در صورت ارسال پیام به آن یک تصویر تصادفی با عنوان تصادفی به شخص نشان دهد.

 

برنامه api برای نمایش تصویر تصادفی می تواند بصورت زیر نوشته شود:

<?php
ob_start();
$content= file_get_contents("php://input");
$update = json_decode($content);
define("API_KEY","584bbd612a4499f7d707b50e053b5664");
$pictures = [
[
"file"=>"pic1.jpg",
"caption"=>"یک تصویر بنام pic1.jpg",
"text"=>"کدنویسان مرجع آموزش برنامه نویسی کامپیوتر و موبایل"
],
[
"file"=>"pic2.jpg",
"caption"=>"یک تصویر بنام test.jpg",
"text"=>"کدنویسان ارائه کننده اموزش برنامه نویسی ربات"
]
];
function sendMessage($datas){
$url = "https://panel.botsaz.com/api/bot/sendMessage";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_POST, 1);
$datas["api_key"]=API_KEY;
curl_setopt($ch, CURLOPT_POSTFIELDS,
http_build_query($datas));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$server_output = curl_exec ($ch);
curl_close ($ch);
return json_decode($server_output);
}
function curl_custom_postfields($ch, array $assoc = array(), array $files = array()) {
// invalid characters for "name" and "filename"
static $disallow = array("\0", "\"", "\r", "\n");
// build normal parameters
foreach ($assoc as $k => $v) {
$k = str_replace($disallow, "_", $k);
$body[] = implode("\r\n", array(
"Content-Disposition: form-data; name=\"{$k}\"",
"",
filter_var($v),
));
}
// build file parameters
foreach ($files as $k => $v) {
switch (true) {
case false === $v = realpath(filter_var($v)):
case !is_file($v):
case !is_readable($v):
continue; // or return false, throw new InvalidArgumentException
}
$data = file_get_contents($v);
$v = call_user_func("end", explode(DIRECTORY_SEPARATOR, $v));
$k = str_replace($disallow, "_", $k);
$v = str_replace($disallow, "_", $v);
$body[] = implode("\r\n", array(
"Content-Disposition: form-data; name=\"{$k}\"; filename=\"{$v}\"",
"Content-Type: image/jpeg",
"",
$data,
));
}
// generate safe boundary
do {
$boundary = "---------------------" . md5(mt_rand() . microtime());
} while (preg_grep("/{$boundary}/", $body));
// add boundary for each parameters
array_walk($body, function (&$part) use ($boundary) {
$part = "--{$boundary}\r\n{$part}";
});
// add final boundary
$body[] = "--{$boundary}--";
$body[] = "";
// set options
return @curl_setopt_array($ch, array(
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => implode("\r\n", $body),
CURLOPT_HTTPHEADER => array(
"Expect: 100-continue",
"Content-Type: multipart/form-data; boundary={$boundary}", // change Content-Type
),
));
}
function sendPhoto($filename,$datas=[]){
$datas["api_key"] = API_KEY;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"https://panel.botsaz.com/api/bot/sendPhoto");
curl_custom_postfields($ch,$datas,["photo"=>$filename]);
$server_output = curl_exec ($ch);
curl_close ($ch);
return json_decode($server_output);
}
$random_image = $pictures[rand(0,count($pictures)-1)];
sendMessage([
"text"=>$random_image["text"],
"chat_id"=>$update->message->chat->id,
"reply_to_message_id"=>$update->message->message_id
]);
sendPhoto($random_image["file"],[
"chat_id"=>$update->message->chat->id,
"reply_markup"=>json_encode(
["keyboard"=>
[
[["text"=>"منوی اصلی"],["text"=>"دوباره"]]
]
,"resize_keyboard"=>true
]
)
]);
file_put_contents("log",ob_get_clean());

توجه داشته باشید برای اجرای درست ربات فوق باید فایل برنامه و دو فایل تصویری pic1.jpg و pic2.jpg کنار هم قرار داده شوند.

دریافت فایل پیاده سازی api ربات برگشت دهنده پیام، نمایش تصویر تصادفی

 

 

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

فهرست مطالب