Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Content imported from a Scroll Translations translation file.

...

Sv translation
languagefr

Mise en œuvre

Classique

Pour créer une nouvelle classe Apex, accédez à Setup dans SalesForce, et tapez "Apex" dans la boîte de recherche rapide. 

Sélectionnez "Construire ... Développer ... Apex Classes".

Foudre

Configuration de l'accès, et recherchez "Apex" dans la boîte de recherche.

Classique and Foudre

Créer Créez une nouvelle classe. Ajoutez le code suivant :


Translations Ignore


Code Block
languagejava
titleExemple Apex getCallerInformation
@RestResource(urlMapping='/jtelACD/getCallerInformation') global with sharing class JTELACD_GetCallerInformation { @HttpGet global static String doGet() { RestRequest req = RestContext.request; RestResponse res = RestContext.response; // This is how to access URLParams if required // List<String> URLParams = req.requestURI.split('/'); // Example: ["","jtelACD","getCallerInformation"] // Extract the request parameters String CallerID = req.params.get('CallerID'); String ServiceNumber = req.params.get('ServiceNumber'); String ServiceName = req.params.get('ServiceName'); // PerformFrom SOSLrelease Query3.25 over contacts- 2021-07-02 and leads, searching for the phone number with *wildcards*upwards String soslSearchStringFunction = '*' + CallerID + '*'; List<List<SObject>> searchList = [FIND :soslSearchString IN ALL FIELDS RETURNING Contact, Lead]; List<Contact> contacts = ( (List<Contact>) searchList[0] ); List<Lead> leads = ( (List<Lead>) searchList[1] ); // Multple hits? if( contacts.size() + leads.size() > 1 ) { // Multiple hits res.statusCode = 300; return null; } if( contacts.size() > 0 ) { // Query for exact contact String Id = (String) contacts.get(0).get('Id'); Set<String> fieldSet = schema.describeSObjects(new String[] { 'Contact' } )[0].fields.getMap().keyset(); List<String> fieldList = new List<String>( fieldSet ); String query = 'SELECT ' + String.join( fieldList, ',' ) + ' FROM Contact WHERE Id = \'' + Id + '\''; @RestResource(urlMapping='/jtelACD/getCallerInformation') global with sharing class JTELACD_GetCallerInformation { @HttpGet global static String doGet() { RestRequest req = RestContext.request; RestResponse res = RestContext.response; // This is how to access URLParams if required // List<String> URLParams = req.requestURI.split('/'); // Example: ["","jtelACD","getCallerInformation"] // Extract the request parameters String CallerID = req.params.get('CallerID'); String ServiceNumber = req.params.get('ServiceNumber'); String ServiceName = req.params.get('ServiceName'); // Perform SOSL Query over contacts and leads, searching for the phone number with *wildcards* String soslSearchString = '*' + CallerID + '*'; List<List<SObject>> searchList = [FIND :soslSearchString IN ALL FIELDS RETURNING Contact, Lead]; List<Contact> contacts = ( (List<Contact>) searchList[0] ); List<Lead> leads = ( (List<Lead>) searchList[1] ); // Multple hits? if( contacts.size() + leads.size() > 1 ) { // Multiple hits res.statusCode = 300; return null; } if( contacts.size() > 0 ) { // Query for exact contact String Id = (String) contacts.get(0).get('Id'); Set<String> fieldSet = schema.describeSObjects(new String[] { 'Contact' } )[0].fields.getMap().keyset(); List<String> fieldList = new List<String>( fieldSet ); String query = 'SELECT ' + String.join( fieldList, ',' ) + ' FROM Contact WHERE Id = \'' + Id + '\''; Contact = Database.query( query ); // 200 OK will be returned by default return JSON.serialize( contact ); } if( leads.size() > 0 ) { // Query for exact lead String Id = (String) leads.get(0).get('Id'); Set<String> fieldSet = schema.describeSObjects(new String[] { 'Lead' } )[0].fields.getMap().keyset(); List<String> fieldList = new List<String>( fieldSet ); String query = 'SELECT ' + String.join( fieldList, ',' ) + ' FROM Lead WHERE Id = \'' + Id + '\''; Lead = Database.query( query ); // 200 OK will be returned by default return JSON.serialize( lead ); } // Nothing found res.statusCode = 404; return null; } } contact = Database.query( query ); // 200 OK will be returned by default return JSON.serialize( contact ); } if( leads.size() > 0 ) { // Query for exact lead String Id = (String) leads.get(0).get('Id'); Set<String> fieldSet = schema.describeSObjects(new String[] { 'Lead' } )[0].fields.getMap().keyset(); List<String> fieldList = new List<String>( fieldSet ); String query = 'SELECT ' + String.join( fieldList, ',' ) + ' FROM Lead WHERE Id = \'' + Id + '\''; Lead lead = Database.query( query ); // 200 OK will be returned by default return JSON.serialize( lead ); } // Nothing found res.statusCode = 404; return null; } }

Test CURL

Tout d'abord, obtenez un jeton OAUTH, voir Testing with CURL.
req.params.get('Function'); String UserData = req.params.get('UserData'); String UserData2 = req.params.get('UserData2'); String UserData3 = req.params.get('UserData3'); // Specifying a Function is intended to allow the developer to perform different types of query. // As an example, we just return the data back if a function is specified. // In a real world case, a query for example to search for and return a ticket, contract or some other record would be performed. if( Function != null && Function != '' ) { JSONGenerator gen = JSON.createGenerator( true ); gen.writeStartObject(); gen.writeStringField( 'CallerID', CallerID ); gen.writeStringField( 'ServiceNumber', ServiceNumber ); gen.writeStringField( 'ServiceName', ServiceName ); gen.writeStringField( 'Function', Function ); gen.writeStringField( 'UserData', UserData ); gen.writeStringField( 'UserData2', UserData2 ); gen.writeStringField( 'UserData3', UserData3 ); gen.writeEndObject(); return gen.getAsString(); } // Perform SOSL Query over contacts and leads, searching for the phone number with *wildcards* String soslSearchString = '*' + CallerID + '*'; List<List<SObject>> searchList = [FIND :soslSearchString IN ALL FIELDS RETURNING Contact, Lead]; List<Contact> contacts = ( (List<Contact>) searchList[0] ); List<Lead> leads = ( (List<Lead>) searchList[1] ); // Multple hits? if( contacts.size() + leads.size() > 1 ) { // Multiple hits res.statusCode = 300; return null; } if( contacts.size() > 0 ) { // Query for exact contact String Id = (String) contacts.get(0).get('Id'); Set<String> fieldSet = schema.describeSObjects(new String[] { 'Contact' } )[0].fields.getMap().keyset(); List<String> fieldList = new List<String>( fieldSet ); String query = 'SELECT ' + String.join( fieldList, ',' ) + ' FROM Contact WHERE Id = \'' + Id + '\''; Contact contact = Database.query( query ); // 200 OK will be returned by default return JSON.serialize( contact ); } if( leads.size() > 0 ) { // Query for exact lead String Id = (String) leads.get(0).get('Id'); Set<String> fieldSet = schema.describeSObjects(new String[] { 'Lead' } )[0].fields.getMap().keyset(); List<String> fieldList = new List<String>( fieldSet ); String query = 'SELECT ' + String.join( fieldList, ',' ) + ' FROM Lead WHERE Id = \'' + Id + '\''; Lead lead = Database.query( query ); // 200 OK will be returned by default return JSON.serialize( lead ); } // Nothing found res.statusCode = 404; return null; } }



Test CURL

Tout d'abord, obtenez un jeton OAUTH, voir Testing with CURL.

La commande CURL suivante peut être utilisée pour tester cette API :

Translations Ignore


Code Block
titleCURL - Test getCallerInformation
curl.exe --silent -i -X GET --header "Authorization: Bearer <OAUTH_TOKEN>" --header "Connection: Close" "https://<SALES_FORCE_INSTANCE_URL>/services/apexrest/jtelACD/getCallerInformation?CallerID=4989461495000&ServiceNumber=4980012345678&ServiceName=test"


La commande CURL suivante peut être utilisée pour tester cette API avec les paramètres supplémentaires de la version 3.25 - 2021-07-02 et suivantes :

Translations Ignore


Code Block
titleCURL - Test getCallerInformation
curl.exe --silent -i -X GET --header "Authorization: Bearer <OAUTH_TOKEN>" --header "Connection: Close" "https://<SALES_FORCE_INSTANCE_URL>/services/apexrest/jtelACD/getCallerInformation?CallerID=4989461495000&ServiceNumber=4980012345678&ServiceName=test&Function=testFunction&UserData=testUserData&UserData2=testUserData2&UserData3=testUserData3"