Отправка в Телеграм бот вложения

Все вопросы/проблемы по установке и использовании.
Ответить
Romiros
Сообщения: 98
Зарегистрирован: 02 ноя 2022, 05:15
Имя: Роман Сысоев
Откуда: Иркутск
Организация: ООО "ДНС Ритейл"

Отправка в Телеграм бот вложения

Сообщение Romiros »

Доброго времени суток, уважаемые!

Такой кейс, заказчику необходимо отправлять ответ в Телеграм бот, что и было реализовано.

Но он попросил еще чтобы с ответом вместе отправлялась вложение которое которое он вкладывает после поля Ответ.

Я дополнил код функции отправки сообщения для отправки вложения, но там требуется путь файла на сервере

Код: Выделить всё

// Получаем текущую дату
$currentDate = date('Y-m-d');
// Разбиваем дату на компоненты
list($year, $month, $day) = explode('-', $currentDate);
// Собираем путь до файла вложения
$photo_path = "/uploads/attachments/{$year}/{$month}/{$day}/{$photo_name}";

telegram_sent_photo(VAR_TELEGRAM_BOT_TOKEN_2, $id_tg, $answer, $photo_path);
По итогу текст сообщения отправляется а вот вложение в виде фото, нет.

Подскажите как правильно указать путь к файлу вложения на сервере, может у меня тут ошибка?
Или может есть другие варианты?

Сама доработанная функция отправки сообщения с фото

Код: Выделить всё

function telegram_sent_photo($bot_token, $chat_id, $text, $photo_path) {
    // Отправка текста
    $url_message = "https://api.telegram.org/bot" . $bot_token . "/sendMessage";
    $params_message = [
        'chat_id' => $chat_id,
        'text' => strip_tags($text, '<b><i><code><pre>'),
        'parse_mode' => 'HTML',
        'disable_web_page_preview' => 'true',
    ];

    $ch_message = curl_init($url_message);
    curl_setopt($ch_message, CURLOPT_HEADER, false);
    curl_setopt($ch_message, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch_message, CURLOPT_POST, 1);
    curl_setopt($ch_message, CURLOPT_POSTFIELDS, ($params_message));
    curl_setopt($ch_message, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch_message, CURLOPT_TIMEOUT, 10);
    $result_message = curl_exec($ch_message);
    curl_close($ch_message);

    // Отправка изображения
    $url_photo = "https://api.telegram.org/bot" . $bot_token . "/sendPhoto";

    $photo_file = new CURLFile($photo_path);

    $params_photo = [
        'chat_id' => $chat_id,
        'photo' => $photo_file,
        'caption' => strip_tags($text, '<b><i><code><pre>'),
        'parse_mode' => 'HTML',
    ];

    $ch_photo = curl_init($url_photo);
    curl_setopt($ch_photo, CURLOPT_HEADER, false);
    curl_setopt($ch_photo, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch_photo, CURLOPT_POST, 1);
    curl_setopt($ch_photo, CURLOPT_POSTFIELDS, ($params_photo));
    curl_setopt($ch_photo, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch_photo, CURLOPT_TIMEOUT, 10);
    $result_photo = curl_exec($ch_photo);
    curl_close($ch_photo);
}
believe
Инвестор
Инвестор
Сообщения: 480
Зарегистрирован: 09 янв 2020, 11:49
Имя: Владимир
Откуда: Тверь
Организация: ООО "ВебСофт"

Re: Отправка в Телеграм бот вложения

Сообщение believe »

Часть кода которая отправляет фото, с вложениями тоже самое должно быть.

Код: Выделить всё

$status=[216];
$client=[215];
$object=[340];
$img=[358];
$itog=[2211];
$Description=[342];
if ($status==22 and $client==2376)
{
    $item_id = [id]; 
    $item_info_query = db_query("select field_358 from app_entity_25 where id='{$item_id}'");
    if($item_info = db_fetch_array($item_info_query))
    {
        $img_list = explode(",", $item_info['field_358']);      
        foreach($img_list as $img)
        {
            $file = attachments::parse_filename($img);      
            if(is_file($file['file_path'])) 
            {
                $image = imagecreatefromjpeg($file['file_path']); 
                imageflip($image, IMG_FLIP_VERTICAL);
                $bot_token = '';
                $chat_id = '';
                $url = 'https://api.telegram.org/bot'.$bot_token.'/sendPhoto';
                $post_fields = array(
                    'chat_id' => $chat_id,
                    'photo' => new CURLFILE($file['file_path'])
                );
                $ch = curl_init(); 
                curl_setopt_array($ch, array(
                    CURLOPT_HTTPHEADER => array(
                        "Content-Type:multipart/form-data"
                    ),
                    CURLOPT_URL => $url, 
                    CURLOPT_RETURNTRANSFER => 1, 
                    CURLOPT_POST => 1,
                    CURLOPT_POSTFIELDS => $post_fields
                ));
                $output = curl_exec($ch);
                curl_close($ch);
            }
        }
    }
}
Romiros
Сообщения: 98
Зарегистрирован: 02 ноя 2022, 05:15
Имя: Роман Сысоев
Откуда: Иркутск
Организация: ООО "ДНС Ритейл"

Re: Отправка в Телеграм бот вложения

Сообщение Romiros »

Благодарю, сейчас попробую.
Ответить