Salesforce
Salesforce org を Squid に接続して、CRM records を管理し、Salesforce data を検索する
Salesforce connector の機能
Salesforce connector を使用すると、Squid AI agents が Salesforce org 内の records を操作できます。この connector は Opportunity、Case、Account、Incident objects をサポートしています。
| Capability | Description |
|---|---|
| Get, create, update, delete | Opportunities、Cases、Accounts、Incidents に対する完全な record CRUD |
| Describe objects | fields、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 は必要ありません。
-
Salesforce Setup で、OAuth が有効な Connected App(または External Client App)を作成します。
-
OAuth settings で、Manage user data via APIs (
api) scope を追加します。 -
app の Client Credentials Flow を有効にします。
-
Client Credentials Flow 用の run-as user(execution user)を割り当てます。この user の permissions によって connector がアクセスできる範囲が決まるため、使用する予定の objects(Opportunity、Case、Account、Incident、および article syncing を有効にする場合は Salesforce Knowledge)へのアクセス権が、その user の profile または permission sets で付与されていることを確認してください。
-
app の Consumer Key と Consumer Secret をコピーします。
詳細については、Salesforce の Client Credentials Flow 用の Connected App の設定 に関するドキュメントを参照してください。
Salesforce connector を Squid application に追加する
-
Squid Console の Connectors tab に移動します。
-
Available Connectors をクリックします。
-
Salesforce connector を見つけて、Add Connector を選択します。
-
次の 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
-
Squid Console の Studio tab に移動します。
-
Create AI Agent をクリックします。
-
agent ID と description を入力します。例: "sales-agent"、"This agent helps the user manage Salesforce records"。
-
Add Abilities をクリックします。
-
Salesforce entry を展開し、以前に作成した Salesforce connector を選択します。
-
agent がこの connection をどのように使用するべきかを説明します。例: "Call this when a user wants to look up or manage Salesforce opportunities, cases, accounts, or incidents."
-
Test をクリックし、agent に "What are my open cases?" と質問してみます。
Squid SDK を使用する
Squid SDK で AI agent を作成している場合は、ask() function の connectedIntegrations option に Salesforce connector を追加して接続します。
- TypeScript
- Python
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',
},
],
});
await squid.ai().agent('AGENT_ID').ask(
'Summarize the open cases for the Acme account',
options={
'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);