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
JavaScript
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);});
}