SendFileByUrl#
Метод предназначен для отправки файла, загружаемого по ссылке. Сообщение будет добавлено в очередь на отправку. Сообщение на отправку хранится 24 часа в очереди и будет отправлено сразу же после авторизации телефона. Скорость отправки сообщений из очереди регулирует параметр Интервал отправки сообщений
Файлы видео, аудио и изображений отправляются, как и в родном WhatsApp с возможностью просмотра и прослушки. Документы отправляются так же как в родном WhatsApp. Тип отправляемого файла и способ его отправки определяется по расширению файла. Описание добавляется только к изображениям и видео.
Максимальный размер отправляемых файлов равен 100 Мбайт.
Отправка нескольких файлов одним запросом невозможна. 1 файл отправляется только 1 сообщением. Возможность отправки нескольких файлов одновременно формируется только на стороне приложения WhatsApp.
Ограничений на разрешения изображений нет. Однако при отправке изображений через API с разрешением свыше 3000х3000 пикселей, превью не формируется.
Запрос#
Для отправки файла требуется выполнить запрос по адресу:
{{apiUrl}}/waInstance{{idInstance}}/sendFileByUrl/{{apiTokenInstance}}
Для получения параметров запроса apiUrl, idInstance и apiTokenInstance обратитесь к разделу Перед началом работы.
Параметры запроса#
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
chatId | string | Да | Идентификатор чата |
urlFile | string | Да | Ссылка на отправляемый файл |
fileName | string | Да | Название файла. Должно содержать расширение файла. Требуется использовать кодировку UTF-8 без BOM. Например: test.jpg |
caption | string | Нет | Описание под файлом. Описание добавляется к видео, изображениям. Максимальная длина поля 20000 символов. |
Примечание
-
Рекомендации по формату ссылок
- В ссылке могут быть использованы символы a-z, A-Z, 0-9, - (дефис), _ (нижнее подчеркивание)
- В ссылке должны отсутствовать спец символы ~$€%#£?! и пробелы
- Кодировка символов ссылки UTF-8 без BOM
- Требуется передавать не кодированные ссылки (система сама кодирует ссылку)
- Требуется чтобы ссылка указывала на конкретный файл, а не на html страницу
- Требуется использовать быстрое хранилище, без ограничения на количество запросов файлов
-
Поле fileName
Требуется обязательно указывать поле fileName с верным расширением файла.
Определение типа файла системой:
- По расширению указанного в названии файла, в поле fileName
- Если поле fileName не содержит расширения, то тип файла получаем по Content-Type из заголовка ссылки
- Если в заголовке поле Content-Type отсутствует или содержит несуществующий тип файла, система постарается определить тип файла по байтам файла
- Если система не сможет определить тип файла, то произойдет отправка с типом по умолчанию (бинарный файл)
Время на отправку файла
Отправка файлов происходит в несколько этапов:
- Получение файла
- Выгрузка файла на сервер WhatsApp
- Запрос на отправку файла в WhatsApp
Время на отправку файла зависит от размера файла, скорости получения файла и обработки файла WhatsApp. В зависимости от данных факторов время на отправку файла может меняться от 1 до 20 секунд.
Поддерживаемые типы файлов#
| Тип информации | Расширение | Максимальный размер | Описние |
|---|---|---|---|
| текст | txt | 4096 символов | Весь текст нужно отправлять одним файлом |
| картинка | jpg, png | 5 Mb | WhatsApp сжимает картинки до нового соотношения сторон 1.91:1: 800×418 пикселей. |
| файл | Любой стандарта MIME | 100 Mb | |
| аудио | aac, mp4, amr, mpeg, ogg | 16 Mb | Для ogg файлы подерживается только opus кодеки, base audio/ogg не поддерживается. |
| видео | mp4, 3gpp | 16 Mb | Только H.264 видео кодек и AAC аудио кодек поддерживается. |
| стикер | webp | 100 Kb | Поддерживаются только статические стикеры. Стикеры должны иметь прозрачный фон. Размер стикера может быть равным ровно 512*512 пикселей. |
Пример тела запроса#
Отправка сообщения в личный чат:
{
"chatId": "11001234567@c.us",
"urlFile": "https://my.site.com/img/horse.png",
"fileName": "horse.png",
"caption": "Лошадка"
}
Отправка сообщения в групповой чат:
{
"chatId": "120363043968066561@g.us",
"urlFile": "https://my.site.com/img/horse.png",
"fileName": "horse.png",
"caption": "Лошадка"
}
Ответ#
Поля ответа#
| Поле | Тип | Описание |
|---|---|---|
idMessage | string | Идентификатор отправленного сообщения |
Пример тела ответа#
{
"idMessage": "3EB0C767D097B7C7C030"
}
Ошибки SendFileByUrl#
Перечень общих для всех методов ошибок смотрите в разделе Стандартные ошибки
Примеры кода#
import requests
url = "{{APIUrl}}/waInstance{{idInstance}}/sendFileByUrl/{{apiTokenInstance}}"
payload = "{\r\n \t\"chatId\": \"11001234567@c.us\",\r\n\t\"urlFile\": \"https://avatars.mds.yandex.net/get-pdb/477388/77f64197-87d2-42cf-9305-14f49c65f1da/s375\",\r\n\t\"fileName\": \"horse.png\",\r\n\t\"caption\": \"little horse\"\r\n}"
headers = {
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data = payload)
print(response.text.encode('utf8'))
curl --location '{{APIUrl}}/waInstance{{idInstance}}/sendFileByUrl/{{apiTokenInstance}}' \
--header 'Content-Type: application/json' \
--data-raw '{
"chatId": "12345678910@c.us",
"urlFile": "https://avatars.mds.yandex.net/get-pdb/477388/77f64197-87d2-42cf-9305-14f49c65f1da/s375",
"fileName": "horse.png",
"caption": "лошадка"
}'
var restTemplate = new RestTemplate();
var requestUrl = new StringBuilder();
requestUrl
.append({{apiUrl}})
.append("/waInstance").append({{idInstance}})
.append("/sendFileByUrl/")
.append({{apiTokenInstance}});
var headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
var jsonBody = "{\r\n \t\"chatId\": \"11001234567@c.us\",\r\n\t\"urlFile\": \"https://avatars.mds.yandex.net/get-pdb/477388/77f64197-87d2-42cf-9305-14f49c65f1da/s375\",\r\n\t\"fileName\": \"horse.png\",\r\n\t\"caption\": \"little horse\"\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("/sendFileByUrl/")
.append({{apiTokenInstance}});
var response = Unirest.post(requestUrl.toString())
.header("Content-Type", "application/json")
.body("{\r\n \t\"chatId\": \"11001234567@c.us\",\r\n\t\"urlFile\": \"https://avatars.mds.yandex.net/get-pdb/477388/77f64197-87d2-42cf-9305-14f49c65f1da/s375\",\r\n\t\"fileName\": \"horse.png\",\r\n\t\"caption\": \"little horse\"\r\n}")
.asString();
System.out.println(response);
Sub SendFileByUrl()
Dim url As String
Dim RequestBody As String
Dim http As Object
' The idInstance and apiTokenInstance values are available in your account, double brackets must be removed
url = "{{APIUrl}}/waInstance{{idInstance}}/SendFileByUrl/{{apiTokenInstance}}"
' chatId is the number to send the message (@c.us for private chats, @g.us for group chats), urlFile - url link, fileName - file name with extension, caption - title
RequestBody = "{""chatId"":""90123456789@c.us"",""urlFile"":""https://my.site.com/img/horse.png"",""fileName"":""horse.png"",""caption"":""horse""}"
Set http = CreateObject("MSXML2.XMLHTTP")
With http
.Open "POST", url, False
.setRequestHeader "Content-Type", "application/json"
.Send RequestBody
End With
response = http.responseText
Debug.Print response
' Outputting the answer to the desired cell
' Range("A1").Value = response
Set http = Nothing
End Sub