瀏覽代碼

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 6 年之前
父節點
當前提交
80faab7b37
共有 3 個文件被更改,包括 100 次插入4 次删除
  1. 44 3
      sms/app_config.php
  2. 23 0
      sms/hook/sms_hook_telnyx.php
  3. 33 1
      sms/resources/install/scripts/app/sms/index.lua

+ 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_description'] = '';
 		$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_category'] = 'sms';
 		$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_description'] = '';	
 		$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_category'] = 'sms';
 		$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_description'] = '';		
 		$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;
 		$apps[$x]['db'][$y]['table'] = "v_sms_messages";
 		$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
 			body = message:getBody();
 		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 (message ~= nil) then
@@ -242,6 +256,7 @@
 				outbound_caller_id_number = "1" .. outbound_caller_id_number;
 			end
 		-- 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";
 		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";
@@ -265,7 +280,7 @@
 			if outbound_caller_id_number:len() < 11 then
 				outbound_caller_id_number = "1" .. outbound_caller_id_number;
 			end
-			//Get User_name
+			--Get User_name
 			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'";
 			if (debug["sql"]) then
@@ -275,6 +290,23 @@
 				username = rows["default_setting_value"];
 			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 .."'"
+		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
 		if (debug["info"]) then
 			freeswitch.consoleLog("notice", "[sms] CMD: " .. cmd .. "\n");