| <html> |
| <head> |
| <style> |
| * { |
| font-family: sans-serif; |
| } |
| |
| label { |
| display: block; |
| } |
| |
| input, label { |
| margin: .4rem 0; |
| } |
| </style> |
| </head> |
| <body> |
| Server Port <input id="port" type="text" value="8989"></input> <button onclick="connect()">Connect</button><br> |
| AT Command <input type="text" id="at_command" required size="10"> <button onclick="send_at_command()">Send</button><br> |
| Dial Phone Number <input type="text" id="dial_number" required size="10"> <button onclick="dial()">Dial</button><br> |
| <button onclick="answer()">Answer</button> |
| <button onclick="hangup()">Hang Up</button> |
| <button onclick="start_voice_assistant()">Start Voice Assistant</button> |
| <button onclick="stop_voice_assistant()">Stop Voice Assistant</button> |
| <hr> |
| <div id="socketState"></div> |
| <script> |
| let portInput = document.getElementById("port") |
| let atCommandInput = document.getElementById("at_command") |
| let dialNumberInput = document.getElementById("dial_number") |
| let socketState = document.getElementById("socketState") |
| let socket |
| |
| function connect() { |
| socket = new WebSocket(`ws://localhost:${portInput.value}`); |
| socket.onopen = _ => { |
| socketState.innerText = 'OPEN' |
| } |
| socket.onclose = _ => { |
| socketState.innerText = 'CLOSED' |
| } |
| socket.onerror = (error) => { |
| socketState.innerText = 'ERROR' |
| console.log(`ERROR: ${error}`) |
| } |
| } |
| |
| function send(message) { |
| if (socket && socket.readyState == WebSocket.OPEN) { |
| socket.send(JSON.stringify(message)) |
| } |
| } |
| |
| function send_at_command() { |
| send({ type:'at_command', command: atCommandInput.value }) |
| } |
| |
| function answer() { |
| send({ type:'at_command', command: 'ATA' }) |
| } |
| |
| function hangup() { |
| send({ type:'at_command', command: 'AT+CHUP' }) |
| } |
| |
| function dial() { |
| send({ type:'at_command', command: `ATD${dialNumberInput.value}` }) |
| } |
| |
| function start_voice_assistant() { |
| send(({ type:'at_command', command: 'AT+BVRA=1' })) |
| } |
| |
| function stop_voice_assistant() { |
| send(({ type:'at_command', command: 'AT+BVRA=0' })) |
| } |
| </script> |
| </body> |
| </html> |