UNPKG

keolis-services

Version:

Keolis services includes Microphone, Location, Voice Activity Detector, Heart rate through web bluetooth API, text to speech, stop watch with our own cloud.

106 lines (84 loc) 3.2 kB
const _axios = InteropRequireDefault(require('axios')) const $ = require('jquery'); const { api_url } = require('../variables/constants'); const onDisconnected = (event) => { const device = event.target; } function InteropRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj } } function PlayCarl() { var settings = { "url": api_url + "/api/TokenAuth/Auth", "method": "POST", "timeout": 0, "headers": { "Content-Type": "application/json" }, "data": JSON.stringify({ "apiKey": global.apiKey, "apiSecret": global.apiSecret, "tenantName": global.tenantName }), }; $.ajax(settings).done(function (response) { var Token = response.result.accessToken; var settings = { "url": api_url + "/api/Interaction/SDK_InitializeSession", "method": "POST", "timeout": 0, "headers": { "Authorization": "Bearer " + Token, "Content-Type": "application/json" }, "data": JSON.stringify({ "UserID": localStorage.getItem("logged_in_user") }), "beforeSend" : function(){ $("#loading").show(); }, "error": function (xhr, ajaxOptions, thrownError) { $("#loading").hide(); } }; $.ajax(settings).done(function (response) { debugger; $("#loading").hide(); $(".wrapper").show(); if(response.success){ localStorage.setItem("interaction_session",response.result.id); TextToSpeach("Hello, My Name Is Carl"); } }); }); } const bluetoothConnector = async (props) => { const device = await navigator.bluetooth.requestDevice({ filters: [{ services: ['heart_rate',] }], //optionalServices: ['battery_service'], // Required to access service later. acceptAllDevices: false, }) const server = await device.gatt.connect() const service = await server.getPrimaryService('heart_rate') const char = await service.getCharacteristic('heart_rate_measurement') device.addEventListener('gattserverdisconnected', onDisconnected); char.oncharacteristicvaluechanged = props.onChange char.startNotifications() if (localStorage.getItem('logged_in_user')) PlayCarl(); return char } let hrData = new Array(200).fill(10); let RealtimeHeartRate = 0; let arrow = ''; export function heartRate(event) { RealtimeHeartRate = event.target.value.getInt8(1); //check if hearRate triggered the passive mode const prev = hrData[hrData.length - 1] hrData[hrData.length] = RealtimeHeartRate hrData = hrData.slice(-200) if (RealtimeHeartRate !== prev) arrow = RealtimeHeartRate > prev ? '⬆' : '⬇' document.getElementById("hr-rate").innerHTML = `${RealtimeHeartRate} ${arrow}`; } export function startHeartRate() { bluetoothConnector({ onChange: heartRate }).catch(error => {console.log(error);}); }