There are two options for receiving incoming api events:
- Via webhooks - subscribe to webhooks
- Via websockets using pusher-api protocol
Many ready-made libraries in different programming languages.
Below is an example of connecting through a library pusher-js.
1. We connect the library pusher-js
<script src="https://js.pusher.com/7.0/pusher.min.js"></script>
2. Set up the connection settings
Note: In the connection settings, you only need to specify your accessToken obtained by the method v1.tokens.make (no other variables need to be changed).
let pusher = new Pusher('ChatsAppApiProdKey', {
wsHost: 'socket.chatapp.online',
wssPort: 6001,
disableStats: true,
authEndpoint: 'https://api.chatapp.online/broadcasting/auth',
auth: {
headers: {
'Authorization': '$2y$10$l.SQOBOaqz3ZU65JAlEK4ughTCzIbcVGpJIUNTVnGpaKOYOd4M' // accessToken obtained by the method v1.tokens.make
}
},
enabledTransports: ['ws'],
forceTLS: true
});
3. We connect to a private channel
There are 3 types of private channels in total:
- private-v1.licenses.1229.messengers.grWhatsApp - messenger channel in license
- private-v1.companies.2224 - company channel
- private-v1.users.685 - user channel
let channel = pusher.subscribe('private-v1.licenses.1229.messengers.grWhatsApp');
// or
let channel = pusher.subscribe('private-v1.licenses.1229.messengers.telegram');
Note: One messenger in one license is one channel. 1229 is your license number. grWhatsApp is the messenger type in the license.
let channelCompany = pusher.subscribe('private-v1.companies.2224');
Note: One company - one channel. 2224 - is your company number.
let channelUser = pusher.subscribe('private-v1.users.685');
Note: One user - one channel. 685 - is the user id.
4. Listening to incoming events
// incoming/outgoing message
channel.bind('message', (data) => {
console.log(data);
});
// sent message status
channel.bind('messageStatus', (data) => {
console.log(data);
});
// added/removed tag for chat
channel.bind('chatTag', (data) => {
console.log(data);
});
// employee status
channelCompany.bind('employeeStatus', (data) => {
console.log(data);
});
// create/edit/destroy quick response
channelUser.bind('quickResponse', (data) => {
console.log(data);
});
Available events for the channel - license-messenger:
- message (incoming/outgoing message)
- messageStatus (sent message status)
- chatTag (added/removed tag for chat)
- chatStatus (set status for chat)
- chatResponsible (set responsible for chat)
- chatResponsiblePin (pin/unpin responsible for chat)
- chatProducer (set producer for chat)
- chatAccomplice (added/removed accomplice for chat)
- chatAuditor (added/removed auditor for chat)
- chatLevel (set level for chat)
- chatConversation (open 24 hour window (only available for whatsapp))
- chatRead (chat read)
- chatProcess (set process for chat)
Available events for the channel - company:
- employeeStatus (employee status)
- employeeWorkday (employee workday)
Available events for the channel - user:
- quickResponseList (create/edit/destroy quick response list)
- quickResponse (create/edit/destroy quick response)
Complete example code:
<script src="https://js.pusher.com/7.0/pusher.min.js"></script>
<script>
window.onload = function() {
let pusher = new Pusher('ChatsAppApiProdKey', {
wsHost: 'socket.chatapp.online',
wssPort: 6001,
disableStats: true,
authEndpoint: 'https://api.chatapp.online/broadcasting/auth',
auth: {
headers: {
'Authorization': '$2y$10$l.SQOBOaqz3ZU65JAlEK4ughTCzIbcVGpJIUNTVnGpaKOYOd4M' // accessToken obtained by the method v1.tokens.make
}
},
enabledTransports: ['ws'],
forceTLS: true
});
let channel = pusher.subscribe('private-v1.licenses.1229.messengers.grWhatsApp');
channel.bind('message', (data) => {
console.log(data);
});
channel.bind('messageStatus', (data) => {
console.log(data);
});
channel.bind('chatTag', (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);
});
channel2.bind('chatTag', (data) => {
console.log(data);
});
let channelCompany = pusher.subscribe('private-v1.companies.2224');
channelCompany.bind('employeeStatus', (data) => {
console.log(data);
});
let channelUser = pusher.subscribe('private-v1.users.685');
channelUser.bind('quickResponseList', (data) => {
console.log(data);
});
channelUser.bind('quickResponse', (data) => {
console.log(data);
});
};
</script>
Object example message (incoming/outgoing message):
{
"payload": {
"data": [
{
"id": 696,
"fromApi": false,
"fromMe": false,
"side": "in",
"time": 1637319282,
"isForwarded": false,
"type": "text",
"subtype": null,
"message": {
"text": "Test",
"caption": "",
"file": null
},
"quotedMessage": null,
"fromUser": {
"id": 1480675234,
"username": "username_test",
"name": "Test Test",
"phone": "7000000000"
},
"chat": {
"id": "private-1480005234h1360003129730259258",
"hash": "h1360003129730259258",
"type": "private",
"phone": "7000000000",
"username": "username_test",
"name": "Test Test",
"image": "https://telegramclientapi.app24.online/GetDialogPhoto/3bf70000-941b-4e19-bc31-56e150a0e900"
},
"fromApp": null,
"utm": null,
"created": null
}
],
"meta": {
"type": "message",
"licenseId": 1229,
"messengerType": "telegram"
}
}
}
Object example messageStatus (Sent message status):
{
"payload": {
"data": [
{
"id": 42213,
"type": "delivered", // delivered|viewed|failed
"chat": {
"id": "private-1480000234h1367520000730259258",
"hash": "h1367520000730259258",
"type": "private",
"phone": "70000000000",
"username": "username_test"
},
"fromApp": {
"id": "app_123_1",
"tracking": null
},
"error": null
}
],
"meta": {
"type": "messageStatus",
"licenseId": 1229,
"messengerType": "telegram"
}
}
}
Object example chatTag (added/removed tag for chat):
{
"payload": {
"data": [
{
"type": "add", // add|destroy
"tag": {
"id": 29,
"name": "test 1",
"color": "#123df55",
"sort": 100,
"category": {
"id": 9,
"name": "test 1",
"sort": 100
}
},
"chat": {
"id": "group-54911000655"
}
}
],
"meta": {
"type": "chatTag",
"licenseId": 1229,
"messengerType": "telegram"
}
}
}
Object example chatConversation (open 24 hour window (only available for whatsapp)):
{
"payload": {
"data": [
{
"conversation": {
"id": "ccb637d17ba3aced8051abc263bd72e4",
"type": "BIC",
"startTime": 1644500500,
"endTime": 1644586900
},
"chat": {
"id": "70000000000"
}
}
],
"meta": {
"type": "chatConversation",
"licenseId": 1229,
"messengerType": "WhatsApp"
}
}
}
Object example chatStatus (set status for chat):
{
"payload": {
"data": [
{
"type": "close",
"chat": {
"id": "70000000000@c.us"
}
}
],
"meta": {
"type": "chatStatus",
"licenseId": 1229,
"messengerType": "grWhatsApp"
}
}
}
Object example chatResponsible (set responsible for chat):
{
"payload": {
"data": [
{
"responsible": {
"id": 685
},
"chat": {
"id": "70000000000@c.us"
},
"fromApp": {
"id": "app_123_1"
},
"edited": {
"id": 685
}
}
],
"meta": {
"type": "chatResponsible",
"licenseId": 1229,
"messengerType": "grWhatsApp"
}
}
}
Object example chatResponsiblePin (pin/unpin responsible for chat):
{
"payload": {
"data": [
{
"type": "pin", // pin|unpin
"chat": {
"id": "70000000000@c.us"
}
}
],
"meta": {
"type": "chatResponsiblePin",
"licenseId": 1229,
"messengerType": "grWhatsApp"
}
}
}
Object example chatProducer (set producer for chat):
{
"payload": {
"data": [
{
"producer": {
"id": 685
},
"chat": {
"id": "70000000000@c.us"
},
"fromApp": {
"id": "app_123_1"
},
"edited": {
"id": 685
}
}
],
"meta": {
"type": "chatProducer",
"licenseId": 1229,
"messengerType": "grWhatsApp"
}
}
}
Object example chatAccomplice (added/removed accomplice for chat):
{
"payload": {
"data": [
{
"type": "add", // add|destroy
"accomplice": {
"id": 685
},
"chat": {
"id": "70000000000@c.us"
},
"fromApp": {
"id": "app_123_1"
},
"edited": {
"id": 685
}
}
],
"meta": {
"type": "chatAccomplice",
"licenseId": 1229,
"messengerType": "grWhatsApp"
}
}
}
Object example chatAuditor (added/removed auditor for chat):
{
"payload": {
"data": [
{
"type": "add", // add|destroy
"auditor": {
"id": 685
},
"chat": {
"id": "70000000000@c.us"
},
"fromApp": {
"id": "app_123_1"
},
"edited": {
"id": 685
}
}
],
"meta": {
"type": "chatAuditor",
"licenseId": 1229,
"messengerType": "grWhatsApp"
}
}
}
Object examplechatLevel (set level for chat):
{
"payload": {
"data": [
{
"level": {
"id": 555
},
"chat": {
"id": "70000000000@c.us"
},
"fromApp": {
"id": "app_685_1"
},
"edited": {
"id": 685
}
}
],
"meta": {
"type": "chatLevel",
"licenseId": 1229,
"messengerType": "grWhatsApp"
}
}
}
Object example chatRead (chat read):
{
"payload": {
"data": [
{
"chat": {
"id": "7000000000@c.us"
}
}
],
"meta": {
"type": "chatRead",
"licenseId": "1229",
"messengerType": "grWhatsApp"
}
}
}
Object example chatProcess (set process for chat):
{
"payload": {
"data": [
{
"process": "inWork", // null|inWork
"chat": {
"id": "70000000000@c.us"
},
"fromApp": {
"id": "app_685_1"
},
"edited": {
"id": 685
}
}
],
"meta": {
"type": "chatProcess",
"licenseId": 1229,
"messengerType": "grWhatsApp"
}
}
}
Object example employeeStatus (employee status):
{
"payload": {
"data": [
{
"type": "online",
"employee": {
"id": 685
}
}
],
"meta": {
"type": "employeeStatus",
"companyId": 2226
}
}
}
Object example employeeWorkday (employee workday):
{
"payload": {
"data": [
{
"type": "start|end",
"employee": {
"id": 685
}
}
],
"meta": {
"type": "employeeWorkday",
"companyId": 2226
}
}
}
Object example quickResponseList (create/edit quick response list):
{
"payload": {
"data": [
{
"type": "create", // create|edit
"quickResponseList": {
"id": 1338,
"name": "List name",
"sort": 100,
"access": [
{
"userId": "685",
"email": "test@test.test",
"permission": "w"
},
{
"userId": "124",
"email": "test2@test.test",
"permission": "r"
}
]
}
}
],
"meta": {
"type": "quickResponseList",
"userId": "685"
}
}
}
Object example quickResponseList (destroy quick response list):
{
"payload": {
"data": [
{
"type": "destroy",
"quickResponseList": {
"id": 1338
}
}
],
"meta": {
"type": "quickResponseList",
"userId": "685"
}
}
}
Object example quickResponse (create/edit quick response):
{
"payload": {
"data": [
{
"type": "create", // create|edit
"quickResponseList": {
"id": 1339
},
"quickResponse": {
"id": 1197,
"name": "Response name",
"sort": 300,
"parent": null,
"text": "Detail text",
"keywords": "test test2 test4",
"enableAI": true
}
}
],
"meta": {
"type": "quickResponse",
"userId": "685"
}
}
}
Object example quickResponse (destroy quick response):
{
"payload": {
"data": [
{
"type": "destroy",
"quickResponseList": {
"id": 1339
},
"quickResponse": {
"id": 1197
}
}
],
"meta": {
"type": "quickResponse",
"userId": "685"
}
}
}
Object example quickResponse (bulk destroy quick responses):
{
"payload": {
"data": [
{
"type": "destroy",
"quickResponseList": {
"id": 1339
},
"quickResponse": {
"id": 1197
}
},
{
"type": "destroy",
"quickResponseList": {
"id": 1339
},
"quickResponse": {
"id": 1198
}
}
],
"meta": {
"type": "quickResponse",
"userId": "685"
}
}
}