diff --git a/index.js b/index.js index 417628f..a8fc909 100644 --- a/index.js +++ b/index.js @@ -92,16 +92,25 @@ function nameForHandle(handle) { } // Sends a message to the given handle -function send(handle, message) { +function send(handle, message, service = "SMS") { assert(typeof handle == 'string', 'handle must be a string') assert(typeof message == 'string', 'message must be a string') - return osa((handle, message) => { + return osa((handle, message, service) => { const Messages = Application('Messages') let target try { - target = Messages.buddies.whose({ handle: handle })[0] + const options = Messages.buddies.whose({ handle: handle }) + let chosenIndex = 0; + for (let index = 0; index < options.length; index++) { + const option = options[index]; + if (option.service.name().toLowerCase() === service.toLowerCase()) { + chosenIndex = index; + } + } + + target = options[chosenIndex]; } catch (e) {} try { @@ -113,7 +122,7 @@ function send(handle, message) { } catch (e) { throw new Error(`no thread with handle '${handle}'`) } - })(handle, message) + })(handle, message, service) } let emitter = null @@ -138,6 +147,8 @@ function listen() { SELECT guid, id as handle, + message.service, + account, text, date, date_read, @@ -158,6 +169,7 @@ function listen() { guid: msg.guid, text: msg.text, handle: msg.handle, + service: msg.service === "SMS" ? msg.service : msg.account, group: msg.cache_roomnames, fromMe: !!msg.is_from_me, date: fromAppleTime(msg.date),