Commit bb93eeb0b83a98d118ada89b3b15f676690746bc
1 parent
9894d4203b
Exists in
master
push history on sent
Showing 2 changed files with 53 additions and 0 deletions Side-by-side Diff
bin/smstools-eventhandler.js
... | ... | @@ -9,6 +9,7 @@ const { argv } = require('yargs'); |
9 | 9 | const logger = require('komodo-sdk/logger'); |
10 | 10 | |
11 | 11 | const handlerReceived = require('../lib/smstools-handler/received'); |
12 | +const handlerSent = require('../lib/smstools-handler/sent'); | |
12 | 13 | |
13 | 14 | async function main() { |
14 | 15 | const eventType = (argv._ && argv._[0]) || null; |
... | ... | @@ -20,6 +21,8 @@ async function main() { |
20 | 21 | |
21 | 22 | if (eventType === 'RECEIVED') { |
22 | 23 | handlerReceived(msgFilename); |
24 | + } else if (eventType === 'SENT') { | |
25 | + handlerSent(msgFilename); | |
23 | 26 | } |
24 | 27 | } |
25 | 28 |
lib/smstools-handler/sent.js
... | ... | @@ -0,0 +1,50 @@ |
1 | +const fs = require('fs'); | |
2 | +const logger = require('komodo-sdk/logger'); | |
3 | + | |
4 | +const config = require('komodo-sdk/config'); | |
5 | +const messagingClient = require('komodo-center-messaging-client-lib'); | |
6 | +const transport = require('../transport'); | |
7 | + | |
8 | +messagingClient.setTransport(transport); | |
9 | + | |
10 | +const mailparser = require('../mailparser-wrapper'); | |
11 | + | |
12 | +module.exports = async (msgFilename) => { | |
13 | + const msg = await fs.promises.readFile(msgFilename); | |
14 | + | |
15 | + if (!msg) { | |
16 | + logger.warn('Can not read message file', { msgFile: msgFilename }); | |
17 | + return; | |
18 | + } | |
19 | + | |
20 | + const parsedMsg = await mailparser(msg); | |
21 | + | |
22 | + if (!parsedMsg || !parsedMsg.headers) { | |
23 | + logger.warn('Invalid message'); | |
24 | + return; | |
25 | + } | |
26 | + | |
27 | + const from = parsedMsg.headers.get('from').text; | |
28 | + const imsi = parsedMsg.headers.get('imsi'); | |
29 | + const { text } = parsedMsg; | |
30 | + | |
31 | + logger.info('Message parsed', { | |
32 | + from, imsi, text, | |
33 | + }); | |
34 | + | |
35 | + if (!from || !imsi || !text) { | |
36 | + return; | |
37 | + } | |
38 | + | |
39 | + messagingClient.onIncomingMessage({ | |
40 | + me: imsi, | |
41 | + partner: `${from}${config.number_suffix || ''}`, | |
42 | + partner_raw: from, | |
43 | + msg: text, | |
44 | + origin_label: imsi || 'UNKNOWN', | |
45 | + origin_transport: 'SMS', | |
46 | + origin_partner: from, | |
47 | + do_not_forward_to_core: true, | |
48 | + is_outgoing: true, | |
49 | + }); | |
50 | +}; |