Kohandatud captcha teenuse integreerimine vormidega Customer Insights - Journeys
Customer Insights - Journeys Vormid võimaldavad teil kasutada kohandatud captcha botikaitset vormiedastuste valideerimiseks. See artikkel annab näite, kuidas integreerida Google’i reCAPTCHA. Vool on teiste captcha teenuste puhul sarnane.
Märkus.
Praeguses rakenduse versioonis saab aktiivne olla ainult üks captcha juurutus. Kui kasutate oma captcha pakkujat (nagu allpool kirjeldatud), lakkavad olemasolevad valmiskujul captchat kasutavad vormid töötamast. Kohandatud captcha rakendamine nõuab vähemalt põhiteadmisi dataverse pistikprogrammide kirjutamisest ja silumisest.
Protsess koosneb järgmistest sammudest:
- Lisage vormile reCAPTCHA.
- Lisage captcha tekstiväärtus vormi edastusse, kui vorm on edastatud.
- Loo CRM-is plugin , mis valideerib captcha.
Samm-sammult näide: integreerige Google reCAPTCHA
1. Lisage vormile reCAPTCHA
Looge vorm Customer Insights - Journeys väljaredaktor.
data-validate-submission="true"
Lisage elemendile<form>
atribuut, mis lubab vormi esitamisel kohandatud valideerimise.Lisage vormil reCAPTCHA
<div id="g-recaptcha">
kohatäitena. Seda div-ID-d kasutatakse hiljem viitena. Soovitatav on panna kohatäide viimase välja ja esitamisnupu vahele.Avaldage vorm ja manustage vorm oma veebisaidile.
Redigeerige lehte, kuhu vorm manustati. Lisage lehe päisesse Google’i pakutav skript. See skript laadib reCAPTCHA tagasihelistamise parameetriga
onLoad
. Seda tagasihelistamist kutsutakse kohe, kui captcha on laaditud.<script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback" async defer></script>
Lisage funktsioon onLoadCallback:
function onloadCallback() { grecaptcha.render('g-recaptcha', { sitekey: '{sitekey}', }); }
Asendage
{sitekey}
kohatäide Google’i pakutavaga. See tagasihelistamisfunktsioon renderdab reCAPTCHA varem loodud kohatäites<div id="g-recaptcha">
.Registreerige onloadCallback funktsioon, mida vormi laadur kutsub:
document.addEventListener("d365mkt-afterformload", onloadCallback);
2. Lisage vormi esitamisele captcha teksti väärtus
Kui vorm on esitatud, g-recaptcha-response
lisatakse parameeter automaatselt vormi edastusse. Järgmistes etappides loote pistikprogrammi, mis peidab selle väärtuse, kuna see lisatakse ValidationOnlyFields
pistikprogrammi koodi tagastatud vastuseobjekti loendisse.
3. Looge pistikprogramm
3.1 Looge Visual Studio pistikprogrammi jaoks projekt
- Avage Visual Studio ja looge uus klassiteegi projekt, kasutades .NET Frameworki 4.6.2.
- Valige Solution Exploreris käsk Halda NuGet pakette ja installige
Microsoft.CrmSdk.CoreAssemblies
.
3.2 Looge pistikprogrammide klass
Nimeta
Class1.cs
ümber.CustomValidationPlugin.cs
Pange CustomValidationPlugin klass IPlugini liidesest pärima ja lisage Exe-meetod.
public class CustomValidationPlugin : IPlugin { public void Execute(IServiceProvider serviceProvider) { } }
Konteksti- ja jälgimisteenuse toomiseks lisage täitmismeetodisse järgmine kood.
public void Execute(IServiceProvider serviceProvider) { // get tracing service ITracingService tracingService = (ITracingService)serviceProvider.GetService(typeof(ITracingService)); // get plugin execution context IPluginExecutionContext context = (IPluginExecutionContext) serviceProvider.GetService(typeof(IPluginExecutionContext)); }
Lisage see kood vormi esitamise parameetristringi toomiseks. See on JSON-kodeeritud string, mis tähistab välju, mille kasutaja vormil esitas. See protsess otsib selle stringi ja deserialiseerib selle, kasutades Deserialize helper meetodit ja FormSubmissionRequest klassi, mis määratletakse hiljem. See kontrollib, kas massiiv Väljad sisaldab võtit g-recaptcha-vastuse jaoks. Kui võtit reCAPTCHA ei leita, tagastab see vahelejätmise valideerimise, kuna töödeldav vorm ei sisaldanud Google’i recaptcha elementi.
var requestString = (string)context.InputParameters["msdynmkt_formsubmissionrequest"]; var requestObject = Deserialize<FormSubmissionRequest>(requestString); if (!requestObject.Fields.TryGetValue("g-recaptcha-response", out string recaptchaToken)) { tracingService.Trace("g-recaptcha-response was not present in form submission"); return; }
Lisage järgmine kood, et tagastada, kui
g-recaptcha-token
väärtus on null või tühi.if (String.IsNullOrEmpty(recaptchaToken)) { tracingService.Trace($"g-recaptcha-response value not found"); return; }
Lisage järgmine kood, et valideerida Google’i captcha tunnus Google’i API-de suhtes.
string url = "https://www.google.com/recaptcha/api/siteverify"; using (HttpClient client = new HttpClient()) { var content = new FormUrlEncodedContent(new Dictionary<string, string> { {"secret", "your_secret_key"}, {"response", recaptchaToken} }); try { var response = client.PostAsync(url, content).Result; if (!response.IsSuccessStatusCode) { tracingService.Trace($"Request Failed: ({response.StatusCode}){response.Content}"); return; } var responseString = response.Content.ReadAsStringAsync().Result; gRecaptchaResponse = Deserialize<GRecaptchaResponse>(responseString); var resp = new ValidateFormSubmissionResponse() { IsValid = isValid, ValidationOnlyFields = new List<string>() { "g-recaptcha-response" } }; context.OutputParameters["msdynmkt_validationresponse"] = Serialize(resp); } catch (Exception e) { tracingService.Trace($"{e.Message}"); } }
Esiteks määratletakse URL, seejärel luuakse eksemplar
HttpClient
. Luuakse objekt,FormUrlEncodedContent
mis sisaldab eelmistes sammudes saadud teavetrecaptchaToken
ja Google’i pakutavat salajast võtit. Seejärel saadetakse päringPOST
ja kontrollitakse olekukoodi, kui see ei õnnestu, naaseb see. Kui see õnnestub, deserialiseerib see vastuse, kasutades Deserialize abistaja meetodit jaGRecaptchaResponse
see määratletakse hiljem. Seejärel loob see uueValidateFormSubmissionResponse
objekti, järjestab selle ja määrab selle väljundparameetrimsdynmkt_validationresponse
väärtuseks, mis on see, mida Microsofti teenus kasutab edastuse vastuvõtmiseks või tagasilükkamiseks. Stringig-recaptcha-response
ValidationOnlyFields
lisamine loendisse peidab selle välja kasutajaliideses vormi esitamise eest.Lisage järgmine kood, et määratleda Serialize ja Deserialize abistaja meetodid.
private T Deserialize<T>(string jsonString) { serializer = new DataContractJsonSerializer(typeof(T)); T result; using (MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(jsonString))) { result = (T)serializer.ReadObject(stream); } return result; } private string Serialize<T>(T obj) { string result; serializer = new DataContractJsonSerializer(typeof(T)); using (MemoryStream memoryStream = new MemoryStream()) { serializer.WriteObject(memoryStream, obj); result = Encoding.Default.GetString(memoryStream.ToArray()); } return result; }
JSON-stringide objektide serialiseerimiseks/deserialiseerimiseks vajalike klasside määratlemiseks lisage järgmine kood.
public class FormSubmissionRequest { public Dictionary<string, string> Fields { get; set; } } public class GRecaptchaResponse { public bool success { get; set; } } public class ValidateFormSubmissionResponse { public bool IsValid { get; set; } public List<string> ValidationOnlyFields { get; set; } }
3.3 Pistikprogrammi allkirjastamine ja koostamine
- Paremklõpsake projektil ja valige lahenduseuurijas Atribuudid.
- Valige vahekaart Allkirjastamine ja märkige ruut Allkirjasta koost .
- Valige
<New...>
. - Sisestage võtmefaili nimi ja tühjendage ruut Kaitse minu võtmefaili parooliga.
- Ehitage projekt.
- Plugina komplekti
CustomValidationPlugin.dll
leiate jaotisest\bin\Debug
.
3.4 Registreeri plugin
- Avama
PluginRegistration.exe
. - Valige Loo uus ühendus.
- Valida Office 365.
- Valige Logi sisse.
- Valige Registreeri ja seejärel Registreeri uus kooste .
- Valige (...) nuppu sammus 1 ja valige eelmistes sammudes sisseehitatud DLL.
- Valige Registreeri valitud plugin.
3.4 Registreerumise samm
- Valige registreeritud kogude loendist CustomValidationPlugin .
- Valige Registreeri uus samm.
- Sisestage
msdynmkt_validateformsubmission
tekstiväljale Sõnum. - Veenduge, et täitmisrežiim oleks seatud sünkroonseks .
- Veenduge, et täitmiskorraldus oleks seatud väärtusele
10
. - Veenduge, et sündmuse müügitoru täitmise etapp oleks määratud operatsioonijärgseks .
- Valige Registreeri uus samm.
Järeldus
Kui atribuudiga data-validate-submission
vorm on esitatud, käivitab teie kohandatud pistikprogramm ja valideerib Google’i teenustega reCAPTCHA vastuse. Kohandatud pistikprogramm töötab pärast Microsofti vaikimisi valideerimise pistikprogrammi. Kui vormil pole ühtegi Microsofti captcha välja, määrab IsValid:false
Microsofti lisandmoodul ja esitamine nurjub, kui te seda IsValid:true
üle ei kirjuta.