– Bom, primeiramente obrigado pela resposta @BrunoC, já deu pra pensar em algumas aplicações e claro, preciso aprofundar um pouco mais a respeito.
Uma dúvida enorme que eu fiquei é, se eu não utilizar CONTEXTO DO ROUTER ATIVADO, eu precisaria utilizar a API “Get Resources” (Blip Docs | API Reference) nos meus subbots ? Ou teria outra forma? Ultimamente estou tendo péssimas experiências com o contexto ativado.
ainda não uso este recurso, mas vou apreder com vcs e com certeza será útil. Li rapidamente a documentação e deu para entender um pouco. Bora aprender mais 🚀
Sim, @GabrielPetrone. Uma vez que o contexto está desabilitado, a única forma seria via API.
E como prometido, vou deixar aqui como fazer pra aproveitar os scripts como recursos
Crie um Recurso do tipo texto e adicione todas as funções (incluindo a run):
Na ação de executar script, passe esse recurso como parâmetro de entrada, neste caso usando {{resource.funcao}}
Dentro do Script, você precisa pegar o texto do recurso e transformar ele em funções executáveis. Por isso, use a função eval().
function run (resource) {
eval(resource);
return Hello(); //uma das funcoes definidas no recurso
}
Assim vocês conseguem ter Scripts escaláveis e de fácil manutenção para todos os seus blocos (ou todos os bots, se for em roteadores).
@GabrielPetrone não utilizo mas vou dar uma atenção especial e entender como funciona…
vlw
Já começou detonando! Perfeito @BrunoC , muito obrigado por essa dica!
E você @caiof dá uma dica pra nós de como usar esse módulo
Olá pessoal, tudo bom?
@GabrielPetrone, a ideia principal desse módulo e é o mais legal dele é a possibilidade de separar informações que normalmente estariam em seu fluxo, dessa forma, seu bot fica extremamente mais escalável, principalmente, porque não será mais necessário sempre mexer no fluxo para mudar algo.
Imagine, por exemplo, nos seguintes pontos:
Horário de atendimento: Você pode adicionar um JSON com seu horário de atendimento e criar uma verificação baseada nessa informação no fluxo, assim sendo, para mudar o horário de atendimento não seria necessário publicar o fluxo, além de você poder adicionar esse JSON via API direto do seu sistema.
Lista de palavras bloqueadas: Você pode cadastrar uma base de palavras bloqueadas que podem ser utilizar como verificação no seu fluxo, via regex ou script.
Conteúdo dinâmico: Pense em criar um conteúdo dinâmico que recebe esse recurso que é facilmente mutável para exibir uma promoção ou um alerta que varia de tempos em tempos no seu fluxo, tal como uma instabilidade.
Reaproveitamento de script: Esse aqui o @BrunoC já mostrou um exemplo haha
Dentro de cada bot tenho certeza que existe uma infinidade de utilização neste módulo, muito legal a movimentação dessa discussão 😀
Fala pessoal, até aqui muito obrigado pelas contribuições. Vamos encher com mais coisas hein!? 😉
Agora respondendo a minha pergunta
Sim e não, meu querido! Precisa usar a API mas não é essa que você colocou. A correta é: Blip Docs | API Reference
Certo, depois de criar o Recurso lá no seu Router, você pega a Key dele e chama essa API passando a chave (nome) do recurso criado. Salve o corpo de resposta da sua requisição HTTP em uma variável (básico do blip né).
Agora pra acessar o conteúdo é simples, basta usar a variável: {{variavel_de_resposta_do_corpo_da_sua_requisicao_HTTP@resource}}
Não é tão bom quanto quando se usa o contexto do roteador, mas num cenário com 2 subbots ++, elimina um ~puta~ trabalho pra atualizar tudo. O trabalho é só na primeira vez pra fazer o que citei acima.
@BrunoC neste seu exemplo, como eu usaria uma função que passa uma variável? Eu fiz um teste aqui e não funcionou passando “return Hello(variavel);” 😦
No Blip, eu fiz da seguinte forma, com uma variável xtring, com valor World:
function run(func, xtring) {
eval(func);
return hello(xtring);
}
E o resultado foi Hello, World".
Depois fala pra gente se funcionou! Pode ser que você esteja comendo alguma mosca por aí.
Meu exemplo de utilização:
Criei um recurso chamado “helpers” no Router.
No BOT que eu desejo utilizar o recuso, fiz uma chamada HTTP para o Recuso e salvei o seu retorno em na variável helpresData.
E utilizar ele assim:
/**
* @param helpersData
* @param contact.source
*
* @return {string}
*/
function run(helpersData, channel) {
const helpers = JSON.parse(helpersData);
eval(helpers.resource);
return textStrong(channel, "Texto aqui...");
}
Entendi certo? Com isso você trata o texto em negrito conforme o formato de cada canal, sem precisar criar dois blocos separados?
Ou seja, que o Bruno me prometeu e até hoje nada? 😍 Só coisa boa hoje…
Estou só te ensinando a pescar e não te dando o peixe 🤣
eu esqueci mesmo
@GrazianiMartins eu já tinha feito uma solução dessa, mas eu retornava só as tags e não adicionava os textos - vendo a sua, me pergunto o motivo de eu não ter pensado assim 😂
Aí eu fazia tipo assim:
{{tag1}} Texto {{tag2}}
Onde {{tag1}} era a tag de abertura (<b> ou e {{tag2}} era a de fechamento {</b> ou *)
A refatoração de código nunca acaba rsrsrs.
Logo alguém vem como uma abordagem melhor ou que faça mais sentimo no contexto dele(a).
Bora! Compartilhar!!!
Então…
Segue função para alterar determinados textos de uma frase em negrito:
replaceTextToStrong
/**
* @param contact.source
* @param text
*
* @return {string}
*/
function textStrong(channel, text) {
switch (channel) {
case '0mn.io':
return "<b>" + text + "</b>";
case 'WhatsApp':
return "*" + text + "*";
default:
return text;
}
}
/**
* @param contact.source
* @param phrase string
* @param words string Texts separated by |
*
* @return {string}
*/
function replaceTextToStrong(channel, phrase, words) {
const regExp = new RegExp(words, 'gi');
return phrase.replace(regExp, function(word) {
return textStrong(channel, word);
});
}
Utilização:
function run(helpersData, channel) {
const helpers = JSON.parse(helpersData);
eval(helpers.resource);
phrase = "Mr Blue has a blue house and a blue car";
Pode detalhar um pouco mais sobre o uso dessa sua solução? Fiquei com algumas dúvidas, por exemplo:
Por onde você vai enviar o recurso?
Poderia passar o JSON para exemplificar?
Você quer adicionar o recurso ao bot ou usá-lo no fluxo?
Ah! Para fechar nosso primeiro contato com chave de ouro, gostaria de te dar boas-vindas à nossa Comunidade! 🎉 Neste momento, o tópico de Primeiros Passos vai ser super importante para você! Aproveite!
opa, boa tarde!
Obrigado pelo contato.
Consegui resolver utilizando recursos separados, um recurso envia textos com as informações e outro recurso envia os botões para auxilio de resposta rápida, parecido com o template do WhatsApp.
Chamei os dois recursos via API de forma separada, primeiro o texto, depois os botões, funcionou bem.
A minha questão era, eu gostaria de enviar um template de WhatsApp porém sem ser pelo WhatsApp rsrs, o canal utilizado foi o teams, e eu não conseguia criar um recurso com o texto e botão junto, sendo assim foi feito a solução separada.
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.
A analisar o ficheiro em busca de vírus
Lamentamos, mas ainda estamos a analisar o conteúdo deste ficheiro, a fim de nos certificarmos de que o mesmo é seguro para descarregar. Agradecemos que tentes de novo dentro de poucos minutos.