> ## 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.

# Iniciar conversas a partir de um Flow

> Como instalar o pacote do Treble no Salesforce para disparar uma conversa de WhatsApp a partir de um automation flow.

<Note>
  O pacote está em evolução e seu link de instalação muda a cada nova versão. Se algo não corresponder ao que você vê na tela, confirme com seu Customer Success Manager que você está usando a versão vigente.
</Note>

Até aqui, as conversas são disparadas a partir do Treble. Com este pacote você pode fazer o contrário: **um automation flow do Salesforce dispara uma conversa de WhatsApp do Treble**.

Serve para casos como: quando um lead muda para um determinado status, enviar automaticamente um template de WhatsApp para ele; ou quando uma solicitação é criada, iniciar a conversa de acompanhamento sem que ninguém precise fazer nada.

<div class="hr" />

## Antes de começar

| Você precisa | Onde conseguir |
| - | - |
| Um usuário administrador do Salesforce | Sua equipe de Salesforce |
| O link de instalação do pacote | Está mais abaixo, no passo 1 |
| Sua API key do Treble | Na plataforma do Treble: **Configurações → Desenvolvedores → API KEY** |

<Warning>
  A API key é uma credencial com acesso à sua conta do Treble. Não a compartilhe por canais abertos, não a cole em documentos compartilhados e, se você achar que ela foi exposta, peça que seja regenerada.
</Warning>

<div class="hr" />

## 1. Instalar o pacote

Com sua sessão do Salesforce aberta, acesse este link:

```
https://login.salesforce.com/packaging/installPackage.apexp?p0=04taj000000A3B7AAK
```

<Info>
  **Sobre o identificador do link.** A parte final (`04taj000000A3B7AAK`) é o Id da versão do pacote. Quando uma nova versão é publicada, esse Id muda.

  Se o link não abrir, pedir uma senha de instalação ou instalar algo que não corresponde ao que você vê aqui, provavelmente você está com um link antigo: peça o vigente ao seu Customer Success Manager.
</Info>

<Warning>
  Se sua organização for um **sandbox**, troque `login.salesforce.com` por `test.salesforce.com` no link.
</Warning>

Você verá a tela de instalação do pacote **DeployTrebleConversation**.

<img src="https://mintcdn.com/trebleai/n_48dzI5l_tB6XfZ/images/salesforce-flow-package-1.png?fit=max&auto=format&n=n_48dzI5l_tB6XfZ&q=85&s=707e69ebb721781592a855e728f54b97" alt="Tela de instalação do pacote DeployTrebleConversation" className="mx-auto" width="1052" height="578" data-path="images/salesforce-flow-package-1.png" />

Escolha quem pode usá-lo:

| Opção | Quando usá-la |
| - | - |
| **Install for Admins Only** | Recomendada para começar. Apenas os administradores podem usá-lo enquanto o testam |
| **Install for All Users** | Quando já estiver validado e várias equipes forem usá-lo |
| **Install for Specific Profiles** | Quando você quer limitá-lo a certos perfis |

Clique em **Install** e aguarde o Salesforce confirmar a instalação.

<div class="hr" />

## 2. Configurar a credencial

O pacote instala uma **credencial externa** e uma **credencial nomeada**, que são as que permitem ao Salesforce chamar a API do Treble.

<img src="https://mintcdn.com/trebleai/n_48dzI5l_tB6XfZ/images/salesforce-flow-package-2.png?fit=max&auto=format&n=n_48dzI5l_tB6XfZ&q=85&s=e975c1aacb76561f172db7ecb2557631" alt="Detalhe da credencial externa do Treble" className="mx-auto" width="1651" height="776" data-path="images/salesforce-flow-package-2.png" />

<Steps>
  <Step title="Abra Setup → Named Credentials">
    Você verá a credencial externa `treble_api_external_credential` e, relacionada a ela, a credencial nomeada `treble_api`.
  </Step>

  <Step title="Confirme a URL (normalmente não é preciso mexer nela)">
    O pacote já vem com a credencial apontando para `https://main.treble.ai`. Você não precisa configurá-la: apenas verifique se está assim.
  </Step>

  <Step title="Adicione o cabeçalho de autorização">
    Na credencial externa, na seção **Custom Headers**, clique em **New** e crie:

    | Campo | Valor |
    | - | - |
    | **Name** | `Authorization` |
    | **Value** | Sua API key do Treble |
    | **Sequence Number** | `1` |

    Salve.
  </Step>
</Steps>

<div class="hr" />

## 3. Dar permissões aos usuários

O Salesforce não permite usar uma credencial externa sem uma permissão explícita. O pacote traz um conjunto de permissões pronto.

<Steps>
  <Step title="Abra Setup → Permission Sets">
    Procure o conjunto de permissões `treble_api_permission`.

    <img src="https://mintcdn.com/trebleai/n_48dzI5l_tB6XfZ/images/salesforce-flow-package-3.png?fit=max&auto=format&n=n_48dzI5l_tB6XfZ&q=85&s=bcf6ffcac3840375cabebb77d2fee7a6" alt="O conjunto de permissões treble_api_permission" className="mx-auto" width="1654" height="366" data-path="images/salesforce-flow-package-3.png" />
  </Step>

  <Step title="Confirme o acesso à credencial">
    Dentro do conjunto, acesse **External Credential Principal Access** e verifique se o principal do Treble está lá.

    <img src="https://mintcdn.com/trebleai/n_48dzI5l_tB6XfZ/images/salesforce-flow-package-4.png?fit=max&auto=format&n=n_48dzI5l_tB6XfZ&q=85&s=26505e27c94ebf52dee74c6e8ba7da02" alt="Seção External Credential Principal Access" className="mx-auto" width="1633" height="738" data-path="images/salesforce-flow-package-4.png" />
  </Step>

  <Step title="Atribua o conjunto aos usuários">
    Clique em **Manage Assignments → Add Assignments** e selecione os usuários que vão executar os fluxos.

    <img src="https://mintcdn.com/trebleai/n_48dzI5l_tB6XfZ/images/salesforce-flow-package-5.png?fit=max&auto=format&n=n_48dzI5l_tB6XfZ&q=85&s=f912fb44a3682c547583773c5bb87a58" alt="Gerenciar atribuições do conjunto de permissões" className="mx-auto" width="1647" height="443" data-path="images/salesforce-flow-package-5.png" />

    <Info>
      Se o fluxo é executado de forma automática (por uma mudança de registro, não por alguém que clica), atribua a permissão ao **usuário sob o qual o fluxo é executado**, não apenas aos administradores. É o erro mais comum nesta parte.
    </Info>
  </Step>
</Steps>

<div class="hr" />

## 4. Criar o fluxo que inicia a conversa

Com o pacote instalado e as permissões atribuídas, a ação do Treble já está disponível no **Flow Builder** do Salesforce.

O exemplo a seguir inicia uma conversa de WhatsApp toda vez que uma conta é criada. A mesma estrutura serve para qualquer outro gatilho.

<Steps>
  <Step title="Acesse Flows">
    No Setup, vá para **Process Automation → Flows** e clique em **New Flow**.

    <img src="https://mintcdn.com/trebleai/n_48dzI5l_tB6XfZ/images/salesforce-flow-use-1.png?fit=max&auto=format&n=n_48dzI5l_tB6XfZ&q=85&s=b5f341bf12bae77c86be05e12762fee7" alt="Flows dentro de Process Automation" className="mx-auto" width="3024" height="1712" data-path="images/salesforce-flow-use-1.png" />
  </Step>

  <Step title="Escolha o tipo de fluxo">
    Para que ele seja disparado sozinho quando os dados mudam, escolha **Record-Triggered Flow**.

    <img src="https://mintcdn.com/trebleai/n_48dzI5l_tB6XfZ/images/salesforce-flow-use-2.png?fit=max&auto=format&n=n_48dzI5l_tB6XfZ&q=85&s=d6af420f59bd72b8ffe077addb3887f2" alt="Escolher Record-Triggered Flow" className="mx-auto" width="3024" height="1712" data-path="images/salesforce-flow-use-2.png" />
  </Step>

  <Step title="Configure o gatilho e ative o caminho assíncrono">
    Escolha o objeto (no exemplo, `Account`), quando ele é disparado (*A record is created*) e, em **Optimize the Flow for**, escolha **Actions and Related Records**.

    <Warning>
      **Este é o passo mais esquecido.** Abaixo, ative **Add Asynchronous Path**.

      O Salesforce **não permite** chamar um sistema externo a partir do caminho normal de um fluxo disparado por registro. Sem esse caminho, a ação do Treble vai falhar.
    </Warning>

    <img src="https://mintcdn.com/trebleai/n_48dzI5l_tB6XfZ/images/salesforce-flow-use-3.png?fit=max&auto=format&n=n_48dzI5l_tB6XfZ&q=85&s=f5c06ba02076769b787d8dfe7b9a7a73" alt="O botão Add Asynchronous Path" className="mx-auto" width="3020" height="1710" data-path="images/salesforce-flow-use-3.png" />

    Ao ativá-lo, o fluxo se divide em dois caminhos: **Run Immediately** e **Run Asynchronously**.

    <img src="https://mintcdn.com/trebleai/n_48dzI5l_tB6XfZ/images/salesforce-flow-use-4.png?fit=max&auto=format&n=n_48dzI5l_tB6XfZ&q=85&s=071bf911633c72828d522fc9e2ffa003" alt="O fluxo com os caminhos imediato e assíncrono" className="mx-auto" width="3020" height="1708" data-path="images/salesforce-flow-use-4.png" />

    <Check>
      Tudo o que chama o Treble vai no ramo **Run Asynchronously**.
    </Check>
  </Step>

  <Step title="Opcional: guarde em variáveis os dados de que você precisa">
    Se você quiser ter à mão dados do registro, adicione um elemento **Assignment** no ramo assíncrono.

    <img src="https://mintcdn.com/trebleai/n_48dzI5l_tB6XfZ/images/salesforce-flow-use-5.png?fit=max&auto=format&n=n_48dzI5l_tB6XfZ&q=85&s=a91932c9592860f45b3322936c403471" alt="Elemento Assignment guardando o nome do contato" className="mx-auto" width="1622" height="1460" data-path="images/salesforce-flow-use-5.png" />

    No exemplo, o nome do contato que disparou o fluxo é guardado em uma variável `contactname`. O mesmo é feito com o telefone, que é o dado de que a ação do Treble realmente precisa.
  </Step>

  <Step title="Adicione a ação do Treble">
    No ramo assíncrono, clique em **+** e escolha **Action**.

    <img src="https://mintcdn.com/trebleai/n_48dzI5l_tB6XfZ/images/salesforce-flow-use-6.png?fit=max&auto=format&n=n_48dzI5l_tB6XfZ&q=85&s=0d6b1f587660ec0d405e747af48be962" alt="Adicionar um elemento ao fluxo" width="420" className="mx-auto" data-path="images/salesforce-flow-use-6.png" />

    <img src="https://mintcdn.com/trebleai/n_48dzI5l_tB6XfZ/images/salesforce-flow-use-7.png?fit=max&auto=format&n=n_48dzI5l_tB6XfZ&q=85&s=18a5577cf6494caa307fa4ab2aae1495" alt="Escolher o elemento Action" width="420" className="mx-auto" data-path="images/salesforce-flow-use-7.png" />

    Pesquise `treble` e selecione **Deploy Treble Conversation**.

    <img src="https://mintcdn.com/trebleai/n_48dzI5l_tB6XfZ/images/salesforce-flow-use-8.png?fit=max&auto=format&n=n_48dzI5l_tB6XfZ&q=85&s=fbe50a121918d720932a47f2e91b1a06" alt="Pesquisar e escolher a ação Deploy Treble Conversation" className="mx-auto" width="3024" height="1708" data-path="images/salesforce-flow-use-8.png" />

    <Info>
      Se ela não aparecer, é um problema de instalação ou de permissões, não do fluxo. Consulte [problemas frequentes](#problemas-frequentes).
    </Info>
  </Step>

  <Step title="Preencha os parâmetros">
    <img src="https://mintcdn.com/trebleai/n_48dzI5l_tB6XfZ/images/salesforce-flow-use-9.png?fit=max&auto=format&n=n_48dzI5l_tB6XfZ&q=85&s=a018bbf02663c91c3803fde67c9b92d9" alt="Parâmetros conversationId e phoneNumber" className="mx-auto" width="1380" height="1488" data-path="images/salesforce-flow-use-9.png" />

    <img src="https://mintcdn.com/trebleai/n_48dzI5l_tB6XfZ/images/salesforce-flow-use-10.png?fit=max&auto=format&n=n_48dzI5l_tB6XfZ&q=85&s=c8d1a5c5cd490da0f9d9fcc9df30f8fd" alt="Parâmetro opcional deploymentPhone e o resultado" className="mx-auto" width="1338" height="434" data-path="images/salesforce-flow-use-10.png" />

    | Parâmetro | Obrigatório? | O que vai aqui |
    | - | - | - |
    | **conversationId** | Sim | O Id da campanha do Treble que você quer iniciar |
    | **phoneNumber** | Sim | O celular de destino, normalmente obtido do registro que disparou o fluxo |
    | **deploymentPhone** | Não | O número do Treble a partir do qual você quer enviar. Útil apenas se você tiver vários; caso contrário, deixe-o desativado |

    <Info>
      `deploymentPhone` vem desativado ("Not Included"). Ative-o apenas se for usá-lo.
    </Info>
  </Step>

  <Step title="Salve e ative">
    Clique em **Save** e depois em **Activate**. Um fluxo salvo, mas não ativado, não é executado.
  </Step>
</Steps>

<div class="hr" />

## O que a ação faz por dentro

Vale a pena conhecer duas coisas, porque elas definem o que é possível e o que não é.

<AccordionGroup>
  <Accordion title="O resultado é um texto, não um sim ou não">
    A ação retorna uma única saída, `result`, com um texto:

    ```
    Success for conversation <id> and phoneNumber <numero>. Response: ...
    ```

    ou, quando algo falha:

    ```
    Error: 401 Unauthorized
    ```

    Se você quiser que o fluxo reaja à falha —enviar um e-mail, marcar um campo— é preciso adicionar um elemento **Decision** que avalie esse texto, por exemplo verificando se ele **começa com** `Error`. Não há um campo separado de sucesso ou falha.
  </Accordion>

  <Accordion title="Não é possível enviar variáveis de template a partir do fluxo">
    A ação envia ao Treble **o número de destino e qual campanha iniciar**, e nada mais.

    Isso significa que **você não pode passar valores do registro do Salesforce como variáveis do template de WhatsApp** a partir deste fluxo. A personalização da mensagem precisa ser resolvida do lado do Treble: a campanha pode ler os dados do Salesforce com os [blocos de CRM](/pt/docs/integrations/salesforce/blocks/crm-variable-assignment) depois que a conversa for iniciada.

    É a limitação mais surpreendente deste pacote, e convém tê-la clara antes de desenhar a automação.
  </Accordion>

  <Accordion title="Funciona com vários registros ao mesmo tempo">
    A ação aceita lotes, então funciona da mesma forma em um fluxo que processa um registro ou muitos.
  </Accordion>
</AccordionGroup>

<div class="hr" />

Por baixo, a ação chama o endpoint de **implantação** do Treble, o mesmo usado para iniciar campanhas via API:

<a class="article-link" href="/pt/api-reference/endpoints/deploy"><p>Endpoint de implantação</p><Icon icon="arrow-up-right-from-square" iconType="solid" /></a>

<Note>
  **Se você tem duas contas do Treble conectadas ao mesmo Salesforce**, precisa configurar o pacote **duas vezes**, cada uma com sua própria API key. Não é possível unificar as implantações das duas contas em uma única configuração.
</Note>

<div class="hr" />

## Problemas frequentes

<AccordionGroup>
  <Accordion title="A implantação falha com um erro 401">
    É o sintoma clássico de uma configuração incompleta: o pacote foi instalado, mas o cabeçalho `Authorization` ou o conjunto de permissões não estão configurados corretamente.

    A recomendação da nossa equipe de engenharia nesses casos é **desinstalar o pacote e instalá-lo novamente** seguindo este guia passo a passo, em vez de tentar corrigir a configuração existente.
  </Accordion>

  <Accordion title="Instalei o pacote, mas a credencial do Treble não aparece">
    Acontece quando a instalação terminou pela metade, mesmo que o e-mail de confirmação do Salesforce tenha chegado.

    Verifique em *Setup → Named Credentials*, aba **External Credentials**, se `treble_api_external_credential` existe. Se não estiver lá, desinstale o pacote e instale-o novamente.
  </Accordion>

  <Accordion title="O fluxo falha com um erro de autenticação ou de credencial">
    As duas causas habituais:

    1. **O cabeçalho `Authorization` não foi criado**, ou a API key ficou incompleta.
    2. **O usuário que executa o fluxo não tem atribuído o conjunto de permissões** `treble_api_permission`.
  </Accordion>

  <Accordion title="Não vejo a ação do Treble no Flow Builder">
    Pesquise `treble` no buscador de ações: deve aparecer **Deploy Treble Conversation**, na categoria **Treble**.

    Se não estiver lá, confirme que a instalação do pacote foi concluída corretamente e que seu usuário está dentro do escopo que você escolheu ao instalar (admins, todos ou perfis específicos).
  </Accordion>

  <Accordion title="O fluxo não pode ser salvo porque a ação faz uma chamada externa">
    Falta ativar o **caminho assíncrono**. O Salesforce não permite chamar um sistema externo a partir do caminho imediato de um fluxo disparado por registro.

    Abra *Configure Start*, ative **Add Asynchronous Path** e mova a ação do Treble para o ramo **Run Asynchronously**.
  </Accordion>

  <Accordion title="Funciona para mim, mas não quando o fluxo é executado sozinho">
    É o caso da permissão: um fluxo automático é executado sob um usuário diferente do seu. Atribua o conjunto de permissões a esse usuário.
  </Accordion>
</AccordionGroup>

<div class="hr" />

## Próximos passos

<CardGroup cols={2}>
  <Card title="WhatsApp dentro do Salesforce" icon="window-maximize" href="/pt/docs/integrations/salesforce/embed/custom-tab">
    Para que os assessores respondam sem sair do CRM.
  </Card>

  <Card title="Marketing Cloud" icon="bullhorn" href="/pt/docs/integrations/salesforce/embed/marketing-cloud">
    Iniciar conversas a partir do Marketing Cloud.
  </Card>
</CardGroup>


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