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

SendFileByUrl#

Test Postman

Метод предназначен для отправки файла, загружаемого по ссылке.

Сообщение добавляется в очередь на отправку.
Скорость отправки сообщений из очереди устанавливает интервал отправки сообщений.

Для метода используются ограничения на частоту запросов в секунду.

Срок хранения файлов 24 часа.

Запрос#

Для отправки файла требуется выполнить запрос по адресу:

POST
{{apiUrl}}/waInstance{{idInstance}}/sendFileByUrl/{{apiTokenInstance}}

Для получения параметров запроса apiUrl, idInstance и apiTokenInstance обратитесь к разделу Перед началом работы.

Параметры запроса#

Параметр Тип Обязательный Описание
chatId string Да Идентификатор чата
urlFile string Да Ссылка на отправляемый файл
fileName string Да Название файла. Должно содержать расширение файла. Требуется использовать кодировку UTF-8 без BOM. Например: test.jpg
caption string Нет Описание под файлом. Максимальная длина - 1024 символа
Формат ссылок в urlFile

Рекомендации по формату ссылок:

  1. В ссылке могут быть использованы символы a-z, A-Z, 0-9, - (дефис), _ (нижнее подчеркивание)
  2. В ссылке должны отсутствовать спец символы ~$€%#£?! и пробелы
  3. Кодировка символов ссылки UTF-8 без BOM
  4. Требуется передавать не кодированные ссылки (система сама кодирует ссылку)
  5. Требуется чтобы ссылка указывала на конкретный файл, а не на html страницу
  6. Требуется использовать быстрое хранилище, без ограничения на количество запросов файлов
Расширение файла в fileName

Поле fileName

Требуется обязательно указывать поле fileName с верным расширением файла.

Определение типа файла системой:

  1. По расширению указанного в названии файла, в поле fileName
  2. Если поле fileName не содержит расширения, то тип файла получаем по Content-Type из заголовка ссылки
  3. Если в заголовке поле Content-Type отсутствует или содержит несуществующий тип файла, система постарается определить тип файла по байтам файла
  4. Если система не сможет определить тип файла, то произойдет отправка с типом по умолчанию (бинарный файл)

Время на отправку файла

Отправка файлов происходит в несколько этапов:

  1. Получение файла
  2. Запрос на отправку файла в Telegram

Время на отправку файла зависит от размера файла, скорости получения файла и обработки файла Telegram. В зависимости от данных факторов время на отправку файла может меняться от 1 до 20 секунд.

Пример тела запроса#

Отправка сообщения в личный чат:

{
    "chatId": "10000000",
    "urlFile": "https://avatars.mds.yandex.net/get-pdb/477388/77f6411da/s375",
    "fileName": "horse.png",
    "caption": "лошадка"
}

Отправка сообщения в групповой чат:

{
    "chatId": "-10000000000000",
    "urlFile": "https://avatars.mds.yandex.net/get-pdb/477388/77f64191da/s375",
    "fileName": "horse.png",
    "caption": "лошадка"
}

Ответ#

Поля ответа#

Поле Тип Описание
idMessage string Идентификатор отправленного сообщения

Пример тела ответа#

{
    "idMessage": "1769676078000"
}

Ошибки#

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

Код HTTP Идентификатор ошибки Описание
400 Bad Request
Validation failed
Ошибка валидации
400 Validation failed.
Details: url has incorrect format. It should start with http(s)://'
Некорректная ссылка

Примеры кода#

import requests

url = "{{apiUrl}}/waInstance{{idInstance}}/sendFileByUrl/{{apiTokenInstance}}"

payload = {
    "chatId": "10000000", 
    "urlFile": "https://avatars.mds.yandex.net/get-pdb/477388/77f64197-87d2-42cf-9305-14f49c65f1da/s375", 
    "fileName": "horse.png", 
    "caption": "лошадка"
}
headers = {
    'Content-Type': 'application/json'
}

response = requests.post(url, json=payload)

print(response.text.encode('utf8'))
curl --location '{{apiUrl}}/waInstance{{idInstance}}/sendFileByUrl/{{apiTokenInstance}}' \
--header 'Content-Type: application/json' \
--data-raw '{
    "chatId": "10000000",
    "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\": \"10000000\",\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\": \"10000000\",\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
    Dim response As String

    ' The apiUrl, idInstance and apiTokenInstance values are available in console, 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"":""10000000"",""urlFile"":""https://my.site.com/img/horse.png"",""fileName"":""horse.png"",""caption"":""Лошадка""}"

    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