кодировать по ссылке HTML с base64 - PullRequest
0 голосов
/ 15 октября 2019

Это мой первый пост, и надеюсь, что он не будет решен ранее. Я использую программное обеспечение колл-центра, а также молнию Salesforce.

Когда звонящий звонит, я хотел бы проверить в своей CRM, является ли он клиентом или нет. Это было легко сделать с базовой версией Salesforce, но это не так, потому что ссылка закодирована с base64. Пожалуйста, прочитайте этот пост для более подробного объяснения: https://tomsmalara.blogspot.com/2019/01/create-lightning-component-that.html

Итак, мне нужно создать HTML-страницу для сбора номера телефона вызывающего абонента и создать + зашифровать ссылку Salesforce и открыть зашифрованную ссылку.

<!DOCTYPE html>
<html>
	<head>
		<title>Waiting a call ...</title>
			<style> 
				body {text-align: center;} 
			</style> 
	</head>
	<body>
		<form name="form1" onsubmit="event.preventDefault();return displayResult();">
			<label for="name">Phone number:</label>
			<input type="text" id="PhoneNumber" name="PhoneNumber" size="10">
			<div id="myEncoding"></div>
		</form>	
		<script>
			function b64EncodeUnicode(PhoneNumber) {
				// first we use encodeURIComponent to get percent-encoded UTF-8,
				// then we convert the percent encodings into raw bytes which
				// can be fed into btoa.
				
				var Mytxt = '{"componentDef":"forceSearch:search","attributes":{"term":"'+PhoneNumber+'","scopeMap":{"resultsCmp":"forceSearch:resultsTopResults","label":"Top Results","type":"TOP_RESULTS","cacheable":"Y","id":"TOP_RESULTS","labelPlural":"Top Results"},"context":{"disableSpellCorrection":false,"SEARCH_ACTIVITY":{"term":1234567890}}},"state":{}}';
				
				return btoa(encodeURIComponent(Mytxt).replace(/%([0-9A-F]{2})/g,
					function toSolidBytes(match, p1) {
						var MyResult = String.fromCharCode('0x' + p1);
						return MyResult;
				}));
			}

			function displayResult() {
				var result = b64EncodeUnicode(PhoneNumber);
				document.getElementById('myEncoding').innerHTML = result;
				return false;
				window.open("https://mycompany.lightning.force.com/one/one.app#" +result,,,true)
			}
		</script>
	</body>
</html>

Что-то не так и пробовал разные вещи безрезультатно. Я буду очень признателен, если кто-то найдет что-то не так и объяснит мне заранее. Спасибо

Ответы [ 2 ]

0 голосов
/ 16 октября 2019

ПОЖАЛУЙСТА, найдите решение, которое я нашел, чтобы удалить шаги ввода ...

<!DOCTYPE html>
<html>
	<head>
		<title>Waiting a call ...</title>
			<style> 
				body {text-align: center;} 
			</style> 
	</head>
	<body onload=acceptParam()>
		Waiting a call ...

		<script> 
			function acceptParam(){
			  var hashParams = window.location.href.substr(1).split('?'); // substr(1) to remove the `#`
			  hashParams = hashParams[1].split('&');
			  var p = hashParams[0].split('=');
			  //document.getElementById('PhoneNumber').value = p[1] // Pour info
			  
			  var stringToEncode = '{"componentDef":"forceSearch:searchPage","attributes":{"term":"'+p[1]+'","scopeMap":{"type":"TOP_RESULTS"},"context":{"disableSpellCorrection":false,"disableIntentQuery":false,"permsAndPrefs":{"SearchUi.searchUIPilotFeatureEnabled":false,"SearchExperience.LeftNavEnhancementEnabled":true,"Search.crossObjectsAutoSuggestEnabled":true,"SearchResultsLVM.lvmEnabledForSearchResultsOn":true,"MySearch.userCanHaveMySearchBestResult":false,"SearchResultsLVM.lvmEnabledForTopResults":false,"OrgPermissions.UnionAppNavSmartScope":false,"SearchUi.feedbackComponentEnabled":false,"SearchExperience.TopResultsSingleSOSLEnabled":false,"OrgPreferences.ChatterEnabled":true,"Search.maskSearchInfoInLogs":false,"SearchUi.orgHasAccessToSearchTermHistory":false,"SearchUi.searchUIInteractionLoggingEnabled":false,"MySearch.userCanHaveMySearch":false},"searchDialogSessionId":"bdded2dc-91d1-3b3e-11d7-ff339bce1727","searchSource":"INPUT_DESKTOP"},"groupId":"DEFAULT"},"state":{}}'
			  var encoded = window.btoa(stringToEncode); 
	  
			  //var output = "Encoded String : " + encoded; 
			  //document.getElementById("myEncoding").innerHTML = "Original String: " + p[1] + "<br>" + output; 
			  window.location.assign("https://mycompany.lightning.force.com/lightning/one/one.app?source=alohaHeader#"+encoded);
			} 
	   </script> 
	</body>
</html>

Пожалуйста, вы можете сказать мне, что вы думаете об этом? Может быть, мы можем быть более эффективными?

0 голосов
/ 16 октября 2019

ОК, спасибо за ваш ответ. Итак, я изменил свой код и, кажется, работает лучше

<!DOCTYPE html>
<html>
	<head>
		<title>Waiting a call ...</title>
			<style> 
				body {text-align: center;} 
			</style> 
	</head>
	<body>
		<form>
			<label for="phone">Phone number:</label>
			<input type="text" id="PhoneNumber" name="PhoneNumber1" oninput=encode()>
			<div id="myEncoding"></div>
		</form>

        <script> 
        function encode() { 
			var original = document.getElementById('PhoneNumber').value; 
            var stringToEncode = '{"componentDef":"forceSearch:search","attributes":{"term":"'+original+'","scopeMap":{"resultsCmp":"forceSearch:resultsTopResults","label":"Top Results","type":"TOP_RESULTS","cacheable":"Y","id":"TOP_RESULTS","labelPlural":"Top Results"},"context":{"disableSpellCorrection":false,"SEARCH_ACTIVITY":{"term":1234567890}}},"state":{}}';
            var encoded = window.btoa(stringToEncode); 
  
            var output = "Encoded String : " + encoded; 
            document.getElementById("myEncoding").innerHTML = 
              "Original String: " + original + "<br>" + output; 
			window.location.assign("https://mycompany.lightning.force.com/lightning/one/one.app?source=alohaHeader#")+searchcriteria;
        } 
    </script> 
	</body>
</html>

Теперь у меня другой вопрос, возможно ли не использовать поле ввода для получения номера телефона. Я хотел бы, чтобы JScript автоматически выполнялся на моей веб-странице с полученным аргументом (номер телефона)? На данный момент я сделал это в 2 этапа, но, может быть, я могу сделать это в 1 ???

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...