NicoChatNicoChatDocumentaçãoBuscar na documentação…
Entrar

Criando NicoApp (1.0)

Para criar um aplicativo, siga as etapas 1 a 6 na imagem acima.

2026-08-12
Nota
Exemplo - Usaremos uma API de verificação de e-mail, a TheChecker (abre uma nova janela), como exemplo de como criar e editar um NicoApp.

Para criar um aplicativo, siga as etapas 1 a 6 na imagem acima.

Na página de edição (à esquerda), informe título, descrição, logotipo, capa e ID do Vídeo do YouTube; ele aparecerá assim na Loja de NicoApps (à direita):

No lado direito da página de edição:

Você sempre pode consultar os dados de exemplo na parte inferior para se orientar. E os Campos do Sistema são os que você pode usar no seu código JSON, se necessário.

Autenticação

Este bloco serve para configurar as autenticações do seu NicoApp.

Parâmetros

Nome
Tipo de dados
Descrição
type
enum
Valor suportado: APIKEY
params
array
Valores solicitados aos usuários na instalação, por exemplo, a chave da API
request
objeto
Envia solicitações com parâmetros (por exemplo, email, api_key) e mapeia a resposta para os params (por exemplo, token)
connection
objeto
Lista de cabeçalhos ou parâmetros de solicitação

Exemplo de verificação de e-mail

Este é um exemplo de autenticação com uma chave de API na consulta. Veja a seguir como ele fica depois que os usuários instalam o aplicativo:

A "chave da API" definida pelos usuários é armazenada na variável "token".

Exemplo de autenticação básica

Nota
DICA - A autenticação de acesso básico exige que o nome de usuário e a senha, unidos por dois-pontos, formem uma credencial, e que essa credencial seja codificada em Base64. Como o código JSON não aceita funções, o sistema faz a codificação para você. Assim, basta colocar "Basic [[sid]]:[[token]]" como valor de autorização.
texto
{
    "type": "APIKEY",
    "params": [
        {
            "name": "sid",
            "title": "Twilio Account SID:"
        },
        {
            "name": "token",
            "title": "Twilio Auth Token:"
        }
    ],
    "connection": {
        "headers": {
            "Authorization": "Basic [[sid]]:[[token]]"
        }
    }
}

Outros exemplos

Exemplo 1: autenticação APIKEY, headers

texto
{
    "type": "APIKEY",
    "params": [
        {
            "name": "token",
            "title": "Enter your api key:"
        }
    ],
    "connection": {
        "headers": {
            "Authorization": "Bearer [[token]]"
        }
    }
}

Os "headers" da "connection" são adicionados a cada solicitação, para que você não precise repeti-los em todos os lugares depois.

Exemplo 2: autenticação APIKEY, parâmetros de consulta

texto
{
    "type": "APIKEY",
    "params": [
        {
            "name": "api_key",
            "title": "Enter your api key:"
        }
    ],
    "connection": {
        "qs": {
            "key": "[[api_key]]"
        }
    }
}

Como no exemplo acima, a string de consulta é adicionada a cada solicitação.

Exemplo 3: autenticação APIKEY, token JWT

texto
{
    "type": "APIKEY",
    "params": [
        {
            "name": "email",
            "title": "Enter your email:"
        },
        {
            "name": "api_key",
            "title": "Enter your api key:"
        }
    ],
    "request": {
        "url": "https://example.com/get-token",
        "method": "POST",
        "body_format": "form",
        "cache": 3600,      //cache this request for 3600 seconds
        "payload": {
            "email": "[[email]]",
            "api_key": "[[api_key]]"
        },
        "mapping": [
            {
                "name": "token",
                "path": "$.data.token"
            }
        ]
    },
    "connection": {
        "headers": {
            "Authorization": "Bearer [[token]]"
        }
    }
}

O email e a api_key fornecidos pelos usuários são enviados em uma solicitação. As respostas são então mapeadas para a variável token pelo caminho JSON $.data.token. Depois disso, ela é usada como variável [[token]] em um cabeçalho de autorização. Novamente, o cabeçalho é adicionado a cada solicitação posterior.

Ações

Ações são as funções/recursos que os usuários podem executar com o seu aplicativo. Por exemplo, este aplicativo "Google Translate" tem 2 ações: "Detectar idioma" e "Traduzir texto":

Na área de código, você precisa definir as informações padrão da ação, incluindo name, title, description, forms e requests, para que a ação funcione no fluxo com configuração.

Na parte inferior, clique em “Obter Produto” para ver um exemplo de solicitação GET e em “Atualizar Produto” para um exemplo de solicitação POST. Os campos forms e requests são do tipo objeto, portanto é preciso definir vários atributos.

Parâmetros

Nome
Tipo de dados
Descrição
name
string
Identifica a ação; deve ser único
title
string
Título da ação mostrado ao usar o aplicativo
description
string
Descrição da ação mostrada ao usar o aplicativo
forms
array
Lista de objetos de formulário para a configuração da ação
requests
array
Lista de objetos de solicitação a serem executados em sequência

Objeto de formulário

Nome
Tipo de dados
Descrição
name
string
Nome do campo, usado como identificador e variável dentro da solicitação
type
enum
Tipo de valor, usado para validação; valores suportados: string, text, number e select
title
string
Título do campo, exibido na interface
default
string
Valor padrão para este campo. Se especificado, o campo se torna opcional
source
string
Nome da fonte no bloco Sources, apenas para type=select
placeholder
string
Texto cinza de orientação exibido dentro do campo
description
string
Texto de orientação exibido abaixo do campo

Linhas na variável de texto

Nota
DICA - A diferença entre os tipos de formulário string e text é que string remove as quebras de linha da variável, enquanto text as mantém.

Objeto de solicitação

Nome
Tipo de dados
Descrição
url
string
URL da solicitação
method
enum
Método de solicitação HTTP, valores suportados: GET, POST, PUT, DELETE, PATCH, HEAD, OPTIONS
headers
array
Lista de cabeçalhos da solicitação em pares chave-valor, por exemplo: {"Content-Type": "application/json"}
payload
JSON
Corpo da solicitação
body_format
enum
Formato do corpo da solicitação, valores suportados: json, query, form, multipart, raw
mapping
array
Conjunto de campos para mapear os resultados da solicitação em campos personalizados

Objeto de mapeamento

Nome
Tipo de dados
Descrição
name
string
Nome do campo, usado como identificador
type
enum
Tipo de campo, valores suportados: text, number, boolean, date, datetime, array
title
array
Nome do campo, exibido na interface
path
string
String no formato de caminho JSON

Exemplo de verificação de e-mail

A seguir, o código do exemplo de verificação de e-mail e as etapas da interface em ação.

Código:

Nota
DICA - Você pode remover o "api_key" da URL porque já o adicionamos no bloco Auth.

Interface do aplicativo:

Outros exemplos

Exemplo 1:

texto
{
    "url": "https://translation.googleapis.com/language/translate/v2/detect",
    "method": "POST",
    "headers": {
        "Content-Type": "application/json"
    },
    "payload": {
        "q": "[[q]]"
    },
    "mapping": [
        {
            "name": "language",
            "type": "text",
            "title": "Detected Language",
            "path": "$.data.detections.0.0.language"
        }
    ]
}

Exemplo 2:

texto
{
    "url": "https://example/api/auth",
    "method": "POST",
    "body_format": "form",
    "cache": 3600,
    "payload": {
        "email": "[[email]]",
        "api_key": "[[api_key]]"
    },
    "mapping": [
        {
            "name": "token",
            "type": "text",
            "title": "Token",
            "path": "$.data.token"
        }
    ]
}

Fontes

O bloco Sources é usado para oferecer aos usuários uma lista de opções para o valor do formulário. Use o nome da fonte no parâmetro form do bloco Actions para criar a conexão.

Existem 2 formatos de fontes, static e dynamic. As opções de uma fonte estática são fixas, enquanto uma fonte dinâmica traz opções que variam conforme as entradas.

Atenção
Nota - o bloco Sources é opcional, dependendo do tipo dos objetos form no bloco Actions.

Parâmetros

Nome
Tipo de dados
Descrição
name
string
Identifica a fonte
type
enum
Tipo de fonte, valores suportados: enum:rpc, enum:static
list
array
Lista de opções fixas exibidas ao usar o aplicativo. Somente para type=enum:static
request
objeto
Objeto de solicitação quando a fonte é dinâmica. Somente para type=enum:rpc

Objeto de mapeamento dentro do objeto de solicitação

Nome
Tipo de dados
Descrição
type
enum
Tipo de campo, valor suportado: select
path
string
String no formato de caminho JSON, para o array de dados da resposta
value
string
String no formato de caminho JSON, com base nos resultados de path. É o valor real retornado quando um rótulo é selecionado
label
string
String no formato de caminho JSON, com base nos resultados de path. Exibido na lista suspensa como rótulo

Exemplos

Forms no bloco Actions:

texto
"forms": [
            {
                "name": "static_options",
                "type": "select",
                "title": "Static Options",
                "source": "product_type_list"
            },
            {
                "name": "dynamic_options",
                "type": "select",
                "title": "Dynamic Options",
                "source": "users_list"
            }
        ]

Bloco Sources:

texto
[
    {
        "name": "product_type_list",
        "type": "enum:static",
        "list": [
            {
                "value": "food",
                "label": "Food & Drink"
            },
            {
                "value": "toy",
                "label": "Toys"
            },
            {
                "value": "phone",
                "label": "Mobile Phone"
            }
        ]
    },
    {
        "name": "users_list",
        "type": "enum:rpc",
        "request": {
            "url": "https://jsonplaceholder.typicode.com/users",
            "method": "GET",
            "headers": {
                "Content-Type": "application/json"
            },
            "mapping": [
                {
                    "type": "select",
                    "path": "$",
                    "value": "$.id",
                    "label": "$.username"
                }
            ]
        }
    }
]
Nota
DICA - o objeto request das fontes dinâmicas foi explicado no bloco Action; consulte lá os detalhes dos parâmetros desse objeto.

Interface do aplicativo:

Gatilhos

Ao definir gatilhos, os usuários podem usá-los na seção de automação como qualquer outro gatilho nativo, conforme a captura de tela acima.

Observe que o nome do gatilho deve ser:

  • em minúsculas
  • único na lista de gatilhos
  • sem espaços; você pode separar as palavras com sublinhados

Contexto é onde você lista todas as variáveis predefinidas para quando os dados chegarem.

Após definir o gatilho, você precisará configurar as "Solicitações de Token de API" e selecionar a API em "Escopos da API"; veja a orientação abaixo.

Para chamar esse gatilho, consulte a API para gatilho de NicoApp.

Escopos da API

Em "Escopos da API", selecione todas as APIs que o seu NicoApp precisa acessar. Consulte a "Documentação da API" pelo link na parte superior.

Por exemplo, se o seu aplicativo precisar ver a lista de tags dos usuários no fluxo, selecione "Visualizar tags de fluxo". E, se precisar usar gatilhos no aplicativo, selecione “App Trigger”, como na imagem acima.

Solicitações de Token de API

Em "Solicitações de Token de API", clique nos dados de exemplo "Solicitações" na parte inferior e edite a URL do seu endpoint de assinatura e de cancelamento de assinatura. Veja também, na parte inferior, os Campos do Sistema disponíveis e coloque no payload as informações de que você precisa. Por exemplo, inclua "app_token" no payload se precisar acessar o fluxo dos usuários via API (caso selecione alguma API no bloco Escopos da API).

Salvar e testar

Por fim, clique em “Salvar” para finalizar a criação. Parabéns!! Você acabou de criar um NicoApp com sucesso.💯💯

Se você for usar o aplicativo apenas na sua própria workspace, não precisa publicá-lo. Você pode testá-lo e usá-lo em qualquer bot de qualquer canal da sua workspace.

Para compartilhar o aplicativo com outras workspaces, você precisará publicá-lo na Loja de NicoApps do NicoChat.