Commit 87210e8c081de6d67e724670651e25054ce777a6
1 parent
cc57ad0a78
Exists in
master
jangan hapus msisdn_suffix di evo send message
Showing 1 changed file with 3 additions and 3 deletions Inline Diff
evo-im.js
1 | var strftime = require('strftime'); | 1 | var strftime = require('strftime'); |
2 | var request = require('request'); | 2 | var request = require('request'); |
3 | var xmlparser = require('xml2js').parseString; | 3 | var xmlparser = require('xml2js').parseString; |
4 | var http = require('http'); | 4 | var http = require('http'); |
5 | var url = require('url'); | 5 | var url = require('url'); |
6 | 6 | ||
7 | var config; | 7 | var config; |
8 | var logger; | 8 | var logger; |
9 | var sendMessage; | 9 | var sendMessage; |
10 | 10 | ||
11 | function start(options) { | 11 | function start(options) { |
12 | try { | 12 | try { |
13 | sendMessage = options.sendMessage; | 13 | sendMessage = options.sendMessage; |
14 | } | 14 | } |
15 | catch(e) { | 15 | catch(e) { |
16 | console.log('undefined send message. Exiting'); | 16 | console.log('undefined send message. Exiting'); |
17 | process.exit(2); | 17 | process.exit(2); |
18 | } | 18 | } |
19 | 19 | ||
20 | if (options && options.config) { | 20 | if (options && options.config) { |
21 | config = options.config; | 21 | config = options.config; |
22 | } | 22 | } |
23 | 23 | ||
24 | if (options && options.logger) { | 24 | if (options && options.logger) { |
25 | logger = options.logger; | 25 | logger = options.logger; |
26 | } | 26 | } |
27 | 27 | ||
28 | 28 | ||
29 | 29 | ||
30 | createHttpServer(); | 30 | createHttpServer(); |
31 | } | 31 | } |
32 | 32 | ||
33 | function formatTimestamp(ms) { | 33 | function formatTimestamp(ms) { |
34 | return strftime('%F %T', new Date(ms)); | 34 | return strftime('%F %T', new Date(ms)); |
35 | } | 35 | } |
36 | 36 | ||
37 | function onMessage(sender, message, ts) { | 37 | function onMessage(sender, message, ts) { |
38 | var opts = { | 38 | var opts = { |
39 | url: config.evo_url, | 39 | url: config.evo_url, |
40 | qs: { | 40 | qs: { |
41 | msg: message, | 41 | msg: message, |
42 | msisdn: sender, | 42 | msisdn: sender, |
43 | smsc: config.smsc, | 43 | smsc: config.smsc, |
44 | ts: formatTimestamp(ts) | 44 | ts: formatTimestamp(ts) |
45 | } | 45 | } |
46 | }; | 46 | }; |
47 | 47 | ||
48 | logger.verbose("Forwarding message to evo", {request_opts: opts}); | 48 | logger.verbose("Forwarding message to evo", {request_opts: opts}); |
49 | request(opts, function(err, response, body) { | 49 | request(opts, function(err, response, body) { |
50 | if (err) { | 50 | if (err) { |
51 | logger.warn('Error forwarding to evo: ' + err); | 51 | logger.warn('Error forwarding to evo: ' + err); |
52 | return; | 52 | return; |
53 | } | 53 | } |
54 | 54 | ||
55 | if (response.statusCode != 200) { | 55 | if (response.statusCode != 200) { |
56 | logger.warn('HTTP Status from evo: ' + response.statusCode, {status: response.statusCode, body: body}); | 56 | logger.warn('HTTP Status from evo: ' + response.statusCode, {status: response.statusCode, body: body}); |
57 | return; | 57 | return; |
58 | } | 58 | } |
59 | 59 | ||
60 | logger.verbose('Got response from evo', {body: body}); | 60 | logger.verbose('Got response from evo', {body: body}); |
61 | 61 | ||
62 | xmlparser(body, function(xmlerr, parsedResponse) { | 62 | xmlparser(body, function(xmlerr, parsedResponse) { |
63 | if (xmlerr) { | 63 | if (xmlerr) { |
64 | logger.verbose('Evo response not in xml format'); | 64 | logger.verbose('Evo response not in xml format'); |
65 | return; | 65 | return; |
66 | } | 66 | } |
67 | 67 | ||
68 | return; | 68 | return; |
69 | 69 | ||
70 | logger.info('Evo response in xml format', {response: parsedResponse}); | 70 | logger.info('Evo response in xml format', {response: parsedResponse}); |
71 | if (parsedResponse.response.text) { | 71 | if (parsedResponse.response.text) { |
72 | sendMessage(sender, parsedResponse.response.text[0].trim()); | 72 | sendMessage(sender, parsedResponse.response.text[0].trim()); |
73 | } | 73 | } |
74 | }); | 74 | }); |
75 | }); | 75 | }); |
76 | } | 76 | } |
77 | 77 | ||
78 | function onHttpIncomingMessage(request, response) { | 78 | function onHttpIncomingMessage(request, response) { |
79 | var qs = url.parse(request.url, true).query; | 79 | var qs = url.parse(request.url, true).query; |
80 | logger.verbose("onHttpIncomingMessage()", {qs: qs}); | 80 | logger.verbose("onHttpIncomingMessage()", {qs: qs}); |
81 | 81 | ||
82 | var destination = qs.to.replace(config.msisdn_suffix, ''); | 82 | //var destination = qs.to.replace(config.msisdn_suffix, ''); |
83 | logger.info('Sending message to ' + destination + ': ' + qs.msg); | 83 | logger.info('Sending message to ' + qs.to + ': ' + qs.msg); |
84 | sendMessage(destination, qs.msg); | 84 | sendMessage(qs.to, qs.msg); |
85 | response.end('OK'); | 85 | response.end('OK'); |
86 | } | 86 | } |
87 | 87 | ||
88 | function createHttpServer() { | 88 | function createHttpServer() { |
89 | logger.verbose('createHttpServer()'); | 89 | logger.verbose('createHttpServer()'); |
90 | 90 | ||
91 | var httpServer = http.createServer(onHttpIncomingMessage); | 91 | var httpServer = http.createServer(onHttpIncomingMessage); |
92 | httpServer.listen(config.listen_port, function(){ | 92 | httpServer.listen(config.listen_port, function(){ |
93 | logger.info("HTTP server listening on " + config.listen_port); | 93 | logger.info("HTTP server listening on " + config.listen_port); |
94 | }); | 94 | }); |
95 | } | 95 | } |
96 | 96 | ||
97 | exports.start = start; | 97 | exports.start = start; |
98 | exports.formatTimestamp = formatTimestamp; | 98 | exports.formatTimestamp = formatTimestamp; |
99 | exports.onMessage = onMessage; | 99 | exports.onMessage = onMessage; |
100 | 100 |