仮想エージェント APIの一般的なエラー
このセクションでは、 仮想エージェント API でよくあるエラーとその解決方法について説明します。
仮想エージェント API 構造の検証
要求構造:
仮想エージェント API では、次の JSON 構造が必要です。
{
"requestId": "any-unique-request-id",
"clientSessionId": "any-unique-session-id",
"userId": "any-unique-user-id",
"emailId": "user@example.com",
"action": "",
"message": {
"text": "User message text",
"typed": true
},
"contextVariables": {},
"history": [
{
"isBotMessage": true,
"value": "How can I help you?",
"displayName": "Bot",
"type": "text"
}
],
"clientVariables": {
"id": "va-bot-12345",
"timestamp": "1687527831786"
}
}| フィールド | 必須 | 説明 |
|---|---|---|
requestId |
いいえ | 応答で返されるパススルー変数 |
clientSessionId |
いいえ | パススルーセッション識別子 |
userId |
はい | 一意のユーザー識別子 (必須) |
emailId |
いいえ* | リンク用のユーザーメール (*ユーザーのリンクには必須) |
アクション |
いいえ | オプションのアクションパラメーター |
message.text |
はい | ユーザーメッセージコンテンツ (必須) |
message.typed |
いいえ | 検索テキストの場合は true、値を選択する場合は false |
contextVariables |
いいえ | オプションのコンテキストデータ |
履歴 |
いいえ | ボットの会話履歴 (最初の要求のみ) |
clientVariables |
いいえ | パススルークライアント変数 |
注:
要求では userId と message.text のみが必須フィールドです。
ファイルアップロードの問題
仮想エージェント API は、同期と非同期などの 2 つのファイルアップロードモードをサポートしています。
ファイルのアップロード要求構造:
{
"userId": "{{user_id}}",
"message": {
"attachment": {
"clientAttachmentId": "{{request_id}}",
"contentType": "video/mp4",
"fileName": "sample.mp4",
"url": "https://sample-videos.com/video123/mp4/720/big_buck_bunny_720p_1mb.mp4",
"headers": {
"header 1": "value 1"
}
},
"text": "along with text",
"typed": true
}
}
| フィールド | 必須 | 説明 |
|---|---|---|
contentType |
はい | MIME タイプ ( ビデオ/mp4、 画像/png など) |
fileName |
はい | 拡張子付きのファイルの名前 |
url |
はい | ファイルをダウンロードするためのアクセス可能な URL |
clientAttachmentId |
いいえ | トラッキングのための一意の識別子 |
ヘッダー |
いいえ | ファイルダウンロード用の認証ヘッダー |
同期モードでのファイルアップロード:
同期モードでファイルをアップロードするには、次の手順に従います。
- メディア API を使用してファイルをアップロードします。詳細については、「CCCIF Media Resource API」を参照してください。メディア API は URL を返します。応答の例:
{ "result": { "mediaUrl": "<instance>/api/now/v1/cs/media/JOBBfkqSq6kDiFzxyinvHhke73O4TZ0j", "name": "image.png", "state": "available", "attachmentId": "e8671b9193209210a755b8e86cba104b" } } - 仮想エージェント API要求でメディア URL を使用します。JSON の例:
{ "userId": "user123", "message": { "attachment": { "contentType": "image/png", "fileName": "image.png", "url": "<instance>/api/now/v1/cs/media/JOBBfkqSq6kDiFzxyinvHhke73O4TZ0j" }, "text": "Here is the image", "typed": true } }
非同期モードでのファイルアップロード:
非同期モードでファイルをアップロードするには、次の 2 つの方法があります。
- 仮想エージェント API要求でファイル URL を使用します。
- 直接ファイル URL:
{ "userId": "user123", "message": { "attachment": { "contentType": "application/pdf", "fileName": "report.pdf", "url": "https://publicserver.com/files/report.pdf" }, "text": "Document attached", "typed": true } } - 保護されたファイルの URL:
{ "userId": "user123", "message": { "attachment": { "contentType": "application/pdf", "fileName": "confidential.pdf", "url": "https://secureserver.com/files/confidential.pdf", "headers": { "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...", "X-Custom-Header": "custom-value" } }, "text": "Secure document attached", "typed": true } }
- 直接ファイル URL:
- メディア API の使用 (同期モードで継続)。
ユーザーリンクの問題
仮想エージェント API は、すぐに利用可能な自動ユーザーリンクのみをサポートします。仮想エージェント APIでは、手動リンクはデフォルトで有効になっていません。
ユーザーリンクの前提条件:
- メッセージ認証は必須です。
sys_cs_provider_applicationでメッセージ認証がないと、ユーザーのリンクは機能しません。- メッセージ認証を適切に構成する必要があります。(認証のセクションを参照してください)。
- 必須の要求フィールド。
userIdが存在し、一意である必要があります。emailIdが存在し、有効である必要があります。
ユーザーレコード要件:
emailId は、以下の条件をすべて満たすsys_userレコードと一致する必要があります。sys_userテーブルにレコードが存在します。- [メール] フィールドが完全に一致します。
- ユーザーはアクティブです。(
active=true) - ユーザーはロックアウトされていません。(
locked_out=false) - これらの条件に一致するユーザーレコードは 1 つだけです。
注:
複数のユーザーが同じメールを持っている場合、リンクは失敗します。
自動リンク構成:
- プロバイダー構成を確認します。
sys_cs_providerテーブルに移動し、「VA ボット間プロバイダー」レコードを開きます。-
表 : 3. 必須設定 フィールド 予想値 automatic_link_enabledtrueautomatic_link_actionsn_va_as_service.virtual_agent__bot_to_bot_auto_link_accountlink_account_enabledtrue
- プロバイダーユーザーマップを確認します。
provider_user_mapテーブルに移動します。- フィルター基準:
active=falseANDchannel_user_id={userId from request}。 - 問題:
active=falseのレコードが存在する場合、ユーザーを自動的にリンクすることはできません。 - 解決策:アドミニストレーターは、非アクティブなレコードを手動で削除し、リンク要求を再試行する必要があります。
- カスタマイズを確認します。
sn_va_as_service.virtual_agent__bot_to_bot_auto_link_accountスクリプトを実行してカスタマイズを確認します。- 一般的なカスタマイズの問題を確認します。
- 自動リンクを防止するロジック
- 追加の検証チェック
- 変更されたフィールドマッピング
ユーザーリンクのトラブルシューティングチェックリスト:
- 構成:
- メッセージ認証が存在し、アクティブです。
userIdが要求に存在します。emailIdが要求に存在します。automatic_link_enabled = trueautomatic_link_action正しいスクリプトを示しています。link_account_enabled = true
- ユーザーレコード:
- ユーザーが
sys_userに存在します。 - メールが完全に一致します (大文字と小文字を区別)。
- ユーザーはアクティブです。
- ユーザーはロックアウトされていません。
- 1 人のユーザーのみがメールと一致します。
- ユーザーが
- プロバイダーユーザーマップ:
- この
userIdに非アクティブなレコードはありません。 - 重複するマッピングがないか確認します。
- この
- カスタマイズ:
- 自動リンクスクリプトの変更を確認します。
- カスタマイズされている場合は、OOB スクリプトを使用してテストします。