Я попытался создать специальный класс, который предоставляет возможность переводить динамические HTML-файлы с помощью IBM Watson Language Translator.
Но, используя официальную документацию, я не могу перевести файл, созданный на лету, потому что я получил ошибку content of the file does not match submitted content type
Это мой код:
$client = new Client();
$response = $client->request( 'POST',
config('translator.ibm.ibm_watson_endpoint_url') .
config('translator.ibm.ibm_watson_available_endpoints.documents'),
[
'headers' => [
'Authorization' => 'Basic YXBpa2V5OkI3eDgwX1NSRElSSTBzRE9IcnN4Vy1uLXRwR3B4OWRGbzRVLXozd1hIazBx'
],
'multipart' => [
[
'name' => 'file',
'contents' => \GuzzleHttp\Psr7\Utils::tryFopen($file, 'r'),
'filename' => 'document.html'
],
[
'name' => 'model_id',
'contents' => $languageModel
],
[
'name' => 'filename',
'contents' => 'document.html'
],
[
'name' => 'fileContentType',
'contents' => 'text/html'
]
]
]
);
return $response->getBody()->getContents();
Он работает отлично: он отправляет document.html в IBM, и я получаю ответ со следующими параметрами:
{
created: "2021-03-30T14:32:17Z"
document_id: "759cc62f-81b3-4fba-a757-5dc408b1b11a"
filename: "document.html"
model_id: "de-en"
source: "de"
status: "processing"
target: "en"
}
Затем я использую document_id для проверки статуса перевода (это может быть processing, available или failed)
И каждый раз при проверке получаю следующий ответ:
{
completed: "2021-03-30T14:09:35Z"
created: "2021-03-30T14:09:35Z"
document_id: "48190e57-53cb-4e39-8e5a-2b6f45a9ea27"
error: "content of the file does not match submitted content type"
filename: "document.html"
model_id: "de-en"
source: "de"
status: "failed"
target: "en"
}
Может кто сталкивался с такой же проблемой?
Пожалуйста, мне очень нужна помощь





Вместо вызова API создайте функцию, которая читает файл и записывает его в журнал. Таким образом вы увидите, является ли контент HTML.