From ee8563fddd9a872f79f46184d593dc29f83d8352 Mon Sep 17 00:00:00 2001 From: Jon Nichols Date: Tue, 29 Aug 2017 14:59:19 -0400 Subject: [PATCH 1/5] Added ability for MMS messaging to push through attachments --- .../.npm/package/npm-shrinkwrap.json | 4 +-- .../imports/server/rest/sms.js | 24 ++++++++++++++++ packages/rocketchat-sms/services/twilio.js | 28 ++++++++++++++++++- 3 files changed, 53 insertions(+), 3 deletions(-) diff --git a/packages/rocketchat-google-vision/.npm/package/npm-shrinkwrap.json b/packages/rocketchat-google-vision/.npm/package/npm-shrinkwrap.json index 357fd38dda40..f881bd32323f 100644 --- a/packages/rocketchat-google-vision/.npm/package/npm-shrinkwrap.json +++ b/packages/rocketchat-google-vision/.npm/package/npm-shrinkwrap.json @@ -1243,8 +1243,8 @@ "from": "methmeth@>=1.1.0 <2.0.0" }, "mime": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.6.tgz", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.0.tgz", "from": "mime@>=1.2.11 <2.0.0" }, "mime-db": { diff --git a/packages/rocketchat-livechat/imports/server/rest/sms.js b/packages/rocketchat-livechat/imports/server/rest/sms.js index c01a1b34fb06..fc3b7bf22a26 100644 --- a/packages/rocketchat-livechat/imports/server/rest/sms.js +++ b/packages/rocketchat-livechat/imports/server/rest/sms.js @@ -44,6 +44,30 @@ RocketChat.API.v1.addRoute('livechat/sms-incoming/:service', { sendMessage.message.msg = sms.body; sendMessage.guest = visitor; + if(sms.hasMedia) { + sendMessage.message.attachments = []; + for(var mediaIndex = 0; mediaIndex < sms.media.length; mediaIndex++) { + var attachment = {}; + var contenttype = sms.media[mediaIndex].contenttype; + + switch(contenttype.substr(0, contenttype.indexOf("/"))) { + case "image": + attachment.image_url = sms.media[mediaIndex].url; + break; + case "video": + attachment.video_url = sms.media[mediaIndex].url + break; + case "audio": + attachment.audio_url = sms.media[mediaIndex].url + break; + } + + attachment.message_link = sms.media[mediaIndex].url; + + sendMessage.message.attachments.push(attachment); + } + } + try { const message = SMSService.response.call(this, RocketChat.Livechat.sendMessage(sendMessage)); diff --git a/packages/rocketchat-sms/services/twilio.js b/packages/rocketchat-sms/services/twilio.js index e9e9ad2d165c..bc465e97d874 100644 --- a/packages/rocketchat-sms/services/twilio.js +++ b/packages/rocketchat-sms/services/twilio.js @@ -5,7 +5,9 @@ class Twilio { this.authToken = RocketChat.settings.get('SMS_Twilio_authToken'); } parse(data) { - return { + var NumMedia = 0; + + var returndata = { from: data.From, to: data.To, body: data.Body, @@ -21,6 +23,30 @@ class Twilio { fromZip: data.FromZip } }; + + if(data.NumMedia) { + NumMedia = parseInt(data.NumMedia, 10); + } + + if (isNaN(NumMedia)) { + console.error("Error parsing NumMedia " + data.NumMedia); + return returndata; + } + + returndata.hasMedia = true; + returndata.media = []; + + for(var mediaIndex = 0; mediaIndex < NumMedia; mediaIndex++) { + var mediaurl = data["MediaUrl" + mediaIndex]; + var contenttype = data["MediaContentType" + mediaIndex]; + + returndata.media.push({ + "url": mediaurl, + "contenttype": contenttype + }); + } + + return returndata; } send(fromNumber, toNumber, message) { const client = Npm.require('twilio')(this.accountSid, this.authToken); From 031aea0a89d56722b7729fc0717a4c76d206387e Mon Sep 17 00:00:00 2001 From: Jon Nichols Date: Tue, 29 Aug 2017 15:17:01 -0400 Subject: [PATCH 2/5] Fixed issues for codacy https://www.codacy.com/app/RocketChat/Rocket-Chat/pullRequest?prid=875706 --- .../imports/server/rest/sms.js | 16 ++++++++-------- packages/rocketchat-sms/services/twilio.js | 14 +++++++------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/packages/rocketchat-livechat/imports/server/rest/sms.js b/packages/rocketchat-livechat/imports/server/rest/sms.js index fc3b7bf22a26..59e34f9442d1 100644 --- a/packages/rocketchat-livechat/imports/server/rest/sms.js +++ b/packages/rocketchat-livechat/imports/server/rest/sms.js @@ -44,20 +44,20 @@ RocketChat.API.v1.addRoute('livechat/sms-incoming/:service', { sendMessage.message.msg = sms.body; sendMessage.guest = visitor; - if(sms.hasMedia) { + if (sms.hasMedia) { sendMessage.message.attachments = []; - for(var mediaIndex = 0; mediaIndex < sms.media.length; mediaIndex++) { - var attachment = {}; - var contenttype = sms.media[mediaIndex].contenttype; + for (let mediaIndex = 0; mediaIndex < sms.media.length; mediaIndex++) { + let attachment = {}; + let contenttype = sms.media[mediaIndex].contenttype; - switch(contenttype.substr(0, contenttype.indexOf("/"))) { - case "image": + switch (contenttype.substr(0, contenttype.indexOf('/'))) { + case 'image': attachment.image_url = sms.media[mediaIndex].url; break; - case "video": + case 'video': attachment.video_url = sms.media[mediaIndex].url break; - case "audio": + case 'audio': attachment.audio_url = sms.media[mediaIndex].url break; } diff --git a/packages/rocketchat-sms/services/twilio.js b/packages/rocketchat-sms/services/twilio.js index bc465e97d874..cdc42d581edd 100644 --- a/packages/rocketchat-sms/services/twilio.js +++ b/packages/rocketchat-sms/services/twilio.js @@ -24,25 +24,25 @@ class Twilio { } }; - if(data.NumMedia) { + if (data.NumMedia) { NumMedia = parseInt(data.NumMedia, 10); } if (isNaN(NumMedia)) { - console.error("Error parsing NumMedia " + data.NumMedia); + console.error('Error parsing NumMedia ' + data.NumMedia); return returndata; } returndata.hasMedia = true; returndata.media = []; - for(var mediaIndex = 0; mediaIndex < NumMedia; mediaIndex++) { - var mediaurl = data["MediaUrl" + mediaIndex]; - var contenttype = data["MediaContentType" + mediaIndex]; + for (let mediaIndex = 0; mediaIndex < NumMedia; mediaIndex++) { + let mediaurl = data['MediaUrl' + mediaIndex]; + let contenttype = data['MediaContentType' + mediaIndex]; returndata.media.push({ - "url": mediaurl, - "contenttype": contenttype + 'url': mediaurl, + 'contenttype': contenttype }); } From 7c24f735eda42ed0e6da231dc41d66d9d45ea20b Mon Sep 17 00:00:00 2001 From: Jon Nichols Date: Tue, 29 Aug 2017 15:45:45 -0400 Subject: [PATCH 3/5] Fixed more codacy issues --- .../imports/server/rest/sms.js | 10 +++---- packages/rocketchat-sms/services/twilio.js | 27 +++++++++++-------- 2 files changed, 21 insertions(+), 16 deletions(-) diff --git a/packages/rocketchat-livechat/imports/server/rest/sms.js b/packages/rocketchat-livechat/imports/server/rest/sms.js index 59e34f9442d1..f5882e71ba2a 100644 --- a/packages/rocketchat-livechat/imports/server/rest/sms.js +++ b/packages/rocketchat-livechat/imports/server/rest/sms.js @@ -47,21 +47,21 @@ RocketChat.API.v1.addRoute('livechat/sms-incoming/:service', { if (sms.hasMedia) { sendMessage.message.attachments = []; for (let mediaIndex = 0; mediaIndex < sms.media.length; mediaIndex++) { - let attachment = {}; - let contenttype = sms.media[mediaIndex].contenttype; + const attachment = {}; + const contenttype = sms.media[mediaIndex].contenttype; switch (contenttype.substr(0, contenttype.indexOf('/'))) { case 'image': attachment.image_url = sms.media[mediaIndex].url; break; case 'video': - attachment.video_url = sms.media[mediaIndex].url + attachment.video_url = sms.media[mediaIndex].url; break; case 'audio': - attachment.audio_url = sms.media[mediaIndex].url + attachment.audio_url = sms.media[mediaIndex].url; break; } - + attachment.message_link = sms.media[mediaIndex].url; sendMessage.message.attachments.push(attachment); diff --git a/packages/rocketchat-sms/services/twilio.js b/packages/rocketchat-sms/services/twilio.js index cdc42d581edd..f397f8da4822 100644 --- a/packages/rocketchat-sms/services/twilio.js +++ b/packages/rocketchat-sms/services/twilio.js @@ -5,9 +5,9 @@ class Twilio { this.authToken = RocketChat.settings.get('SMS_Twilio_authToken'); } parse(data) { - var NumMedia = 0; - - var returndata = { + let NumMedia = 0; + + const returndata = { from: data.From, to: data.To, body: data.Body, @@ -29,7 +29,7 @@ class Twilio { } if (isNaN(NumMedia)) { - console.error('Error parsing NumMedia ' + data.NumMedia); + console.error(`Error parsing NumMedia ${ data.NumMedia }`); return returndata; } @@ -37,15 +37,20 @@ class Twilio { returndata.media = []; for (let mediaIndex = 0; mediaIndex < NumMedia; mediaIndex++) { - let mediaurl = data['MediaUrl' + mediaIndex]; - let contenttype = data['MediaContentType' + mediaIndex]; + const media = { + 'url': '', + 'contenttype': '' + }; + + const mediaurl = data[`MediaUrl${ mediaIndex }`]; + const contenttype = data[`MediaContentType${ mediaIndex }`]; - returndata.media.push({ - 'url': mediaurl, - 'contenttype': contenttype - }); + media.url = mediaurl; + media.contenttype = contenttype; + + returndata.media.push(media); } - + return returndata; } send(fromNumber, toNumber, message) { From dfe943b6e9048bc52129ead0d2e31f60dfb6465a Mon Sep 17 00:00:00 2001 From: Jon Nichols Date: Wed, 27 Dec 2017 12:40:02 -0500 Subject: [PATCH 4/5] Changes concerning feedback from dev * Switch to camelcase * Changed hasMedia (removed) * use map instead of for loop for populating attachments --- .../imports/server/rest/sms.js | 37 +++++++++---------- packages/rocketchat-sms/services/twilio.js | 29 +++++++-------- 2 files changed, 31 insertions(+), 35 deletions(-) diff --git a/packages/rocketchat-livechat/imports/server/rest/sms.js b/packages/rocketchat-livechat/imports/server/rest/sms.js index f5882e71ba2a..432603207d40 100644 --- a/packages/rocketchat-livechat/imports/server/rest/sms.js +++ b/packages/rocketchat-livechat/imports/server/rest/sms.js @@ -44,29 +44,26 @@ RocketChat.API.v1.addRoute('livechat/sms-incoming/:service', { sendMessage.message.msg = sms.body; sendMessage.guest = visitor; - if (sms.hasMedia) { - sendMessage.message.attachments = []; - for (let mediaIndex = 0; mediaIndex < sms.media.length; mediaIndex++) { - const attachment = {}; - const contenttype = sms.media[mediaIndex].contenttype; + sms.media.map(function(curr) { + const attachment = {}; + const contentType = curr.contentType; - switch (contenttype.substr(0, contenttype.indexOf('/'))) { - case 'image': - attachment.image_url = sms.media[mediaIndex].url; - break; - case 'video': - attachment.video_url = sms.media[mediaIndex].url; - break; - case 'audio': - attachment.audio_url = sms.media[mediaIndex].url; - break; - } + switch (contentType.substr(0, contentType.indexOf('/'))) { + case 'image': + attachment.image_url = curr.url; + break; + case 'video': + attachment.video_url = curr.url; + break; + case 'audio': + attachment.audio_url = curr.url; + break; + } - attachment.message_link = sms.media[mediaIndex].url; + attachment.message_link = curr.url; - sendMessage.message.attachments.push(attachment); - } - } + sendMessage.message.attachments.push(attachment); + }); try { const message = SMSService.response.call(this, RocketChat.Livechat.sendMessage(sendMessage)); diff --git a/packages/rocketchat-sms/services/twilio.js b/packages/rocketchat-sms/services/twilio.js index f397f8da4822..a1434e1ecbf8 100644 --- a/packages/rocketchat-sms/services/twilio.js +++ b/packages/rocketchat-sms/services/twilio.js @@ -5,9 +5,9 @@ class Twilio { this.authToken = RocketChat.settings.get('SMS_Twilio_authToken'); } parse(data) { - let NumMedia = 0; + let numMedia = 0; - const returndata = { + const returnData = { from: data.From, to: data.To, body: data.Body, @@ -25,33 +25,32 @@ class Twilio { }; if (data.NumMedia) { - NumMedia = parseInt(data.NumMedia, 10); + numMedia = parseInt(data.NumMedia, 10); } - if (isNaN(NumMedia)) { + if (isNaN(numMedia)) { console.error(`Error parsing NumMedia ${ data.NumMedia }`); - return returndata; + return returnData; } - returndata.hasMedia = true; - returndata.media = []; + returnData.media = []; - for (let mediaIndex = 0; mediaIndex < NumMedia; mediaIndex++) { + for (let mediaIndex = 0; mediaIndex < numMedia; mediaIndex++) { const media = { 'url': '', - 'contenttype': '' + 'contentType': '' }; - const mediaurl = data[`MediaUrl${ mediaIndex }`]; - const contenttype = data[`MediaContentType${ mediaIndex }`]; + const mediaUrl = data[`MediaUrl${ mediaIndex }`]; + const contentType = data[`MediaContentType${ mediaIndex }`]; - media.url = mediaurl; - media.contenttype = contenttype; + media.url = mediaUrl; + media.contentType = contentType; - returndata.media.push(media); + returnData.media.push(media); } - return returndata; + return returnData; } send(fromNumber, toNumber, message) { const client = Npm.require('twilio')(this.accountSid, this.authToken); From 8fb0c6c3890d438055c21b967aab96e5e3d90783 Mon Sep 17 00:00:00 2001 From: Diego Sampaio Date: Fri, 13 Apr 2018 12:52:52 -0300 Subject: [PATCH 5/5] Save map return on message attachments --- .../rocketchat-livechat/imports/server/rest/sms.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/rocketchat-livechat/imports/server/rest/sms.js b/packages/rocketchat-livechat/imports/server/rest/sms.js index 432603207d40..bd5723eda7ee 100644 --- a/packages/rocketchat-livechat/imports/server/rest/sms.js +++ b/packages/rocketchat-livechat/imports/server/rest/sms.js @@ -44,10 +44,12 @@ RocketChat.API.v1.addRoute('livechat/sms-incoming/:service', { sendMessage.message.msg = sms.body; sendMessage.guest = visitor; - sms.media.map(function(curr) { - const attachment = {}; - const contentType = curr.contentType; + sendMessage.message.attachments = sms.media.map(curr => { + const attachment = { + message_link: curr.url + }; + const contentType = curr.contentType; switch (contentType.substr(0, contentType.indexOf('/'))) { case 'image': attachment.image_url = curr.url; @@ -60,9 +62,7 @@ RocketChat.API.v1.addRoute('livechat/sms-incoming/:service', { break; } - attachment.message_link = curr.url; - - sendMessage.message.attachments.push(attachment); + return attachment; }); try {