Получение входящих событий API

Материал из wiki app24.online
Перейти к навигации Перейти к поиску


Входящие события api можно получать в режиме реального времени через websockets, используя протокол pusher-api.

Доступно множество готовых библиотек на разных языках программирования.


Ниже приводится пример подключения через библиотеку pusher-js.


1. Подключаем библиотеку pusher-js

<script src="https://js.pusher.com/7.0/pusher.min.js"></script>


2. Задаем настройки подключения

let pusher = new Pusher('ChatsAppApiProdKey', {
    wsHost: 'api.chatapp.online',
    wssPort: 6001,
    disableStats: true,
    authEndpoint: 'https://api.chatapp.online/broadcasting/auth',
    auth: {
        headers: {
            'Authorization': '$2y$10$l.SQOBOaqz3ZU65JAlEK4ughTCzIbcVGpJIUNTVnGpaKOYOd4M' // персональный токен, полученный методом https://api.chatapp.online/docs/#tokensmake
        }
    },
    enabledTransports: ['ws'],
    forceTLS: true
});


3. Подключаемся к приватному каналу

let channel = pusher.subscribe('private-v1.licenses.1229.messengers.grayWhatsApp');
// или
let channel = pusher.subscribe('private-v1.licenses.1229.messengers.telegram');

Примечание: Один мессенджер в одной лицензии - это один канал.


4. Слушаем входящие события

// входящее сообщение
channel.bind('message', (data) => {
    console.log(data);
});

// статус отправленного сообщения
channel.bind('messageStatus', (data) => {
    console.log(data);
});

Доступные события:

- message (входящее сообщение)

- messageStatus (статус отправленного сообщения)


Полный код примера

<script src="https://js.pusher.com/7.0/pusher.min.js"></script>

<script>
window.onload = function() {
    let pusher = new Pusher('ChatsAppApiProdKey', {
        wsHost: 'api.chatapp.online',
        wssPort: 6001,
        disableStats: true,
        authEndpoint: 'https://api.chatapp.online/broadcasting/auth',
        auth: {
            headers: {
                'Authorization': '$2y$10$l.SQOBOaqz3ZU65JAlEK4ughTCzIbcVGpJIUNTVnGpaKOYOd4M' // персональный токен, полученный методом https://api.chatapp.online/docs/#tokensmake
            }
        },
        enabledTransports: ['ws'],
        forceTLS: true
    });

    let channel = pusher.subscribe('private-v1.licenses.1229.messengers.grayWhatsApp');

    channel.bind('message', (data) => {
        console.log(data);
    });

    channel.bind('messageStatus', (data) => {
        console.log(data);
    });


    let channel2 = pusher.subscribe('private-v1.licenses.1229.messengers.telegram');

    channel2.bind('message', (data) => {
        console.log(data);
    });

    channel2.bind('messageStatus', (data) => {
        console.log(data);
    });
};
</script>


Пример объекта message (входящее сообщение)

{
  "queue": "TelegramBroadcast",
  "payload": {
    "data": [
      {
        "id": 43780,
        "fromApi": false,
        "fromMe": false,
        "time": 1627972480,
        "isForwarded": false,
        "type": "text",
        "message": {
          "text": "Тест",
          "caption": "",
          "file": null
        },
        "quotedMessage": null,
        "fromUser": {
          "id": 1480675234,
          "username": "Chatsapp_test",
          "name": "Тест Тестович",
          "phone": "79030000000"
        },
        "chat": {
          "id": 590009991,
          "type": "group",
          "name": "Тестовая группа",
          "image": "https://telegramclientapi.app24.online/TelegramUsersPhotos/520620073867221922.jpg"
        }
      }
    ],
    "meta": {
      "type": "message",
      "licenseId": 1229,
      "messengerType": "telegram"
    }
  }
}


Пример объекта messageStatus (статус отправленного сообщения)

{
  "queue": "TelegramBroadcast",
  "payload": {
    "data": [
      {
        "id": 42213,
        "type": "delivered",
        "chat": {
          "id": 595109001,
          "type": "group"
        }
      }
    ],
    "meta": {
      "type": "messageStatus",
      "licenseId": 1229,
      "messengerType": "telegram"
    }
  }
}