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

SendLocation#

Test Postman Apidog

Метод предназначен для отправки сообщения геолокации. Сообщение будет добавлено в очередь на отправку. Сообщение на отправку хранится 24 часа в очереди и будет отправлено сразу же после авторизации телефона. Скорость отправки сообщений из очереди регулирует параметр Интервал отправки сообщений.

Запрос#

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

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

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

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

Параметр Тип Обязательный Описание
chatId string Да Идентификатор чата
nameLocation string Нет Название локации
address string Нет Адрес локации
latitude double Да Широта локации
longitude double Да Долгота локации
quotedMessageId string Нет Идентификатор цитируемого сообщения. При заполнении параметра сообщение отправится с цитированием указанного сообщения чата.
Цитирование сообщения возможно только из того же чата, в который производится отправка.
Для отправки сообщений из другого чата используется метод ForwardMessages

Цитирование сообщений

Для корректной работы с механизмом цитирования сообщений система должна знать о сообщении, которое будет процитировано. Убедится о том что сообщение доступно к цитированию можно запросив метод журналирования getMessage, если сообщение отсутствует в системе, то цитировать такое сообщение невозможно.

  • Для цитирования входящих сообщений необходимо включить настройку Получать уведомления о входящих сообщениях и файлах.

  • Для цитирования исходящих сообщений отправленных с телефона, включите настройку Получать уведомления о сообщениях, отправленных с телефона.
    Так сообщения будут попадать в систему и их можно будет цитировать.

Установку настроек можно сделать методом SetSettings или через личный кабинет.

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

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

{
    "chatId": "11001234567@c.us",
    "nameLocation": "Restaurant",
    "address": "123456, Perm",
    "latitude": 12.3456789,
    "longitude": 10.1112131
}

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

{
    "chatId": "120363043968066561@g.us",
    "nameLocation": "Restaurant",
    "address": "123456, Perm",
    "latitude": 12.3456789,
    "longitude": 10.1112131
}

Отправка сообщения с цитированием:

{
    "chatId": "11001234567@c.us",
    "nameLocation": "Restaurant",
    "address": "123456, Perm",
    "latitude": 12.3456789,
    "longitude": 10.1112131,
    "quotedMessageId": "361B0E63F2FDF95903B6A9C9A102F34B"
}

Ответ#

Поля ответа#

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

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

{
    "idMessage": "3EB0C767D097B7C7C030"
}

Ошибки SendLocation#

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

Код HTTP Идентификатор ошибки Описание
400 Bad Request
Validation failed
Ошибка валидации
400 Validation failed.
Details: 'latitude' must be a number or string
Неверный тип данных поля latitude
400 Validation failed.
Details: 'latitude' must be a safe number
Значение поля latitude превышает максимальное безопасное целочисленное значение
500 Internal Server Error
request entity too large
Превышение допустимой длины json (>100кб)

Отправка с неверным идентификатором цитируемого сообщения

В случае некорректного указания quotedMessageId, система вернёт код 200 и id отправляемого сообщения, но оно не будет доставлено получателю.

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

import requests

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

payload = {
    "chatId": "11001234567@c.us",
    "nameLocation": "Я здесь, приезжай",
    "address": "613123, Perm",
    "latitude": 44.9370129,
    "longitude": 89.8728409
}

headers = {
    'Content-Type': 'application/json'
}

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

print(response.text.encode('utf8'))
curl --location '{{apiUrl}}/waInstance{{idInstance}}/sendLocation/{{apiTokenInstance}}' \
--header 'Content-Type: application/json' \
--data-raw '{
    "chatId": "12345678910@c.us",
    "nameLocation": "Я здесь, приезжай",
    "address": "613123, Perm",
    "latitude": 44.9370129,
    "longitude": 89.8728409
}'
var restTemplate = new RestTemplate();
var requestUrl = new StringBuilder();
requestUrl
    .append({{apiUrl}})
    .append("/waInstance").append({{idInstance}})
    .append("/sendLocation/")
    .append({{apiTokenInstance}});

var headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);

var jsonBody = "{\r\n    \"chatId\": \"11001234567@c.us\",\r\n    \"nameLocation\": \"Я здесь, приезжай\",\r\n    \"address\": \"613123, Perm\",\r\n   \t\"latitude\": 44.9370129,\r\n    \"longitude\": 89.8728409\r\n}\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("/sendLocation/")
    .append({{apiTokenInstance}});

var response = Unirest.post(requestUrl.toString())
    .header("Content-Type", "application/json")
    .body("{\r\n    \"chatId\": \"11001234567@c.us\",\r\n    \"nameLocation\": \"Я здесь, приезжай\",\r\n    \"address\": \"613123, Perm\",\r\n   \t\"latitude\": 44.9370129,\r\n    \"longitude\": 89.8728409\r\n}\r\n")
    .asString();

System.out.println(response);
Sub SendLocation()
    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}}/sendLocation/{{apiTokenInstance}}"

    ' chatId - chat identifier, nameLocation - location name, address - location address, latitude - location latitude, longitude - location longitude
    RequestBody = "{""chatId"":""71234567890@c.us"",""nameLocation"":""Restaurant"",""address"":""123456, Perm"",""latitude"":12.3456789,""longitude"": 10.1112131}"

    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