ストアリリース 3.0.x で利用可能な仮想エージェント API 機能

  • リリースバージョン: Zurich
  • 更新日 2025年07月31日
  • 所要時間:12分
  • 仮想エージェント API バージョン 3.0.x では、仮想エージェントおよびエージェントチャットで利用可能な同じ機能の多くにアクセスできます。これには、プライベート URL からファイルをアップロードする機能や同期ハンドシェイクの機能拡張などが含まれます。

    破棄された仮想エージェントの会話の終了

    エラーが原因で会話が不完全な場合、仮想エージェントはプライマリボットに制御を依頼することができます。takeControl フラグが true の場合、仮想エージェントは (セカンダリボットとして) 会話を自動的に終了します。プライマリボットが会話を開始する場合、"hi"/START_CONVERSATION のアクションメッセージを送信できます。

    次の状況では、プライマリボットに制御を依頼することができます。
    • アイドルタイムアウト:インタラクションステータスが [破棄してクローズ] です。ステータスの理由は [アクティビティなし]です。
    • 技術的な問題:インタラクションのステータスが [破棄してクローズ] です。ステータスの理由は [ボットの問題 (Bot issues)] です。
    • 無効なユーザー入力:インタラクションステータスが [破棄してクローズ] です。ステータスの理由は [無効なユーザー入力 (Invalid user input)] です。

    プライマリボットに制御を求めるには、ペイロードの本文にある takeControl フラグを true の値でプライマリボットに送信します。

    メッセージペイロードの例:
    {​ 
       "requestId": "xxxx-xxxx-xxxx-xxxx",
       "clientSessionId": "xxx-xxx-xxx-xxx",
       "message": {
           "text":"invalid3",
           "typed":true
           }
       "body":[{
           "uiType":"OutputText",
           "group":"DefaultText",
           "value":"Sorry, I didn't get that. Could you help me by answering this?"
           },
           {
           "uiType":"Boolean",
           "group":"DefaultPicker",
           "required":true,
           "nluTextEnabled": false,
           "label":"Choose a value",
           "options":[
              {"label":"Yes"},
              {"label":"No"}
              ]
           }],
        "takeControl":true,
        "score":0
    } 

    仮想エージェント API 応答時間の改善

    仮想エージェント API 応答には、「Take Control」や「NLU Score」などのパラメーターが含まれます。これらのパラメーターは、応答の準備中に処理されます。

    バージョン 3.9.0 以降では、仮想エージェント API 応答から [Take Control] および/または [NLU Score] パラメーターを除外して、応答時間を改善できます。

    仮想エージェント API 応答から [Take Contro] および [NLU Score] パラメーターを除外するには、次の手順を実行します。
    1. 移動先 すべて > sys_cs_custom_adapter_property.list.
    2. enable_take_control および send_nlu_score のプロパティを検索します。
    3. enable_take_control プロパティの値を false に設定して「Take Control」設定を除外し、send_nlu_score プロパティの値を false に設定して、応答の処理中に「NLU Score」計算を除外します。これらのプロパティはデフォルトで true に設定されています。

    トピックの切り替えエラーとトラブルシューティングの改善

    トピックの切り替えは、次のいずれかの理由で失敗することがあります。
    • 要求に、トピック名とトピック ID (キーワードトピックディスカバリー) またはトピックインテント名とトピックインテント ID (NLU トピックディスカバリー) の両方が含まれています。いずれか一方を指定します。
    • 要求に無効なトピックかインテント名、または ID が含まれています。
    • トピック/インテント名または ID は有効ですが、非アクティブであるかトピックでないため、仮想エージェントで実行できません。たとえば、名前または ID がトピックブロックまたはカスタムコントロール資産を参照している場合などです。
    • 要求されたトピックが既に実行されています。
    • 要求されたトピックは有効ですが、セキュリティ条件によりアクセスできません。たとえば、トピックの実行がチャネルで許可されていない場合や、その他のアクセス制御条件が適用されている場合などがあります。
    トピックの切り替えに失敗した場合、仮想エージェント API は、同期的に使用しているか非同期的に使用しているかにかかわらず次のように応答します。
    • トピックの切り替えに失敗すると、会話を続行できないことを示すメッセージが表示されて会話が終了します。会話はオープンステータスのままではなくなります。
    • 前の要求は処理済みとしてマークされるため、タイムアウトを待たずに新しい要求を行うことができます。
    • 失敗の理由は、システムログテーブル (自動テストフレームワーク (ATF) > システムログ > エラー) を開きます。

    同期ハンドシェイクの機能拡張

    バージョン 3.0.x 以降、仮想エージェント API はライブエージェントへの転送を同期的に行うことができます。ユーザーまたはエージェントが会話を終了すると、仮想エージェントへの転送も同期的に行われます。一部のシステムメッセージと待機時間メッセージも同期的に送信されます。

    ライブエージェントへの同期転送を使用するには、次のガイドラインに注意してください。
    • 仮想エージェントの応答エンドポイントを構成します。エージェントチャットのメッセージは、指定したエンドポイントに配信されます。
    • インスタンスの通知は手動でオフにする必要があります。
    • ライブエージェントへの同期転送を使用している場合、仮想エージェント API は、入力インジケーターが有効になっている場合は送信します。
      {
        "uiType": "ActionMsg",
        "actionType": "StartTypingIndicator",
      }
      
    • 次の機能を使用するトピックは、同期モードではサポートされていません: ファイルアップロードアクション ユーティリティ、および一時停止トピックブロック
    これらの機能を無効にして同期サポートを有効にするには、次の手順を実行します。
    1. 移動先 すべて > sys_cs_channel.list.
    2. [ボット間 (Bot to Bot)] レコードを選択します。
    3. 無効にするには、[通知の有効化] チェックボックスをオフにします。
    4. 同期モードでライブエージェントへの転送を行わない場合は、[入力インジケーターをサポート] チェックボックスをオフにして無効にします。
    5. [同期] チェックボックスをオンにします。
      図 : 1. 同期サポートを有効にしたボット間チャネル
      同期モードのボット間チャネル構成では、[通知を有効にする] および [入力インジケーターをサポート] ボックスが未選択として表示されます。[同期] ボックスが選択されます。
    6. [更新] をクリックします。

    アクションメッセージのサポート

    ServiceNow® 仮想エージェントのセカンダリボットにメッセージを渡すだけでなく、プライマリボットまたはチャットクライアントはエージェントチャットを介してエージェントにメッセージを渡すことができます。要求の本文で渡された action パラメーターを使用して、コンテンツの処理方法を指定します。

    仮想エージェント API は、次のアクションメッセージタイプをサポートしています。
    表 : 1. サポートされているアクションメッセージタイプ
    actionType 値 説明
    ChatSubHeader 次のいずれかが発生したことを示す送信メッセージ:
    • 動的翻訳が失敗しました。
    • ライブエージェントのオートパイロットが開始され、完了しました。
    StartSpinner メッセージが AI 検索 や汚い言葉フィルターなどの非同期プロセスのために処理待ち状態になっているときにスピナーを開始する送信メッセージ。
    EndSpinner 以前に送信されたスピナーを停止する送信メッセージ。
    StartTypingIndicatorActionMsg (エージェントがチャットを受け入れた後に) ユーザーまたはエージェントが入力を開始したことを示す送信メッセージ。
    EndTypingIndicatorActionMsg ユーザーまたはエージェントが入力を停止したことを示す送信メッセージ。
    SubscribeToSupportQueue 会話がサポートキューに設定されていることを示します。
    SubscribeToChatPresence ライブエージェント会話が開始されたことを示す送信メッセージ。
    SwitchToLiveAgent ライブエージェントが会話を受け入れたことを示す送信メッセージ。
    SwitchToVirtualAgent ライブエージェントセッションが終了し、会話が仮想エージェントに戻されたことを示す送信メッセージ。
    SwitchConversation 通知が送信されたことを示す送信メッセージ。これにより新しい会話が作成されるため、仮想エージェントは新しい会話に切り替わります。
    System 次のいずれかを示す送信メッセージ:
    • ライブエージェントが cat を入力しました。
    • ライブエージェントまたはユーザーのいずれかがチャットをクローズしました。
    • ライブエージェントとの会話がタイムアウトしました。

    silentMessage フラグのサポート

    サイレントメッセージは、応答を必要としないメッセージです。仮想エージェントsilentMessage=true の要求を受信した場合、仮想エージェント がサイレントモードをオフにする要求 (silentMessage=false) を受信するまで、その後のすべてのボットメッセージは非表示になります。

    プライマリボットからのメッセージペイロードの例:
    { 
       "token": "BOT_TOKEN",
       "botToBot": true,
       "clientSessionId": "884502214730301027f83ee4070f589a",
       "clientVariables": {},
       "requestId": "48450221d23030107300b7756770bc9b",
       "silentMessage": "true",
       "timestamp": 1623916324820,
       "timezone": "GMT",
       "userId": "abel.tuter",
       "emailId": "abel.tuter@example.com" 
    }
    注:
    silentMessage=true の場合、通知は配信されません。

    プライベート URL からの安全なファイルアップロード

    仮想エージェント API は、プライベート URL からの最大 1 GB のサイズのファイルアップロードをサポートしています。プライマリボットは、ユーザー ID、オプションのプロバイダーアプリケーション ID、およびファイルの名前を渡す必要があります。次のガイドラインに従ってください。
    • プロバイダーアプリケーション ID はオプションです。
    • ユーザー ID とプロバイダーアプリケーション ID は、ペイロードのファイル名の前に送信する必要があります。
    • エンドユーザーは、glide.attachment.role プロパティで指定されたロールを持っている必要があります。詳細については、「ファイルを添付するために必要なロール」を参照してください。
    • 基本認証または OAuth 認証はサポートされていますが、メッセージ認証はサポートされていません。
    プライマリボットからのメッセージペイロードの例:
    curl -X POST \
      https://instance.service-now.com/api/now/v1/cccif/media/upload \
      -H 'authorization: Basic YWRtaW46YWRtaW4=' \
      -H 'content-type: multipart/form-data; \
      -F user_id=xxxxxx \
      -F provider_application_id=optionalId \
      -F 'file=@SomeFile.png'
    仮想エージェント API は、次の JSON の例を送信します:
    {
      "result": {
        "mediaUrl": "http://123.456.7.8:8080//api/now/v1/cs/media/string",
        "name":"imagefile.png",
        "state":"pending",
        "attachmentId":"abcdefghijklmno12345"
      }
    }

    仮想エージェント API 要求と応答の変換のサポート

    仮想エージェント API は、要求ペイロードと応答ペイロードの相互変換仮想エージェント API をサポートします。これは、プライマリボットにすべてのセカンダリボットで共通の応答テンプレートがある場合に役立ちます。詳細については、「仮想エージェント API の要求と応答の変換」を参照してください。

    複数のプロバイダーアプリケーションの構成のサポート

    仮想エージェント API により、仮想エージェント API を使用する複数のプライマリボットがあり、それらを区別する必要があるユースケースをサポートするように、複数のプロバイダーアプリケーションを構成できます。詳細については、「複数のプロバイダーアプリケーションの構成」を参照してください。

    Now Assist エクスペリエンスのサポート

    仮想エージェント APINow Assist エクスペリエンスは、複数のプロバイダーチャネルで生成 AI スキルを提供します。詳細については、「で Now Assist エクスペリエンスを有効にする 仮想エージェント API」を参照してください。

    仮想エージェント API バージョン 3.14.3 でのエージェントチャットの機能拡張

    • プライマリボットがライブエージェントにチャットを転送すると、 仮想エージェント API はエージェント名とアバターに加えてエージェント ID をプライマリボットに送信します。
    • 仮想エージェント API は、進行中の会話中に、プライマリボットから要求内の任意の場所でライブエージェントにチャット履歴を送信します。この動作は、次のシステムプロパティによって制御されます。 allow_storing_history_in_ongoing会話。プロパティの値を true に設定すると、要求内の任意の場所にチャット履歴が送信されます。
    • インタラクションレコードには、チャット履歴のトランスクリプトと個々のメッセージのタイムスタンプが含まれます。