de volta agora com mais tempo para voltar aos testes, irei efetuar os testes hoje ainda, lembrando que estou na versão 23.07 ainda kkk não atualizei.. porque tenho que mexer em um monte de outros plugins dashboard, etc.. que tenho de monitoramento no meu sistema.
Dando seguimento para quem está usando a versão 23.07 como eu e ainda não quiz atualizzar para a versão 24.xx para usar o novo formato e código da api..
eu fiz uma alteracões no código original da api versão 23.07 para funcionar na opcão de titulo vencido ele informar junto o copia e cola qrcode pix em formato pagina separada
segue o código
public function get_vencido($valor){
$comandoSQL = "SELECT uuid_lanc AS uuid, login, status, tipo, valor, linhadig, datavenc, login, cpf_cnpj, sis_qrpix.qrcode AS pix FROM vtab_titulos LEFT JOIN sis_qrpix ON uuid_lanc = sis_qrpix.titulo WHERE (login = :valor OR cpf_cnpj = :valor) AND status = 'vencido' AND deltitulo = 0";
// Process the response and return the overdue invoices along with the Pix QR codes const boletosVencidos = response.data.titulos.map(boleto => ({ valor: boleto.valor, datavenc: new Date(boleto.datavenc.split(' ')[0]), linhadig: boleto.linhadig.replace(/[. ]/g, ''), // Remove dots and spaces pix: boleto.pix // Assuming 'pix' field is included in the API response }));
// Sort the invoices by due date boletosVencidos.sort((a, b) => a.datavenc - b.datavenc);
depois no tratamento que irá enviar a resposta do whatsapp bot ao cliente conforme na imagem abaixo
else if (currentState.aguardandoCPFBolVencido) { const cpfCliente = msg.body.trim().replace(/\D/g, ''); // Formata o CPF para remover pontos e espaços const boletosVencidos = await buscarBoletosVencidos(cpfCliente);
if (boletosVencidos.length > 0) { boletosVencidos.forEach(boleto => { let mensagemBoletoVencido = `Boleto vencido:\n💰 Valor: ${boleto.valor}\n📅 Vencimento: ${boleto.datavenc}\n🔢 Linha Digitável:\n${boleto.linhadig.replace(/\D/g, '')}\n`;
// Envia a primeira mensagem com os detalhes do boleto client.sendMessage(msg.from, mensagemBoletoVencido).then(() => { // Envia a segunda mensagem apenas com o QR Code Pix após um breve intervalo setTimeout(() => { client.sendMessage(msg.from, `🔢 QR Code Pix:\n${boleto.pix}`); }, 1000); // Ajuste o intervalo conforme necessário }); }); } else { client.sendMessage(msg.from, 'Não foram encontrados boletos vencidos para este CPF.'); }
chatStates[chatId] = {}; // Resetar o estado }
neste formato eu já consigo obter os dados que necessito no meu API bot whatsapp que estou desenvolvendo
Respostas
José boa tarde tranquilo
de volta agora com mais tempo para voltar aos testes, irei efetuar os testes hoje ainda, lembrando que estou na versão 23.07 ainda kkk não atualizei.. porque tenho que mexer em um monte de outros plugins dashboard, etc.. que tenho de monitoramento no meu sistema.
Dando seguimento para quem está usando a versão 23.07 como eu e ainda não quiz atualizzar para a versão 24.xx para usar o novo formato e código da api..
eu fiz uma alteracões no código original da api versão 23.07 para funcionar na opcão de titulo vencido ele informar junto o copia e cola qrcode pix em formato pagina separada
segue o código
public function get_vencido($valor){
$comandoSQL = "SELECT uuid_lanc AS uuid, login, status, tipo, valor, linhadig, datavenc, login, cpf_cnpj, sis_qrpix.qrcode AS pix
FROM vtab_titulos
LEFT JOIN sis_qrpix ON uuid_lanc = sis_qrpix.titulo
WHERE (login = :valor OR cpf_cnpj = :valor)
AND status = 'vencido' AND deltitulo = 0";
$rotinaSQL = DB::prepare($comandoSQL);
$rotinaSQL -> bindParam('valor', $valor);
$rotinaSQL -> execute();
$resultadosSQL = $rotinaSQL -> fetchAll();
$numeroDeLinhas = $rotinaSQL -> rowCount();
echo json_encode(array('Total' => $numeroDeLinhas, 'titulos' => $resultadosSQL));
}
Depois no whatsapp bot codigo funcão para interpretar os dados enviados da api do mk-auth via jwt-token
funcão que recebe os dados
// Função para buscar boletos vencidos do cliente pelo CPF no setor financeiro
async function buscarBoletosVencidos(cpf) {
const tokenJWT = fs.readFileSync(path.join(__dirname, 'token.txt'), 'utf-8');
const url = `https://ip-do-mk-auth-aqui/api/titulo/vencido/${cpf}`;
const agent = new https.Agent({ rejectUnauthorized: false });
try {
const response = await axios.get(url, {
headers: { 'Authorization': `Bearer ${tokenJWT}` },
httpsAgent: agent
});
// Process the response and return the overdue invoices along with the Pix QR codes
const boletosVencidos = response.data.titulos.map(boleto => ({
valor: boleto.valor,
datavenc: new Date(boleto.datavenc.split(' ')[0]),
linhadig: boleto.linhadig.replace(/[. ]/g, ''), // Remove dots and spaces
pix: boleto.pix // Assuming 'pix' field is included in the API response
}));
// Sort the invoices by due date
boletosVencidos.sort((a, b) => a.datavenc - b.datavenc);
return boletosVencidos;
} catch (error) {
console.error('Erro ao buscar boletos vencidos:', error);
return [];
}
}
depois no tratamento que irá enviar a resposta do whatsapp bot ao cliente conforme na imagem abaixo
else if (currentState.aguardandoCPFBolVencido) {
const cpfCliente = msg.body.trim().replace(/\D/g, ''); // Formata o CPF para remover pontos e espaços
const boletosVencidos = await buscarBoletosVencidos(cpfCliente);
if (boletosVencidos.length > 0) {
boletosVencidos.forEach(boleto => {
let mensagemBoletoVencido = `Boleto vencido:\n💰 Valor: ${boleto.valor}\n📅 Vencimento: ${boleto.datavenc}\n🔢 Linha Digitável:\n${boleto.linhadig.replace(/\D/g, '')}\n`;
// Envia a primeira mensagem com os detalhes do boleto
client.sendMessage(msg.from, mensagemBoletoVencido).then(() => {
// Envia a segunda mensagem apenas com o QR Code Pix após um breve intervalo
setTimeout(() => {
client.sendMessage(msg.from, `🔢 QR Code Pix:\n${boleto.pix}`);
}, 1000); // Ajuste o intervalo conforme necessário
});
});
} else {
client.sendMessage(msg.from, 'Não foram encontrados boletos vencidos para este CPF.');
}
chatStates[chatId] = {}; // Resetar o estado
}
neste formato eu já consigo obter os dados que necessito no meu API bot whatsapp que estou desenvolvendo