Webchat Pluginsのトリガー

説明

多くのプラグイン(例えば、文字列を値として使用するもの)は、メッセージが特定のデータを含んでいる時だけトリガーされます。

例として、チャットに画像を表示するプラグインがあり、メッセージのデータからurlを取得するとします。マッチフィールドは inline-imageに設定され、message.data._plugin.url から画像のurlを読み込みます。プラグインをトリガーするには、データフィールドを以下のように設定してメッセージを送信する必要があります:

{
  "_plugin": {
    "type": "inline-image",
    "url": "https://placekitten.com/256/256"
  }
}

ウェブチャットがこのメッセージを受信すると、message.data._plugin.type === 'inline-image'と設定されているため、inline-image-pluginがトリガーされます。プラグイン自体がmessage.data._plugin.urlからurlを読み込みます。

通常のFlow Nodes内での使用法

通常のFlow Node(Say Nodeなど)を利用すると、データフィールドを使用してメッセージにデータペイロードを追加することができます。データフィールドは、構造的エラーを防ぐための構文強調に役立ちます。

Code Nodes内での使用法

Code Nodeを使用してメッセージを送信したい場合は、構造化されたデータペイロードをactions.outputメソッドに2番目のパラメーターとして送ることができます。

拡張機能内での使用法

対話型AIの編集者に最高の体験を提供するために、必要なパラメーター以外を抽象化し、Webchat Pluginをトリガーするメッセージを送信するようカスタマイズされた拡張機能を設計することができます。

カスタムモジュール例

/**
 * Sends an Image to the user via webchat
 * @arg {CognigyScript} `url` The url of the image
 */
const sendInlineImage = async (input, args) => {
    const { url } = args;

    // if no url is set
    if (!url) {
        // do nothing
        return input;
    }

    // send a message that triggers the 'inline-image' plugin with a url
    input.actions.output('', {
        _plugin: {
            type: "inline-image",
            url: "https://placekitten.com/256/256"
        }
    });


    return input;
}