UploadFile#
Для метода UploadFile рекомендуется использовать хост media.green-api.com
Метод предназначен для загрузки файла в облачное хранилище, который можно отправить методом sendFileByUrl. А так же позволяет избежать ошибок получения файлов из внешних хранилищ и ускорить отправку сообщений, например, в сценарии рассылки.
Альтернативный способ отправить файл загрузкой с диска: sendFileByUpload.
Срок жизни ссылки 15 дней.
Максимальный размер отправляемых файлов равен 100 Мбайт.
Тип отправляемого файла и способ его отправки определяется по расширению файла.
Применение метода UploadFile
Рекомендуется применять метод при рассылках однотипных сообщений:
- Методом UploadFile загрузить требуемый файл в хранилище Green-API, в ответе получить ссылку на файл.
- Методом SendFileByUrl производить отправку используя полученную ссылку.
Запрос#
Для выгрузки файла требуется выполнить запрос по адресу:
POST https://media.green-api.com/waInstance{{idInstance}}/uploadFile/{{apiTokenInstance}}
Для получения параметров запроса idInstance
и apiTokenInstance
обратитесь к разделу Перед началом работы.
Параметры запроса#
В качестве тела запроса необходимо указать сам файл
Content-Type
в соответствии со Списком MIME-типов. Параметр | Тип | Обязательный | Описание |
---|---|---|---|
file | binary | Да | Выгружаемый файл |
Пример тела запроса#
Примеры кода
import requests
url = "https://media.green-api.com/waInstance{{idInstance}}/uploadFile/{{apiTokenInstance}}"
payload = "<file contents here>"
headers = {
'Content-Type': 'image/jpeg'
}
response = requests.request("POST", url, headers = headers, data = payload)
print(response.text.encode('utf8'))
curl --location 'https://media.green-api.com/{{idInstance}}/uploadFile/{{apiTokenInstance}}' \
--header 'Content-Type: image/jpeg' \
--data '@test.jpg'
var file = new File("/Users/user/Desktop/fileExample.jpeg");
var restTemplate = new RestTemplate();
var requestUrl = new StringBuilder();
requestUrl
.append("https://media.greenapi.com")
.append("/waInstance").append({{idInstance}})
.append("/uploadFile/")
.append({{apiTokenInstance}});
var byteArrayResource = new ByteArrayResource(Files.readAllBytes(file.toPath()));
var headers = new HttpHeaders();
headers.setContentType(MediaTypeFactory.getMediaType(file.getName())
.orElse(MediaType.APPLICATION_OCTET_STREAM));
var requestEntity = new HttpEntity<>(byteArrayResource, headers);
var response = restTemplate.exchange(requestUrl.toString(), HttpMethod.POST, requestEntity, String.class);
System.out.println(response);
var file = new File("/Users/user/Desktop/fileExample.jpeg");
var requestUrl = new StringBuilder();
requestUrl
.append("https://media.greenapi.com")
.append("/waInstance").append({{idInstance}})
.append("/uploadFile/")
.append({{apiTokenInstance}});
var response = Unirest.post(requestUrl.toString())
.header("Content-Type", Files.probeContentType(file.toPath()))
.body(Files.readAllBytes(file.toPath()))
.asString();
System.out.println(response);
<?php
// Need to use SDK https://github.com/green-api/whatsapp-api-client-php
require './vendor/autoload.php';
use GreenApi\RestApi\GreenApiClient;
define( "ID_INSTANCE", "1101712345" );
define( "API_TOKEN_INSTANCE", "d75b3a66374942c5b3c019c698abc2067e151558acbd412345" );
$greenApi = new GreenApiClient( ID_INSTANCE, API_TOKEN_INSTANCE );
$result = $greenApi->sending->uploadFile(
'C:\Games\PicFromDisk.png'
);
print_r( $result->data );
Ответ#
Поля ответа#
Поле | Тип | Описание |
---|---|---|
urlFile | string | Ссылка на выгруженный файл |
Пример тела ответа#
{
"urlFile": "https://sw-media-out.storage.yandexcloud.net/1101123456/c1aabd48-c1c2-49b1-8f2d-f575a41777be.jpg"
}
Пример кода с использованием методов uploadFile + sendFileByUrl#
<?php
// Need to use SDK https://github.com/green-api/whatsapp-api-client-php
require './vendor/autoload.php';
use GreenApi\RestApi\GreenApiClient;
define( "ID_INSTANCE", "1101123456" );
define( "API_TOKEN_INSTANCE", "d75b3a66374942c5b3c019c698abc2067e151558acbd412345" );
$greenApi = new GreenApiClient( ID_INSTANCE, API_TOKEN_INSTANCE, 'http://127.0.0.1:8080' );
$result = $greenApi->sending->uploadFile(
'C:\Games\PicFromDisk.png'
);
print_r( $result->data );
$result = $greenApi->sending->sendFileByUrl(
'11001234567@c.us',
$result->data->urlFile,
'googlelogo_color_272x92dp.png',
'Google logo'
);
print_r( $result->data );
Ошибки UploadFile#
Перечень общих для всех методов ошибок смотрите в разделе Стандартные ошибки