JSON 편집기를 사용하여 응답 정의하기

일부 상황에서는 JSON 편집기를 사용하여 어시스턴트의 응답을 정의해야 할 수도 있습니다. 자세한 내용은 어시스턴트 응답 추가하기를 참조하세요.

JSON 편집기를 사용하여 응답을 편집하려면 어시스턴트가 말합니다 필드에서 JSON 편집기로 전환 아이콘 ' JSON 편집기 아이콘으로 전환 '을 클릭합니다. JSON 편집기는 응답이 배후에 정의되어 채널에 전송되는 방법을 보여줍니다.

일반 JSON 형식

비어 있는 새 응답에서 JSON 편집기를 열면 다음과 같은 기본 구조가 표시됩니다.

{
  "generic": []
}

' generic ' 속성은 단계가 실행될 때 채널로 전송되는 응답의 배열을 정의합니다. 일반이라는 용어는 이러한 응답이 특정 채널에 국한되지 않는 일반 JSON 형식을 사용하여 정의된다는 사실을 의미합니다. 이 형식은 여러 통합에서 지원하는 다양한 응답 유형에 맞출 수 있으며 REST API를 사용하는 사용자 정의 클라이언트 애플리케이션에 의해 구현될 수도 있습니다.

한 단계의 generic 배열에 여러 개의 응답이 포함될 수 있으며 각 응답에는 응답 유형이 있습니다. 단순 텍스트 응답을 전송하는 기본 단계에는 일반적으로 응답 유형이 text인 단일 응답만 포함됩니다. 그러나 멀티미디어 및 대화형 콘텐츠를 지원하고 일부 채널 통합의 동작을 제어할 수 있는 다른 많은 응답 유형을 사용할 수 있습니다.

' generic ' 형식은 모든 채널 통합에 전송할 수 있지만 모든 채널이 모든 응답 유형을 지원하는 것은 아니므로 일부 채널에서는 특정 응답이 무시되거나 다르게 처리될 수 있습니다. 자세한 내용은 응답 유형에 대한 채널 통합 지원을 참조하세요.

런타임에 여러 응답이 포함된 출력은 여러 메시지 페이로드로 분할될 수 있습니다. 채널 통합은 이러한 메시지를 채널에 순차적으로 보내지만, 이러한 메시지를 사용자에게 전달하는 것은 채널의 책임이며, 이는 네트워크 또는 서버 문제의 영향을 받을 수 있습니다.

응답 추가

JSON 편집기에서 응답을 지정하려면 적절한 JSON 오브젝트를 단계 응답의 generic 필드에 삽입하십시오. 다음 예는 서로 다른 두 가지 유형(텍스트 및 이미지)의 응답이 포함된 출력을 보여줍니다:

{
  "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 배열을 지원합니다. 이 배열은 다음 구문을 사용하여 하나 이상의 객체를 포함합니다:

{
  "channel": "<channel_name>"
}

<channel_name> 값은 다음 문자열 중 하나일 수 있습니다.

  • chat: 웹 대화
  • voice_telephony: 전화
  • text_messaging' : SMS
  • slack: Slack
  • facebook: Facebook Messenger
  • whatsapp: WhatsApp

다음 예제는 두 개의 응답이 포함된 단계 출력을 보여줍니다. 하나는 웹 대화 통합용이고 다른 하나는 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 배열이 있으면 하나 이상의 채널 오브젝트를 포함해야 합니다. 나열되지 않은 통합은 응답을 무시합니다. channels 배열이 없는 경우 모든 통합이 응답을 처리합니다.

응답 유형

JSON을 사용하여 다양한 유형의 응답을 구성할 수 있습니다. JSON 응답 유형에 대한 응답 유형 및 지원되는 통합에 대해 자세히 알아보려면 응답 유형 참조를 참조하세요.