Răsfoiți Sursa

Fix bugs, Add Telnyx carrier, Fix Groundwire send. (#83)

* Fix bugs, add Telnyx carrier, add formatting for Groundwire send

Fixed typo that broke functionality.
Fixed Twilio api_url, though to make it work, ACL will still have
to be disable in hook file because they are using AWS IPs.
Added integration for Telnyx carrier.
Added formatting to strip extra headers from body of Groundwire send.

* Fix bugs, Add Telnyx carrier, Fix Groundwire send.

- Fixed typo error in /sms/index.lua
- Fixed Twilio api_url variable, though it will still not work unless the
ACL check in the hook file is disabled.
- Added support for Telinxy carrier
- Fixed a formatting problem with Groundwire sends--it was including extra
headers in the body.

* Update app_config.php

* Add missed Telnyx setting from yesterday's commit.

Missed telnyx_delivery_status_webhook_url in app_config.php.
jonathanblack1000 7 ani în urmă
părinte
comite
80faab7b37

+ 44 - 3
sms/app_config.php

@@ -90,7 +90,15 @@
 		$apps[$x]['default_settings'][$y]['default_setting_enabled'] = 'true';
 		$apps[$x]['default_settings'][$y]['default_setting_enabled'] = 'true';
 		$apps[$x]['default_settings'][$y]['default_setting_description'] = '';
 		$apps[$x]['default_settings'][$y]['default_setting_description'] = '';
 		$y++;
 		$y++;
-
+		$apps[$x]['default_settings'][$y]['default_setting_uuid'] = '9b36edac-eeac-4a3e-b8d4-664962e3f78c';
+		$apps[$x]['default_settings'][$y]['default_setting_category'] = 'sms';
+		$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = 'carriers';
+		$apps[$x]['default_settings'][$y]['default_setting_name'] = 'array';
+		$apps[$x]['default_settings'][$y]['default_setting_value'] = 'telnyx';
+		$apps[$x]['default_settings'][$y]['default_setting_enabled'] = 'true';
+		$apps[$x]['default_settings'][$y]['default_setting_description'] = '';
+		$y++;
+		
 		$apps[$x]['default_settings'][$y]['default_setting_uuid'] = 'e997203c-ca48-45b4-828d-e347ff66fa7c';
 		$apps[$x]['default_settings'][$y]['default_setting_uuid'] = 'e997203c-ca48-45b4-828d-e347ff66fa7c';
 		$apps[$x]['default_settings'][$y]['default_setting_category'] = 'sms';
 		$apps[$x]['default_settings'][$y]['default_setting_category'] = 'sms';
 		$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = 'twilio_api_url';
 		$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = 'twilio_api_url';
@@ -139,7 +147,15 @@
 		$apps[$x]['default_settings'][$y]['default_setting_enabled'] = 'false';
 		$apps[$x]['default_settings'][$y]['default_setting_enabled'] = 'false';
 		$apps[$x]['default_settings'][$y]['default_setting_description'] = '';	
 		$apps[$x]['default_settings'][$y]['default_setting_description'] = '';	
 		$y++;	
 		$y++;	
-	
+		$apps[$x]['default_settings'][$y]['default_setting_uuid'] = '2f246db7-eb07-4c2c-a752-e81466276c89';
+		$apps[$x]['default_settings'][$y]['default_setting_category'] = 'sms';
+		$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = 'telnyx_api_url';
+		$apps[$x]['default_settings'][$y]['default_setting_name'] = 'text';
+		$apps[$x]['default_settings'][$y]['default_setting_value'] = 'https://sms.telnyx.com/messages';
+		$apps[$x]['default_settings'][$y]['default_setting_enabled'] = 'false';
+		$apps[$x]['default_settings'][$y]['default_setting_description'] = '';   
+		$y++;   
+
 		$apps[$x]['default_settings'][$y]['default_setting_uuid'] = '14101c26-c3f9-46aa-a67a-3642752e56f4';
 		$apps[$x]['default_settings'][$y]['default_setting_uuid'] = '14101c26-c3f9-46aa-a67a-3642752e56f4';
 		$apps[$x]['default_settings'][$y]['default_setting_category'] = 'sms';
 		$apps[$x]['default_settings'][$y]['default_setting_category'] = 'sms';
 		$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = 'flowroute_access_key';
 		$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = 'flowroute_access_key';
@@ -223,7 +239,32 @@
 		$apps[$x]['default_settings'][$y]['default_setting_enabled'] = 'false';
 		$apps[$x]['default_settings'][$y]['default_setting_enabled'] = 'false';
 		$apps[$x]['default_settings'][$y]['default_setting_description'] = '';		
 		$apps[$x]['default_settings'][$y]['default_setting_description'] = '';		
 		$y++;
 		$y++;
-	//schema details
+		$apps[$x]['default_settings'][$y]['default_setting_uuid'] = '604c1f7c-e830-441d-9596-31c8d091f8c2';
+		$apps[$x]['default_settings'][$y]['default_setting_category'] = 'sms';
+		$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = 'telnyx_access_key';
+		$apps[$x]['default_settings'][$y]['default_setting_name'] = 'text';
+		$apps[$x]['default_settings'][$y]['default_setting_value'] = '';
+		$apps[$x]['default_settings'][$y]['default_setting_enabled'] = 'false';
+		$apps[$x]['default_settings'][$y]['default_setting_description'] = '';       
+		$y++;
+		$apps[$x]['default_settings'][$y]['default_setting_uuid'] = 'abcd3f80-71c2-4b58-ae9d-3a37cb503faf';
+		$apps[$x]['default_settings'][$y]['default_setting_category'] = 'sms';
+		$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = 'telnyx_secret_key';
+		$apps[$x]['default_settings'][$y]['default_setting_name'] = 'text';
+		$apps[$x]['default_settings'][$y]['default_setting_value'] = '';
+		$apps[$x]['default_settings'][$y]['default_setting_enabled'] = 'false';
+		$apps[$x]['default_settings'][$y]['default_setting_description'] = '';       
+		$y++;
+		$apps[$x]['default_settings'][$y]['default_setting_uuid'] = 'cede4bca-e855-4191-a14c-6f69b3aefb2e';
+		$apps[$x]['default_settings'][$y]['default_setting_category'] = 'sms';
+		$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = 'telnyx_delivery_status_webhook_url';
+		$apps[$x]['default_settings'][$y]['default_setting_name'] = 'text';
+		$apps[$x]['default_settings'][$y]['default_setting_value'] = '';
+		$apps[$x]['default_settings'][$y]['default_setting_enabled'] = 'false';
+		$apps[$x]['default_settings'][$y]['default_setting_description'] = '';       
+		$y++;
+
+		//schema details
 		$y=0;
 		$y=0;
 		$apps[$x]['db'][$y]['table'] = "v_sms_messages";
 		$apps[$x]['db'][$y]['table'] = "v_sms_messages";
 		$z=0;
 		$z=0;

+ 23 - 0
sms/hook/sms_hook_telnyx.php

@@ -0,0 +1,23 @@
+<?php
+
+include "../root.php";
+
+require_once "resources/require.php";
+require_once "../sms_hook_common.php";
+
+if (check_acl()) {
+	if  ($_SERVER['CONTENT_TYPE'] == 'application/json') {
+		$data = json_decode(file_get_contents("php://input"));
+		if ($debug) {
+			error_log('[SMS] REQUEST: ' .  print_r($data, true));
+		}
+		$to = intval(preg_replace('/(^[\+][1])/','', $data->to));
+		route_and_send_sms($data->from, $to, $data->body);
+	} else {
+	  die("no");
+	}
+} else {
+	error_log('ACCESS DENIED [SMS]: ' .  print_r($_SERVER['REMOTE_ADDR'], true));
+	die("access denied");
+}
+?>

+ 33 - 1
sms/resources/install/scripts/app/sms/index.lua

@@ -135,6 +135,20 @@
 		else
 		else
 			body = message:getBody();
 			body = message:getBody();
 		end
 		end
+		--Clean body up for Groundwire send
+		smsraw = body;
+		smstempst, smstempend = string.find(smsraw, 'Content%-lenght:');
+		if (smstempend == nil) then
+			body = smsraw;
+		else
+			smst2st, smst2end = string.find(smsraw, '\r\n\r\n', smstempend);
+			if (smst2end == nil) then
+				body = smsraw;
+			else
+				body = string.sub(smsraw, smst2end + 1);
+			end
+		end
+
 
 
 		if (debug["info"]) then
 		if (debug["info"]) then
 			if (message ~= nil) then
 			if (message ~= nil) then
@@ -242,6 +256,7 @@
 				outbound_caller_id_number = "1" .. outbound_caller_id_number;
 				outbound_caller_id_number = "1" .. outbound_caller_id_number;
 			end
 			end
 		-- Can be either +1NANNNNXXXX or NANNNNXXXX
 		-- Can be either +1NANNNNXXXX or NANNNNXXXX
+			api_url = string.gsub(api_url, "{ACCOUNTSID}",  access_key);
 			cmd ="curl -X POST '" .. api_url .."' --data-urlencode 'To=+" .. to .."' --data-urlencode 'From=+" .. outbound_caller_id_number .. "' --data-urlencode 'Body=" .. body .. "' -u ".. access_key ..":" .. secret_key .. " --insecure";
 			cmd ="curl -X POST '" .. api_url .."' --data-urlencode 'To=+" .. to .."' --data-urlencode 'From=+" .. outbound_caller_id_number .. "' --data-urlencode 'Body=" .. body .. "' -u ".. access_key ..":" .. secret_key .. " --insecure";
 		elseif (carrier == "teli") then
 		elseif (carrier == "teli") then
 			cmd ="curl -X POST '" .. api_url .."' --data-urlencode 'destination=" .. to .."' --data-urlencode 'source=" .. outbound_caller_id_number .. "' --data-urlencode 'message=" .. body .. "' --data-urlencode 'token=" .. access_key .. "' --insecure";
 			cmd ="curl -X POST '" .. api_url .."' --data-urlencode 'destination=" .. to .."' --data-urlencode 'source=" .. outbound_caller_id_number .. "' --data-urlencode 'message=" .. body .. "' --data-urlencode 'token=" .. access_key .. "' --insecure";
@@ -265,7 +280,7 @@
 			if outbound_caller_id_number:len() < 11 then
 			if outbound_caller_id_number:len() < 11 then
 				outbound_caller_id_number = "1" .. outbound_caller_id_number;
 				outbound_caller_id_number = "1" .. outbound_caller_id_number;
 			end
 			end
-			//Get User_name
+			--Get User_name
 			sql = "SELECT default_setting_value FROM v_default_settings ";
 			sql = "SELECT default_setting_value FROM v_default_settings ";
 			sql = sql .. "where default_setting_category = 'sms' and default_setting_subcategory = '" .. carrier .. "_username' and default_setting_enabled = 'true'";
 			sql = sql .. "where default_setting_category = 'sms' and default_setting_subcategory = '" .. carrier .. "_username' and default_setting_enabled = 'true'";
 			if (debug["sql"]) then
 			if (debug["sql"]) then
@@ -275,6 +290,23 @@
 				username = rows["default_setting_value"];
 				username = rows["default_setting_value"];
 			end);
 			end);
 			cmd = "curl -X POST '" .. api_url .."' -H \"Content-Type:multipart/form-data\"  -F 'message=" .. body .. "' -F 'to_did=" .. to .."' -F 'from_did=" .. outbound_caller_id_number .. "' -u '".. username ..":".. access_key .."'"
 			cmd = "curl -X POST '" .. api_url .."' -H \"Content-Type:multipart/form-data\"  -F 'message=" .. body .. "' -F 'to_did=" .. to .."' -F 'from_did=" .. outbound_caller_id_number .. "' -u '".. username ..":".. access_key .."'"
+		elseif (carrier == "telnyx") then
+			if to:len() < 11 then
+				to = "1" .. to;
+			end
+			if outbound_caller_id_number:len() < 11 then
+				outbound_caller_id_number = "1" .. outbound_caller_id_number;
+			end
+			--Get delivery_status_webhook_url
+			sql = "SELECT default_setting_value FROM v_default_settings ";
+			sql = sql .. "where default_setting_category = 'sms' and default_setting_subcategory = '" .. carrier .. "_delivery_status_webhook_url' and default_setting_enabled = 'true'";
+			if (debug["sql"]) then
+				freeswitch.consoleLog("notice", "[sms] SQL: "..sql.."; params:" .. json.encode(params) .. "\n");
+			end
+			status = dbh:query(sql, function(rows)
+				delivery_status_webhook_url = rows["default_setting_value"];
+			end);
+			cmd ="curl -X POST \"" .. api_url .."\" -H \"Content-Type: application/json\"  -H \"x-profile-secret: " .. secret_key .. "\" -d '{\"from\": \"+" .. outbound_caller_id_number .. "\", \"to\": \"+" .. to .. "\", \"body\": \"" .. body .. "\", \"delivery_status_webhook_url\": \"" .. delivery_status_webhook_url .. "\"}'";
 		end
 		end
 		if (debug["info"]) then
 		if (debug["info"]) then
 			freeswitch.consoleLog("notice", "[sms] CMD: " .. cmd .. "\n");
 			freeswitch.consoleLog("notice", "[sms] CMD: " .. cmd .. "\n");