Перейти к содержанию

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#

Перечень общих для всех методов ошибок смотрите в разделе Стандартные ошибки