重複するアカウントおよび担当者の識別
Fusion Data Qualityのサブスクリプションを使用すると、Customer Centerでインタラクティブな重複識別を有効にして、顧客登録の既存のレコードの重複である可能性がある新規顧客レコードが作成されないようにできます。 この機能を使用すると、新規顧客レコードを保存しようとすると、重複の可能性があるレコードがアプリケーションから通知され、既存のレコードを使用するのではなく、新規レコードの作成を続行することを選択できます。 また、Fusion Data Qualityサービスでは、モバイル・アプリケーションや顧客レコードを作成するためのOracle Visual Builder webインタフェースなど、カスタム・クライアントに対して同様の重複識別フローを開発する場合、REST APIを使用した対話型重複識別もサポートされます。 このセクションは、REST APIの機能、実装および使用状況の理解に役立ちます。
前提条件
Fusion Data Quality重複識別REST関数には、Oracle Fusionデータ品質サービス・オプションとともにOracle CX Salesサービス・ベースのサブスクリプションが必要です。 必要なサブスクリプションがアクティブになると、実装では、エンタープライズ・データ品質照合構成の管理設定タスクを使用して、アカウントおよび担当者のデータ品質照合構成を構成およびアクティブ化する必要があります。 このタスクの詳細は、CX Salesヘルプ・センターの『CX Sales and Fusion Service向け顧客データ管理の実装』ガイドを参照してください。
RESTデータ品質照合の概要
RESTベースの重複識別は、アカウント・オブジェクトと担当者オブジェクトの両方で使用でき、アカウントと担当者の標準のCX Sales RESTリソースの特殊な処理を通じて提供されます。 CX SalesアカウントおよびContact RESTリソースの詳細は、CX Salesヘルプ・センターの『REST API for CX Sales and Fusion Service』ガイドを参照してください。
URLの例このリソースURL形式を使用します。
POST
crmRestAPI/resouces/11.13.18.05/<contacts|accounts>/action/findDuplicates
次の各項では、アカウントおよび担当者の重複識別APIとその特殊なサブリソースの詳細を説明します。
重複するアカウントの識別
アカウントのRESTベースの重複識別は、'findDuplicates'というアカウントのCX Sales REST APIの特殊な処理を介して提供されます。
URLの例このリソースURL形式を使用します。
POST
crmRestAPI/resouces/11.13.18.05/accounts/action/findDuplicates
リクエストの本文には、タイプが"account"のフラット・マップ構造が含まれ、属性名がAccount RESTオブジェクトの最上位レベル・スキーマに準拠していることが必要です。 属性名: match valueマップには、アプリケーション・コンポーザで作成されたサービス対応のカスタム属性を含めることができます。
APIの一致動作は、アカウント・オブジェクトのアクティブなデータ品質照合構成に従って、リアルタイム一致構成パラメータ設定によって制御されます。 次の設定によって制御されます:
- 照合しきい値スコア
- クラスタ・キー・モード
- 標準スコアリング・ルールとカスタム・スコアリング・ルールのどちらを使用するか
レスポンスの本文は、構成された照合設定ごとの照合基準を満たすCX Sales顧客登録のアカウント・レコードのリストと、リクエストで発行された照合属性/値ペアで構成されます。 リストの各要素はフラット・マップ構造で、アカウントの識別子、アカウントの一般的に使用される属性値、プライマリ担当者、アカウント所有者、照合スコアを決定するスコアリング・ルールを提供します。 アカウント・レスポンス・スキーマは次のとおりです:
- CreatedBy
- CreationDate
- FormattedAddress
- FormattedPhoneNumber
- EmailAddress
- LastUpdateDate
- LastUpdatedBy
- MatchedAttributes
- MatchRule
- MatchScore
- OrganizationName
- OwnerEmailAddress
- OwnerName
- OwnerPartyId
- OwnerPartyNumber
- PartyId
- PartyNumber
- PrimaryContactPartyId
- PrimaryContactPartyName
- PrimaryContactPartyNumber
- RawPhoneNumber
- Url
例:
例1: 重複の可能性がある成功したリクエスト
リクエストの例次に、JSON形式のリクエスト本文の例を示します。
{
"account":
{
"OrganizationName": "Merrrill Technologies",
"AddressLine1": "500 South Drive",
"PostalCode": "94035",
"State": "CA",
"Country":"US"
}
}
レスポンスの例
次に、JSON形式のレスポンス本文の例を示します。
{
"result":
[
{
"PartyId":"300100193515606",
"PartyNumber": "CDRM_970814",
"OrganizationName": "Merrill Technologies",
"FormattedAddress": "500 South Drive,MOFFETT FIELD, CA 94035",
"FormattedPhoneNumber": null,
"RawPhoneNumber": null,
"Url": null,
"EmailAddress": null,
"PrimaryContactPartyId":null,
"PrimaryContactPartyNumber": null,
"PrimaryContactPartyName":null,
"OwnerPartyId": "100010025532672",
"OwnerName":"Gabrielle Lee",
"OwnerPartyNumber": "100010025532672",
"OwnerEmailAddress": "asomebody@office.com",
"CreationDate":"2019-09-23 07:57:37.263",
"LastUpdateDate": "2019-09-23 08:01:11.364",
"LastUpdatedBy": "SALES_ADMIN",
"CreatedBy": "SALES_ADMIN",
"MatchScore": "77",
"MatchRule": "[E125C] Full name all words shorter with typos; premise; no subpremise; postal code starts with",
"MatchedAttributes": "PostalCode,AddressLine1,Country,OrganizationName"
}
]
}
例2: 重複の可能性がある識別がない成功したリクエスト
リクエストの例次に、JSON形式のリクエスト本文の例を示します。
{
"account":
{
"OrganizationName": "Merrrill Technologies"
}
}
レスポンスの例
次に、JSON形式のレスポンス本文の例を示します。
{
"result": []
}
例3: リクエスト本文にカスタム属性を持つ成功したリクエスト
リクエストの例次に、JSON形式のリクエスト本文の例を示します。
{
"account":
{
"OrganizationName": "Merrill Technologies",
"OrganizationDEO_NonVerifiedVAT_c": "A5678"
}
}
レスポンスの例
次に、JSON形式のレスポンス本文の例を示します。
{
"result":
[
{
"PartyId": "300100180759704",
"PartyNumber": "CDRM_859821",
"OrganizationName": "Merrill Technologies",
"FormattedAddress": "500 South Drive,MOFFETT FIELD, CA 94035",
"FormattedPhoneNumber": null,
"RawPhoneNumber": null,
"Url": null,
"EmailAddress": null,
"PrimaryContactPartyId": null,
"PrimaryContactPartyNumber": null,
"PrimaryContactPartyName": null,
"OwnerPartyId": "300100181193090",
"OwnerName": "Shane Watson",
"OwnerPartyNumber": "CDRM_859820",
"OwnerEmailAddress": "asomebody@office.com",
"CreationDate": "2019-09-26 21:54:26.208",
"LastUpdateDate": "2019-10-01 05:32:56.461",
"LastUpdatedBy": "SALES_ADMIN",
"CreatedBy": "swatson",
"MatchScore": "89",
"MatchRule": "[E020H] Full name exact; VAT number",
"MatchedAttributes": "OrganizationDEO_NonVerifiedVAT_c,OrganizationName"
}
]
}
重複する担当者の識別
担当者のRESTベースの重複識別は、'findDuplicates'という担当者のCX Sales REST APIの特殊な処理を介して提供されます。
URLの例このリソースURL形式を使用します。
POST
crmRestAPI/resouces/11.13.18.05/contacts/action/findDuplicates
リクエストの本文には、タイプが"contact"のフラット・マップ構造が含まれ、属性名がContact RESTオブジェクトの最上位レベル・スキーマに準拠していることが必要です。 属性名: match valueマップには、アプリケーション・コンポーザで作成されたサービス対応のカスタム属性を含めることができます。
APIの一致動作は、コンタクト・オブジェクトのアクティブなデータ品質照合構成に従って、リアルタイム一致構成パラメータ設定によって制御されます。 次の設定によって制御されます:
-
照合しきい値スコア
-
クラスタ・キー・モード
-
標準スコアリング・ルールとカスタム・スコアリング・ルールのどちらを使用するか
レスポンスの本文は、構成された照合設定ごとの照合基準を満たすCX Sales顧客登録の担当者レコードのリストと、リクエストで発行された照合属性/値ペアで構成されます。 リストの各要素はフラット・マップ構造で、担当者の識別子、担当者によく使用される属性値、担当者のプライマリ・アカウント、担当者所有者、照合スコアを駆動するスコアリング・ルールを提供します。 担当者レスポンス・スキーマは次のとおりです:
-
AccountName
-
AccountPartyId
-
AccountPartyNumber
-
CreatedBy
-
CreationDate
-
EmailAddress
-
FirstName
-
FormattedAddress
-
FormattedHomePhoneNumber
-
FormattedMobileNumber
-
FormattedWorkPhoneNumber
-
LastName
-
LastUpdateDate
-
LastUpdatedBy
-
MatchedAttributes
-
MatchRule
-
MatchScore
-
MiddleName
-
OwnerEmailAddress
-
OwnerPartyId
-
OwnerPartyName
-
OwnerPartyNumber
-
PartyId
-
PartyNumber
-
RawHomePhoneNumber
-
RawMobileNumber
-
RawWorkPhoneNumber
例:
例1: 重複の可能性がある成功したリクエスト
リクエストの例次に、JSON形式のリクエスト本文の例を示します。
{
"contact":
{
"FirstName":"Arnold",
"LastName": "Smith"
}
}
レスポンスの例
次に、JSON形式のレスポンス本文の例を示します。
{
"result":
[
{
"PartyId": "300100198851877",
"PartyNumber": "CDRM_859893",
"FirstName": "Arnold",
"LastName": "Smith",
"MiddleName": null,
"FormattedAddress": null,
"RawHomePhoneNumber": null,
"FormattedHomePhoneNumber": null,
"RawWorkPhoneNumber": null,
"FormattedWorkPhoneNumber": null,
"RawMobileNumber": null,
"FormattedMobileNumber": null,
"EmailAddress": null,
"AccountPartyId": "300100180759704",
"AccountPartyNumber": "CDRM_859821",
"AccountName": "Merrill Technologies",
"OwnerPartyId": "100010025532672",
"OwnerPartyName": "Gabrielle Lee",
"OwnerPartyNumber": "100010025532672",
"OwnerEmailAddress": "asomebody@office.com"
"LastUpdateDate": "2019-10-01 16:24:45.407",
"LastUpdatedBy": "SALES_ADMIN",
"CreatedBy": "SALES_ADMIN",
"CreationDate": "2019-10-01 16:20:14.023",
"MatchScore": "65", "MatchRule": "[I020U] Name exact; no address",
"MatchedAttributes": "FirstName,LastName"
},
{
"PartyId": "300100198842148",
"PartyNumber": "CDRM_859892",
"FirstName": "Arnold",
"LastName": "Smith",
"MiddleName": null,
"FormattedAddress": "400 Oracle Parkway,Redwood Shores, CA 94065",
"RawHomePhoneNumber": null,
"FormattedHomePhoneNumber": null,
"RawWorkPhoneNumber": null,
"FormattedWorkPhoneNumber": null,
"RawMobileNumber": null,
"FormattedMobileNumber": null,
"EmailAddress": null,
"AccountPartyId": null,
"AccountPartyNumber": null,
"AccountName": null,
"OwnerPartyId": "100010025532174",
"OwnerPartyName": "Gabrielle Lee",
"OwnerPartyNumber": "100010025532174",
"OwnerEmailAddress": "asomebody@office.com",
"LastUpdateDate": "2019-10-01 16:14:13.193",
"LastUpdatedBy": "SALES_ADMIN",
"CreatedBy": "SALES_ADMIN",
"CreationDate": "2019-10-01 16:13:01.036",
"MatchScore": "65",
"MatchRule": "[I020U] Name exact; no address",
"MatchedAttributes": "FirstName,LastName"
}
]
}
例2: accountPartyNumberを使用してコンタクト照合結果を特定のアカウントのコンタクトに制約するための成功したリクエスト
リクエストの例次に、JSON形式のリクエスト本文の例を示します。
{
"contact":
{
"FirstName": "Arnold",
"LastName": "Smith"
},
"accountPartyNumber": "CDRM_859821"
}
レスポンスの例
次に、JSON形式のレスポンス本文の例を示します。
{
"result":
[
{
"PartyId": "300100198851877",
"PartyNumber": "CDRM_859893",
"FirstName": "Arnold",
"LastName": "Smith",
"MiddleName": null,
"FormattedAddress": null,
"RawHomePhoneNumber": null,
"FormattedHomePhoneNumber": null,
"RawWorkPhoneNumber": null,
"FormattedWorkPhoneNumber": null,
"RawMobileNumber": null,
"FormattedMobileNumber": null,
"EmailAddress": null,
"AccountPartyId": "300100180759704",
"AccountPartyNumber": "CDRM_859821",
"AccountName": "Merrill Technologies",
"OwnerPartyId": "100010025532672",
"OwnerPartyName": "Gabrielle Lee",
"OwnerPartyNumber": "100010025532672",
"OwnerEmailAddress": "asomebody@office.com",
"LastUpdateDate": "2019-10-01 16:24:45.407",
"LastUpdatedBy": "SALES_ADMIN",
"CreatedBy": "SALES_ADMIN",
"CreationDate": "2019-10-01 16:20:14.023",
"MatchScore": "65",
"MatchRule": "[I020U] Name exact; no address",
"MatchedAttributes": "FirstName,LastName"
}
]
}
ヒントおよび考慮事項
- findDuplicatesアクションは、ベース・アカウントおよび担当者RESTリソースでサポートされている同じレコード・タイプの重複候補を返します:
- 担当者である個人候補者
- 販売アカウントまたは販売見込み客である組織候補
- 「findDuplicates」アクションで返された一致するアカウントまたは担当者のリストは、一致スコアの降順にソートされます。
- レスポンスに含まれる一致候補の最大数は、デフォルトの推奨値の20ですが、ORA_ZCQ_MAX_CANDIDATESプロファイル・オプションで構成できます。
- アカウントおよび担当者の"findDuplicates"アクションには、ベース・アカウントおよび担当者のRESTリソース・エンドポイントへのアクセスに必要なロールや権限以外の追加のロールや権限は必要ありません。
- findDuplicatesリクエスト本文には、トップレベルのアカウントまたは担当者リソース・スキーマの属性のみを含めることができます。 子コレクションの照合属性は現在サポートされていません。
- findDuplicatesアクションは、カスタム・クライアントがCX SalesのCustomer Centerインタフェースによって提供される対話型の重複識別フローをレプリケートできるように設計されています。
- findDuplicates機能は、Oracle CXの顧客マスター・リングの一部であり、候補者の識別およびスコアリング・プロセスを満たすのに十分な情報を含む予測可能なデータ・シェイプと連携できます。 顧客レコードの一般的な検索インタフェースとなることを意図していません。
- "findDuplicates"レスポンスは、成功したリクエストに対して200のHTTPレスポンス・ステータス・コードを返します:
- リクエスト本文に少なくとも1つの正しい属性マッピングがあるかぎり、サービスは誤って指定された一致属性を無視
- 成功したレスポンスには、ゼロ個以上の一致を指定できます
- レスポンスには、次に示すほとんどのエラー条件のHTTPレスポンス・ステータス・コード400が含まれます:
- リクエスト本文に正しく指定された一致属性が含まれていません
- "一致の識別時にデータ品質サービスでエラーが発生しました\
- 必要な引用符、カンマまたは中カッコの欠落など、リクエストの構造が無効です
- "指定されたペイロードを解析できません\
- データ品質照合サービスが有効化されていないか、アクティブな構成がありません
- データ品質照合サーバーが無効になっているため、クレンジング操作を実行できませんでした。 ヘルプ・デスクに連絡してください。」。
- リクエスト本文に正しく指定された一致属性が含まれていません
- サービス対応のカスタム属性の正しい名前を識別するには、アカウントまたは担当者のRESTエンドポイントの説明レスポンスを参照してください
- 標準属性でカスタム属性名プリフィクス・パターンを使用しないでください
- Contactオブジェクトのdescribeは、https://<server>.oraclecloud.com/crmRestAPI/resouces/11.13.18.05/contacts/describeから読み取ることができます
- Accountオブジェクトのdescribeは、https://<server>.oraclecloud.com/crmRestAPI/resouces/11.13.18.05/accounts/describeから読み取ることができます