> ## Documentation Index
> Fetch the complete documentation index at: https://help.treble.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Bloco de leitura do Salesforce

> Como trazer um dado do Salesforce para uma variável da conversa: cumprimentar pelo nome, ramificar o fluxo conforme o status de um registro ou reutilizar um Id mais adiante.

Este bloco faz o contrário do [bloco de ação](/pt/docs/integrations/salesforce/blocks/crm-action): em vez de escrever no Salesforce, ele **lê um campo e o salva em uma variável** que você pode usar no restante da conversa.

Com isso você pode cumprimentar a pessoa pelo nome, dizer em que status está a solicitação dela, ou enviá-la por um caminho diferente do fluxo conforme o que diz o registro dela.

O bloco tem um nome diferente conforme o seu tipo de integração:

| Tipo de integração | Nome do bloco |
| - | - |
| Objeto único | **Objeto CRM** |
| Multi-objeto | **CRM Multiple Object** |

<Note>
  Em multi-objeto os dois blocos do Salesforce têm nomes quase idênticos. O que **lê** é *CRM Multiple Object*. O que **escreve** é *CRM Multiple Object **Action***, com "Action" no final.
</Note>

<div class="hr" />

## O que convém entender primeiro

Cada bloco lê **um único campo**. Se você precisar de três dados, usará três blocos.

<Warning>
  **Se o Treble não encontrar o registro, a variável fica vazia.** O fluxo não para nem mostra um erro: simplesmente a variável chega sem conteúdo, e se você a usar em uma mensagem a pessoa verá um espaço em branco.

  Por isso convém colocar um bloco de **Condições** logo depois, que verifique se a variável tem valor e monte um caminho alternativo quando não tiver.
</Warning>

<div class="hr" />

## Adicionar o bloco

No construtor de conversas, abra o painel de blocos e procure o bloco de leitura dentro de *Blocos avançados*.

<img src="https://mintcdn.com/trebleai/n_48dzI5l_tB6XfZ/images/salesforce-crm-read-so-1.png?fit=max&auto=format&n=n_48dzI5l_tB6XfZ&q=85&s=e9daf3181077ac163416cd11acd1deae" alt="Adicionar o bloco de leitura a partir do painel de blocos" className="mx-auto" width="3024" height="1716" data-path="images/salesforce-crm-read-so-1.png" />

<Info>
  O nome que você vê no painel de blocos pode não ser o mesmo que aparece depois sobre o bloco na tela. Guie-se pelo ícone e pela descrição ("salva a variável no Treble"): é o bloco que **traz** informação do CRM, não o que a salva lá.
</Info>

Arraste-o para a tela e clique em **Configuração** para abri-lo.

<div class="hr" />

## Configuração

<Tabs>
  <Tab title="Objeto único">
    O modal tem dois passos e um campo final para nomear a variável.

    <img src="https://mintcdn.com/trebleai/n_48dzI5l_tB6XfZ/images/salesforce-crm-read-so-2.png?fit=max&auto=format&n=n_48dzI5l_tB6XfZ&q=85&s=8fa4906a8d526792ce856f7dc213072f" alt="Configuração do bloco Objeto CRM" className="mx-auto" width="3024" height="1708" data-path="images/salesforce-crm-read-so-2.png" />

    ### 1. Objeto e hierarquia

    **Objeto.** De qual objeto você vai ler. Pode ser a sua entidade pai (por exemplo `Contact`) ou algum dos seus objetos relacionados.

    **Hierarquia.** O que fazer quando a pessoa tem **mais de um registro** desse objeto.

    | Opção | O que faz |
    | - | - |
    | **Primeiro criado** | Lê do registro mais antigo |
    | **Último criado** | Lê do registro mais recente |
    | **Personalizado** | Você define um filtro para apontar para um registro específico |

    <Tip>
      A hierarquia de leitura e a de escrita são configurações **independentes**. Se você lê com *Primeiro criado* e escreve com *Último criado*, vai ler de um registro e escrever em outro. Quando ambos os blocos devem trabalhar sobre o mesmo registro, verifique se a hierarquia coincide.
    </Tip>

    ### 2. Propriedade

    O campo do Salesforce cujo valor você quer trazer. No exemplo, `Lead Source`.

    ### Nome da variável

    No final você define como a variável vai se chamar. Se você escrever `cliente_fuente`, no restante da conversa você a usa como `{{cliente_fuente}}`.

    <Info>
      Use nomes em minúsculas e com sublinhado, sem espaços nem acentos. São mais fáceis de escrever corretamente nas mensagens e evitam erros difíceis de ver.
    </Info>
  </Tab>

  <Tab title="Multi-objeto">
    O modal tem três passos, porque primeiro é preciso dizer **em qual dos seus objetos** a pessoa será buscada.

    ### 1. Objeto de referência e campo de telefone

    <img src="https://mintcdn.com/trebleai/n_48dzI5l_tB6XfZ/images/salesforce-crm-read-mo-1.png?fit=max&auto=format&n=n_48dzI5l_tB6XfZ&q=85&s=8388e1544923ea48fd57f9154205e1aa" alt="Passo 1 do bloco CRM Multiple Object" className="mx-auto" width="3024" height="1712" data-path="images/salesforce-crm-read-mo-1.png" />

    **Referência.** Qual dos objetos que você configurou na instalação será usado para encontrar a pessoa.

    **Campo de busca de telefone.** Por qual campo de telefone desse objeto a busca é feita. A lista suspensa mostra todos os campos de telefone do objeto (`Phone`, `Mobile Phone`, `Fax`, e os personalizados que você tiver).

    <Warning>
      Escolha o mesmo campo onde realmente estão salvos os números dos seus registros. Se você escolher um diferente, o Treble não vai encontrar ninguém e todas as variáveis vão chegar vazias.
    </Warning>

    ### 2. Objeto e hierarquia

    <img src="https://mintcdn.com/trebleai/n_48dzI5l_tB6XfZ/images/salesforce-crm-read-mo-2.png?fit=max&auto=format&n=n_48dzI5l_tB6XfZ&q=85&s=f56d35f7790aad8fcd385be1ac724937" alt="Passos 2 e 3 do bloco CRM Multiple Object" className="mx-auto" width="3024" height="1710" data-path="images/salesforce-crm-read-mo-2.png" />

    O objeto do qual você vai ler —pode ser o mesmo de referência ou um relacionado— e o que fazer quando há mais de um registro.

    ### 3. Propriedade e nome da variável

    A propriedade é o campo que você quer trazer. Logo abaixo, o **nome da variável** com o qual você vai usá-lo na conversa.
  </Tab>
</Tabs>

<div class="hr" />

## Usar a variável

Uma vez configurado, o bloco mostra na tela um resumo e, abaixo, a variável que ele produz. Você pode copiá-la com o botão de copiar e colá-la em qualquer bloco posterior.

<img src="https://mintcdn.com/trebleai/n_48dzI5l_tB6XfZ/images/salesforce-crm-read-so-3.png?fit=max&auto=format&n=n_48dzI5l_tB6XfZ&q=85&s=bbf8a5dd85582d42f7de1f4b92a70fed" alt="O bloco de leitura alimentando uma mensagem com a variável" className="mx-auto" width="3024" height="1712" data-path="images/salesforce-crm-read-so-3.png" />

<Warning>
  O bloco de leitura tem que ficar **antes** no fluxo do que o bloco onde você usa a variável. Se você colocá-lo depois, a variável ainda não tem valor no momento em que a mensagem é enviada.
</Warning>

Em multi-objeto, o bloco de leitura e o de escrita se distinguem pelo último quadro do resumo: o de leitura termina em **Variável**, o de ação termina em **Na propriedade → Colocar**.

<img src="https://mintcdn.com/trebleai/n_48dzI5l_tB6XfZ/images/salesforce-crm-action-mo-4.png?fit=max&auto=format&n=n_48dzI5l_tB6XfZ&q=85&s=c6e0b278f032d99496fee0d8bfbf725c" alt="Bloco de leitura e bloco de ação na tela" className="mx-auto" width="3018" height="1712" data-path="images/salesforce-crm-action-mo-4.png" />

<div class="hr" />

## Usos comuns

<AccordionGroup>
  <Accordion title="Personalizar a saudação">
    Leia o nome do registro e use-o na primeira mensagem. Lembre-se do caminho alternativo: se a pessoa é nova e não existe no Salesforce, a variável chega vazia.
  </Accordion>

  <Accordion title="Ramificar o fluxo conforme o status de um registro">
    Leia um campo de status e conecte o bloco a um bloco de **Condições**. Assim você pode dar uma mensagem diferente para quem tem uma solicitação em andamento e para quem já a tem aprovada.
  </Accordion>

  <Accordion title="Salvar o Id para escrever depois nesse mesmo registro">
    Em multi-objeto você pode ler o Id de um registro em uma variável e usá-lo mais adiante na **hierarquia personalizada** do bloco de ação (`Account ID = {{client_id}}`). É a forma mais confiável de garantir que a escrita caia no registro que você quer, e não em outro do mesmo objeto.

    <a class="article-link" href="/pt/docs/integrations/salesforce/blocks/crm-action"><p>Bloco de ação no CRM</p><Icon icon="arrow-up-right-from-square" iconType="solid" /></a>
  </Accordion>

  <Accordion title="Evitar perguntar o que você já sabe">
    Se o dado já está no Salesforce, leia-o em vez de pedi-lo. Isso encurta a conversa e evita que a pessoa escreva algo diferente do que você já tem registrado.
  </Accordion>
</AccordionGroup>

<div class="hr" />

## Problemas frequentes

<AccordionGroup>
  <Accordion title="A variável chega vazia">
    As causas mais comuns, em ordem:

    1. **A pessoa não existe** no objeto que você escolheu. É o normal para contatos novos: monte um caminho alternativo.
    2. **O campo de busca de telefone não é o correto.** Verifique no Salesforce em qual campo os números estão realmente salvos.
    3. **O registro existe, mas esse campo está vazio** no Salesforce.
    4. **A hierarquia aponta para outro registro.** Se a pessoa tem vários, pode ser que você esteja lendo do errado.
  </Accordion>

  <Accordion title="O campo que eu quero não aparece na lista de propriedades">
    Falta sincronizar. Execute a [sincronização de objetos](/pt/docs/integrations/salesforce/object-sync) e abra o bloco novamente.
  </Accordion>

  <Accordion title="A variável traz um código estranho em vez do texto que vejo no Salesforce">
    Acontece com campos do tipo lista suspensa e com campos de relacionamento. O Salesforce salva internamente um valor diferente do que mostra na tela, e é isso que o Treble lê.

    Se você precisar mostrar o texto para a pessoa, use um bloco de **Condições** para traduzir o código para a palavra correspondente.
  </Accordion>

  <Accordion title="Um campo de data não chega como eu esperava">
    Os campos de data e data/hora chegam no formato interno do Salesforce, não no formato que você vê na tela nem no do seu país.

    Se você vai mostrar a data para a pessoa no chat, verifique primeiro como o valor chega com um teste real antes de publicar o fluxo.
  </Accordion>

  <Accordion title="Na mensagem aparece {{mi_variable}} tal como está, com as chaves">
    O nome da variável na mensagem não coincide exatamente com o que você definiu no bloco. Verifique maiúsculas, acentos e sublinhados; o mais seguro é copiar a variável a partir do bloco com o botão de copiar.
  </Accordion>
</AccordionGroup>

<div class="hr" />

## Próximos passos

<CardGroup cols={2}>
  <Card title="Escrever dados no Salesforce" icon="upload" href="/pt/docs/integrations/salesforce/blocks/crm-action">
    Salvar no CRM o que a pessoa responde no chat.
  </Card>

  <Card title="Transferir para um assessor" icon="headset" href="/pt/docs/integrations/salesforce/blocks/human-transfer">
    Passar a conversa para o proprietário do registro no Salesforce.
  </Card>
</CardGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.