Serverless Functions - Utilizando a Chave de API no Zoho CRM

Serverless Functions: Usando a Chave de API no Zoho CRM

Chaves API de funções

Uma função sem servidor dentro do seu CRM pode ser invocada de qualquer aplicativo de terceiros ou dentro do CRM usando um webhook. No entanto, geralmente a maioria dos webhooks não suporta OAuth2, exceto alguns deles. Nesse caso, você pode executar a função usando o método de autenticação API Key , que pode ser usado por você ou outros para invocar a função de qualquer lugar.

A diferença entre API Key e OAuth2 está no modo de autenticação. A API Key precisa ser autenticada na URL de solicitação e não como um cabeçalho.





Função de exemplo:

Cenário:
Softwares de helpdesk e relacionados a suporte são absolutamente essenciais em um negócio que envolve interação com clientes e consumidores. Integrar seus softwares de helpdesk com seu CRM economiza muito tempo e esforço para gerenciar todas as informações do seu negócio em um único lugar.

O Zendesk é um desses softwares. O Zoho Desk, desenvolvido pela Zoho, também é um, mas a diferença é que a integração do Zoho Desk é feita automaticamente no Zoho CRM, enquanto você precisa integrar o Zendesk somente por meio de Widgets. Além disso, quando você precisa transferir as informações do ticket de um helpdesk para outro, você precisa ir muito longe. Portanto, uma integração do Zendesk e do Zoho Desk, por meio de Funções Serverless no Zoho CRM, é bem conveniente e útil.

O cenário que vamos assumir agora é similar. Sempre que um "Ticket" é criado no "Zendesk", um ticket deve ser criado no Zoho Desk também, com as mesmas informações.

Aplicações necessárias:

  1. Zendesk
  2. Zoho Desk


Parte 1: Faça uma conexão

Para que a Função faça uso de aplicativos de terceiros e facilite a transferência de dados, você precisa primeiro configurar uma conexão entre o Zoho CRM e o software de terceiros. Neste caso, seria o Zendesk.

Crie uma conexão com o Zoho Desk:


funções apik1





Parte 2: Crie a função

Crie uma função no Zoho CRM (incluindo o código da Conexão).

Parte 2.1: Escreva a função



funções apik 2-1


O código da função é:
  1. string createTicket(string requestBody){
  2.   if(isNull(requestBody))
  3.   {
  4.     return "Sem conteúdo";
  5.   }
  6.   if(!requestBody.contains("argumentos"))
  7.   {
  8.     return "Formato inválido";
  9.   }
  10.   requestBody = requestBody.get("argumentos");
  11.   requestBody = requestBody.get("requestBody");
  12.   requestBody = requestBody.get("detalhes");
  13.   deskURL = "https://desk.zoho.com/api/v1/";
  14.   header = {"orgId":"664950682"};
  15.   departmentId = "264631000000006907"; //Obter detalhes do ticket e do usuário do requestBody
  16.   userDetails = requestBody.get("usuário");
  17.   ticketDetails = requestBody.get("ticket"); //Criar mapa
  18.   param = Map(); //Inserir detalhes
  19.   param.put("departmentId",departmentId);
  20.   if(!userDetails.contains("email"))
  21.   {
  22.     return "O e-mail é obrigatório";
  23.   }
  24.   email = userDetails.get("email");
  25.   param.put("email",email);
  26.   contactName = "Convidado";
  27.   if(userDetails.contains("nome_completo"))
  28.   {
  29.     contactName = userDetails.get("nome_completo");
  30.   }
  31.   else if(userDetails.contains("primeiro_nome") && userDetails.contains("último_nome"))
  32.   {
  33.     contactName = userDetails.get("primeiro_nome") + " " + userDetails.contains("último_nome");
  34.   }
  35.   else if(userDetails.contains("primeiro_nome"))
  36.   {
  37.     contactName = userDetails.get("primeiro_nome");
  38.   }
  39.   else if(userDetails.contains("last_name"))
  40.   {
  41.     contactName = userDetails.get("last_name");
  42.   }
  43.   //Obter ID de contato do nome do contato
  44.   //Obter todos os contatos
  45.   contactList = invokeurl
  46.   [
  47.     url :deskURL + "contacts"
  48.     type :GET
  49.     headers:header
  50.     connection:"zoho_desk9"
  51.   ];
  52.   isExistingCustomer = false;
  53.   contactId = "";
  54.   contactList = contactList.get("data");
  55.   para cada contactInfo em contactList
  56.   {
  57.     contactEmail = contactInfo.get("email");
  58.     if(!isNull(contactEmail))
  59.     {
  60.       if(email.equals(contactEmail))
  61.       {
  62.         isExistingCustomer = true;
  63.         contactId = contactInfo.get("contactId");
  64.         break;
  65.       }
  66.     }
  67.   }
  68.   info isExistingCustomer;
  69.   if(!isExistingCustomer)
  70.   {
  71.     //Criar um novo contato
  72.     contactParam = Map();
  73.     contactParam.put("firstName",userDetails.get("first_name"));
  74.     contactParam.put("lastName",userDetails.get("last_name"));
  75.     contactParam.put("mobile",userDetails.get("mobile"));
  76.     contactParam.put("email",userDetails.get("email"));
  77.     contactParam.put("accountId","264631000000081178");
  78.     contactList = invokeurl
  79.     [
  80.       url :deskURL + "contatos"
  81.       tipo :POST
  82.       parâmetros:contactParam.toString()
  83.       cabeçalhos:cabeçalho
  84.       conexão:"zoho_desk9"
  85.     ];
  86.     contactId = contactList.get("id");
  87.   }
  88.   param.put("contactId",contactId);
  89.   if(!ticketDetails.contains("título"))
  90.   {
  91.     return "o título é obrigatório";
  92.   }
  93.   param.put("assunto",ticketDetails.get("título"));
  94.   if(!ticketDetails.contains("status"))
  95.   {
  96.     return "o status é obrigatório";
  97.   }
  98.   param.put("status",ticketDetails.get("status"));
  99.   if(ticketDetails.contains("prioridade"))
  100.   {
  101.     param.put("prioridade",ticketDetails.get("prioridade"));
  102.   }
  103.   if(userDetails.contains("organização"))
  104.   {
  105.     organização = userDetails.get("organização");
  106.     if(organization.contains("nome"))
  107.     {
  108.       param.put("accountName",organization.get("nome"));
  109.     }
  110.   }
  111.   if(userDetails.contains("celular"))
  112.   {
  113.     param.put("telefone",userDetails.get("celular"));
  114.   }
  115.   if(userDetails.contains("descrição"))
  116.   {
  117.     param.put("descrição",userDetails.get("descrição"));
  118.   }
  119.   info param;
  120.   response = invokeurl
  121.   [
  122.     url :deskURL + "tickets"
  123.     type :POST
  124.     parameters:param.toString()
  125.     headers:header
  126.     connection:"zoho_desk9"
  127.   ];
  128.   if(response.contains("errorMessage"))
  129.   {
  130.     return "Sorry Something went wrong. error ::: " + response.get("errorMessage");
  131.   }
  132.   //Enviar notificação para a equipe de suporte
  133.   sendmail
  134.   [
  135.     from :zoho.adminuserid
  136.     to :"deborah.g@zohocorp.com"
  137.     subject :"no-reply"
  138.     message :"'Prezada equipe,<expression></expression><div><br></div><div>Um novo ticket é criado dentro do Zoho DESK por meio do Zendesk.</div><div><br></div><div>Detalhes do ticket- </div><div><br></div><div>Nome de usuário - ' + contactName + '</div><div><br></div><div><br></div><div>Corpo da solicitação = " + requestBody + "</div><div><br></div>'"
  139.   ]
  140.   return response;
  141. }





Parte 2.2: Para disponibilizar a função como uma chave de API:

  1. Clique no ícone Configurações para a função correspondente que precisa se tornar uma API.
  2. Clique em REST API.


    funções apik 3


  3. Habilitar controle deslizante de chave de API .
  4. Clique em Salvar.


fns regenera chave api 3





Notes
Observação:
  1. Esta chave de API é estática e não expira a menos que seja revogada.
  2. Você pode regenerar a chave de API a qualquer momento clicando no botão Regenerate API key . Quando você regenera sua chave de API, a chave antiga se torna inválida e quaisquer solicitações feitas usando a chave antiga serão rejeitadas. Isso pode ser benéfico caso sua chave de API seja comprometida ou você precise revogar o acesso por qualquer motivo. Esteja ciente de que a chave de API é comum para todas as funções e que a regeneração da chave refletirá em todas as funções. Após regenerar a chave, certifique-se de atualizar todos os aplicativos que usam a chave antiga com a nova chave para garantir que eles continuem funcionando corretamente.
  3. Observe que somente usuários administradores têm acesso à opção Regenerar chave de API.


Parte 3: Crie um Webhook no Zendesk:

  1. Vá para Admin > Extensão > Destino HTTP.
  2. Forneça as seguintes informações:
    1. URL da função
    2. Método - GET ou POST
    3. Selecione Content-type como JSON.


funções apik 5


Notes
Observação :
  1. A URL da função é a URL da chave da API que você obtém na Etapa 2.

Parte 4: Crie um gatilho no Zendesk:

  1. Condição - quando um ticket é criado.
  2. Notificar Alvo - Nome do Alvo HTTP


funções apik 6





funções apik 7


Corpo de argumentos JSON:
  1. {"argumentos":
  2. {
  3. "requestBody":{

  4. "detalhes":{
  5. "ticket": { "ticket":
  6. {
  7. "ticket": "{{ticket.título}}",
  8. "descrição": "{{ticket.descrição}}",
  9. "fonte": "{{ticket.via}}",
  10. "prioridade": "{{ticket.prioridade}}",
  11. "data_de_vencimento": "{{ticket.data_de_vencimento}}",
  12. "URI": "{{ticket.url}}",
  13. "status": "{{ticket.status}}"
  14. },
  15. "atribuir":
  16. {
  17. "e-mail": "{{ticket.designador.email}}",
  18. "nome": "{{ticket.designador.nome}}",
  19. "primeiro_nome": "{{ticket.designador.primeiro_nome}}",
  20. "último_nome": "{{ticket.designador.último_nome}}"
  21. },
  22. "usuário":
  23. {
  24. "nome_completo":"{{usuário_atual.nome}}",
  25. "nome_primeiro":"{{usuário_atual.nome_primeiro}}",
  26. "idioma":"{{usuário_atual.idioma}}",
  27. "detalhes":"{{usuário_atual.detalhes}}",
  28. "celular":"{{usuário_atual.telefone}}",
  29. "e-mail":"{{usuário_atual.email}}",
  30. "organização":
  31. {
  32. "detalhes":"{{usuário_atual.organização.detalhes}}",
  33. "nome":"{{usuário_atual.organização.nome}}"
  34. }} }
  35. } }
  36. }
 




Parte 5: Configure um argumento que contenha todo o corpo da solicitação.

Quando um webhook envia dados para uma função, não há como saber o número de argumentos presentes nele. Para lidar com esse problema, você pode fazer com que a função contenha todo o corpo da solicitação dentro de um único argumento .

Invoque a API do Desk dentro da função e salve a função.

O resultado:

Criando um ticket no Zendesk:


funções apik 8





funções apik 9


O ticket é criado no Zoho Desk


funções apik 10





Para consultoria especializada Zoho CRMconsulte um Zoho Expert, ligue ou envie WhatsApp para +55 (11) 93937 1547



    Fale com os Zoho Experts

    WhatsApp:  Whatsapp 11 93937 1547    Site: itgoal.com.br     Email: comercial@itgoal.com.br

      • Popular Articles

      • Como posso alterar ou redefinir a senha da Conta do Google?

        Sua senha da Conta do Google é a mesma usada em outros produtos do Google, como Gmail e YouTube. Se esquecer sua senha e quiser redefini-la ou alterá-la por razões de segurança, siga as etapas abaixo. SENHA ESQUECIDA Caso não saiba a senha da sua ...
      • Como alterar ou redefinir minha senha do Zoho?

        Sua conta Zoho é a chave para acessar uma gama de ferramentas poderosas que podem impulsionar sua produtividade e o sucesso do seu negócio. No entanto, com grande poder vem uma grande responsabilidade – proteger sua conta com uma senha forte é ...
      • Zoho Mail offline

        Apesar da crescente popularidade dos aplicativos de mensagens, o email manteve seu trono como o principal modo de comunicação oficial. A verificação de e-mails tornou-se sinônimo de trabalho, e o trabalho não se limita mais ao escritório. ...
      • Adicionando Alias (apelidos) no Zoho Mail

        Quando um usuário tem vários endereços de e-mail para a mesma conta, o endereço de e-mail adicional pode ser configurado como um alias de e-mail para a conta. Os aliases de e-mail são particularmente úteis para administrar vários domínios. Quando uma ...
      • Você conheçe o botão de Ítens Recentes no Zoho CRM?

           ÍTENS RECENTES. Você conhece o ícone   Ítens Recentes no canto inferior direito, da tela do CRM Zoho ?   Este botão é muito usado no CRM Zoho e serve para visualizar os últimos 20 ítens acessados. Seja ele, um “Cliente”, um “Negócio”, um “Evento”, ...
      • Related Articles

      • Trabalhando com a integração do Zoho Desk no Zoho CRM

        O Zoho CRM permite que você integre suas contas do Desk e do CRM. Essa integração visa fornecer uma plataforma única para visualizar e responder aos tickets do cliente diretamente na conta do CRM. Como administrador, você pode iniciar a integração ...
      • Como criar funções de usuário no Zoho Desk

        Cada organização tem uma hierarquia de funções que pode ser replicada em sua conta do Zoho Desk para estender as permissões relevantes para os agentes acessarem os dados e as informações do cliente. Por exemplo, um gerente de suporte precisa acessar ...
      • Criando funções no Zoho Desk

        As funções são soluções alternativas conectáveis que permitem realizar tarefas que não estão acessíveis para uso imediato. Por exemplo, vamos supor que você queira priorizar os tickets do cliente com base em sua probabilidade de vendas no Zoho CRM. ...
      • Como utilizar formulários para criar tickets no Zoho Desk

        Os formulários da Web simplificam o processo de captura de tíquetes de suporte do seu site para o Zoho Desk. Os tickets podem ser de clientes solicitando sua ajuda ou simplesmente deixando comentários sobre seu produto. De qualquer forma, os Web ...
      • Maximize o Suporte Técnico: Como Usar Equipes em Automações no Zoho Desk

        Você pode incluir equipes em automações de suporte técnico, como fluxos de trabalho, regras de atribuição (diretas e alternadas), regras baseadas em tempo etc. Dessa forma, você pode enviar notificações, atribuir tickets automaticamente e enviar ...