Não é possível filtrar por atributo rclastcart - Cannot filter by private fields

Estou tentando chamar a API do MasterData v2 assim como explicado no seguinte link

https://community.vtex.com/t/existe-alguma-api-para-integrar-os-carrinhos-abandonados-para-o-erp/23663

https://accountName.vtexcommercestable.com.br/api/dataentities/CL/search?_fields=email,corporateName,corporateDocument,rclastcart,rclastcartvalue&_where=rclastcart is not null

No entanto, estou recebendo o erro “Cannot filter by private fields” citado no mesmo tópico. Foi passado um link para um issue conhecido mas o mesmo foi apagado (erro 404)

Verifiquei no meu Data Entity de Cliente que o campo rclastcart está configurado como Text mas a alteração desta propriedade está desativada.
Como fazer para alterar o tipo do rclastcart e qual valor devo colocar? Varchar 100? Varchar 750?

Obrigado


I’m trying to call Master Data v2 API as told on this other post

https://accountName.vtexcommercestable.com.br/api/dataentities/CL/search?_fields=email,corporateName,corporateDocument,rclastcart,rclastcartvalue&_where=rclastcart is not null

However, I’m getting a “Cannot filter by private fields” error. This issue was addressed in the aforementioned post citing this link with something to do with the field being of the Text type.

I’ve checked my Client Data Entity and saw that rclastcart really is of Text type. However, it’s not editable. Can someone please direct me on how can I change this field type? And which value should it be? Varchar 100, varchar 750 or something else?

Regards

@fkseki vc está lendo via frontend?
Se sim, então vai precisar liberar as permissões de acesso do campo para ler o campo sem precisar de credencial.
Quanto ao tamanho e tipo do campo. Mantenha o Text.
Depois que marcar a propriedade “Make readable without credential”, salva o form, publica a CL (no disquete) e faz a leitura do seu JS novamente.

Fabio,
Estou fazendo testes neste link. É isso que você quer dizer com “via frontend”?
Após marcar como “make readable without credential” não recebo mais o erro anterior, mas o retorno vem como []

Fazendo a pesquisa com o filtro “email=q@q.com”, consigo o seguinte de resposta:

[
  {
    "email": "q@q.com",
    "document": "26205220563",
    "rclastcart": "965b0e52800547779cf461496b74745a",
    "rclastcartvalue": null,
    "rclastsessiondate": null
  }
]

Sabe porque o filtro “rclastcart is not null” não está funcionando?

Outra dúvida, o valor do rclastcart não deveria ser neste formato?
“rclastcart”: “add?sku=34&qty=1&seller=1&sc=1”

Olá, @fkseki !

Acho que não é possível mesmo tornar o rclastcart filtrável por ser text. Talvez consiga o mesmo resultado com o rclastcartvalue. Mas me parece um uso não indicado dessa API. Se for fazer chamadas constantemente pode não ser escalável e até esbarrar no throttling.

Qual é o resultado que você quer alcançar com essa integração? Um trigger de carrinho abandonado te ajuda? Não precisa desencadear necessariamente um email pela VTEX, mas talvez uma requisição para o ERP. Funcionaria como um hook normal.

Se algo assim te atende, recomendo esses tutoriais:

1 Like

@PedroAntunes Uma trigger acionando uma requisição para o ERP funcionaria mas atualmente não estamos podendo receber requisições, apenas fazer. Por isso estou procurando jeitos alternativos. Neste tópico foi compartilhado um exemplo utilizando exatamente este filtro (rclastcart is not null) e, juntando este filtro com um filtro de data, serviria para pegar os carrinhos abandonados nos últimos x minutos. Eu tentei utilizar o rclastcartvalue no filtro, mas em meu teste o retorno também foi vazio.

Aliás, aparentemente não estou conseguindo simular consistentemente o carrinho abandonado. Quando tento “abandonar” um carrinho, não vejo o resultado na entidade Client e os valores de rclastcart que vejo são nesse formato de hash ao invés do formato “add?sku=34&qty=1&seller=1&sc=1”

Entendi, @fkseki . Mas então quando filtrou por rclastcartvalue is not null ele não deu o erro, apenas retornou vazio? Se sim sugiro reindexar o CL no Master Data, aguardar algumas horas e testar novamente.

Olha como eu fiz pra funcionar:

  1. Editei o rclastcartvalue marcando como filterable e searchable.
  2. Salvei o CL no botão de salvar na tela de edição
  3. Publiquei o CL no botão de disquete na tela que tem a lista de entidades
  4. Reindexei o CL no botão com 4 setinhas diagonais na tela que tem a lista de entidades
  5. Testei no postman e retornou [], ou seja, filtro funciona, mas não teve resultados (provavelmente pq os dados não estavam indexados ainda)
  6. Testei no dia seguinte e retornou com alguns resultados.

PS Não sei ao certo quanto tempo demora pra reindexar, mas 24h funcionou aqui.

De todo modo reitero que tome cuidado com essa aplicação da API pelos motivos que citei acima.

1 Like

@PedroAntunes Consegui fazer o rclastcartvalue is not null funcionar! Agora a dúvida que tenho é porque em meu ambiente de produção os campos carttag, checkouttag, rclastcartvalue e rclastsessiondate não estão sendo populados.

Sobre a utilização desta API para este propósito, fazer esta chamada utilizando o rclastcartvalue em conjunto com um intervalo de rclastsessiondate é o workaround que vejo viável no meu caso, uma vez que não consigo, no momento, expôr uma API para ser chamada na trigger do carrinho abandonado. Ou vê uma solução que não seja estas duas?

@fkseki , é estranho os campos não estarem sendo populados. Isso não era pra acontecer dado que estão devidamente configurados, publicados e indexados no Master Data. Recomendo que entre em contato com o suporte.

Sobre a forma de integrar, não conheço uma solução recomendada para o seu caso específico. Na teoria funciona, mas pode esbarrar naquelas questões que mencionei.

Descobri que nossa loja, apesar de já estar sendo utilizada amplamente integrada em nosso app, não está “em produção” na vtex. Por isso o RC não popula estes campos.

Obrigado pela ajuda!

3 Likes

This topic was automatically closed 24 hours after the last reply. New replies are no longer allowed.