• leandro pereira

Salesforce: disponibilizando um endpoint para chamadas externas

Salesforce é uma plataforma com vários módulos específicos para fazer a gestão do relacionamento do cliente em várias etapas da jornada, como venda e pós-venda, suporte, marketing, etc.


O desenvolvimento com na plataforma Salesforce é uma das várias áreas do mundo dev que mais cresce nos últimos anos. É bem provável que se você está trabalhando com o CRM, também vai precisar fazer algumas integrações com outros sistemas ou base de dados da sua empresa, e para quem está iniciando nessa jornada, aqui vai um exemplo simples com a implementação de um endpoint no Salesforce e uma chamada externa a ele.


Vamos lá!!!


O primeiro passo é liberar o Salesforce para receber chamadas externas de URLs específicas. Por padrão, o Salesforce não aceita chamadas externas, então para liberar, você deve seguir os seguintes passos:

  1. Logar no Salesforce com acesso de administrador.

  2. Ir em Setup

  3. Na barra de busca procure por “Remote Site Settings”

  4. Crie um novo registro com a url da aplicação que fará a chamada REST ao Salesforce.


Feito isso, agora podemos implementar um endpoint no salesforce como no modelo abaixo:


@RestResource(urlMapping='/coffeeandtips/exemplo/*')
global with sharing class ExemploController {

  	@HttpPost
  	global static void recebeDadosESalva(List<RequestVO> req) {
   		String requestData = JSON.serialize(req); 
  		[...]

	}
}

No próximo passo, vamos precisar fazer mais algumas configurações no salesforce.

  1. Logar no Salesforce com acesso de administrador.

  2. Ir em Setup

  3. Na barra de busca procure por “Connected Apps”

  4. Procure pelas informações “Consumer Key” e “Consumer Secret”


Pronto! Agora já conseguimos fazer chamadas para o endpoint que acabamos de criar.

Para isso, antes de fazer a chamada de fato, vamos precisar obter um token utilizando a key e secret do passo anterior.


A chamada deve ser feita com os seguintes parâmetros:


POST para https://minhaurl.salesforce.com/services/oauth2/token


Content-type : application/x-www-form-urlencoded


Parametros:

grant_type : {esse parâmetro será sempre do tipo “password”}
client_id: {Consumer Key obtida no passo anterior}
client_secret : {Consumer Secret obtida no passo anterior}
username: {username de um usuário com permissões para fazer chamadas externas (pode ser o usuario que você usou para logar no salesforce)}
password: {senha de um usuário com permissões para fazer chamadas externas (pode ser o usuario que você usou para logar no salesforce)}

Você receberá um token como resposta desse POST.


E Finalmente podemos fazer uma chamada rest para o endpoint que criamos no Salesforce.


POST para https://minhaurl.salesforce.com/services/apexrest/coffeeandtips/exemplo


Content-type: application/json


Parametros:


Authorization : Bearer “Token Obtido no passo anterior”


É isso pessoal. Espero ter contribuído.

Até a próxima!