SendLocation#
Метод предназначен для отправки сообщения геолокации. Сообщение будет добавлено в очередь на отправку. Сообщение на отправку хранится 24 часа в очереди и будет отправлено сразу же после авторизации телефона. Скорость отправки сообщений из очереди регулирует параметр Интервал отправки сообщений.
Запрос#
Для отправки сообщения геолокации требуется выполнить запрос по адресу:
{{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