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