sixtyfourapp/www/js/index.js

176 lines
5.5 KiB
JavaScript

var my_8x8_name = "Dave Umrysh";
var hostUrl = "https://matrix.example.com"; // Location of your Matrix server
var webhook_secret = "UGfmxJyv49Sus2Y32dE7juXYMvp"; // Random key you set in your sixtyfour matrix bot
var instance_name = "sixtyfourinstance";
var android_id = "";
var devicePlatform = "";
document.addEventListener('deviceready', onDeviceReady, false);
function onDeviceReady() {
// Cordova is now initialized. Have fun!
console.log('Running cordova-' + cordova.platformId + '@' + cordova.version);
document.getElementById('deviceready').classList.add('ready');
android_id = device.uuid;
devicePlatform = device.platform;
cordova.plugins.backgroundMode.on('activate', function() {
cordova.plugins.backgroundMode.disableWebViewOptimizations();
});
cordova.plugins.backgroundMode.enable();
cordova.plugins.backgroundMode.disableBatteryOptimizations();
// Set up the GCM
setUpGCM();
startListening();
}
function startListening(){
replyToNotification.listen(function(n){
console.log("Received notification " + JSON.stringify(n) );
if(n.package == "org.vom8x8.sipua"){
// Check for rooms
if(n.title == my_8x8_name){
// This was my message out
// Post to the bot channel
var who_sent_it = n.title.replaceAll("\r\n","").replaceAll("\r","").replaceAll("\n","").replaceAll('"','\"');
var params = JSON.stringify({ "secret": webhook_secret, "message": "**"+who_sent_it+"**: "+n.text.replaceAll("\r\n","").replaceAll("\r","").replaceAll("\n","").replaceAll('"','\"') });
postToMatrix(hostUrl+"/_matrix/maubot/plugin/"+instance_name+"/webhook/r0?room=%21aaaaaaaaaaaaaaaaaa:matrix.example.com",params);
}else if(n.title == "John Smith"){
var who_sent_it = n.title.replaceAll("\r\n","").replaceAll("\r","").replaceAll("\n","").replaceAll('"','\"');
var params = JSON.stringify({ "secret": webhook_secret, "message": "**"+who_sent_it+"**: "+n.text.replaceAll("\r\n","").replaceAll("\r","").replaceAll("\n","").replaceAll('"','\"') });
postToMatrix(hostUrl+"/_matrix/maubot/plugin/"+instance_name+"/webhook/r0?room=%21bbbbbbbbbbbbbbbbbb:matrix.example.com",params);
// Add other DM rooms here
}else if(n.conversationTitle == "Room #1"){
var who_sent_it = n.title.replaceAll("Room #1: ","").replaceAll("\r\n","").replaceAll("\r","").replaceAll("\n","").replaceAll('"','\"');
var params = JSON.stringify({ "secret": webhook_secret, "message": "**"+who_sent_it+"**: "+n.text.replaceAll("\r\n","").replaceAll("\r","").replaceAll("\n","").replaceAll('"','\"') });
postToMatrix(hostUrl+"/_matrix/maubot/plugin/"+instance_name+"/webhook/r0?room=%21ccccccccccccccccc:matrix.example.com",params);
// Add other rooms here
}else{
var who_sent_it = n.title.replaceAll("All Company: ","").replaceAll("\r\n","").replaceAll("\r","").replaceAll("\n","").replaceAll('"','\"');
var params = JSON.stringify({ "secret": webhook_secret, "message": "**"+who_sent_it+"**: "+n.text.replaceAll("\r\n","").replaceAll("\r","").replaceAll("\n","").replaceAll('"','\"') });
postToMatrix(hostUrl+"/_matrix/maubot/plugin/"+instance_name+"/webhook/r0?room=%21dddddddddddddddd:matrix.example.com",params);
}
}
}, function(e){
console.log("Notification Error " + e);
});
}
function postTo8x8(room,message){
var room_name = "";
if(room == "!bbbbbbbbbbbbbbbbbb:matrix.example.com"){
room_name = "John Smith";
// Add other DM rooms here
}else if(room == "!ccccccccccccccccc:matrix.example.com"){
room_name = "Room #1";
// Add other rooms here
}else if(room == "!dddddddddddddddd:matrix.example.com"){
room_name = "All Company";
}
if(room_name != ""){
var temp = {
"room_name":room_name,
"message":message
};
replyToNotification.replytonotification(temp, function (s) {
// Send errors to the bot channel
console.log(s);
var params = JSON.stringify({ "secret": webhook_secret, "message": "**8x8 Error**: "+s.replaceAll("\r\n","").replaceAll("\r","").replaceAll("\n","").replaceAll('"','\"') });
postToMatrix(hostUrl+"/_matrix/maubot/plugin/"+instance_name+"/webhook/r0?room=%21aaaaaaaaaaaaaaaaaa:matrix.example.com",params);
}, function (e) {
console.log(e);
});
}
}
function postToMatrix(url,message){
var http = new XMLHttpRequest();
http.open("POST", url, true);
//Send the proper header information along with the request
http.setRequestHeader("Content-type", "application/json");
//http.onreadystatechange = function() {
// console.log(http.status+"|"+http.responseText);
//};
http.send(message);
console.log("sent message to matrix")
}
function setUpGCM(){
if(typeof device !== 'undefined'){
pushNotification = PushNotification.init({
android: {},
ios: {
alert: "true",
badge: "true",
sound: "true",
clearBadge: "true"
}
});
pushNotification.on('registration', function(data) {
window.localStorage.setItem("gcm_key", data.registrationId);
// Try to send it off
sendGCMtoServer();
});
pushNotification.on('notification', function(data) {
// data.message,
// data.title,
// data.count,
// data.sound,
// data.image,
// data.additionalData
postTo8x8(data.title,data.message);
});
pushNotification.on('error', function(e) {
console.log("error: "+e.message);
});
}
}
function sendGCMtoServer(){
var gcm_key = window.localStorage.getItem("gcm_key");
if(gcm_key == null || gcm_key == ""){
setUpGCM();
}
if(gcm_key != null && gcm_key != ""){
// Send to server
var params = JSON.stringify({ "secret": webhook_secret, "gcm": gcm_key });
postToMatrix(hostUrl+"/_matrix/maubot/plugin/"+instance_name+"/webhook/r1?gcm",params);
}
}