블록에 스킬 적용하기

내가 만든 스킬 기능을 챗봇 관리자센터의 블록에 바로 붙여봅시다.

스킬을 정의하고, API URL을 등록한 다음 블록의 파라미터 설정에서 연결하면 끝! 이보다 간편한 외부시스템과의 연결은 없습니다. 스킬 연동과 함께 내가 만든 블록의 기능을 200% 활용해보시기 바랍니다.

이제 더이상 모바일 앱을 개발하지 않아도 ‘봇’만으로 간단한 사용자 응대 서비스를 뚝딱 만들어낼 수 있게 되었습니다.

블록과 스킬 연결하기

블록에 스킬을 연결하면 더욱 동적인 응답을 만들어낼 수 있습니다.

아래 화면과 같은 환율블록에서 “오늘 달러 환율 얼마야?”와 같은 질문에 실시간으로 변경되는 환율값으로 응답으로 주고 싶다면, 스킬 연결을 통해 구현할 수 있습니다.

오늘의 환율을 얻어오는 환율스킬은 있다고 가정하겠습니다. (스킬 개발 가이드>스킬만들기에서 자세히 확인할 수 있습니다.)

스킬 연결을 하기 위해서는 1) 파라미터 설정을 클릭하여 2) 스킬 선택 목록을 펼친 뒤 미리 등록한 스킬 이름을 선택하시면 됩니다. 스킬을 선택하시면 해당 스킬의 최신 버전이 자동으로 선택됩니다. 다른 버전을 원하시면 버전을 선택하실 수 있습니다.

이렇게 스킬을 연결되면 블록이 실행될 때 스킬이 작동하게되며, 그것의 결과를 응답형식 설정에서 이용함으로써 더욱 다양한 응답을 생성할 수 있습니다.

스킬의 결과를 응답형식에서 이용하는 방법으로는 웹훅 객체(webhook)를 통한 방법(스킬 개발 가이드 > 응답 설정을 값으로 사용하기)과 스킬에서 직접 말풍선을 구성해서 응답하는 방법(스킬 개발 가이드 > 응답 설정을 스킬로 사용하기)이 있습니다.

응답설정을 값으로 사용하기

챗봇 관리자센터의 봇 응답형식 설정(말풍선 설정)에서 스킬 서버의 응답값을 텍스트 영역에 사용할 수 있습니다. 기본적으로 {{#webhook.<json_path>}}과 같은 형태로 사용합니다. 아래의 과정을 통해 적용 방법을 확인해봅시다.

Step 1. 스킬 서버에서 응답값 설정

‘Ryan’이라는 유저에 대한 정보가 아래와 같은 값으로 스킬서버에서 응답하도록 설정합니다.

{
  "version": "2.0",
  "data": {
    "msg":"HI",
    "name":"Ryan",
    "position":"Senior Managing Director"
  }
}

Step 2. 챗봇 관리자센터에서 응답형식(말풍선) 선택 및 값 입력

챗봇 관리자센터에서 원하는 봇 응답형식을 선택합니다. 스킬 응답값은 말풍선 종류에 상관없이 텍스트를 입력하는 부분에 적용 가능합니다.

Step 3. 해당 블록을 호출하여 테스트

스킬 응답값이 적용 된 블록의 발화 패턴을 입력하여 결과를 확인해봅니다.

  • List 형태는 지원하지 않습니다.

  • 없는 값의 path를 지정하실 경우 비어있는 텍스트로 출력됩니다.

응답설정을 스킬로 사용하기

텍스트형, 이미지형 등 기본 형식 외에 스킬데이터만을 이용해 응답형식을 설정할 수 있습니다. 아래 이미지와 같이 봇 응답형식을 추가할 때, 기본 제공형태가 아닌 스킬데이터로 사용을 클릭하면 스킬데이터를 응답형식으로 사용할 수 있습니다.

상세한 포맷 및 세부 내용은 스킬 개발 가이드 > 응답 타입별 JSON포맷에서 확인 가능합니다.

블록 Output 컨텍스트 스킬로 제어하기

컨텍스트 정보를 스킬 응답(response)에서 활용하기

스킬 응답에서 ‘Output 컨텍스트’의 정보를 직접 업데이트 할 수 있습니다. 예를 들어 다음과 같은 스킬 응답 포맷이 있다고 하겠습니다.

  • 스킬 응답의 Structure 예시

{
  "version": "2.0",
  "template": {
    ...
  },
  "context": {
    "values": [{
      "name": ...,
      "lifeSpan": ...,
      "params": ...
    },{
      "name": ...,
      "lifeSpan": ...,
      "params": ...
    },
    ...
    ]
  }
}

다음처럼,

  • 복수의 Output 컨텍스트들 중 특정 컨텍스트만 Output 되도록 변경할 수 있습니다. → name

  • 컨텍스트의 수명(lifespan)을 변경할 수 있습니다. → lifeSpan

  • 컨텍스트와 관련해 전달하고 싶은 값을 추가할 수 있습니다. → params

스킬 응답의 Output 컨텍스트에 들어있는 내용이 현재 블록의 Output 컨텍스트란에 존재하는 경우에는, 스킬에 들어있는 값으로 현재 Output 컨텍스트를 덮어쓰기합니다.

Information.

인풋(Input)으로 설정한 컨텍스트가 만료될 경우 해당 블록은 설정된 응답이 아닌 폴백 메시지로 응답하게 됩니다. 폴백 메시지가 설정되어 있지 않으면 빈 말풍선이 나가게 되므로 기본 시나리오> 폴백블록 에서 설정 상태를 확인해 주세요.

컨텍스트 갱신

스킬 응답으로 컨텍스트를 수정하는 경우, 변경하려는 output 컨텍스트가 미리 블록에서 설정되어야 합니다. 스킬 응답의 context 필드는 값을 수정할 뿐, 새로운 output 컨텍스트를 만들 수는 없습니다.

Example.

예를 들어 abc 라는 output 컨텍스트를 블록에서 생성했다면, 스킬 응답으로 abc name을 가지는 context의 lieSpan, params를 수정할 수 있습니다. 하지만 def 라는 output 컨텍스트를 블록에서 생성하지 않은 상황에서, 스킬 응답으로 def라는 name을 가지는 context를 수정한다면 이는 반영되지 않습니다.

ContextControl

context control 필드는 블록에서 생성한 outputContext의 lifeSpan, params 등을 제어할 수 있습니다.

상세 필드

ContextValue 상세 필드

예제 코드

{
  "version": "2.0",
  "context": {
    "values": [
      {
        "name": "abc",
        "lifeSpan": 10,
        "ttl": 60,
        "params": {
          "key1": "val1",
          "key2": "val2"
        }
      },
      {
        "name": "def",
        "lifeSpan": 5,
        "params": {
          "key3": "1",
          "key4": "true",
          "key5": "{\"jsonKey\": \"jsonVal\"}"
        }
      },
      {
        "name": "ghi",
        "lifeSpan": 0
      }
    ]
  }
}
  • abc output 컨텍스트의 lifeSpan을 10, ttl을 60로, params의 key1val1, key2val2를 추가합니다.

  • def name을 갖는 ContextValue의 param처럼, 다른 타입들 또한 stringify 하여 저장할 수 있습니다.

  • ghi name을 갖는 ContextValue처럼, lifeSpan을 0으로 바꿔서 삭제할 수 있습니다.

Last updated