エージェントの応答を引き起こすためのサイレントメッセージの送信

このチュートリアルでは、チャットUIにトリガーメッセージを表示せずに、サイレントメッセージを使用してエージェントの応答をトリガーする方法について説明します。 サイレントメッセージは処理のためにエージェントに送信されますが、ユーザーには表示されないため、対話の自動化やユーザー行動の追跡に最適です。

次のような状況では、サイレントメッセージの使用を検討してください:

  • ウェルカムメッセージのトリガー :チャットが読み込まれた際に挨拶メッセージが表示されるよう、空のメッセージを無音で送信します。

  • ユーザーの操作を追跡する :ユーザーがボタンをクリックしたり、特定のページに移動したりした際に、エージェントに通知する。

  • システム通知を送信する :バックグラウンドでのイベントやシステムステータスの変更について、エージェントに通知します。

  • フィードバックの流れを実装する :チャットにシステムメッセージを表示することなく、ユーザーからのフィードバックに反応する。

サイレントメッセージの仕組み

サイレントメッセージを送信すると、以下の処理が行われます:

  • メッセージは処理のためにエージェントに送信されます。

  • そのメッセージはチャット画面に表示されません。

  • エージェントはそのメッセージに返信することができます(その返信はユーザーにも表示されます)。

  • ユーザーにはエージェントの応答のみが表示され、トリガーメッセージは表示されません。

この手法は、会話の流れを乱すことなく、ウェルカムメッセージの表示、ユーザーの行動の追跡、システム通知の送信、およびフィードバックフローの実装を行うのに役立ちます。

この silent オプションの基本的なルールや動作については、を参照してください instance.send()

ステップ1:基本的な無音メッセージを送信する

メソッド instance.send(){ silent: true } オプションを指定して使用すると、チャットUIに表示されないメッセージを送信できます。

// Send a visible message
await instance.send('Hello, how can you help me?');

// Send a silent message (hidden from UI)
await instance.send('User clicked help button', { silent: true });

チャットが読み込まれたときにウェルカムメッセージを表示するには、空のサイレントメッセージを送信してください:

await instance.send('', { silent: true });

ステップ 2: サイレントメッセージを使用してユーザーの操作を追跡する

チャット画面に通知を表示せずに、サイレントメッセージを使用してエージェントにユーザーの操作を通知します。 この例では、ユーザーが特定のページを表示したときに、通知を表示せずにメッセージを送信します:

await instance.send('User viewed pricing page', { silent: true });

また、ユーザーからのフィードバックを処理し、それをエージェントに通知せずに送信する関数を作成することもできます:

async function handleFeedback(rating, comment) {
    const message = `User feedback: ${rating} stars - ${comment}`;
    await instance.send(message, { silent: true });
}

ステップ3: MessageRequest を使用して高度な制御を行う

メッセージのプロパティをより細かく制御するには、 MessageRequest オブジェクトの ` skip_render property` プロパティを使用してください。 この方法は、追加のコンテキストを指定したり、メッセージの動作をカスタマイズしたりする必要がある場合に役立ちます:

await instance.send({
    message: {
        role: 'user',
        content: 'User clicked help button',
        additional_properties: {
            display_properties: {
                skip_render: true  // Hide from UI
            }
        }
    }
});

サイレントメッセージにカスタムコンテキストデータを追加することもできます:

await instance.send({
    message: {
        role: 'user',
        content: 'I need help with my order',
        additional_properties: {
            display_properties: {
                skip_render: true
            }
        }
    },
    context: {
        user_location: 'checkout_page',
        cart_value: 150.00
    }
});

完全な台本

チャットウィジェットでサイレントメッセージを実装するには、以下のスクリプトを使用してください。 この例では、チャットが読み込まれたときにウェルカムメッセージが表示されます:


function onChatLoad(instance) {
    // Send a silent message to trigger a welcome response
    instance.send('', { silent: true });
    
    // Store the chat instance globally if needed
    chatInstance = instance;
}

window.wxOConfiguration = {
    orchestrationID: "your-orgID_orchestrationID",
    hostURL: "https://dl.watson-orchestrate.ibm.com",
    rootElementID: "root",
    showLauncher: false,
    deploymentPlatform: "ibmcloud", // Required for IBM Cloud 
    crn: "your-org-crn", // Required for IBM Cloud. Learn how to get the CRN in https://cloud.ibm.com/docs/key-protect?topic=key-protect-retrieve-instance-ID&interface=ui
    chatOptions: {
        agentId: "your-agent-id",
        agentEnvironmentId: "your-agent-env-id",
        onLoad: onChatLoad // Callback function when the chat widget is loaded
    },
};
setTimeout(function () {
    const script = document.createElement('script');
    script.src = `${window.wxOConfiguration.hostURL}/wxochat/wxoLoader.js?embed=true`;
    script.addEventListener('load', function () {
        wxoLoader.init();
    });
    document.head.appendChild(script);
}, 0);