Send read receipts to Matrix when sending SMS, add feedback to !sms command

master
Skylar Ittner 3 years ago
parent ba94886e72
commit db203ea945

@ -163,11 +163,11 @@ function getAndUploadFile(url, callback) {
* Send a message to a Matrix room.
* @param {string} roomid the room to post the message in.
* @param {string} body message content.
* @param {array} media Array of media URLs to download via HTTP(s) and send to Matrix.
* @param {function|undefined} callback passes true when successful, false on failure.
* @returns {undefined}
*/
function sendMatrix(roomid, body, media, callback) {
if (Array.isArray(media)) {
for (var i = 0; i < media.length; i++) {
getAndUploadFile(media[i], function (uri, mimetype) {
@ -205,7 +205,7 @@ function sendMatrix(roomid, body, media, callback) {
var content = {
body: body,
msgtype: "m.text"
}
};
client.sendEvent(roomid, "m.room.message", content, "").then((res) => {
if (typeof callback == "function") {
callback(true);
@ -224,6 +224,26 @@ function sendMatrix(roomid, body, media, callback) {
}
}
function sendMatrixNotice(roomid, body, callback) {
var content = {
body: body,
msgtype: "m.notice"
};
client.sendEvent(roomid, "m.room.message", content, "").then((res) => {
if (typeof callback == "function") {
callback(true);
}
}).catch((err) => {
if (typeof callback == "function") {
callback(false);
}
if (err.data.error == "Unknown room") {
return;
}
logger.error(err);
});
}
/**
* Send a SMS to a phone number.
* @param {string} number
@ -289,19 +309,20 @@ client.login("m.login.password", {"user": settings.matrixuser, "password": setti
if (event.getType() !== "m.room.message") {
return; // only use messages
}
if (client.getUserId() == event.event.sender) {
if (client.getUserId() == event.getSender()) {
return; // skip own messages to prevent loop
}
if (event.event.content.body.startsWith("!sms")) {
if (event.getContent().body.startsWith("!sms")) {
// capture command to start room for new number
const matches = event.event.content.body.match(/([1-9]?[0-9]{10})/g);
const matches = event.getContent().body.match(/([1-9]?[0-9]{10})/g);
if (matches.length == 1) {
var tel = matches[0];
if (tel.length == 10) {
// make it the full number
tel = "1" + tel;
}
logger.info("Got request to start new SMS conversation with " + tel + " from " + event.event.sender + ".");
logger.info("Got request to start new SMS conversation with " + tel + " from " + event.getSender() + ".");
sendMatrixNotice(event.getRoomId(), "Starting new conversation with " + tel);
createOrJoinSMSRoom(tel, function () {
return;
});
@ -309,13 +330,12 @@ client.login("m.login.password", {"user": settings.matrixuser, "password": setti
return;
}
//sendMatrix(room.roomId, "echo " + event.event.content.body);
//console.log(room);
const matches = room.name.match(/([1-9][0-9]+)/g);
if (matches.length == 1) {
var tel = matches[0];
logger.info("Got message for " + tel + " from " + event.event.sender + ", relaying.");
sendSMS(tel, event.event.content.body);
client.sendEvent(room.roomId, "m.fully_read", room.roomId, "");
logger.info("Got message for " + tel + " from " + event.getSender() + ", relaying.");
sendSMS(tel, event.getContent().body);
client.sendReadReceipt(event, {});
}
});
});
Loading…
Cancel
Save