Создание сессии по API

Команда открывает сессию WhatsApp для привязки к сервису. После открытия сессии необходимо авторизовать WhatsApp через мобильное приложение и QR-код. Если сессия не нужна, то ее необходимо закрыть командой session-delete

Для отправки сообщения инициируется POST-запрос на адрес:

https://whatsgate.ru/api/v1/session-create

В теле запроса передается объект:

{
  "name" : "My WhatsApp",
  "callback" : "https://callback.my/script.handler"
}
  • name - наименование WhatsApp в системе (для удобства распознавания)
  • callback - URL обработчика обработчика входящих событий (необязательное, можно установить позже методом set-hook

В теле запроса передается объект:

{
  "name" : "My WhatsApp",
  "callback" : "https://callback.my/script.handler",
  "auth_type" : "CODE",
  "number" : "79999999999"
}
  • name - наименование WhatsApp в системе (для удобства распознавания)
  • callback - URL обработчика обработчика входящих событий (необязательное, можно установить позже методом set-hook
  • auth_type - Тип авторизации - по коду. При этом становится обязательным указание номера телефона, который будет авторизован по коду
  • number - номер подключаемого телефона в формате 7XXXXXXXXXX

Объект успешного ответа на запрос

{
  "result": "OK",
  "data" : {
     "id": 151,
     "name": "My WhatsApp",
     "unique_id": "6345454545454",
     "status": "PENDING",
     "callback": "https://callback.my/script.handler",
     "date_add": "2022-10-11 19:30:14",
     "qr": null,
     "status_name": "Инициализация",
     "pushname": null,
     "wid": null,
     "qr_link": "https://whatsgate.ru/qr/6345454545454"
  }
}
  • result - при успешном выполнении запроса содержит «OK».
  • data - содержит объект созданной сессии, в котором указан ее уникальный идентификатор unique_id, и ссылка на авторизацию по QR-коду qr_link
  • qr или code зависит от типа указанной авторизации. Если был выбран тип авторизации по коду, то код будет находится в поле code. Поле qr_link будет вести на страницу с кодом авторизации.

Окно авторизации по QR-коду открывается по ссылке:

https://whatsgate.ru/qr/<unique_id>

Для удобства, данная ссылка передается в поле qr_link при создании сессии. QR-код, содержащийся в этом окне периодически обновляется, а так же изменяется на изображение успешной авторизации или ошибки.

Данную страницу возможно встраивать в собственное приложение посредством iframe, и принимать от нее сообщения в родительской странице. Пример встраивания:

<h1>Test code QR</h1>

<iframe src="https://whatsgate.ru/qr/6345454545454" width="310" height="310" style="border: none;">

</iframe>

<div class="log" id="log">

</div>

<script>
    window.addEventListener("message", function(event) {

        console.log(event);

        if (event.origin !== 'https://whatsgate.ru') {
            // что-то пришло с неизвестного домена. Давайте проигнорируем это
            return;
        }

        if(typeof event.data !== 'object') {
            // сообщение должно быть объектом. 
            return;
        }

        if(!('module' in event.data) && event.data.module !== 'qr'){
            // в объекте должно быть поле module со значением qr
            return;
        }

        //если мы здесь, значит сообщение верное, выведем его значение
        console.log( "received: " + event.data.message);
        //добавим сообщение в лог на родительской странице
        document.getElementById('log').append("received: " + event.data.message, document.createElement("br"));
    });
</script>

Объект сообщения содержится в поле event.data и имеет следующий формат:

{
  "module" : "qr",
  "message" : "<message>"
}
  • module - всегда имеет значение qr, чтобы идентифицировать нужные сообщения
  • message - могут быть следующие значения:
    • loading - инициализация сессии и загрузка qr-кода. Отправляется в начале загрузки страницы
    • qr - выдан и отображен qr-код. Сообщение приходит каждый раз, когда код меняется на новый.
    • success - устройство успешно авторизовано в сессии, qr-код скрывается.
    • error - произошла ошибка при авторизации устройства. Нужно попробовать еще раз.
    • broken - попытка открыть окно с идентификатором несуществующей или закрытой сессии.