onValidateAssociatedRecords
このコールバックを使用すると、アクティビティレコードと関連付けられるインタラクションに関連するCRMレコードの検証手順を指定できます。インタラクションが完了しようとする際、Communicator Widgetはこのイベントを送信し、そのインタラクションに関連付けられた一連のCRMレコードを検証します(エージェントは、アクティビティ用のウィジェットUI上で、訪問済みのレコードを任意に選択できます)。 統合において、アクティビティ履歴として有効となるレコードのセットに特定のルールが必要な場合は、このコールバックハンドラーにそのロジックを実装してください。このイベントに対するハンドラーを指定しない場合、どのCRMレコードのセットも有効として承認されます。
ハンドラーは RecordsValidationResult オブジェクトを返す必要があります。「valid」が true の場合、レコードのセットは承認され、インタラクション完了の処理が継続されます。「valid」が false の場合、処理は中止され、エージェントに選択の変更が求められます。
リクエスト
構文
| on('ON_VALIDATE_ASSOCIATED_RECORDS', handler: OnValidateAssociatedRecordsHandler): void
type InteractionAssociatedObjectsData = { list: InteractionAssociatedObject[] 選択済: string[] } type InteractionAssociatedObject = { id: string type: string displayName: string displayType: string customFields: Record<STRING, string> } type RecordsValidationResult = { valid: boolean メッセージ?: string } |
パラメータ
| パラメータ | パラメータ値 | データ型 | オプション/必須 | 説明 |
| interactionId | 文字列 | 必須 | これらのレコードが関連付けられているインタラクションのidです。 | |
| records | ||||
| オブジェクト | 必須 | アクセスおよび選択済CRMレコードに関するデータ | ||
| リスト | オブジェクト[] | 必須 | インタラクション中にアクセスされたすべてのCRMレコードのリスト | |
| 選択済 | 文字列[] | 必須 | エージェントがアクティビティ履歴レコードに関連付けとして選択したCRMレコードid(上記のリストから選択済のもの)のリストです。これは、検証が必要なレコードのセットです。 | |
| InteractionAssociatedObject | ||||
| オブジェクト | オプション | そのインタラクションに関連付けられた 1 つのオブジェクトに関するデータ | ||
| id | 文字列 | 必須 | レコードの一意のid | |
| 入力 | 文字列 | 必須 | レコードの種類(連絡先、ケース、タスクなど) | |
| displayName | 文字列 | 必須 | レコードの表示名 | |
| displayType | 文字列 | 必須 | レコードの表示タイプ | |
| customFields | オブジェクト | 必須 | レコードに関する追加情報 |
リクエスト例
// 有効な選択条件が「1件のケース+1件の連絡先」または「何も選択済でない」というルールに基づく検証例。
adApi.on("ON_VALIDATE_ASSOCIATED_RECORDS", (interactionId, records) => {
// 何も選択されていない場合は有効です
if (!records.selected.length) {
return { valid: true }
}
// 2件のレコードが選択されていない場合 - 無効です
if (records.selected.length !== 2) {
return { valid: false, message: "ケースを1件、連絡先を1件、正確に1つずつ選択してください。" }
}
const firstRecord = records.list.find(record => {
return record.id === records.選択済[0]
})
const secondRecord = records.list.find(record => {
return record.id === records.選択済[1]
})
// 型安全性の確認のみ
if (!firstRecord || !secondRecord) {
return { valid: false, message: "選択されたレコードが見つかりませんでした。" }
}
// 最終確認:1つのレコードが「ケース」、もう1つのレコードが「連絡先」である必要があります
if (
(firstRecord.type === "ケース" && secondRecord.type === "連絡先") ||
(firstRecord.type === "連絡先" && secondRecord.type === "ケース")
) {
return { valid: true }
} else {
return { valid: false, message: "ケースと連絡先をそれぞれ1件ずつ選択してください。" }
}
})
戻り値
| オブジェクト | オブジェクトの値 | データ型 | オプションですか?(はい/いいえ) | 値の説明 |
| RecordsValidationResult | ||||
| オブジェクト | 検証結果 | |||
| 有効 | ブール値 | 検証処理の結果を示します | ||
| メッセージ | 文字列 | Y | 検証に失敗した場合、ウィジェットの UI に表示される説明メッセージを指定できます |