176 lines
5.5 KiB
JavaScript
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);
|
|
}
|
|
} |