SomosChat Script - paulocorcino/SomosChat GitHub Wiki
Documentação SomosChat Script
[texto]
Variáveis
[texto explicativo]
%variavel% - Variável tipo sessao campo Texto ou Número
$variavel$ - Variável do sistema Texto ou Número
@@msg[n] - Retorna com mensagem template
@@arq[n] - Arquivo Galeria
@@img[n] - Arquivo Galeria
@@aud[n] - Arquivo Galeria
@@gim[n] - Agrupamento de Arquivos da Galeria
@@gaq[n] - Agrupamento de Arquivos da Galeria
@@vcd[uid] - Obtem o cartão do usuário
Quando é iniciado uma sessão o sistema cria 2 tipos de memórias:
- A memória permanente que armazena todas respostas do usuário;
- A memoria da cena, que armazena em tempo de execução da cena atual, na cena subsequente ela é recriada.
Variáveis do Sistema
$session_id$ - Id da sessao 1337,
$service_id$ - Id do Serviço 1,
$user_id$ - User ID 3,
$service_tipo$ - tipo do serviço "W1",
$bot_name$ - Nome do Bot "Perbras Bot",
$bot_username$ - Nome do Bot "Perbras Bot",
$session_seq$ - Sequencia 3,
$story_ref$ - Story em execução "MNU"
$seq_cena$ - Cena atual 1,
$nome_cena$ - Nome da Cena atual Teste,
$nome_roteiro$ - Nome do roteiro atual Teste,
$count_repeat$ - Número de repetições na mesma cena,
$user_from$ - Username do aplicativo "[email protected]",
$user_name$ - Nome original do comunicador "Paulo Corcino",
$user_username$ - Usuário do aplicativo de comunicação "[email protected]"
$user_ban$ - Se o usuario foi banido
$count_repeat$ - Numero de repetições da cena
$input$ - Valor de entrada
$data$ - Data de hoje em formato ISO 18/07/2020
$datahora$ - Data de hoje em formato ISO 18/07/2020 12:00
$dataiso$ - Data de hoje em formato ISO 20200718
$horaiso$ - Hora e minuto no formato 0712
$hora$ - Hora no formato 07
$diasemana$ - Dia da semana em formato númerico - 1 domingo a 7 sabado
$periododia$ - Infoma a saudação do dia em formato númerico - 1 manhã, 2 tarde e 3 noite
$user_data$ - Data de hoje em formato ISO 18/07/2020
$user_datahora$ - Data de hoje em formato ISO 18/07/2020 12':00
$user_dataiso$ - Data da ultima mensagem usuário em formato ISO 20200718
$user_horaiso$ - Hora e minuto do usuário no formato 0712
$user_hora$ - Hora do usuário no formato 07
$user_diasemana$ - Dia da semana do usuário em formato númerico - 1 domingo a 7 sabado
$user_periododia$ - Infoma a saudação do dia em formato númerico - 1 manhã, 2 tarde e 3 noite
Variáveis de memória - Padrão
%user_id% - User ID 3,
%user_username% - Usuário do aplicativo de comunicação "[email protected]",
%user_name% - Nome original do comunicador "Paulo Corcino"
%user_sessionid% - Id da sessao
%user_ban% - Se o Usuario foi Banido
%user_phone% - Telefone do usuario (whatsapp)
Variáveis de memória - Tipo objeto
%binario% - Variaveis do tipo binário terão como conteúdo [objeto];[arquivo binário]
Caso utilize uma variável binário em uma saída, o objeto será enviado na mensagem.
%data% - Variaveis do tipo data terão o formato ISO [ano]-[mes]-[dia]T[hora]:[minuto]:[segundo]
Variáveis - Extrair valor de atributos de textos em formato JSON
%variavel@atributo%
- Permite obter valor de uma chave json armazenado em uma variavel, pode-se tambem gravar informação em estrutura json em memoria
Exemplo
Considerando uma variável chamada %filme%
onde foi atribuído o JSON no exemplo abaixo.
{
"titulo": "JSON James",
"resumo": "a história de uma lenda do velho oeste",
"ano": 2012,
"info": { "tempo": 120, "estilo": "ação" }
}
Para obter o valor de "ano" utilize a seguinte sintaxe.
%filme@ano%
# para obter uma subchave
%filme@info:tempo%
Variáveis Texto - Formatação
:unescape - Remove caracteres especiais
:1 .. :[n] - retorna o primeira palavra, [n] posição
Variáveis - Extrair dados de datas
%data:data% - Obtem em formato iso inteiro
%data:datahora% - Obtem em formato iso inteiro
%data:dataiso% - Obtem em formato iso inteiro
%data:dia% - Obtem o dia
%data:mes% - Obtem o mes
%data:ano% - Obtem o ano
%data:horaiso% - Obtem hora e minuto em inteiro
%data:hora% - Obtem hora
%data:diasemana% - Obtem dia da semana
%data:periododia% - Infoma a saudação do dia em formato númerico - 1 manhã, 2 tarde e 3 noite
[Exemplo]
Variáveis de atendimento
[texto]
%atend_id% - Id do atendimento
%atend_sit% - Situação do Atendimento
%atend_grpnome% - Nome do Grupo de Atendentes
%atend_posicao% - Número de pessoas na fila
%atend_nome% - Nome da Atendente, apenas quando inicia o atendimento
%atend_username% - usuario atendente
[exemplo]
Operando Variáveis
Armazena valor na memória da sessão
::mem("nome variavel","Valor")
Armazena valor na memória da cena
::var("nome variavel","Valor")
Limpa a memória da sessão
::clm()
Funções
Operação Matemática
::mth([formula],[variavel memoria - opcional])
Resultado da operação é armazenado na variável $mthretorno$
Em caso de erro no cálculo a variável $mthretorno$
tem o valor erro
Se utilizar uma variável na fórmula e a mesma não possuir valor, assume o valor padrão 0
Mensagens
Envia mensagem de texto ao receptor.
::msg("Texto")
Exemplo com variáveis.
::msg("%var1% $varsis$ $input$")
Exemplo com mensagem do repositório.
::msg(@@msg12)
Envio de arquivos.
::msg("[mensagem]",[variavel memoria - binário])
Envio de localização.
::msg("[mensagem]",[lat],[lon])
Saída
Permite encerrar o processamento da cena imediatamente redirecionando para outra cena.
::out("Mensagem (Opcional)",{acoes})
Ações
{end} - Finaliza a sessão
{false} - Repete a entrada
{true} - Segue proxima sequencia
{#[cena]} - Salta para cena
{[storyboard]#[cena]} - Salta para Storyboard / Cena
{@[canal]} - Salta para atendimento
Decisão (SE)
::se([variavel / valor ][operador][variavel / valor]?[se verdadeiro];[se falso])
Operadores Lógicos
=
- Igualdade
> ou
>=`` - maior ou maior igual
<
ou<=
- menor ou menor igual
<>
- diferente
ou
- ou
e
- e
Ignorar valores em validação
[TEXTO]
::ign("[valor1]";"[valor 2]";...)
Esquerda
Mostra sequencia de caracteres
:esq([variavel],[texto / variavel],[quantidade caracteres])
[variavel]
- Informe uma variável que armazenará o resultado[texto / variavel ]
- Texto ou variável[quantidade caracteres]
- Quantidade de caracteres a capturar.
Controle de Acesso
Registrar
Registrar o usuário na plataforma e armazena as variáveis de memória para utilização nos próximos logins.
::reg([chave1],[chave2 (opcional)],[informe 1 para unico])
- Em caso erro a variável
$reg_erro$
retorna1
- Após registrar considerar a variável
%login_[chave1]% = 1
Logar
::lgn([chave1],[chave2 (opicional)])
Caso seja sucesso a variável %login_[chave1]%
assume as situações.
-1
- Tem login, mas pendente chave20
- Não Logado1
- Logado
Quando possui chave 2
a variável %chave2_[chave1]%
assume o valor correspondente.
Efetuar logoff
::lgf([chave1],[chave2 (opicional)])
Remover o registro do usuário
::urg([chave1],[chave2 (opicional)])
Atualizar dados do usuário
::set("[INFO]","[VALOR]")
::get("[INFO]","[VARIAVEL]")
Info
NOME
EMAIL
ENDERECO
BAIRRO
CIDADE
UF
CEP
CPF
Retorno
$set_retorno$ = 1 - Sucesso
$set_retorno$ = 1 - Sucesso
Formulários
Permite que o sistema crie um formulário preenchido com as respostas do bot, o retorno é armazenado nas variáveis de sistema $formguid$
$formurl$
::frm([cod forms])
Tabelas
Registrar
Permitem armazenar o resultado das pesquisas para consultas futuras, retorna $tabretorno$
igual a 1
se ok.
::tab([cod tab],[mem ou var identificador],[mem ou var URL Externo (opcional)])
URL Externo - Permite referenciar algum link externo para exibição de informação na tabela
Resgatar Dados
Permite obter os dados armazenados em uma tabela.
::gtb([cod tab],[mem ou var identificador],[variavel])
Caso exista dados $tabretorno$
assumirá o valor 1
.
%[variavel]%
informada armazenará um JSON contendo os dados. Veja como utilizar variáveis JSON [aqui]
Sessão
Retorna na variável $limitesessao$
se igual 1
está no limite ou 0
acima do limite determinado.
::lmt()
API
::api("Metodo","url",[debug (opcional)])
Retorno
%api_retorno%
- Retorna o conteúdo da API
$api_status$
- Se 1 processou normalmente, se 0 houve erro no carregamento
Utilize a variável $count_repeat$
para controle de tentativas caso o retorno da API seja false
.
Retorno da API deve ser em formato JSON com a seguinte estrutura.
{
"bot_msg":"[mensagem - opcional]",
"bot_action": "[acao]", -- vide no topico as opção de ação, vazio é considerado sem ação
"bot_data": "[json]" , -- json com variaveis a serem armazenadas na sessao
"bot_binary": "[variavel];[nome do arquivo com extensão];[base64]", - binário a ser transmitido (opcional)
"bot_location":"[lat],[lon]" - Envio de localização (Opcional)
}
Caso o retorno não esteja no padrão todo o conteúdo retornado é armazenado em %api_retorno%.
Headers - Authorization
É possível encaminhar na requisição uma header de autorização, utilize a linha abaixo como exemplo antes de solicitar a requisição.
## API Autorization
::api("authorization", "Basic YXZha2phbkBtYWlsLnJ1OnRlc3Rl")
## API Post
::api("POST","https://webhook.site/4b4a9c22-5532-40f4-98dc-3439f602a268")
Permite armazenar em memória um arquivo em formato PDF
::pdf("[mem]","[nome]",[conteudo html ou url],[charset (opcional)],[orientacao (opcional)],[papel (opcional)])
chartset
- ISO-8856, UTF-8 etcorientação
- P (Paisagem) ou R (Retrato) - padrão Rpapel
- A4, A3 ou Letter - padrão Letter
Direita
Permite obter o contúdo do texto a direita.
::dir("[mem]","[texto]",[quantidade])
Exemplo
::dir("teste","Paulo Corcino",7)
::msg("%teste%")
Tamanho do texto
Obtem a quantidade de caracteres de um texto.
::len("[mem]","[texto]")
Exemplo
::len("teste","Paulo Corcino")
::msg("%teste%")
Subsequência
Permite obter parte de um texto, informe a posição incial e a quantidade de caracteres a ser obtido.
::sbt("[mem]","[texto]", [posição inicial], [quantidade de caracteres])
Exemplo
::sbt("teste","Paulo Corcino",7,3)
::msg("%teste%")
Substituir
Permite substituir um caracter ou texto encontrado por outro texto ou caracter.
::rpl("[mem]","[texto]", "[texto ou caracter a ser susbtituido]", "[texto ou caracter a assumir]")
Exemplo
::rpl("teste","Paulo Corcino","Paulo","João")
::msg("%teste%")
Obter Binário
Obtem referência de um binário a partir de uma URL. Podemos usar esta função como no exemplo para que o Somos Chat encaminhe uma imagem ou documento a partir de uma url para o contato.
::gbn("[mem]","[url]")
Exemplo
::gbn("teste","https://cdn-icons-png.flaticon.com/512/124/124034.png")
# exibe imagem
::msg("",%teste%")
Webhook
Permite encaminhar para um endpoint um JSON contendo as informações da memória do bot.
Crie uma referência para um Webhook em Módulos > Webhook. Insira uma referência (ref) e especifique uma URL. Para testes, recomendamos a utilização do serviço Webhook.site. Utilize o botão "play" para testar o envio de mensagem ao webhook.
::whk("[ref]")
Conteudo do web
BAN
Bane usuário por um tempo determinado.
::ban([limite tentativas],[tempo em minutos banimento],{acoes},[variavel ref (opcional)])
- limite tentativas - Número de tentativas antes de banir
- tempo - Tempo para o banimento
- {acoes} - direção
- variavel - Variável referência para limite de tentativas, por padrão é utilizado $count_repeat$
Opção
::opc("[mem]",[cod lista],[num opc],[ir para],[ordem],[tp opcao],"[format]",[separador],"[opcao adicional]",[ir para adicional])
Esta função possibilita a criação de um menu de opções dinâmico.
Obrigatórios
- [mem] - nome da memória onde será armazenado o resultado
- [cod grupo lista] - Código de um grupo de lista
- [ir para] - Informe {#n} - n cena ou demais tipos de ações de saída
Opcionais
- [ordem] - 0 - cresc., 1 - decrecen. e 2 - aleatório
- [tp opcao] - Tipo do valor campo opção, 0 numérico (1 - n) ou 1 - Nome
- [formato] - Formatação das opções utilize a identificação op para opção e txt para texto, exemplo. ":op - :txt" O sistema irá formatar com negrito entre as opções e um traço com o texto.
- [separador] - Define 0 - quebrar linha, 1 - espaço ou 2 - virgula
- [opcao adicional] - Escreve alguma opção adicional
- [ir para adicional] - Informe {#n} - n cena ou demais tipos de ações de saída
Download de binários - Imagens, Vídeos, Documentos e Áudios.
Os binários na plataforma Somos Chat possuem um ID único de identificação. Abaixo segue um exemplo.
3e8400173f662f24caaa_jpeg@1@18858@387A6051D8244AE39B6D
É possível baixar este arquivo através da URL.
https://[url platafoma Somos Chat]/[seu app]/getfile.rule?sys=BOT&arquivo=[ID arquivo]
Segue um exemplo:
https://app.somos.chat/somos/getfile.rule?sys=BOT&arquivo=3e8400173f662f24caaa_jpeg@1@18858@387A6051D8244AE39B6D
Documentação de API da plataforma
Todo conteúdo para consumir API da Somos Chat está na URL abaixo.