в сделке
"UF_CRM_1693238467": {
"id": 4332,
"showUrl": "/bitrix/components/bitrix/crm.deal.show/show_file.php?ownerId=1410&fieldName=UF_CRM_1693238467&dynamic=Y&fileId=4332",
"downloadUrl": "/bitrix/components/bitrix/crm.deal.show/show_file.php?auth=&ownerId=1410&fieldName=UF_CRM_1693238467&dynamic=Y&fileId=4332"
}
что делаю не так🥵 уже часа 2 мучаюсь
какая авторизация нужна?
Он и не скачает в таком виде нужна прямая ссылка на файл
Id файла известен?
@mcp74 прошу подсказку
В БД посмотрите если с таким id этот файл, то тогда да, потом можно получить о нём из бд информацию и ссылку нормальную
как качать подскажи пожалуйста🤪 fileId=4332", "downloadUrl": "/bitrix/components/bitrix/crm.deal.show/show_file.php?auth=&ownerId=1410&fieldName=UF_CRM_1693238467&dynamic=Y&fileId=4332"
Весь бизнес процесс сюда расписать нужно, как без контекста понять что именно нужно, каким образом планировалось, зачем и тд
1. На определенной стадии сделки вэбхуком скидываю из конструктора на скрипт: сообщение и id сделки. 2. В скрипте = смотрю по id сделки ссылку для скачивания =downloadUrl качаю файл (фото) из поля сделки, тип файл 3. Сохраняю в локальной папке upload 4. скидываю в телеграм бот 5. удаляю вайл из папки upload
Скрипт находится там же где и ядро битрикса или на другом сервере?
Хотя без разницы Вот для БП php код $fileInfo = CFile::MakeFileArray({{Договор об обучении}}); $postData = array( 'type' => 'EMPTY_CONTRACT', 'content' => 'data:'.$fileInfo['type'].';base64,'.base64_encode(file_get_contents($fileInfo['tmp_name'])), ); $ch = curl_init('https://test/api/v1/documents/applications/{{ID заявления абитуриента}}'); curl_setopt_array($ch, array( CURLOPT_POST => TRUE, CURLOPT_RETURNTRANSFER => TRUE, CURLOPT_HTTPHEADER => array( 'Content-Type: application/json' ), CURLOPT_POSTFIELDS => json_encode($postData), CURLOPT_SSL_VERIFYHOST => 0, CURLOPT_SSL_VERIFYPEER => 0, )); $html = curl_exec($ch); curl_close($ch);
4. скидываю в телеграм бот А тг бот не умеет сразу файл отправлять?
Ну кстати да, если не надо хранить отдельно отправленные файлы, в телегу можно и сразу кидать
https://stackoverflow.com/questions/66244747/telegram-bot-senddocument-php-on-hosted-server
Ты адрес портала подставил в начале?
хороший вопрос
конечно, я же тебе вчера показывл
'path/to/document.pdf', ======== может быть внешней ссылкой?🥴 use Telegram\Bot\Api; $telegram = new Api('BOT TOKEN'); $response = $telegram->sendDocument([ 'chat_id' => 'CHAT_ID', 'document' => 'path/to/document.pdf', 'caption' => 'This is a document', ]); $messageId = $response->getMessageId();
может быть внешней ссылкой? Надо смотреть чёто там в библиотеке Bot\Api
$fileInfo = CFile::MakeFileArray({{Фото объема}}); $postData = array( 'type' => 'EMPTY_CONTRACT', 'content' => 'data:'.$fileInfo['type'].';base64,'.base64_encode(file_get_contents($fileInfo['tmp_name'])), ); $ch = curl_init('http://domen/crest/eqtelegram/post.php'); curl_setopt_array($ch, array( CURLOPT_POST => TRUE, CURLOPT_RETURNTRANSFER => TRUE, CURLOPT_HTTPHEADER => array( 'Content-Type: application/json' ), CURLOPT_POSTFIELDS => json_encode($postData), CURLOPT_SSL_VERIFYHOST => 0, CURLOPT_SSL_VERIFYPEER => 0, )); $html = curl_exec($ch); curl_close($ch); не предается, Максим, подскажи пожалуйста, что не так🥵
Залогируйте данные что приходит на post.php что бы понять что там не так передаётся
]$logData = date('Y-m-d H:i:s') . "\n" . json_encode($_POST) . "\n\n"; $logFile = fopen('log.txt', 'a'); fwrite($logFile, $logData); fclose($logFile); сразу так и сделал - ничего не пришло - пуст log.txt
Поле не множественное?
Запустите код подставив id файла вместо {{Фото объема}} в php консоли /bitrix/admin/php_command_line.php?lang=ru
$fileInfo = CFile::MakeFileArray(4389); так?
Стикер
странно я массив с ответом в стрку переделал $logData = date('Y-m-d H:i:s') . "\n" . json_encode($_POST) . "\n\n"; $logFile = fopen('log.txt', 'a'); fwrite($logFile, $logData); fclose($logFile); а в лог залетел массив
file_put_contents($_SERVER["DOCUMENT_ROOT"] . "/bitrix/php_interface/tech.log",date('Y-m-d H:i:s') . "\n" . print_r($_POST,true) . "\n||\n", FILE_APPEND);
Да, пути замените
не работает
Пример брал с другого сайта CURLOPT_POSTFIELDS => http_build_query($postData),
В php консоли
$fileInfo = CFile::MakeFileArray(4389); $postData = array( 'type' => 'EMPTY_CONTRACT', 'content' => 'data:'.$fileInfo['type'].';base64,'.base64_encode(file_get_contents($fileInfo['tmp_name'])), ); $ch = curl_init(‘http://домен/crest/eqtelegram/post.php'); curl_setopt_array($ch, array( CURLOPT_POST => TRUE, CURLOPT_RETURNTRANSFER => TRUE, CURLOPT_HTTPHEADER => array( 'Content-Type: application/json' ), CURLOPT_POSTFIELDS => http_build_query($postData), CURLOPT_SSL_VERIFYHOST => 0, CURLOPT_SSL_VERIFYPEER => 0, )); $html = curl_exec($ch); curl_close($ch); Обработчик <?php file_put_contents($_SERVER["DOCUMENT_ROOT"] . "log.txt",date('Y-m-d H:i:s') . "\n" . print_r($_POST,true) . "\n||\n", FILE_APPEND); 🥵не работает
curl_setopt_array($ch, array( CURLOPT_SSL_VERIFYPEER => 0, CURLOPT_POST => 1, CURLOPT_HEADER => 0, CURLOPT_RETURNTRANSFER => 1, CURLOPT_POSTFIELDS => http_build_query($postData), ));
$fileInfo = CFile::MakeFileArray(4389); $postData = array( 'type' => 'EMPTY_CONTRACT', 'content' => 'data:'.$fileInfo['type'].';base64,'.base64_encode(file_get_contents($fileInfo['tmp_name'])), ); $ch = curl_init('http://домен/crest/eqtelegram/post.php'); curl_setopt_array($ch, array( CURLOPT_SSL_VERIFYPEER => 0, CURLOPT_POST => 1, CURLOPT_HEADER => 0, CURLOPT_RETURNTRANSFER => 1, CURLOPT_POSTFIELDS => http_build_query($postData), )); $html = curl_exec($ch); curl_close($ch);
Слушай, я тебя по прежнему жду на светлой стороны, где ты обещался быть еще 2 месяца назад.
<?php file_put_contents($_SERVER["DOCUMENT_ROOT"] . "/log.txt",date('Y-m-d H:i:s') . "\n" . print_r($_POST,true) . "\n||\n", FILE_APPEND);
а чот Денис потерялся.
Решает может очень сложную задачу
возможно. я, лично, верю, что он набирается опыта для перехода на светлую сторону.
Ну смотря по +/- одинаковым проблемам, которые возникают с файлами, там не так просто опыт набирается)
ну, если поиском воспользоваться. тему 8 раз обсуждали, 3 раза нашли решение и все работало.
Обсуждают сегодня