| <!DOCTYPE html> |
| <html> |
|
|
| <head> |
| <meta content="text/html;charset=utf-8" http-equiv="Content-Type"> |
| <meta content="utf-8" http-equiv="encoding"> |
| <style> |
| .button { |
| border: none; |
| color: white; |
| padding: 16px 32px; |
| text-align: center; |
| text-decoration: none; |
| display: inline-block; |
| font-size: 16px; |
| margin: 4px 2px; |
| transition-duration: 0.4s; |
| cursor: pointer; |
| } |
| |
| .buttonGreen { |
| background-color: white; |
| color: black; |
| border: 2px solid #4CAF50; |
| } |
| |
| .buttonGreen:hover { |
| background-color: #4CAF50; |
| color: white; |
| } |
| </style> |
| </head> |
|
|
| <body> |
|
|
| <h1>WhatsApp client browser example</h1> |
|
|
| <form> |
| <label for="idInstance">Id Instance:</label><br> |
| <input required type="text" id="idInstance" name="idInstance"><br> |
| <label for="apiTokenIsntance">API Token:</label><br> |
| <input required type="text" id="apiTokenIsntance" name="apiTokenIsntance"><br> |
| </form> |
|
|
| <p style="color:blue" id="statusText"></p> |
| <p style="color:blue" id="resultText"></p> |
| <p>Press button to get qr code</p> |
| <div style="display:grid; width: 20%"> |
| <button id="getQrBtn" class="button buttonGreen">Get QR</button> |
| <button style="display: none" hidden id="logoutQrBtn" class="button buttonGreen">Logout</button> |
| <img hidden id="img-qr-code" alt="QR-Code" class="sb-qr-wizard-qr-code" aria-hidden="false" src="data:image/png;base64,%QR_DATA%" style=""> |
| </div> |
| <script type="text/javascript" src="https://unpkg.com/@green-api/whatsapp-api-client/lib/whatsapp-api-client.min.js"></script> |
| <script> |
| var intervalId = null |
| const qrCodeElement = document.getElementById("img-qr-code") |
| const qrTempalte = qrCodeElement.getAttribute('src'); |
| |
| document.getElementById("getQrBtn").addEventListener("click", function () { |
| try { |
| isAuthed(); |
| clearInterval(intervalId) |
| updateQRCode() |
| intervalId = setInterval(updateQRCode, 5000); |
| |
| } catch (reason) { |
| console.error(reason); |
| document.getElementById("resultText").innerHTML = reason + ". See logs for details"; |
| } |
| }); |
| |
| document.getElementById("logoutQrBtn").addEventListener("click", function () { |
| try { |
| const restAPI = whatsAppClient.restAPI(({ |
| idInstance: document.getElementById("idInstance").value, |
| apiTokenInstance: document.getElementById("apiTokenIsntance").value |
| })) |
| |
| restAPI.instance.logout() |
| .then((data) => { |
| document.getElementById("resultText").innerHTML = "isLogout=" + data.isLogout |
| isAuthed(); |
| }).catch((reason) => { |
| console.error(reason); |
| document.getElementById("resultText").innerHTML = reason + ". See logs for details"; |
| }); |
| } catch (reason) { |
| console.error(reason); |
| document.getElementById("resultText").innerHTML = reason + ". See logs for details"; |
| } |
| }); |
| |
| function updateQRCode() { |
| const restAPI = whatsAppClient.restAPI(({ |
| idInstance: document.getElementById("idInstance").value, |
| apiTokenInstance: document.getElementById("apiTokenIsntance").value |
| })) |
| restAPI.instance.qr() |
| .then((data) => { |
| console.log(data); |
| document.getElementById("resultText").innerHTML = ""; |
| if (data.type === 'qrCode') { |
| qrCodeElement.hidden = false; |
| qrCodeElement.setAttribute('src', qrTempalte.replace("%QR_DATA%", data.message)) |
| } else { |
| qrCodeElement.hidden = true; |
| clearInterval(intervalId) |
| isAuthed(); |
| document.getElementById("resultText").innerHTML = data.message |
| } |
| }).catch((reason) => { |
| console.error(reason); |
| document.getElementById("resultText").innerHTML = reason + ". See logs for details"; |
| }); |
| } |
| |
| function isAuthed() { |
| const restAPI = whatsAppClient.restAPI(({ |
| idInstance: document.getElementById("idInstance").value, |
| apiTokenInstance: document.getElementById("apiTokenIsntance").value |
| })) |
| restAPI.instance.getStateInstance().then(data => { |
| document.getElementById("statusText").innerHTML = data.stateInstance; |
| |
| if (data.stateInstance === 'authorized') { |
| document.getElementById("getQrBtn").style.display = "none" |
| document.getElementById("logoutQrBtn").style.display = "block" |
| } else { |
| document.getElementById("getQrBtn").style.display = "block" |
| document.getElementById("logoutQrBtn").style.display = "none" |
| } |
| |
| |
| }) |
| } |
| </script> |
|
|
| </body> |
|
|
| </html> |