Skip to main content

Bom dia pessoal, estou tendo problema no redirecionamento dos meus contatos para NORTE/NORDESTE, está certo minha abordagem

 

function run(telefoneUsuario) {

    let phoneNumber = telefoneUsuario.toString();

    let ddd = phoneNumber.substring(2, 4);

 

    const validDDDs = s

        "68", "82", "96", "92", "97", "71", "72", "73", "74", "75", "76", "77",

        "85", "88", "98", "99", "91", "93", "94", "83", "81", "87", "86", "89",

        "84", "69", "95", "79", "63"

    ];

 

    if (validDDDs.includes(ddd)) {

        return { "to": "290", "team": "3800" };

    } else {

        return "Não é norte ou Nordeste";

    }

    

}

@joaosilva2505 aparentemente sua função está certa. Testei pelo console do navegador e retornou “{ "to": "290", "team": "3800" }”. Após esse script, como vc direciona esses clientes ?


Boa tarde @Lucas Ventura o ideal é ai na pergunta vc pegar no beholder o valor que esta sendo passado na variavel telefoneUsuario para ver o que ele esta fazendo realmente pq geralmente os telefones vem com +55 e tudo mais pode ser isso o problema, vc conseguiu testar no vscode passando o valor do telefone que retorna no beholder ?


Boa tarde @Lucas Ventura eu fiz um modelo diferente só pra expor meu ponto de vista, vi que tem uma linha no seu código que vc da um toString(), não precisa converter pra string pq tudo que vc passa de variavel no blip vem como string, é por isso que quando vc vai ler um json no seu script ele precisa de um parse, outra coisa eu sei que no javascript pode tudo kkkkk, mas evite dar retornos de tipos diferentes como ali no seu if que vc passa um objeto e depois passa uma string, no blip ele aceita pq tudo pra ele é string mas se acostumar com isso pode te deixar doido depois tentando achar o erro em algum lugar, então pode tentar passar sempre o mesmo tipo de objeto e depois fazer uma tratativa só pra ele. Vlw abraço, se precisar de algo chama ai.

 

function verificaDDD(telefone) {
const validDDDs = a
"68",
"82",
"96",
"92",
"97",
"71",
"72",
"73",
"74",
"75",
"76",
"77",
"85",
"88",
"98",
"99",
"91",
"93",
"94",
"83",
"81",
"87",
"86",
"89",
"84",
"69",
"95",
"79",
"63",
];
let retornoPrefixo = { to: "0", team: "0" };
let prefixo = telefone.slice(0, 2);

if (validDDDs.includes(prefixo)) {
retornoPrefixo.to = "290";
retornoPrefixo.team = "3800";
return retornoPrefixo;
} else {
return retornoPrefixo;
}
}

console.log(verificaDDD("81987654321"));

 


@Bruno Ferreira acho que vc quis marcar o @joaosilva2505, pois o tópico foi criado por ele kkkk

Mas observando seu retorno, faz sentido sim verificar no Beholder como a variável do telefone está chegando. Poderia ser esse o problema também. O problema ai está ou antes ou depois desse script.

Sobre as melhorias no script em si, acho válido também incluir um try/catch. Fica mais fácil de debuggar qualquer erro que acontecer.


 


Legal, obrigado pela ajuda pessoal eu fiz um tratamento melhor do meu código o else será removido no caso somente deixei ele para debugar pelos testes que eu fiz está retornando corretamente vou coloca-lo para rodar e valida-lo minha única maior dúvida seria se a abordagem do { "to": "290", "team": "3800" } está correta para encaminhar para uma fila específica


function run(phoneUser) {

let phoneNumber = phoneUser.split("");

let ddd = phoneNumber.slice(2, 4).join("");

 

const validDDDs = i

"68",

"82",

"96",

"92",

"97",

"71",

"72",

"73",

"74",

"75",

"76",

"77",

"85",

"88",

"98",

"99",

"91",

"93",

"94",

"83",

"81",

"87",

"86",

"89",

"84",

"69",

"95",

"79",

"63",

];

 

if(validDDDs.includes(ddd)) {

return { "to": "290", "team": "3800" };

}else {

return "Não é Norte e Nordeste"

}

}


@joaosilva2505  você pode usar sim o { "to": "290", "team": "3800" }; desde que esteja escrito de forma correta em sua ação de saida ou na definição do contato para que ele envie para fila certo. Há casos onde você pode colocar no return o valor ou nome da fila e colocar isso no contato e usar isso na regra da fila exemplo:

if(validDDDs.includes(ddd)) {

return “Fila1”;

}else {

return "Não é Norte e Nordeste"

}

Ai o valor Fila1 você pode colocar na condição de saida, no definir contato e na regra de direcionamento da fila.


Bom dia @joaosilva2505 tudo depende que como vc está tratando sua entrada na fila pelo que vi ai vc retorna um objeto e possivelmente vc ou da um parse ou usa a abordagem da variavel@atributo para pegar o valor do atributo, vc tem que verificar nas suas regras de fila, la vc ve se a variavel chama team mesmo e se essa regra existe quando receber o valor 3800 ele vai pra fila configurada.


Essa é a forma em que está a Regra de atendimento relativo a fila pessoal

 




Perdão as dúvidas sou iniciante na blip mas segundo o que foi passado por vocês essa seria uma abordagem válida pessoal?

 


Dessa forma deve funcionar sim @joaosilva2505 !

Só toma cuidado na regra de atendimento com o contém “3800”, pois se tiver uma outra fila que o valor seja contém “38” por exemplo, pode dar erro no direcionamento da fila.


Dessa forma deve funcionar sim @joaosilva2505 !

Só toma cuidado na regra de atendimento com o contém “3800”, pois se tiver uma outra fila que o valor seja contém “38” por exemplo, pode dar erro no direcionamento da fila.]

 

Dessa forma creio ser melhor né meu amigo?

 

​​​​​​

 


É igual o @Lucas Ventura falou, como vc passa uma variavel no valor da fila toma cuidado pra no meio nao mandar outra coisa senão nunca vai entrar nessa fila, por segurança vc pode criar uma fila padrão e tudo que nao cair nas suas filas habituais mandar pra ela ou tratar no codigo uma maneira de sempre ir para uma fila válida. O legal mesmo é antes de gravar esse redirect na fila é vc tratar em ums script o que vc vai gravar na fila sempre tendo em vista mandar pra que se não vir nenhum valor de fila ele mande para uma fila padrão.


Dessa forma deve funcionar sim @joaosilva2505 !

Só toma cuidado na regra de atendimento com o contém “3800”, pois se tiver uma outra fila que o valor seja contém “38” por exemplo, pode dar erro no direcionamento da fila.]

 

Dessa forma creio ser melhor né meu amigo?

 

​​​​​​

 

Isso mesmo!


Pessoal o número armazenado na variável contact.phoneNumber no formato E.164 com o + na frente ou somente com o 55 pois caso fosse no formato E.164 o split do código mudaria para pegar as casas corretas do ddd, nos testes está direcionando corretamente mais em produção não?


@joaosilva2505 cria um script no bloco Início/Start, que recebe a variável contact.identity (essa variável no canal WhatsApp retorna por exemplo [email protected], se o cliente vier por outros canais, como blip chat, viria uma hash no lugar com @tunnel.msging.net). Vou deixar um trecho do código bem simples que você pode aproveitar ou até mesmo dar uma melhorada nele.

function run() {
  try {
    let identity = ‘{{contact.identity}}’;

    return identity.split(‘@’)n0];
  } catch (e) {
    return ‘Erro: ’ + e;
  }
}

Esse script vai retornar o telefone do WhatsApp com o formato 5511999999999. 

Após o script, você precisar colocar uma ação “Definir contato”, passando no telefone a variável do script acima. 


Comente