...

Взаимодействие с внешними сервисами

Тема в разделе "Вопросы по платформе", создана пользователем ea.thephoenix, 9 дек 2024.

  1. ea.thephoenix

    ea.thephoenix Новичок

    Доброго дня!
    На основе Elma365 (On-Premises) разработали хранилище отсканированных документов (сотрудники загружают скан, заполняют необходимые поля и создают запись в системе).
    Сейчас возникла задача распознавать текст документа, чтобы в дальнейшем была возможность осуществлять по распознанному тексту поиск.
    Для этого сделали OCR-сервер (внутри сети), который ожидает приёма POST-запросом файла, имя которого = его ID в Elma, после чего распознаёт текст и отправляет его обратно в специально созданное поле в документе.
    Отправлять распознанный текст в поле документа научились, а вот переименовать сам файл в ID и отправить в OCR не можем понять как.
    Вижу примерно так: после создания записи в системе, запускается бизнес-процесс, который копирует файл во временную папку, переименовывает его в ID документа и отправляет POST-запросом на OCR-сервер.
    Очень нужна любая помощь с реализацией!
  2. dskuznetcov

    dskuznetcov Участник

    Добрый день!
    Если речь идет о файлах, загружаемых с компьютера, то вот пример того, как можно создать временный файл с нужным именем и отправить его POST-запросом:

    Код:
    
    async function sendToOCR() {

        
    // ИД файла можно задать напрямую или взять из контекстной переменной.
        // К примеру, есть поле Context.data.file, куда пользователь прикладывает свой файл.
        
    const file await System.files.search()
            .
    where(=> f.__id.eq(Context.data.file.id))
            .
    first();
       
        
    // Далее создаем новый временный файл из текущего.
        // Сперва получим бинарные данные с помощью fetch.
        
    const response await fetch(file!.getStaticDownloadUrl());
        const 
    buffer await response.arrayBuffer();

        
    // Теперь создаем файл с нужным именем, в данном случае с ИД файла.
        
    const tempFile await System.files.createTemporary(file!.idbuffer);

        
    // Отправляем файл в OCR.
        
    fetch("https://my-ocr-server.com/files/elma", {
            
    method"POST",
            
    body// Тут подставляется нужные данные в тело запроса
        
    })
    }