Skip to main content

Recebo vetor de links de pdf’s por meio de uma api e gostaria de descobrir qual a melhor maneira de enviar todos eles, já que o carrossel só suporta imagens, existe algum tipo conteúdo dinâmico que englobe isso? ou o único jeito é só mandando a url dos links por texto mesmo?

Olá @Pedro_Gabriel_Cruz_L, você está utilizando o builder na construção do contato? Se Sim, o que você pode fazer é adicionar um contador em um fluxo de Loop, um bloco faz a contagem de envios restante e o próximo faz o envio do arquivo em si.

Por exemplo:

Digamos que o vetor de links que receba seja algo parecido com isso:

["https://www.exemplo.com/Lorem-Ipsum.pdf", "https://www.exemplo.com/Lorem-Ipsum.pdf", "https://www.exemplo.com/Lorem-Ipsum.pdf", "https://www.exemplo.com/Lorem-Ipsum.pdf"]

Atribui isso a um novo script para me retornar os links e a quantidade de documentos que existem:

function run(documents){
  try {
    documents = JSON.parse(documents)

    let res = documents.map((link, index) => {
      return {
        documents: documents.length,
        link: link
      }
    });

    const documentsToDictionary = arrayToDictionary(res);
    return JSON.stringify(documentsToDictionary);

  } catch (e) {
    return "erro ao obter documentos"    
  }
}

function arrayToDictionary(array) {
  const dictionary = {};
  array.forEach((value, index) => {
      dictionary[index] = value;
  });
  return dictionary;
}

Então no próximo bloco eu adiciono uma variável de contagem com o script:

function run(resourceDocuments, countSends) {
  try{
      resourceDocuments = JSON.parse(resourceDocuments)[0]
      if(!countSends){
          return resourceDocuments.documents - 1
      }

      return parseInt(countSends) - 1
  }catch(e){
      return "Erro no processo"
  }
}

Com a condição no bloco, enquanto o contador não for “zerado” ele irá repetir o processo:

No bloco que realiza o envio do arquivo eu apenas monto o body do conteúdo dinâmico com o script:

function run(resourcedocuments, countSends) {
    resourcedocuments = JSON.parse(resourcedocuments)
    return {
        "title": "Nome do documento.pdf",
        "uri": resourcedocuments[countSends].link,
        "type": "application/pdf"
    }
}

Adiciono o conteúdo dinâmico

Talvez isso tenha ficado muito complexo e exista alguma forma mais simples de fazer isso, mas espero ter lhe dado alguma luz 😅

Veja isso funcionando aqui

Aqui está o fluxo caso queira dar uma olhada:
showmethepdfs.json (13,7,KB)


olá eu tentei essa solução mas por algum motivo ela só funciona no blip, e não no whatsapp, você já chegou a testar ela fora do builder?


Olá @Pedro_Gabriel_Cruz_L, estranho… o que acontece ao rodar o fluxo no WhatsApp? Já usei um fluxo semelhante no WhatsApp sim.


já resolvi aqui, aparentemente pareseInt() causa problemas no whatsapp.