--- title: Integração com Salesforce description: "Automação de vendas e CRM com integração Salesforce para CrewAI." icon: "salesforce" mode: "wide" --- ## Visão Geral Permita que seus agentes gerenciem relacionamentos com clientes, processos de vendas e dados através do Salesforce. Crie e atualize registros, gerencie leads e oportunidades, execute consultas SOQL e otimize seus fluxos de trabalho de CRM com automação potencializada por IA. ## Pré-requisitos Antes de usar a integração Salesforce, certifique-se de que você possui: - Uma conta [CrewAI AMP](https://app.crewai.com) com assinatura ativa - Uma conta Salesforce com permissões apropriadas - Sua conta Salesforce conectada via a [página de Integrações](https://app.crewai.com/integrations) ## Configurando a Integração Salesforce ### 1. Conecte sua Conta Salesforce 1. Acesse [CrewAI AMP Integrações](https://app.crewai.com/crewai_plus/connectors) 2. Encontre **Salesforce** na seção Integrações de Autenticação 3. Clique em **Conectar** e complete o fluxo OAuth 4. Conceda as permissões necessárias para gerenciamento de CRM e vendas 5. Copie seu Token Enterprise em [Configurações de Integração](https://app.crewai.com/crewai_plus/settings/integrations) ### 2. Instale o Pacote Necessário ```bash uv add crewai-tools ``` ### 3. Configuração de variável de ambiente Para usar integrações com `Agent(apps=[])`, você deve definir a variável de ambiente `CREWAI_PLATFORM_INTEGRATION_TOKEN` com seu Enterprise Token. ```bash export CREWAI_PLATFORM_INTEGRATION_TOKEN="seu_enterprise_token" ``` Ou adicione ao seu arquivo `.env`: ``` CREWAI_PLATFORM_INTEGRATION_TOKEN=seu_enterprise_token ``` ## Ferramentas Disponíveis ### **Gerenciamento de Registros** **Descrição:** Crie um novo registro de Contato no Salesforce. **Parâmetros:** - `FirstName` (string, opcional): Primeiro nome - `LastName` (string, obrigatório): Sobrenome - Este campo é obrigatório - `accountId` (string, opcional): ID da Conta - Conta à qual o contato pertence - `Email` (string, opcional): Endereço de e-mail - `Title` (string, opcional): Cargo do contato, como CEO ou Vice-presidente - `Description` (string, opcional): Descrição do contato - `additionalFields` (object, opcional): Campos adicionais no formato JSON para campos personalizados de Contato **Descrição:** Crie um novo registro de Lead no Salesforce. **Parâmetros:** - `FirstName` (string, opcional): Primeiro nome - `LastName` (string, obrigatório): Sobrenome - Este campo é obrigatório - `Company` (string, obrigatório): Empresa - Este campo é obrigatório - `Email` (string, opcional): Endereço de e-mail - `Phone` (string, opcional): Número de telefone - `Website` (string, opcional): URL do site - `Title` (string, opcional): Cargo do contato, como CEO ou Vice-presidente - `Status` (string, opcional): Status do Lead - Use as Configurações de Workflow do Connect Portal para selecionar o status do Lead - `Description` (string, opcional): Descrição do lead - `additionalFields` (object, opcional): Campos adicionais no formato JSON para campos personalizados de Lead **Descrição:** Crie um novo registro de Oportunidade no Salesforce. **Parâmetros:** - `Name` (string, obrigatório): Nome da Oportunidade - Este campo é obrigatório - `StageName` (string, opcional): Estágio da Oportunidade - Use as Configurações de Workflow do Connect Portal para selecionar o estágio - `CloseDate` (string, opcional): Data de fechamento no formato YYYY-MM-DD - Padrão para 30 dias a partir da data atual - `AccountId` (string, opcional): Conta à qual a Oportunidade pertence - `Amount` (string, opcional): Valor total estimado da venda - `Description` (string, opcional): Descrição da oportunidade - `OwnerId` (string, opcional): Usuário Salesforce designado para esta Oportunidade - `NextStep` (string, opcional): Descrição da próxima tarefa no fechamento da Oportunidade - `additionalFields` (object, opcional): Campos adicionais no formato JSON para campos personalizados de Oportunidade **Descrição:** Crie um novo registro de Tarefa no Salesforce. **Parâmetros:** - `whatId` (string, opcional): Relacionado ao ID - ID da Conta ou Oportunidade relacionada à Tarefa - `whoId` (string, opcional): ID do Nome - ID do Contato ou Lead relacionado à Tarefa - `subject` (string, obrigatório): Assunto da tarefa - `activityDate` (string, opcional): Data da Atividade no formato YYYY-MM-DD - `description` (string, opcional): Descrição da tarefa - `taskSubtype` (string, obrigatório): Subtipo da Tarefa - Opções: task, email, listEmail, call - `Status` (string, opcional): Status - Opções: Not Started, In Progress, Completed - `ownerId` (string, opcional): ID do responsável - Usuário Salesforce designado para a Tarefa - `callDurationInSeconds` (string, opcional): Duração da chamada em segundos - `isReminderSet` (boolean, opcional): Se o lembrete está definido - `reminderDateTime` (string, opcional): Data/Hora do lembrete no formato ISO - `additionalFields` (object, opcional): Campos adicionais no formato JSON para campos personalizados de Tarefa **Descrição:** Crie um novo registro de Conta no Salesforce. **Parâmetros:** - `Name` (string, obrigatório): Nome da Conta - Este campo é obrigatório - `OwnerId` (string, opcional): Usuário Salesforce responsável por esta Conta - `Website` (string, opcional): URL do site - `Phone` (string, opcional): Número de telefone - `Description` (string, opcional): Descrição da conta - `additionalFields` (object, opcional): Campos adicionais no formato JSON para campos personalizados de Conta **Descrição:** Crie um registro de qualquer tipo de objeto no Salesforce. **Nota:** Esta é uma ferramenta flexível para criar registros de tipos de objetos personalizados ou desconhecidos. ### **Atualização de Registros** **Descrição:** Atualize um registro de Contato existente no Salesforce. **Parâmetros:** - `recordId` (string, obrigatório): ID do registro a ser atualizado - `FirstName` (string, opcional): Primeiro nome - `LastName` (string, opcional): Sobrenome - `accountId` (string, opcional): ID da Conta à qual o contato pertence - `Email` (string, opcional): Endereço de e-mail - `Title` (string, opcional): Cargo do contato - `Description` (string, opcional): Descrição do contato - `additionalFields` (object, opcional): Campos adicionais no formato JSON para campos personalizados de Contato **Descrição:** Atualize um registro de Lead existente no Salesforce. **Parâmetros:** - `recordId` (string, obrigatório): ID do registro a ser atualizado - `FirstName` (string, opcional): Primeiro nome - `LastName` (string, opcional): Sobrenome - `Company` (string, opcional): Nome da empresa - `Email` (string, opcional): Endereço de e-mail - `Phone` (string, opcional): Número de telefone - `Website` (string, opcional): URL do site - `Title` (string, opcional): Cargo do contato - `Status` (string, opcional): Status do Lead - `Description` (string, opcional): Descrição do lead - `additionalFields` (object, opcional): Campos adicionais no formato JSON para campos personalizados de Lead **Descrição:** Atualize um registro de Oportunidade existente no Salesforce. **Parâmetros:** - `recordId` (string, obrigatório): ID do registro a ser atualizado - `Name` (string, opcional): Nome da Oportunidade - `StageName` (string, opcional): Estágio da oportunidade - `CloseDate` (string, opcional): Data de fechamento no formato YYYY-MM-DD - `AccountId` (string, opcional): Conta à qual a Oportunidade pertence - `Amount` (string, opcional): Valor total estimado da venda - `Description` (string, opcional): Descrição da oportunidade - `OwnerId` (string, opcional): Usuário Salesforce responsável por esta Oportunidade - `NextStep` (string, opcional): Descrição da próxima tarefa no fechamento da Oportunidade - `additionalFields` (object, opcional): Campos adicionais no formato JSON para campos personalizados de Oportunidade **Descrição:** Atualize um registro de Tarefa existente no Salesforce. **Parâmetros:** - `recordId` (string, obrigatório): ID do registro a ser atualizado - `whatId` (string, opcional): Relacionado ao ID - ID da Conta ou Oportunidade relacionada - `whoId` (string, opcional): ID do Nome - ID do Contato ou Lead relacionado à Tarefa - `subject` (string, opcional): Assunto da tarefa - `activityDate` (string, opcional): Data da Atividade no formato YYYY-MM-DD - `description` (string, opcional): Descrição da tarefa - `Status` (string, opcional): Status - Opções: Not Started, In Progress, Completed - `ownerId` (string, opcional): ID do responsável - Usuário Salesforce designado para a Tarefa - `callDurationInSeconds` (string, opcional): Duração da chamada em segundos - `isReminderSet` (boolean, opcional): Se o lembrete está definido - `reminderDateTime` (string, opcional): Data/Hora do lembrete em formato ISO - `additionalFields` (object, opcional): Campos adicionais no formato JSON para campos personalizados de Tarefa **Descrição:** Atualize um registro de Conta existente no Salesforce. **Parâmetros:** - `recordId` (string, obrigatório): ID do registro a ser atualizado - `Name` (string, opcional): Nome da Conta - `OwnerId` (string, opcional): Usuário Salesforce responsável por esta Conta - `Website` (string, opcional): URL do site - `Phone` (string, opcional): Número de telefone - `Description` (string, opcional): Descrição da conta - `additionalFields` (object, opcional): Campos adicionais no formato JSON para campos personalizados de Conta **Descrição:** Atualize um registro de qualquer tipo de objeto no Salesforce. **Nota:** Esta é uma ferramenta flexível para atualizar registros de tipos de objetos personalizados ou desconhecidos. ### **Recuperação de Registros** **Descrição:** Obtenha um registro de Contato pelo seu ID. **Parâmetros:** - `recordId` (string, obrigatório): ID do registro do Contato **Descrição:** Obtenha um registro de Lead pelo seu ID. **Parâmetros:** - `recordId` (string, obrigatório): ID do registro do Lead **Descrição:** Obtenha um registro de Oportunidade pelo seu ID. **Parâmetros:** - `recordId` (string, obrigatório): ID do registro da Oportunidade **Descrição:** Obtenha um registro de Tarefa pelo seu ID. **Parâmetros:** - `recordId` (string, obrigatório): ID do registro da Tarefa **Descrição:** Obtenha um registro de Conta pelo seu ID. **Parâmetros:** - `recordId` (string, obrigatório): ID do registro da Conta **Descrição:** Obtenha um registro de qualquer tipo de objeto pelo seu ID. **Parâmetros:** - `recordType` (string, obrigatório): Tipo do registro (ex.: "CustomObject__c") - `recordId` (string, obrigatório): ID do registro ### **Busca de Registros** **Descrição:** Pesquise registros de Contato com filtragem avançada. **Parâmetros:** - `filterFormula` (object, opcional): Filtro avançado em forma normal disjuntiva com operadores específicos de campo - `sortBy` (string, opcional): Campo para ordenação (ex.: "CreatedDate") - `sortDirection` (string, opcional): Direção da ordenação - Opções: ASC, DESC - `includeAllFields` (boolean, opcional): Incluir todos os campos nos resultados - `paginationParameters` (object, opcional): Configurações de paginação com pageCursor **Descrição:** Pesquise registros de Lead com filtragem avançada. **Parâmetros:** - `filterFormula` (object, opcional): Filtro avançado em forma normal disjuntiva com operadores específicos de campo - `sortBy` (string, opcional): Campo para ordenação (ex.: "CreatedDate") - `sortDirection` (string, opcional): Direção da ordenação - Opções: ASC, DESC - `includeAllFields` (boolean, opcional): Incluir todos os campos nos resultados - `paginationParameters` (object, opcional): Configurações de paginação com pageCursor **Descrição:** Pesquise registros de Oportunidade com filtragem avançada. **Parâmetros:** - `filterFormula` (object, opcional): Filtro avançado em forma normal disjuntiva com operadores específicos de campo - `sortBy` (string, opcional): Campo para ordenação (ex.: "CreatedDate") - `sortDirection` (string, opcional): Direção da ordenação - Opções: ASC, DESC - `includeAllFields` (boolean, opcional): Incluir todos os campos nos resultados - `paginationParameters` (object, opcional): Configurações de paginação com pageCursor **Descrição:** Pesquise registros de Tarefa com filtragem avançada. **Parâmetros:** - `filterFormula` (object, opcional): Filtro avançado em forma normal disjuntiva com operadores específicos de campo - `sortBy` (string, opcional): Campo para ordenação (ex.: "CreatedDate") - `sortDirection` (string, opcional): Direção da ordenação - Opções: ASC, DESC - `includeAllFields` (boolean, opcional): Incluir todos os campos nos resultados - `paginationParameters` (object, opcional): Configurações de paginação com pageCursor **Descrição:** Pesquise registros de Conta com filtragem avançada. **Parâmetros:** - `filterFormula` (object, opcional): Filtro avançado em forma normal disjuntiva com operadores específicos de campo - `sortBy` (string, opcional): Campo para ordenação (ex.: "CreatedDate") - `sortDirection` (string, opcional): Direção da ordenação - Opções: ASC, DESC - `includeAllFields` (boolean, opcional): Incluir todos os campos nos resultados - `paginationParameters` (object, opcional): Configurações de paginação com pageCursor **Descrição:** Pesquise registros de qualquer tipo de objeto. **Parâmetros:** - `recordType` (string, obrigatório): Tipo de registro para buscar - `filterFormula` (string, opcional): Critérios de busca por filtro - `includeAllFields` (boolean, opcional): Incluir todos os campos nos resultados - `paginationParameters` (object, opcional): Configurações de paginação com pageCursor ### **Recuperação por List View** **Descrição:** Obtenha registros de Contato de um List View específico. **Parâmetros:** - `listViewId` (string, obrigatório): ID do List View - `paginationParameters` (object, opcional): Configurações de paginação com pageCursor **Descrição:** Obtenha registros de Lead de um List View específico. **Parâmetros:** - `listViewId` (string, obrigatório): ID do List View - `paginationParameters` (object, opcional): Configurações de paginação com pageCursor **Descrição:** Obtenha registros de Oportunidade de um List View específico. **Parâmetros:** - `listViewId` (string, obrigatório): ID do List View - `paginationParameters` (object, opcional): Configurações de paginação com pageCursor **Descrição:** Obtenha registros de Tarefa de um List View específico. **Parâmetros:** - `listViewId` (string, obrigatório): ID do List View - `paginationParameters` (object, opcional): Configurações de paginação com pageCursor **Descrição:** Obtenha registros de Conta de um List View específico. **Parâmetros:** - `listViewId` (string, obrigatório): ID do List View - `paginationParameters` (object, opcional): Configurações de paginação com pageCursor **Descrição:** Obtenha registros de qualquer tipo de objeto a partir de um List View específico. **Parâmetros:** - `recordType` (string, obrigatório): Tipo do registro - `listViewId` (string, obrigatório): ID do List View - `paginationParameters` (object, opcional): Configurações de paginação com pageCursor ### **Campos Personalizados** **Descrição:** Crie campos personalizados para objetos de Contato. **Parâmetros:** - `label` (string, obrigatório): Rótulo do campo para exibições e referência interna - `type` (string, obrigatório): Tipo do campo - Opções: Checkbox, Currency, Date, Email, Number, Percent, Phone, Picklist, MultiselectPicklist, Text, TextArea, LongTextArea, Html, Time, Url - `defaultCheckboxValue` (boolean, opcional): Valor padrão para campos checkbox - `length` (string, obrigatório): Comprimento para campos numéricos/texto - `decimalPlace` (string, obrigatório): Casas decimais para campos numéricos - `pickListValues` (string, obrigatório): Valores para campos picklist (separados por novas linhas) - `visibleLines` (string, obrigatório): Linhas visíveis para campos multiseleção/área de texto - `description` (string, opcional): Descrição do campo - `helperText` (string, opcional): Texto de ajuda exibido ao passar o mouse - `defaultFieldValue` (string, opcional): Valor padrão do campo **Descrição:** Crie campos personalizados para objetos de Lead. **Parâmetros:** - `label` (string, obrigatório): Rótulo do campo para exibições e referência interna - `type` (string, obrigatório): Tipo do campo - Opções: Checkbox, Currency, Date, Email, Number, Percent, Phone, Picklist, MultiselectPicklist, Text, TextArea, LongTextArea, Html, Time, Url - `defaultCheckboxValue` (boolean, opcional): Valor padrão para campos checkbox - `length` (string, obrigatório): Comprimento para campos numéricos/texto - `decimalPlace` (string, obrigatório): Casas decimais para campos numéricos - `pickListValues` (string, obrigatório): Valores para campos picklist (separados por novas linhas) - `visibleLines` (string, obrigatório): Linhas visíveis para campos multiseleção/área de texto - `description` (string, opcional): Descrição do campo - `helperText` (string, opcional): Texto de ajuda exibido ao passar o mouse - `defaultFieldValue` (string, opcional): Valor padrão do campo **Descrição:** Crie campos personalizados para objetos de Oportunidade. **Parâmetros:** - `label` (string, obrigatório): Rótulo do campo para exibições e referência interna - `type` (string, obrigatório): Tipo do campo - Opções: Checkbox, Currency, Date, Email, Number, Percent, Phone, Picklist, MultiselectPicklist, Text, TextArea, LongTextArea, Html, Time, Url - `defaultCheckboxValue` (boolean, opcional): Valor padrão para campos checkbox - `length` (string, obrigatório): Comprimento para campos numéricos/texto - `decimalPlace` (string, obrigatório): Casas decimais para campos numéricos - `pickListValues` (string, obrigatório): Valores para campos picklist (separados por novas linhas) - `visibleLines` (string, obrigatório): Linhas visíveis para campos multiseleção/área de texto - `description` (string, opcional): Descrição do campo - `helperText` (string, opcional): Texto de ajuda exibido ao passar o mouse - `defaultFieldValue` (string, opcional): Valor padrão do campo **Descrição:** Crie campos personalizados para objetos de Tarefa. **Parâmetros:** - `label` (string, obrigatório): Rótulo do campo para exibições e referência interna - `type` (string, obrigatório): Tipo do campo - Opções: Checkbox, Currency, Date, Email, Number, Percent, Phone, Picklist, MultiselectPicklist, Text, TextArea, Time, Url - `defaultCheckboxValue` (boolean, opcional): Valor padrão para campos checkbox - `length` (string, obrigatório): Comprimento para campos numéricos/texto - `decimalPlace` (string, obrigatório): Casas decimais para campos numéricos - `pickListValues` (string, obrigatório): Valores para campos picklist (separados por novas linhas) - `visibleLines` (string, obrigatório): Linhas visíveis para campos multiseleção - `description` (string, opcional): Descrição do campo - `helperText` (string, opcional): Texto de ajuda exibido ao passar o mouse - `defaultFieldValue` (string, opcional): Valor padrão do campo **Descrição:** Crie campos personalizados para objetos de Conta. **Parâmetros:** - `label` (string, obrigatório): Rótulo do campo para exibições e referência interna - `type` (string, obrigatório): Tipo do campo - Opções: Checkbox, Currency, Date, Email, Number, Percent, Phone, Picklist, MultiselectPicklist, Text, TextArea, LongTextArea, Html, Time, Url - `defaultCheckboxValue` (boolean, opcional): Valor padrão para campos checkbox - `length` (string, obrigatório): Comprimento para campos numéricos/texto - `decimalPlace` (string, obrigatório): Casas decimais para campos numéricos - `pickListValues` (string, obrigatório): Valores para campos picklist (separados por novas linhas) - `visibleLines` (string, obrigatório): Linhas visíveis para campos multiseleção/área de texto - `description` (string, opcional): Descrição do campo - `helperText` (string, opcional): Texto de ajuda exibido ao passar o mouse - `defaultFieldValue` (string, opcional): Valor padrão do campo **Descrição:** Crie campos personalizados para qualquer tipo de objeto. **Nota:** Esta é uma ferramenta flexível para criar campos personalizados para tipos de objetos personalizados ou desconhecidos. ### **Operações Avançadas** **Descrição:** Execute consultas SOQL personalizadas em seus dados do Salesforce. **Parâmetros:** - `query` (string, obrigatório): Consulta SOQL (ex.: "SELECT Id, Name FROM Account WHERE Name = 'Exemplo'") **Descrição:** Crie um novo objeto personalizado no Salesforce. **Parâmetros:** - `label` (string, obrigatório): Rótulo do objeto para abas, layouts de página e relatórios - `pluralLabel` (string, obrigatório): Rótulo plural (ex.: "Contas") - `description` (string, opcional): Uma descrição do Objeto Personalizado - `recordName` (string, obrigatório): Nome do registro exibido em layouts e buscas (ex.: "Nome da Conta") **Descrição:** Obtenha o schema esperado para operações em tipos de objetos específicos. **Parâmetros:** - `recordType` (string, obrigatório): Tipo de registro a ser detalhado - `operation` (string, obrigatório): Tipo de Operação (ex.: "CREATE_RECORD" ou "UPDATE_RECORD") **Nota:** Use esta função primeiro ao trabalhar com objetos personalizados para entender seu schema antes de realizar operações. ## Exemplos de Uso ### Configuração Básica de um Agente Salesforce ```python from crewai import Agent, Task, Crew # Obtenha ferramentas enterprise (ferramentas Salesforce serão incluídas) # Crie um agente com capacidades Salesforce salesforce_agent = Agent( role="CRM Manager", goal="Manage customer relationships and sales processes efficiently", backstory="An AI assistant specialized in CRM operations and sales automation.", apps=['salesforce'] ) # Task to create a new lead create_lead_task = Task( description="Create a new lead for John Doe from Example Corp with email john.doe@example.com", agent=salesforce_agent, expected_output="Lead created successfully with lead ID" ) # Run the task crew = Crew( agents=[salesforce_agent], tasks=[create_lead_task] ) crew.kickoff() ``` ### Filtrando Ferramentas Salesforce Específicas ```python # Obtenha apenas ferramentas Salesforce específicas actions_list=["salesforce/create_record_lead", "salesforce/update_record_opportunity", "salesforce/search_records_contact"] ) sales_manager = Agent( role="Sales Manager", goal="Manage leads and opportunities in the sales pipeline", backstory="An experienced sales manager who handles lead qualification and opportunity management.", apps=['salesforce'] ) # Task to manage sales pipeline pipeline_task = Task( description="Create a qualified lead and convert it to an opportunity with $50,000 value", agent=sales_manager, expected_output="Lead created and opportunity established successfully" ) crew = Crew( agents=[sales_manager], tasks=[pipeline_task] ) crew.kickoff() ``` ### Gerenciamento de Contatos e Contas ```python from crewai import Agent, Task, Crew account_manager = Agent( role="Account Manager", goal="Manage customer accounts and maintain strong relationships", backstory="An AI assistant that specializes in account management and customer relationship building.", apps=['salesforce'] ) # Task to manage customer accounts account_task = Task( description=""" 1. Create a new account for TechCorp Inc. 2. Add John Doe as the primary contact for this account 3. Create a follow-up task for next week to check on their project status """, agent=account_manager, expected_output="Account, contact, and follow-up task created successfully" ) crew = Crew( agents=[account_manager], tasks=[account_task] ) crew.kickoff() ``` ### Consultas SOQL Avançadas e Relatórios ```python from crewai import Agent, Task, Crew data_analyst = Agent( role="Sales Data Analyst", goal="Generate insights from Salesforce data using SOQL queries", backstory="An analytical AI that excels at extracting meaningful insights from CRM data.", apps=['salesforce'] ) # Complex task involving SOQL queries and data analysis analysis_task = Task( description=""" 1. Execute a SOQL query to find all opportunities closing this quarter 2. Search for contacts at companies with opportunities over $100K 3. Create a summary report of the sales pipeline status 4. Update high-value opportunities with next steps """, agent=data_analyst, expected_output="Comprehensive sales pipeline analysis with actionable insights" ) crew = Crew( agents=[data_analyst], tasks=[analysis_task] ) crew.kickoff() ``` Esta documentação abrangente cobre todas as ferramentas Salesforce organizadas por funcionalidade, facilitando que os usuários encontrem as operações específicas de que necessitam para automação de seu CRM. ### Precisa de ajuda? Entre em contato com nossa equipe de suporte para assistência na configuração da integração com Salesforce ou para resolução de problemas.