Funções sem servidor
A arquitetura sem servidor, também conhecida como “Function-as-a-service” (Faas), fornece uma plataforma para os desenvolvedores executarem seus próprios códigos em resposta a vários eventos de negócios. No Zoho CRM, todos esses códigos podem ser escritos por meio de scripts do Deluge e podem ser executados sem provisionamento ou gerenciamento de servidores. Esses códigos, uma vez escritos, podem ser disparados de outros serviços de terceiros ou podem ser chamados diretamente de qualquer aplicativo da Web ou móvel.
Embora seja chamado de "sem servidor", exige que servidores executem o código. Assim, o termo "sem servidor" define que os desenvolvedores ou as organizações não precisam comprar, provisionar ou alugar servidores para executar o código.
Chamar funções usando APIs REST
Uma função permite que você tenha funcionalidades e recursos adicionais no seu CRM, além dos recursos convencionais. As funções precisam de um acionador para chamá-las. O acionador pode estar na forma de um fluxo de trabalho, um blueprint, uma lista relacionada ou através do clique de um botão.
Se a função precisa ser acionada sem o emprego desses métodos ou de fontes externas, você poderá criar funções independentes e disponibilizá-las como chamadas de API. O disparo funciona através de APIs REST que oferecem a flexibilidade para acioná-lo de qualquer lugar dentro do Zoho CRM ou de qualquer aplicativo de terceiros.
Você pode chamar funções como uma API de duas maneiras:
Além de usar funções como APIs, você também pode usar funções dentro de outras funções. Isso é possível porque a função inteira é reduzida a uma única linha de código.
No entanto, existem algumas precauções que você precisa tomar ao chamar uma função em outra função. Segue abaixo um trecho de um código de amostra que indica uma função chamada dentro de outra função.
Função dentro de uma função (usando APIs):
URL=<URL da função API REST>;
param = Map();
param.put(<argument-name>, <argument-value>);
param.put(<argument-name>, <argument-value>);
param.put(<argument-name>, <argument-value>);
argument = Map();
argument.put("arguments", param);
response = invokeurl
[
url: URL
type: GET | POST
parameters: argument
headers: {}
];
return response;
Funções em Postman:
Funções que são dadas como chamadas de API podem ser testadas usando o aplicativo POSTMAN. No entanto, existem algumas coisas que você precisa ter em mente ao executar uma função nesse aplicativo.
URL:
https://crm.zoho.com/crm/v2/functions/{api_name_of_function}/actions/execute?auth_type=oauth{or}apikey
Argumento:
arguments=
{
"emailAddress":"abc@gmail.com",
"extraDetails":{
"name":"Abc",
"signature":"XYZ"
}
}
Nota:
- Evite usar o nome "argumentos" como um argumento dentro da função, Isso ocorre porque todos os argumentos transmitidos dentro do JSON serão mapeados para os "argumentos" únicos e os demais serão deixados vazios.
1. Dentro do URL de solicitação:
Métodos HTTP:
- GET
- POST
Os argumentos abaixo estão em formato codificado.
Não é possível transmitir os argumentos como um objeto JSON dentro do URL de solicitação. Codifique os argumentos no caso de eles serem dados no URL de solicitação.
arguments=%7B%0D%0A%09%22emailAddress%22%3A%22abc%40gmail.com%22%2C%0D%0A%09%22extraDetails
%22%3A%7B%0D%0A%09%09%22name%22%3A%22Abc%22%2C%0D%0A%09%09%22signature%22%3A%22XYZ%22%0D%0A%09%7D%0D%0A%7D%0D%0A
Você pode chamar os argumentos como um cabeçalho na API. Por exemplo, o URL seria "{Rest API URL}?age=15&name=Robert", onde "age" e "name" são argumentos na função.
Além disso, para qualquer argumento adicional que não esteja definido na função, mas usado na API, normalmente um erro seria emitido. No entanto, você pode adicionar antecipadamente um argumento adicional na função com o nome "CRM API Request". Esse argumento conteria ou incluiria todos os argumentos adicionais que você passa dentro da chamada da API.

2. Na seção do corpo:
Na seção Corpo > form-data, crie uma chave com o nome "arguments".
arguments={"emailAddress":"abc@gmail.com","extraDetails":{"name":"Abc","signature":"XYZ"}}

Nota:
- Solicitação de POST – Limite de argumentos
- No URL de solicitação – 5.000 linhas.
- No corpo – 95.000 linhas (como objeto JSON).
Chamar uma função dentro de outra função
Muitas vezes, pode haver alguns requisitos em que as funções precisam ser chamadas dentro de outras funções. Assim como você chama uma função dentro dos fluxos de trabalho, pode chamá-las dentro de outras funções. Vamos considerar duas funções, A e B.
Para passar os argumentos (parâmetros) da função A para B, eles teriam que ser passados na String do URL da consulta ou em form-data. Para isso, use o trecho abaixo na sua função.

O trecho de código acima mostra uma amostra em que os argumentos da função A são chamados como parâmetros. Você precisa criar uma lista com o nome 'file' e decidir como os parâmetros da função A serão usados na função B.
Os cabeçalhos da função são form-data e o 'file' precisa ser chamado.
Você pode copiar diretamente o trecho de código abaixo para a sua função:
param = Map();
param.put("{key}","{value}");
param.put("{key}","{value}");
param.put("{key}","{value}");
files = list();
for each key in param.keys()
{
stringpart = Map();
stringpart.put("stringPart","true");
stringpart.put("content","" + param.get(key));
stringpart.put("paramName",key);
files.add(stringpart);
}
response = invokeurl
[
url :"{Function_API_URL}"
type :POST
headers:{"Content-Type":"multipart/form-data"}
files:files
];