メインコンテンツまでスキップ

Salesforce

Salesforce org を Squid に接続して、CRM records を管理し、Salesforce data を検索する

Salesforce connector の機能

Salesforce connector を使用すると、Squid AI agents が Salesforce org 内の records を操作できます。この connector は OpportunityCaseAccountIncident objects をサポートしています。

CapabilityDescription
Get, create, update, deleteOpportunities、Cases、Accounts、Incidents に対する完全な record CRUD
Describe objectsfields、types、picklist values、record types などの object metadata を取得
Semantic search自然言語を使用して、同期された Opportunity および Case records を検索
Knowledge article search自然言語を使用して Salesforce Knowledge articles を検索

record syncing が有効になっている場合、Squid は Opportunity および Case records(必要に応じて Salesforce Knowledge articles も)を knowledge base にインデックス化し、10 分ごとに更新します。これにより、agents は直接の record lookup に加えて、「この請求問題に似た open cases を探して」といった質問に回答できます。

Salesforce Connected App の作成

この connector は OAuth 2.0 Client Credentials Flow を使用して認証するため、user login は必要ありません。

  1. Salesforce Setup で、OAuth が有効な Connected App(または External Client App)を作成します。

  2. OAuth settings で、Manage user data via APIs (api) scope を追加します。

  3. app の Client Credentials Flow を有効にします。

  4. Client Credentials Flow 用の run-as user(execution user)を割り当てます。この user の permissions によって connector がアクセスできる範囲が決まるため、使用する予定の objects(Opportunity、Case、Account、Incident、および article syncing を有効にする場合は Salesforce Knowledge)へのアクセス権が、その user の profile または permission sets で付与されていることを確認してください。

  5. app の Consumer KeyConsumer Secret をコピーします。

詳細については、Salesforce の Client Credentials Flow 用の Connected App の設定 に関するドキュメントを参照してください。

Salesforce connector を Squid application に追加する

  1. Squid ConsoleConnectors tab に移動します。

  2. Available Connectors をクリックします。

  3. Salesforce connector を見つけて、Add Connector を選択します。

  4. 次の configuration details を入力します。

Connector ID: コード内で connector を一意に識別する文字列。

Domain: Salesforce instance の domain。protocol を含め、末尾に slash は付けません。例: https://mycompany.my.salesforce.com

Consumer Key: Connected App の Consumer Key。

Consumer Secret: Connected App の Consumer Secret。これは Squid secret として安全に保存されます。

Sync Opportunities: semantic search のために Opportunity records の indexing を有効にします。

Sync Cases: semantic search のために Case records の indexing を有効にします。

Sync Knowledge Articles: documentation と FAQs に対する semantic search のために、Salesforce Knowledge articles を knowledge base に indexing することを有効にします。

Sync History Days: 同期する record history の日数。default は 30 です。

注記

Semantic search は、syncing を有効にした record types のみを対象とします。sync option を有効にした後、initial sync が完了するまでしばらく待ってください。Knowledge article syncing は、公開済みの英語(en_US)articles をインデックス化します。

application で Salesforce connector を使用する

No-code Studio

  1. Squid ConsoleStudio tab に移動します。

  2. Create AI Agent をクリックします。

  3. agent IDdescription を入力します。例: "sales-agent"、"This agent helps the user manage Salesforce records"。

  4. Add Abilities をクリックします。

  5. Salesforce entry を展開し、以前に作成した Salesforce connector を選択します。

  6. agent がこの connection をどのように使用するべきかを説明します。例: "Call this when a user wants to look up or manage Salesforce opportunities, cases, accounts, or incidents."

  7. Test をクリックし、agent に "What are my open cases?" と質問してみます。

Squid SDK を使用する

Squid SDK で AI agent を作成している場合は、ask() function の connectedIntegrations option に Salesforce connector を追加して接続します。

await this.squid
.ai()
.agent('AGENT_ID')
.ask('Summarize the open cases for the Acme account', {
connectedIntegrations: [
{
integrationId: 'SALESFORCE_CONNECTOR_ID',
integrationType: 'salesforce',
description: 'Call this connector to look up and manage Salesforce records',
},
],
});

npm package を使用する

backend または client code から programmatic(non-agent)access を行うには、@squidcloud/salesforce-client package をインストールします。

npm install @squidcloud/salesforce-client
import { SquidSalesforceClient } from '@squidcloud/salesforce-client';

const salesforce = new SquidSalesforceClient(squid, 'SALESFORCE_CONNECTOR_ID');

// Look up a record
const opportunity = await salesforce.getOpportunity('OPPORTUNITY_ID', 'Id, Name, StageName, Amount');

// Create a record
await salesforce.createCase({ Subject: 'Billing issue', Origin: 'Web' });

// Semantic search over synced records
const results = await salesforce.searchKnowledgeBase('customers asking about refunds', 'Case', 10);