@mirexdoors

Как прикрепить файл к лиду через API?

Здравствуйте! Возникла проблема при добавлении файла к лиду через апи.

Данные для файла формирую следующим образом:
$data = file_get_contents($url);
$base64 = base64_encode($data);
$fileName = urldecode(basename($url));
$fileData = [$fileName, $base64];


Полученный массив передаю в пользовательское поле с ключом "fileData":
$arParams['UF_CRM_1566289984628'] = ['fileData' => $fileData ];


Создаю лид - лид успешно создаётся, но файл не прикреплён. Никакая ошибка не создаётся. Возможно, это еще как-то зависит от прав пользователя в црм?
  • Вопрос задан
  • 6435 просмотров
Решения вопроса 1
@mirexdoors Автор вопроса
Отвечу на вопрос сам, вдруг кому-то пригодится.

При создании лида через обращение к "/crm/configs/import/lead.php", загрузка файла осуществляется указанием прямой ссылки на файлы, доступный из интернета для скачивания.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
artemky
@artemky
Массив, по-моему, составлен правильно, вопрос - что у вас в $url. Прикреплю код, который работает у меня для сделок:
$target = md5('salt'.$_FILES['spec_file']['name']);
$path = 'sales/upload/'.$target;
move_uploaded_file($_FILES['spec_file']['tmp_name'], $path);
$UF_CRM_1552985294 = array('fileData'=>array($_FILES['spec_file']['name'], base64_encode(file_get_contents($path))));
$CB24 = new CB24;
$cur_deal = $CB24->method('crm.deal.update.json',array(
        "id" => $dealid,
        "fields" => [
            'UF_CRM_1552985294' => $UF_CRM_1552985294,
        ],
    )
);
Ответ написан
bulgar989
@bulgar989
Fullstack web developer (Laravel, VUE)
$sendData = [
	"id" => $deal_id,
	"fields" => [
		"UF_CRM_1552985294" => [
			"fileData" => [
				$_FILES["file"]["name"],
				base64_encode(file_get_contents($_FILES["file"]["tmp_name"]))
			]
		]
	]
];
Ответ написан
Комментировать
@Mizone
Чтобы отправить несколько файлов, при условии что у вас пользовательское поле в CRM является множественным.
$sendData = [
    "id" => $deal_id,
    "fields" => [
        "UF_CRM_1552985294" => [
            [
                "fileData" => [
                    $_FILES["file"]["name"],
                    base64_encode(file_get_contents($_FILES["file"]["tmp_name"]))
                ]
            ],
            [
                "fileData" => [
                    $_FILES["file_2"]["name"],
                    base64_encode(file_get_contents($_FILES["file_2"]["tmp_name"]))
                ]
            ],
        ]
    ]
];
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы