ReceiveNotification#
Метод предназначен для получения одного входящего уведомления из очереди уведомлений.
Метод ReceiveNotification ожидает получения уведомления в течение 5 секунд. Вызов метода завершается с пустым ответом в случае достижения таймаута. Если в течение 5 секунд в очереди появляется уведомление, то вызов метода завершается, и метод возвращает полученное уведомление.
После получения и обработки входящего уведомления требуется удалить уведомление из очереди методом DeleteNotification. После этого уведомление будет считаться принятым и обработанным и будет безвозвратно удалено из очереди. Таким образом следующий вызов метода ReceiveNotification вернёт следующее уведомление в порядке поступления уведомлений в очередь.
Для метода используются ограничения на частоту запросов в секунду.
Срок хранения входящих уведомлений в очереди составляет 24 часа.
Уведомления отдаются из очереди в порядке FIFO
Запрос#
Для получения следующего входящего уведомления из очереди требуется выполнить запрос по адресу:
{{apiUrl}}/v3/waInstance{{idInstance}}/receiveNotification/{{apiTokenInstance}}?receiveTimeout={{seconds}} Для получения параметров запроса apiUrl, idInstance и apiTokenInstance обратитесь к разделу Перед началом работы.
Параметры URL запроса#
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
receiveTimeout | integer | нет | Таймаут ожидания уведомления, принимает значение от 5 до 60 секунд (по умолчанию 5 секунд) |
Ответ#
Поля ответа#
| Поле | Тип | Описание |
|---|---|---|
receiptId | integer | Идентификатор доставки для удаления входящего уведомления методом DeleteNotification |
body | object | Входящее уведомление согласно Формату входящих уведомлений |
Пример тела ответа#
{ "receiptId": 1234567, "body": { "typeWebhook": "incomingMessageReceived", "instanceData": { "idInstance": 310000001, "wid": "79991234567@c.us", "typeInstance": "v3" }, "timestamp": 1588091580, "idMessage": "126543123451133331119", "senderData": { "chatId": "10000000", "chatName": "Ходабрыш", "sender": "10000000", "senderName": "Ходабрыш Пробешёлов", "senderContactName" "Ходабрыш Пробешёлов", "senderPhoneNumber": 79876543210 }, "messageData": { "typeMessage": "textMessage", "textMessageData": { "textMessage": "Привет от Green-API!" } } } } Ошибки ReceiveNotification#
Перечень общих для всех методов ошибок смотрите в разделе Стандартные ошибки
| Код HTTP | Идентификатор ошибки | Описание |
|---|---|---|
| 400 | Parameter idInstance not an integer | Параметр idInstance не задан или содержит нецифровые символы |
| 400 | Parameter apiTokenInstance not define | Параметр apiTokenInstance не задан |
| 400 | Message cannot be received because custom webhook url is set. Go to cabinet, clear webhook url for instance: ХХХХХХХХХХ and wait for about 1 minute for another attempt | Поле webhookUrl не пустое. Очистите URL-адрес для инстанса ХХХХХХХХХХ и подождите около 1 минуты перед тем, как начать запрашивать уведомления. |
Примеры кода#
import requests url = "{{apiUrl}}/v3/waInstance{{idInstance}}/receiveNotification/{{apiTokenInstance}}" payload = {} headers= {} response = requests.request("GET", url, headers=headers, data = payload) print(response.text.encode('utf8')) curl --location '{{apiUrl}}/v3/waInstance{{idInstance}}/receiveNotification/{{apiTokenInstance}}' var restTemplate = new RestTemplate(); var requestUrl = new StringBuilder(); requestUrl .append({{apiUrl}}) .append("/v3/waInstance").append({{idInstance}}) .append("/receiveNotification/") .append({{apiTokenInstance}}); var response = restTemplate.exchange(requestUrl.toString(), HttpMethod.GET, null, String.class); System.out.println(response); var requestUrl = new StringBuilder(); requestUrl .append({{apiUrl}}) .append("/v3/waInstance").append({{idInstance}}) .append("/receiveNotification/") .append({{apiTokenInstance}}); var response = Unirest.get(requestUrl.toString()) .header("Content-Type", "application/json") .asString(); System.out.println(response); Sub ReceiveNotification() Dim url 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}}/v3/waInstance{{idInstance}}/receiveNotification/{{apiTokenInstance}}" Set http = CreateObject("MSXML2.XMLHTTP") http.Open "GET", url, False http.Send response = http.responseText Debug.Print response ' Outputting the answer to the desired cell ' Range("A1").Value = response Set http = Nothing End Sub