JSONエディタを使用したレスポンスの定義

状況によっては、JSONエディタを使ってアシスタントのレスポンスを定義する必要があるかもしれません。 詳細については、アシスタントの応答を追加するを参照してください。

JSONエディタを使用してレスポンスを編集するには、アシスタントの発言フィールドでJSONエディタに切り替えるアイコン「JSONエディタアイコンに切り替える」をクリックします。 JSON エディターは、応答が水面下で定義されてチャネルに送信される仕組みを示します。

一般的な JSON 形式

新しい空の応答で JSON エディターを開くと、以下の基本構造が表示されます。

{
  "generic": []
}

genericプロパティは、ステップ実行時にチャネルに送信されるレスポンスの配列を定義する。 ジェネリックという用語は、これらのレスポンスが、どのチャネルにも特定されない一般的なJSONフォーマットを使用して定義されているという事実を意味する。 このフォーマットは、複数の統合によってサポートされるさまざまな応答タイプに対応できます。また、このフォーマットは、REST API を使用するカスタム・クライアント・アプリケーションで実装することもできます。

ステップの generic 配列には複数の応答を含めることができ、応答ごとに応答タイプがあります。 通常、単純なテキスト応答を送信する基本ステップには、応答タイプ text の応答が 1 つのみ含まれます。 しかし、マルチメディアやインタラクティブなコンテンツをサポートし、いくつかのチャンネル統合の動作を制御する、他の多くの応答タイプが利用可能です。

genericフォーマットはどのチャンネル統合にも送ることができるが、すべてのチャンネルがすべてのレスポンスタイプをサポートしているわけではないので、特定のレスポンスは無視されたり、チャンネルによっては異なる扱いを受けるかもしれない。 詳細については、レスポンス・タイプのチャネル統合サポートを参照してください。

実行時に、複数の応答を持つ出力は、複数のメッセージペイロードに分割されるかもしれない。 チャネル・インテグレーションは、これらのメッセージを順番にチャネルに送信するが、これらのメッセージをユーザーに配信するのはチャネルの責任である。

応答の追加

JSON エディターで応答を指定するには、適切な JSON オブジェクトをステップ応答の generic フィールドに挿入します。 次の例は、異なるタイプの2つのレスポンス(テキストと画像)の出力を示しています:

{
  "generic":[
    {
      "response_type": "text",
      "values": [
        {
          "text_expression": {
            "concat": [
              {
                "scalar": "This is a text response."
              }
            ]
          }
        }
      ]
    },
    {
      "response_type": "image",
      "source": "https://example.com/image.jpg",
      "title": "Example image",
      "description": "This is an image response."
    }
  ]
}

詳しくは、レスポンス・タイプを参照のこと。

特定の統合のターゲット設定

アシスタントを複数のチャネルにデプロイする予定の場合は、各チャネルの機能に基づいて、異なる統合に異なる応答を送信しなければならないことがあります。 汎用応答オブジェクトの channels プロパティーは、これを行う方法を提供します。

このメカニズムは、会話フローが使用中の統合によって変更されない場合や、実行時に応答がどの統合に送信されるかを事前に知ることができない場合に便利である。 channels を使用することにより、すべての統合をサポートする単一ステップを定義でき、その一方で依然としてチャネルごとに出力をカスタマイズすることもできます。 例えば、チャネルがサポートする内容に基づいて、テキストの書式設定をカスタマイズしたり、さまざまな応答タイプを送信したりすることができます。

channels、「channel_transferレスポンス・タイプとともに使用すると便利である。 メッセージ出力は、'transferを開始したチャネルとターゲット・チャネルの 両方で処理されるので、'channels使用して、どちらか一方で処理される 応答を定義することができる。

応答の対象となる統合を指定するには、応答オブジェクトの一部としてオプションの channels 配列を含めます。 すべての応答タイプで channels 配列がサポートされます。 この配列には、以下の構文で1つ以上のオブジェクトが格納される:

{
  "channel": "<channel_name>"
}

<channel_name> の値は、以下のいずれかのストリングにすることができます。

  • chat: Web チャット
  • voice_telephony: 電話
  • text_messaging:SMS
  • slack: Slack
  • facebook: Facebook Messenger
  • whatsapp: WhatsApp

以下の例は、2 つの応答を含むステップ出力を示しています。応答の 1 つは Web チャット統合用であり、もう 1 つは Slack と Facebook の統合用です。

{
  "generic": [
    {
      "response_type": "text",
      "channels": [
        {
          "channel": "chat"
        }
      ],
      "values": [
        {
          "text_expression": {
            "concat": [
              {
                "scalar": "This output is intended for the <strong>web chat</strong>."
              }
            ]
          }
        }
      ]
    },
    {
      "response_type": "text",
      "channels": [
        {
          "channel": "slack"
        },
        {
          "channel": "facebook"
        }
      ],
      "values": [
        {
          "text_expression": {
            "concat": [
              {
                "scalar": "This output is intended for either Slack or Facebook."
              }
            ]
          }
        }
      ]
    }
  ]
}

channels 配列が存在する場合は、少なくとも 1 つのチャネル・オブジェクトが含まれている必要があります。 リストされていない統合は、応答を無視します。 channels 配列が存在しない場合は、すべての統合が応答を処理します。

応答タイプ

JSONを使用して、さまざまなタイプのレスポンスを設定できます。 JSON レスポンス・タイプのレスポンス・タイプとサポートされる統合の詳細については、レスポンス・タイプ・リファレンスを参照してください。