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

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

JSONエディタを使用してレスポンスを編集するには、「 Switch to JSON editor(JSONエディタに切り替え )」アイコンをクリックします。 アシスタントの発言フィールドで 「Switch to JSON editor(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 応答タイプの応答タイプおよびサポートされる統合について詳しくは、 応答タイプのリファレンス を参照してください。