+7 495 255 06 20
Войти Начать бесплатно
Сменить регион сайта
Россия (выбрано)
English Казахстан и СНГ

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

Существует два варианта получения входящих событий api:

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

1. Подключаем pusher-js

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

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

Примечание: В настройках подключения необходимо указать только ваш accessToken, полученный методом v1.tokens.make (другие переменные менять не нужно).

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, полученный методом v1.tokens.make
        }
    },
    enabledTransports: ['ws'],
    forceTLS: true
});

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

Всего существует 3 типа приватных каналов:

  • private-v1.licenses.1229.messengers.grWhatsApp - канал мессенджера в линии
  • private-v1.companies.2224 - канал компании
  • private-v1.users.685 - канал пользователя
let channel = pusher.subscribe('private-v1.licenses.1229.messengers.grWhatsApp');
// или
let channel = pusher.subscribe('private-v1.licenses.1229.messengers.telegram');

Примечание: Один мессенджер в одной линии - это один канал. 1229 - это номер вашей линии. grWhatsApp - это тип мессенджера в линии.

let channelCompany = pusher.subscribe('private-v1.companies.2224');

Примечание: Одна компания - это один канал. 2224 - это номер вашей компании.

let channelUser = pusher.subscribe('private-v1.users.685');

Примечание: Один пользователь - это один канал. 685 - это id пользователя.

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

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

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

// добавлена/удалена метка для чата
channel.bind('chatTag', (data) => {
    console.log(data);
});

// статус сотрудника
channelCompany.bind('employeeStatus', (data) => {
    console.log(data);
});

// добавлен/изменен/удален быстрый ответ
channelUser.bind('quickResponse', (data) => {
    console.log(data);
});

Доступные события для канала - линия-мессенджер:

  • message (входящее/исходящее сообщение)
  • messageSystem (системное сообщение)
  • messageStatus (статус отправленного сообщения)
  • messageDestroy (удаление сообщения)
  • messageReaction (реакция для сообщения)
  • chatTag (добавлена/удалена метка для чата)
  • chatStatus (установлен статус для чата)
  • chatResponsible (установлен ответственный для чата)
  • chatResponsiblePin (закреплен/откреплен ответственный для чата)
  • chatProducer (установлен постановщик для чата)
  • chatAccomplice (добавлен/удален соисполнитель для чата)
  • chatAuditor (добавлен/удален наблюдатель для чата)
  • chatLevel (установлен уровень для чата)
  • chatConversation (открыто 24-х часовое окно (доступно только для WhatsApp))
  • chatRead (чат помечен как прочитанный)
  • chatUnread (чат помечен как непрочитанный)
  • chatProcess (установлен процесс для чата)
  • chatParticipantAdd (добавление участника в группу (доступно для telegram и telegramBot))
  • chatParticipantDestroy (удаление участника из группы (доступно для telegram и telegramBot))
  • chatComment (установлен комментарий для чата)
  • chatConsentSendMessage (установлено согласие на отправку сообщений для чата)
  • chatArchive (чат добавлен в архив или чат восстановлен из архива)
  • chatCustomField (изменено значение пользовательского поля чата)

Доступные события для канала - компания:

  • employeeStatus (статус сотрудника)
  • employeeWorkday (рабочий день сотрудника)

Доступные события для канала - пользователь:

  • quickResponseList (добавлен/изменен/удален список быстрых ответов)
  • quickResponse (добавлен/изменен/удален быстрый ответ)

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

<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, полученный методом 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>

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

{
  "data": [
    {
      "id": "123",
      "internalId": 37914,
      "groupId": null,
      "fromApi": false,
      "fromMe": false,
      "side": "in",
      "time": 1637319282,
      "type": "text",
      "subtype": null,
      "message": {
        "text": "Test",
        "textLang": null,
        "caption": "",
        "file": null,
        "location": null,
        "template": null,
        "html": ""
      },
      "quotedMessage": {
        "id": "122",
        "type": "text",
        "subtype": null,
        "message": {
          "text": "test",
          "textLang": null,
          "caption": "",
          "file": null,
          "location": null,
          "template": null,
          "html": ""
        }
      },
      "fromUser": {
        "id": "1480675234",
        "username": "username_test",
        "name": "Test Test",
        "phone": "7000000000",
        "email": null
      },
      "chat": {
        "id": "private-1480005234h1360003129730259258",
        "internalId": 199167,
        "hash": null,
        "type": "private",
        "phone": "7000000000",
        "username": "username_test",
        "email": null,
        "name": "Test Test",
        "image": "https://test.test/GetDialogPhoto/3bf70000-941b-4e19-50a0e900",
        "lastTime": 1718789705,
        "link": null,
        "tags": [
          {
            "id": 6,
            "name": "test",
            "color": "hhhh",
            "sort": 100,
            "category": {
              "id": 13,
              "name": "test",
              "sort": 100
            }
          }
        ],
        "responsible": {
          "id": 685
        },
        "producer": {
          "id": 685
        },
        "accomplices": [
          {
            "id": 100
          }
        ],
        "auditors": [
          {
            "id": 100
          }
        ],
        "status": "close",
        "level": null,
        "responsiblePin": false,
        "process": null,
        "timeLastInMessage": 1718789705,
        "unreadMessages": 1,
        "lastRead": 1718785472,
        "advert": null,
        "secondLink": null,
        "subtype": null,
        "inviteLink": null,
        "lastMessage": {
          "type": "text",
          "previewText": "Тест",
          "previewTextLang": null
        },
        "comment": null,
        "consentSendMessage": null,
        "archive": false,
        "customFields": [
          {
            "id": 32,
            "name": "Float field",
            "type": "numeric",
            "sort": 105,
            "options": null,
            "value": 1234.66672
          },
          {
            "id": 21,
            "name": "Select field",
            "type": "select",
            "sort": 105,
            "options": [
              {
                "id": 205,
                "value": "Значение 4",
                "sort": 400
              },
              {
                "id": 206,
                "value": "Значение 4",
                "sort": 400
              }
            ],
            "value": 205
          }
        ]
      },
      "fromApp": null,
      "utm": null,
      "created": null,
      "forwarded": true,
      "edited": false
    }
  ],
  "meta": {
    "type": "message",
    "licenseId": 1229,
    "messengerType": "telegram"
  }
}

Пример объекта messageSystem (системное сообщение):

{
  "data": [
    {
      "id": "9f01676a-cbe9-4fbc-bd46-5286b4195fdc",
      "internalId": 40551,
      "groupId": null,
      "fromApi": true,
      "fromMe": true,
      "side": "out",
      "time": 1724309901,
      "type": "system",
      "subtype": null,
      "message": {
        "text": "Set responsible Test Testov [685]",
        "textLang": {
          "en": "Set responsible Test Testov [685]",
          "ru": "Назначен ответственный Test Testov [685]",
          "pt": "Set responsável Test Testov [685]"
        },
        "caption": "",
        "file": null,
        "location": null,
        "template": null,
        "html": ""
      },
      "quotedMessage": null,
      "fromUser": {
        "id": null,
        "username": null,
        "name": "test",
        "phone": null,
        "email": null
      },
      "chat": {
        "id": "70000000000@c.us",
        "internalId": 199167,
        "fullId": "aeec7c86edd95240f07af53427cbcd48",
        "hash": null,
        "type": "private",
        "phone": "70000000000",
        "username": null,
        "email": null,
        "name": "Test Test",
        "image": "https://pps.whatsapp.net/v/t62.24694-24/42954918280157_n.jpg",
        "lastTime": 1724309901,
        "link": null,
        "tags": [
          {
            "id": 9,
            "name": "test",
            "color": "#123df",
            "sort": 1111,
            "category": []
          },
          {
            "id": 11,
            "name": "test 2",
            "color": "#123df",
            "sort": 1111,
            "category": []
          }
        ],
        "responsible": {
          "id": 685
        },
        "producer": {
          "id": 685
        },
        "accomplices": null,
        "auditors": null,
        "status": "open",
        "level": {
          "id": 555
        },
        "responsiblePin": false,
        "process": null,
        "timeLastInMessage": 1724309838,
        "unreadMessages": 1,
        "lastRead": 1724237989,
        "advert": null,
        "secondLink": null,
        "subtype": null,
        "inviteLink": null,
        "lastMessage": {
          "type": "system",
          "previewText": "Set responsible Test Testov [685]",
          "previewTextLang": {
            "en": "Set responsible Test Testov [685]",
            "ru": "Назначен ответственный Test Testov [685]",
            "pt": "Set responsável Test Testov [685]"
          }
        },
        "comment": null,
        "consentSendMessage": null,
        "archive": false,
        "customFields": null
      },
      "fromApp": {
        "id": "app_685_1",
        "tracking": null,
        "sender": null
      },
      "utm": null,
      "created": {
        "id": 685
      },
      "forwarded": false,
      "edited": false
    }
  ],
  "meta": {
    "type": "messageSystem",
    "licenseId": 1229,
    "messengerType": "grWhatsApp"
  }
}

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

{
  "data": [
    {
      "id": "wamid.HBgQMzQzMjQ3OTYxNDkwMjAzNxUCABEYEkE5MDlBMTFERTBBQkVCQkMyRAA=",
      "type": "failed", // delivered|viewed|failed|sent
      "time": 1706175215,
      "chat": {
        "id": "70000000000",
        "hash": null,
        "type": "private",
        "phone": "70000000000",
        "username": null,
        "email": null
      },
      "fromApp": {
        "id": "app_123_1",
        "tracking": null,
        "sender": "employee"
      },
      "error": {
        "code": 131026,
        "message": "Message Undeliverable.",
        "messageLang": {
          "en": "Message Undeliverable.",
          "ru": "Невозможно доставить сообщение.",
          "pt": "Mensagem não entregue."
        }
      }
    }
  ],
  "meta": {
    "type": "messageStatus",
    "licenseId": 1229,
    "messengerType": "caWhatsApp"
  }
}

Пример объекта messageDestroy (удаление сообщения):

{
  "data": [
    {
      "id": "1252",
      "chat": {
        "id": "private-243232294h-5444116472189911315"
      }
    }
  ],
  "meta": {
    "type": "messageDestroy",
    "licenseId": 16402,
    "messengerType": "telegram"
  }
}

Пример объекта messageReaction (реакция для сообщения):

{
  "data": [
    {
      "id": "wamid.HBgLNzk4OTk3MjU0NDIVAgARGBIyNjYzNkVEMTcyOTczMDgxMEEA",
      "reaction": "😂",
      "time": "1697795977",
      "chat": {
        "id": "79899725000"
      },
      "fromUser": {
        "id": "79899725000",
        "name": "Alisher Boy"
      },
      "action": "react" // unreact
    }
  ],
  "meta": {
    "type": "messageReaction",
    "licenseId": 1229,
    "messengerType": "caWhatsApp"
  }
}

Пример объекта chatTag (добавлена/удалена метка для чата):

{
  "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"
  }
}

Пример объекта chatConversation (открыто 24-х часовое окно (доступно только для WhatsApp и caWhatsApp)):

{
  "data": [
    {
      "conversation": {
        "id": "ccb637d17ba3aced8051abc263bd72e4",
        "type": "BIC",
        "startTime": 1644500500,
        "endTime": 1644586900
      },
      "chat": {
        "id": "70000000000"
      }
    }
  ],
  "meta": {
    "type": "chatConversation",
    "licenseId": 1229,
    "messengerType": "WhatsApp"
  }
}

Пример объекта chatStatus (установлен статус для чата):

{
  "data": [
    {
      "type": "close",
      "chat": {
        "id": "70000000000@c.us"
      }
    }
  ],
  "meta": {
    "type": "chatStatus",
    "licenseId": 1229,
    "messengerType": "grWhatsApp"
  }
}

Пример объекта chatResponsible (установлен ответственный для чата):

{
  "data": [
    {
      "responsible": {
        "id": 685
      },
      "chat": {
        "id": "70000000000@c.us"
      },
      "fromApp": {
        "id": "app_123_1"
      },
      "edited": {
        "id": 685
      }
    }
  ],
  "meta": {
    "type": "chatResponsible",
    "licenseId": 1229,
    "messengerType": "grWhatsApp"
  }
}

Пример объекта chatResponsiblePin (закреплен/откреплен ответственный для чата):

{
  "data": [
    {
      "type": "pin", // pin|unpin
      "chat": {
        "id": "70000000000@c.us"
      }
    }
  ],
  "meta": {
    "type": "chatResponsiblePin",
    "licenseId": 1229,
    "messengerType": "grWhatsApp"
  }
}

Пример объекта chatProducer (установлен постановщик для чата):

{
  "data": [
    {
      "producer": {
        "id": 685
      },
      "chat": {
        "id": "70000000000@c.us"
      },
      "fromApp": {
        "id": "app_123_1"
      },
      "edited": {
        "id": 685
      }
    }
  ],
  "meta": {
    "type": "chatProducer",
    "licenseId": 1229,
    "messengerType": "grWhatsApp"
  }
}

Пример объекта chatAccomplice (добавлен/удален соисполнитель для чата):

{
  "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"
  }
}

Пример объекта chatAuditor (добавлен/удален наблюдатель для чата):

{
  "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"
  }
}

Пример объекта chatLevel (установлен уровень для чата):

{
  "data": [
    {
      "level": {
        "id": 555
      },
      "chat": {
        "id": "70000000000@c.us"
      },
      "fromApp": {
        "id": "app_685_1"
      },
      "edited": {
        "id": 685
      }
    }
  ],
  "meta": {
    "type": "chatLevel",
    "licenseId": 1229,
    "messengerType": "grWhatsApp"
  }
}

Пример объекта chatRead (чат помечен как прочитанный):

{
  "data": [
    {
      "chat": {
        "id": "7000000000@c.us"
      }
    }
  ],
  "meta": {
    "type": "chatRead",
    "licenseId": "1229",
    "messengerType": "grWhatsApp"
  }
}

Пример объекта chatUnread (чат помечен как непрочитанный):

{
  "data": [
    {
      "chat": {
        "id": "7000000000@c.us"
      }
    }
  ],
  "meta": {
    "type": "chatUnread",
    "licenseId": "1229",
    "messengerType": "grWhatsApp"
  }
}

Пример объекта chatProcess (установлен процесс для чата):

{
  "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"
  }
}

Пример объекта chatParticipantAdd (добавление участника в группу (доступно для telegram и telegramBot))

{
  "data": [
    {
      "chat": {
        "id": -1002224731326
      },
      "participants": [
        {
          "id": 1234567,
          "username": "test",
          "name": "Test",
          "phone": null
        },
        {
          "id": 1234567,
          "username": "test2",
          "name": "Test 2",
          "phone": null
        }
      ]
    }
  ],
  "meta": {
    "type": "chatParticipantAdd",
    "licenseId": 1229,
    "messengerType": "telegramBot"
  }
}

Пример объекта chatParticipantDestroy (удаление участника из группы (доступно для telegram и telegramBot))

{
  "data": [
    {
      "chat": {
        "id": -1002224731326
      },
      "participants": [
        {
          "id": 1234567,
          "username": "test",
          "name": "Test",
          "phone": null
        }
      ]
    }
  ],
  "meta": {
    "type": "chatParticipantDestroy",
    "licenseId": 1229,
    "messengerType": "telegramBot"
  }
}

Пример объекта employeeStatus (статус сотрудника):

{
  "data": [
    {
      "type": "online",
      "employee": {
        "id": 685
      }
    }
  ],
  "meta": {
    "type": "employeeStatus",
    "companyId": 2226
  }
}

Пример объекта employeeWorkday (рабочий день сотрудника):

{
  "data": [
    {
      "type": "start|end",
      "employee": {
        "id": 685
      }
    }
  ],
  "meta": {
    "type": "employeeWorkday",
    "companyId": 2226
  }
}

Пример объекта quickResponseList (добавлен/изменен список быстрых ответов):

{
  "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"
  }
}

Пример объекта quickResponseList (удален список быстрых ответов):

{
  "data": [
    {
      "type": "destroy",
      "quickResponseList": {
        "id": 1338
      }
    }
  ],
  "meta": {
    "type": "quickResponseList",
    "userId": "685"
  }
}

Пример объекта quickResponse (добавлен/изменен быстрый ответ):

{
  "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"
  }
}

Пример объекта quickResponse (удален быстрый ответ):

{
  "data": [
    {
      "type": "destroy",
      "quickResponseList": {
        "id": 1339
      },
      "quickResponse": {
        "id": 1197
      }
    }
  ],
  "meta": {
    "type": "quickResponse",
    "userId": "685"
  }
}

Пример объекта quickResponse (массовое удаление быстрых ответов):

{
  "data": [
    {
      "type": "destroy",
      "quickResponseList": {
        "id": 1339
      },
      "quickResponse": {
        "id": 1197
      }
    },
    {
      "type": "destroy",
      "quickResponseList": {
        "id": 1339
      },
      "quickResponse": {
        "id": 1198
      }
    }
  ],
  "meta": {
    "type": "quickResponse",
    "userId": "685"
  }
}

Пример объекта chatComment (установлен комментарий для чата):

{
  "data": [
    {
      "comment": "This is comment",
      "chat": {
        "id": "70000000000"
      },
      "fromApp": {
        "id": "app_25095_1"
      },
      "edited": {
        "id": 25095
      }
    }
  ],
  "meta": {
    "type": "chatComment",
    "licenseId": 12345,
    "messengerType": "WhatsApp"
  }
}

Пример объекта chatConsentSendMessage (установлено согласие на отправку сообщений для чата):

{
  "data": [
    {
      "consentSendMessage": "accepted",
      "chat": {
        "id": "70000000001@c.us"
      },
      "fromApp": {
        "id": "app_25095_1"
      },
      "edited": {
        "id": 25095
      }
    }
  ],
  "meta": {
    "type": "chatConsentSendMessage",
    "licenseId": 1,
    "messengerType": "grWhatsApp"
  }
}

Пример объекта chatArchive (чат добавлен в архив или чат восстановлен из архива):

{
  "data": [
    {
      "archive": false, // true|false
      "chat": {
        "id": "70000000001@c.us"
      }
    }
  ],
  "meta": {
    "type": "chatArchive",
    "licenseId": 1229,
    "messengerType": "grWhatsApp"
  }
}

Пример объекта chatCustomField (изменено значение пользовательского поля чата):

{
  "data": [
    {
      "field": {
        "id": 30,
        "name": "String field",
        "type": "string",
        "sort": 105,
        "options": null,
        "value": "Test"
      },
      "chat": {
        "id": "70000000001@c.us"
      }
    }
  ],
  "meta": {
    "type": "chatCustomField",
    "licenseId": 1229,
    "messengerType": "grWhatsApp"
  }
}
Оставить заявку на услуги интегратора