SendMediaStatus#
Бета-версия
Функциональность находится в режиме бета-версии. Функции могут быть изменены, а также могут работать нестабильно. В будущем за функционал может взиматься дополнительная плата.
Подключение к функционалу можно запросить через техподдержку Green API
Метод предназначен для отправки медиа-файлов. Статус будет добавлен в очередь на отправку. Статус на отправку хранится 24 часа в очереди и будет отправлено сразу же после авторизации телефона.
Скорость отправки статусов из очереди регулирует параметр Интервал отправки сообщений.
Важно
Чтобы получатель увидел статусы отправителя, обе стороны должны сохранить номера собеседников в список контактов
Список контактов подтягивается методом GetContacts по значению поля
contactName
. Чтобы получить актуальный список контактов, требуется переименовать контакт и заново авторизоваться, пересканировав QR код.
Для корректной работы метода рекомендуем использовать файлы со следующими параметрами:
-
Рекомендуемый формат для видео - MP4.
Если видео имеет длину более одной минуты, при отправке оно будет обрезано до одной минуты.
-
Рекомендуемое соотношение сторон для картинки 9:16 (вертикальная картинка)
Запрос#
Для отправки медиа в статус требуется выполнить запрос по адресу:
{{apiUrl}}/waInstance{{idInstance}}/sendMediaStatus/{{apiTokenInstance}}
Ссылка должна быть прямой ссылкой на файл, а не ссылкой на скачивание файла
При использовании ссылки на скачивание файла вы получите код HTTP 200 OK, но статус не будет добавлен отправителю. Внешне ссылки могут быть идентичными, и их невозможно отличить без открытия ссылок в браузере.
Как определить тип ссылки на файл?
- При переходе по прямой ссылке вы увидите свой файл в окне браузера, а при переходе по ссылке на скачивание файла начнётся его загрузка.
- При открытии инструментов разработчика легко заметить, что прямая ссылка на файл при его открытии обладает полем:
content-type: image/jpeg
или идентичным, а ссылка для загрузки обладает полем:content-type: application/octet-stream
.
Как избежать проблем с внешними ссылками?
- Формировать ссылки при помощи метода UploadFile.
Для получения параметров запроса apiUrl
, idInstance
и apiTokenInstance
обратитесь к разделу Перед началом работы.
Параметры запроса#
Параметр | Тип | Обязательный | Описание |
---|---|---|---|
urlFile | string | Да | Ссылка на отправляемый файл |
fileName | string | Да | Название файла. Должно содержать расширение файла. Требуется использовать кодировку UTF-8 без BOM. Например: test.jpg |
caption | string | Нет | Описание медиа статуса. Максимальная длина поля 1024 символов. |
participants | array<string> | Нет | Массив строк с идентификаторами контактов, которым будет доступен статус. Если значение поля пустое,"participants": [] , статус будет доступен всем контактам |
В случае добавления несуществующих номеров в поле
participants
статус не будет отправлен на эти номера
Пример тела запроса#
Отправка медиа статуса:
{
"urlFile": "https://my.site.com/img/horse.png",
"fileName": "horse.png",
"caption": "Little horse",
"participants": ["70000001234@c.us", "440000001234@c.us"] // статус будет доступен только указанным контактам
}
Ответ#
Поля ответа#
Поле | Тип | Описание |
---|---|---|
idMessage | string | Идентификатор отправленного сообщения |
Пример тела ответа#
{
"idMessage": "3EB0C767D097B7C7C030"
}
Ошибки SendMediaStatus#
Перечень общих для всех методов ошибок смотрите в разделе Стандартные ошибки.
Код HTTP | Идентификатор ошибки | Описание |
---|---|---|
403 | Forbidden | Доступ к функционалу бета-версии методов статусов отсутствует. Подключение к функционалу можно запросить через техподдержку Green API |
Примеры кода#
import requests
import json
url = "{{apiUrl}}/waInstance{{idInstance}}/sendMediaStatus/{{apiTokenInstance}}"
payload = json.dumps({
"urlFile": "https://sw-media.storage.greenapi.net/1101000000/537157f6-4e24-4c4e-b5c6-9406c702f196.png",
"fileName": "horse.png",
"caption": "Little horse",
"participants": [
"70000001234@c.us",
"440000001234@c.us"
]
})
headers = {
'Content-Type': 'application/json'
}
response = requests.post(url, json=payload)
print(response.text)
curl --location '{{apiUrl}}/waInstance{{idInstance}}/sendMediaStatus/{{apiTokenInstance}}' \
--header 'Content-Type: application/json' \
--data-raw '{
"urlFile": "https://sw-media.storage.greenapi.net/1101000000/537157f6-4e24-4c4e-b5c6-9406c702f196.png",
"fileName": "horse.png",
"caption": "лошадка",
"participants": [
"70000001234@c.us",
"440000001234@c.us"
]
}'
var restTemplate = new RestTemplate();
var requestUrl = new StringBuilder();
requestUrl
.append({{apiUrl}})
.append("/waInstance").append({{idInstance}})
.append("/sendMediaStatus/")
.append({{apiTokenInstance}});
var headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
var jsonBody = "{\r\n \t\"urlFile\": \"https://sw-media.storage.greenapi.net/1101000000/537157f6-4e24-4c4e-b5c6-9406c702f196.png\",\r\n\t\"fileName\": \"horse.png\",\r\n\t\"caption\": \"little horse\",\r\n\t\"participants\": [\"70000001234@c.us\", \"440000001234@c.us\"]\r\n}";
var requestEntity = new HttpEntity<>(jsonBody, headers);
var response = restTemplate.exchange(requestUrl.toString(), HttpMethod.POST, requestEntity, String.class);
System.out.println(response);
var requestUrl = new StringBuilder();
requestUrl
.append({{apiUrl}})
.append("/waInstance").append({{idInstance}})
.append("/sendMediaStatus/")
.append({{apiTokenInstance}});
var response = Unirest.post(requestUrl.toString())
.header("Content-Type", "application/json")
.body("{\r\n \t\"urlFile\": \"https://sw-media.storage.greenapi.net/1101000000/537157f6-4e24-4c4e-b5c6-9406c702f196.png\",\r\n\t\"fileName\": \"horse.png\",\r\n\t\"caption\": \"little horse\",\r\n\t\"participants\": [\"70000001234@c.us\", \"440000001234@c.us\"]\r\n}")
.asString();
System.out.println(response);