@ambal245

Почему отправка csv файла в Телеграм не работает?

Пишу бота на языке PHP в телеграм с связкой python и php. Суть работы в следующем: пользователь пишет текст в боте, этот текст отправляется в файл python обрабатывается, создается файл csv и выводиться название файла. Далее Php скрипт должен отправить его пользователю методом CURL. Пример кода запуска python файла и отправки файла пользователю:

// ВЕРСИЯ PHP = 7.2
// здесь функция принимаемая вводимый текст
$text = "текст";
$python = $_SERVER['DOCUMENT_ROOT'] . '/venv/bin/python ';
$file = $_SERVER['DOCUMENT_ROOT'] . '/main.py';
ob_start(); 
passthru($python . ' ' . $file . ' ' .  $text);  // запускаем python файл
$output = ob_get_clean(); // здесь получаем имя файла в виде name.csv
$document = new CURLFile('/doc/'.$output); // ищем расположение - но не находит
// $document = new CURLFile(realpath($output));  - тоже не находит
$urlSite = "https://api.telegram.org/bot".$this->token."/sendDocument";

$ch = curl_init();

        curl_setopt($ch, CURLOPT_URL, $urlSite);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, ["chat_id" => $user_id, "document" => $document]);
        curl_setopt($ch, CURLOPT_HTTPHEADER, ["Content-Type: multipart/form-data"]);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
       curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
        $out = curl_exec($ch); // получаем ответ 0
        curl_close($ch);

Код отправки файла работает на другом боте, где идет создание и отправка в самом php скрипте.
Почему new CURLFile не может найти расположения файла? Файл создается и присутствует в указанной директории doc. Права доступа указаны 777.
  • Вопрос задан
  • 69 просмотров
Решения вопроса 1
@ambal245 Автор вопроса
Решением было в Python файле печатать json, а в PHP файле декодировать строку.
Строки из файлов может кто столкнется с этой проблемой
#python файл 
rt = {"file":str(name) + ".csv"}
print(json.dumps(rt, ensure_ascii = 'False'))

// php файл 
$filename = json_decode($output, true);
$document = new CURLFile($filename['file']);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы