시스템 엔티티
바로 사용할 수 있도록 IBM에서 제공하는 시스템 엔티티에 대해 자세히 알아보십시오. 이러한 기본 제공 유틸리티 엔티티는 어시스턴트가 대화에서 고객이 일반적으로 사용하는 용어 및 참조(예: 숫자 및 날짜)를 인식하는 데 도움을 줍니다.
대화 상자에 시스템 엔티티를 추가하는 방법에 대한 정보는 엔티티 만들기를 참고하세요.
@sys-currency 엔티티
@sys-currency 시스템 엔티티는 사용자 입력에서 화폐 통화 값에 대한 멘션을 발견합니다. 통화는 통화 기호 또는 통화 특정 용어로 표현할 수 있습니다. 두 경우 모두 숫자가 리턴됩니다.
인식되는 형식
- 20 cents
- Five dollars
- $10
속성
.literal: 입력에서 화폐 멘션으로 해석되는 정확한 구입니다..numeric_value: 기본 단위로 된, 유형이 정수 또는 실수인 표준 숫자입니다..location: 화폐 멘션으로 해석되는 구의 텍스트 문자열에 있는 첫 번째 및 마지막 문자의 인덱스 요소 값을 나열합니다..unit: 3자리 ISO 통화 코드로 지정된 통화 단위. 예를 들어,USD또는EUR입니다.
다음 표는 각 속성이 사용자 입력에서 캡처하는 정보를 보여줍니다.
| 속성 | 유형 | 예제(입력 = twenty dollars) |
예제(입력 = $1,234.56) |
|---|---|---|---|
| @sys-currency | 문자열 | 20 |
1234.56 |
| @sys-currency.literal | 문자열 | twenty dollars |
$1,234.56 |
| @sys-currency.numeric_value | 수 | 20 |
1234.56 |
| @sys-currency.location | 배열 | [0,14] |
[0,9] |
| @sys-currency.unit | 문자열 | USD |
USD |
veinte euro (스페인어로는 twenty euro ) 또는 €1.234,56 를 입력하면 @sys-currency는 다음과 같은 값을 반환합니다
| 속성 | 유형 | 입력은 veinte euro임 |
입력은 €1.234,56임 |
|---|---|---|---|
| @sys-currency | 문자열 | 20 | 1234.56 |
| @sys-currency.literal | 문자열 | veinte euro | €1.234, 56 |
| @sys-currency.numeric_value | 수 | 20 | 1234.56 |
| @sys-currency.location | 배열 | [0,11] | [0,9] |
| @sys-currency.unit | 문자열 | EUR | EUR |
지원되는 다른 언어 및 국가 통화에 대해서도 동등한 결과가 리턴됩니다.
@sys-currency 사용 팁
@sys-currency 엔티티를 노드 조건으로 사용하고 사용자가 $0을 값으로 지정하면, 값이 통화로 올바르게 인식되지만 조건은 통화 0이 아닌 숫자 0으로 평가됩니다. 결과적으로 조건에서 null이 false로 평가되고 노드는 처리되지 않습니다. 0을 올바르게 처리하는 방식으로 통화 값 여부를 확인하려면 노드 조건에서 @sys-currency OR @sys-currency == 0 표현식을 대신 사용하십시오.
언어별로 인식되는 통화에 대한 자세한 정보는 통화 지원의 내용을 참조하십시오.
@sys-date
@sys-date 시스템 엔티티는 사용자 입력에서 날짜 멘션을 발견합니다. 날짜 값은 yyyy-MM-dd 형식의 문자열로 저장됩니다. 예를 들어, May 8 멘션은 "2020-05-08"로 저장됩니다. 시스템은 날짜의 누락된 요소(예: "May 8"의 연도)를 현재 날짜 값으로
보완합니다.
사용자 입력란에 유효하지 않은 날짜를 입력하면, @sys-date 시스템 엔티티가 해당 날짜를 인식하지 못하고, " Invalid date " 오류를 표시합니다.
언어를 영어로 선택하면 시스템은 미국 영어( en-us )를 로케일로 사용합니다. 미국 영어 로케일의 경우, 날짜 형식은 MM/DD/YYYY입니다. 처음 두 숫자가 12보다 큰 경우에만 날짜의 형식이 DD/MM/YYYY로 변경됩니다. 저장된 값의 형식은 yyyy-MM-dd입니다.
인식되는 형식
- 금요일
- 오늘
- May 8
속성
.alternatives: 입력이 해석 가능할 때 대체 날짜 값을 저장합니다. 일반적으로 미래 날짜는@sys-date값으로 리턴됩니다. 모호성이 있는 경우 과거 날짜가 대체 날짜로 저장됩니다.in January입력의 경우, 미래 날짜가 리턴됩니다. 그러나 2월(올해 1월이 지남)이 되면 지난 1월도 대체 날짜로 리턴됩니다. 또한 수정자 없이 지정되는 평일에 대해서도 대체 날짜가 제공됩니다. 예를 들어,Are you open Wednesday?입력의 경우, 미래 날짜가 저장되지만 이전 수요일 날짜가 있는 대체 날짜도 작성됩니다. 로케일에 따라 다른 의미를 가질 수 있는 수정자(예:next,this또는last)를 포함하는 문구에 대해 대체 날짜가 작성됩니다. watsonx Assistant 서비스는last및next날짜가 참조된 가장 가까운 마지막 날 또는 다음 날을 나타내는 것으로 간주되며 이 날짜는 같은 주나 이전 주의 날일 수 있습니다. 일부 수정자의 경우 현재 요일에 따라 대체 날짜가 작성되거나 작성되지 않습니다. 예를 들어, 입력에this Wednesday가 포함될 수 있습니다. 월요일이면 미래 날짜가 저장되고 대체 날짜가 작성되지 않습니다. 그러나 수요일이면 날짜는 다음 주의 수요일로 간주되지만 오늘 날짜는 대체 날짜로 저장됩니다. 각 대체 날짜는 각 대체 날짜에 대한 값 및 신뢰도를 포함하는 오브젝트로 저장됩니다. 대체 날짜 오브젝트는 JSON 배열로 저장됩니다. 대체 값을 가져오려면@sys-date.alternative구문을 사용하십시오..calendar_type: 사용 중인 시간대의 달력 유형을 지정합니다. 지원되는 유형은GREGORIAN뿐입니다..datetime_link: 날짜 및 시간 멘션을 참조하십시오..day: 날짜 중 일 부분을 리턴하는 헬퍼 메소드입니다..day_of_week: 날짜 중 요일 부분을 소문자 문자열로 리턴합니다..festival: 로케일 특정 휴일 이름을 인식하고Thanksgiving,Christmas및Halloween과 같이 다가오는 휴일의 날짜를 리턴합니다. 예제의 조건에서(@sys-date.festival == 'thanksgiving') 휴일 이름을 지정해야 하는 경우 모든 소문자를 사용하십시오. 인식된 휴일에 대한 자세한 정보는 축제를 참조하십시오..granularity: 시간 범위 멘션을 인식합니다. 옵션으로는day,weekend,week,fortnight,month,quarter및year가 있습니다..interpretation: 어시스턴트가 반환하는 객체로서, 시스템 엔티티 분류기의 정확도를 높이는 새로운 필드를 포함합니다. 필드를 참조하는 데 사용하는 표현식에서interpretation을 생략할 수 있습니다. 예를 들어, 해석 객체에서festival필드의 값에 액세스하려면 약어 구문<? @sys-date.festival ?>를 사용하면 됩니다..literal: 입력에서 날짜로 해석되는 정확한 구입니다..location: 날짜로 해석되는 구의 텍스트 문자열에 있는 첫 번째 및 마지막 문자의 인덱스 요소 값입니다..month: 날짜 중 월 부분을 리턴하는 헬퍼 메소드입니다..range_link: 있는 경우, 사용자 입력에 날짜 범위가 포함되어 있음을 나타냅니다. 날짜 범위를 포함하는 문자열의 시작 및 종료 인덱스 값은 링크 이름의 일부로 저장됩니다. 범위 관계에서 각@sys-date가 하는 역할을 포함하는 추가 정보가 제공됩니다. 예를 들어 시작 날짜는date_from의 역할 유형을, 종료 날짜는date_to유형의 역할을 갖습니다. 역할 값을 확인하기 위해서@sys-date.role?.type == 'date_from'구문을 사용할 수 있습니다. 사용자 입력이 범위를 포함하지만 한 개의 날짜만 지정되는 경우range_link특성은 리턴되지 않지만 한 역할 유형은 리턴됩니다. 예를 들어, 사용자가Have you been open since yesterday를 요청하는 경우입니다. Yesterday의 날짜는@sys-date멘션으로 인식되고date_from유형 역할이 리턴됩니다. 범위 식별을 트리거하는 입력의 단어를 식별하는range_modifier도 리턴됩니다. 이 예에서 수정자는since입니다..relative_{timeframe}: 사용자 입력에서 상대적인 날짜 값에 대한 멘션을 인식하고 캡처합니다. 현재와 지정된 날짜 사이의 단위 수를 표시하는 숫자를 리턴합니다. {time frame} 단위는 다음과 같습니다.year,month,week,weekend, 또는day..specific_{timeframe}: 사용자 입력에서 특정 날짜 단위에 대한 멘션을 인식하고 캡처합니다. {time frame} 단위는 다음과 같습니다.year,quarter,month,day, 또는day_of_week..year: 날짜 중 연도 부분을 리턴하는 헬퍼 메소드입니다.
다음 표는 각 속성이 사용자 입력에서 캡처하는 정보를 보여줍니다.
| 속성 | 유형 | 예 |
|---|---|---|
| @sys-date | 문자열 | 입력이 May 13, 2020인 경우 2020-05-13을 리턴합니다. |
| @sys-date.alternatives | 배열 | 예를 들어, 오늘 날짜가 2019년 3월 1일( 10 March 2019 )이고 사용자가 2019년 3월 1일( on March 1 )을 입력하면, 내년 1st 가 2019년 3월 1일( @sys-date ( 2020-03-01 ))로 저장됩니다. 그러나 사용자는 1st 의미할 수도 있습니다. 시스템은 또한 올해의 날짜(2019-03-01)를
대체 날짜 값으로 저장합니다. 또 다른 예로, 오늘이 화요일이고 사용자가 this Tuesday 또는 next Tuesday라고 입력하면 @sys-date가 다음 주 화요일 날짜로 설정되고 대체 날짜가 작성되지 않습니다. |
| @sys-date.calendar_type | 문자열 | 모든 날짜 멘션에 대해 GREGORIAN을 리턴합니다. |
| @sys-date.datetime_link | 문자열 | 해당사항 없음 |
| @sys-date.day | 문자열 | 입력이 13 May 2020인 경우 13을 리턴합니다. |
| @sys-date.day_of_week | 문자열 | 입력이 13 May 2020이고 수요일인 경우, wednesday를 리턴합니다. |
| @sys-date.festival | 문자열 | 입력에 Thanksgiving Day가 포함된 경우, 2020-11-26이 리턴됩니다. |
| @sys-date.granularity | 문자열 | 입력에 next year가 언급된 경우, year를 리턴합니다. |
| @sys-date.literal | 문자열 | 입력이 I plan to leave on Saturday.인 경우, on Saturday가 리턴됩니다. |
| @sys-date.location | 배열 | 입력이 My vacation starts tomorrow.인 경우 [19, 27]을 리턴합니다. |
| @sys-date.month | 문자열 | 입력이 13 May 2020인 경우 5을 리턴합니다. |
| @sys-date.range_link | 문자열 | 예를 들어 입력은 I will travel from March 15 to March 22일 수 있습니다. 발견되는 각 @sys-date 엔티티에는 해당 출력에 range_link 특성이 있으며, 그 이름은 date_range_14_39와 같이 지정되고 이 경우 날짜 범위 텍스트의 위치는 [14,39]입니다.
시작 날짜(2020-05-15)의 역할 유형은 date_from입니다. 종료 날짜(2020-05-22)의 역할 유형은 date_to입니다. |
| @sys-date.relative_{timeframe} | 수 | 입력이 two weeks ago인 경우 relative_week = -2을 리턴합니다. 입력이 this weekend인 경우 relative_weekend = 0을 리턴합니다. 입력이 today인 경우, relative_day = 0을 리턴합니다. |
| @sys-date.specific_{timeframe} | 문자열 | 2020의 경우 specific_year = 2020을 리턴합니다. Q2 2020 또는 second quarter 2020의 경우, specific_quarter = 2를 리턴합니다. March의 경우 specific_month = 3을 리턴합니다. Monday의
경우, specific_day_of_week = monday를 리턴합니다. May 3rd의 경우 specific_day = 3을 리턴합니다. |
| @sys-date.year | 문자열 | 입력이 13 May 2020인 경우 2020을 리턴합니다. |
@sys-time
@sys-time 시스템 엔티티는 사용자 입력에서 시간의 멘션을 발견합니다. 사용자 입력에 지정된 시간을 HH:mm:ss 형식으로 리턴합니다. 예를 들면, "13:00:00"에 대해 1pm을 리턴합니다.
인식되는 형식
- 2pm
- 4시에
- 15:30
속성
.alternatives@sys-time로 저장된 시간 이외의 시간을 캡처합니다. 사용자가 시간을 명확하게 표시하지 않았을 때 의미할 수 있는 값입니다. 대체 값은 각 대체 시간의 값 및 신뢰도를 포함하고 JSON 배열에 저장되는 오브젝트로 저장됩니다. 대체 값을 가져오려면@sys-time.alternative구문을 사용하십시오..calendar_type: 사용 중인 시간대의 달력 유형을 지정합니다. 지원되는 유형은GREGORIAN뿐입니다..granularity: 시간 범위의 멘션을 인식합니다. 옵션은hour,minute,second,instant입니다..hour: 시간에 지정된 시간을 숫자 값으로 리턴하는 헬퍼 메소드입니다..interpretation: 어시스턴트가 반환하는 객체로서, 시스템 엔티티 분류기의 정확도를 높이는 새로운 필드를 포함합니다. 필드를 참조하는 데 사용하는 표현식에서interpretation을 생략할 수 있습니다. 예를 들어, 해석 객체에서granularity필드의 값에 액세스하려면 약어 구문<? @sys-time.granularity ?>를 사용하면 됩니다..literal: 입력된 문장 중 시간으로 해석되는 정확한 구절..location: 시간 멘션으로 해석되는 구의 텍스트 문자열에 있는 첫 번째 및 마지막 문자의 인덱스 요소 값을 나열합니다..minute: 시간에 지정된 분 값을 리턴하는 헬퍼 메소드입니다..part_of_day: 하루 중 시간을 나타내는 용어(예:morning,afternoon,evening,night, 또는now)를 인식합니다. 또한 하루의 각 파트에 대한 시간 범위를 설정합니다. 응답에는 두 개의@sys-time값이 포함됩니다. 하나는 시작 값이고 다른 하나는 시간 범위 종료 값입니다. 엔터티 배열에는range_link및time-from역할 유형의time-to오브젝트가 포함됩니다. 하루 중 다른 시간대의 시간 범위는 로케일에 따라 다를 수 있습니다. 미국 영어의 경우, 오전은6:00:00-12:00:00입니다. 오후는12:00:00-18:00:00입니다. 야간은18:00:00에서22:00:00까지입니다. 밤은22:00:00to23:59:59입니다. 밤은 자정 직전에 끝납니다. 그렇지 않으면@sys-date로 측정되는 새 날과 겹칠 수 있기 때문입니다..range_link: 있는 경우, 사용자 입력에 시간 범위가 포함되어 있음을 나타냅니다. 시간 범위를 포함하는 문자열의 시작 및 종료 인덱스 값은 링크 이름의 일부로 저장됩니다. 범위 관계에서 각@sys-time가 하는 역할을 포함하는 추가 정보가 제공됩니다. 예를 들어 시작 시간은time_from의 역할 유형을, 종료 시간은time_to유형의 역할을 갖습니다. 역할 값을 확인하기 위해서@sys-time.role?.type == 'time_from'구문을 사용할 수 있습니다. 사용자 입력이 범위를 포함하지만 한 개의 시간만 지정되는 경우range_link특성은 리턴되지 않지만 한 역할 유형은 리턴됩니다. 범위 식별을 트리거하는 입력의 단어를 식별하는range_modifier도 리턴됩니다..relative_{timeframe}: 상대적인 시간 멘션을 인식하고 현재와 지정된 시간 사이의 단위 수를 표시하는 숫자를 리턴합니다. {timeframe} 단위는hour,minute또는second일 수 있습니다..second: 시간에 지정된 초 값을 리턴하는 헬퍼 메소드입니다..specific_{timeframe}: 사용자 입력에서 특정 시간 단위에 대한 멘션을 인식하고 캡처합니다. {timeframe} 단위는hour,minute또는second일 수 있습니다.
다음 표는 각 속성이 사용자 입력에서 캡처하는 정보를 보여줍니다.
| 속성 | 유형 | 예 |
|---|---|---|
| @sys-time | 문자열 | 6:30 PM 입력의 경우, 18:30:00을 리턴합니다. |
| @sys-time.alternatives | 배열 | 사용자가 The meeting is at 5라고 말하면 시스템은 시간을 5:00:00 또는 5 AM으로 계산하고 @sys-time으로 저장합니다. 그러나 사용자는 17:00:00 또는 5 PM 를 의미할 수도 있습니다. 시스템은 또한 나중 시간을 대체 시간 값으로 저장합니다.
사용자가 The meeting is at 5pm을 입력하면 @sys-time이 17:00:00으로 설정되고 오전과 오후의 혼동이 없으므로 대체 값이 작성되지 않습니다. |
| @sys-time.calendar_type | 문자열 | 모든 시간 멘션에 대해 GREGORIAN을 리턴합니다. |
| @sys-time.granularity | 문자열 | 입력이 now인 경우 instant을 리턴합니다. 3 o'clock 또는 noon의 경우, hour를 리턴합니다. 17:00:00의 경우 second을 리턴합니다. |
| @sys-time.hour | 수 | 입력에 5:30:10 PM이 포함된 경우, 오후 5시를 표시하기 위해 17을 리턴합니다. |
| @sys-time.literal | 문자열 | The store closes at 8PM 입력의 경우, at 8PM을 리턴합니다. |
| @sys-time.location | 배열 | The store closes at 8PM 입력의 경우, [17, 23]을 리턴합니다. |
| @sys-time.minute | 수 | 입력에서 시간 5:30:10 PM이 언급되는 경우, 30을 리턴합니다. 분을 지정하지 않으면 헬퍼가 0을 리턴합니다. |
| @sys-time.part_of_day | 문자열 | 입력이 this morning인 경우 두 개의 @sys-time 값, 6:00:00 및 12:00:00을 리턴합니다. 또한 range_link 및 time-from 역할 유형의 time-to 오브젝트도 리턴합니다. |
| @sys-time.range_link | 문자열 | Are you open from 9AM to 11AM 입력의 경우, 두 개의 @sys-time 엔티티가 발견됩니다. 발견되는 각 @sys-time 엔티티에는 해당 출력에 range_link 특성이 있습니다. 범위가 내포되어 있지만 시간 값이 하나만 제공되면 @sys-time 값이 하나만 리턴됩니다.
Are you open until 9PM 입력의 경우, 9PM은 @sys-time 멘션으로 인식되고 time_to 유형 역할이 리턴됩니다. 이 예제에서 range_modifier는 until입니다. |
| @sys-time.relative_{timeframe} | 수 | 5 hours ago의 경우 relative_hour = -5을 리턴합니다. in two minutes의 경우, relative_minute = 2를 리턴합니다. in a second의 경우, relative_second = 1을 리턴합니다. |
| @sys-time.second | 수 | 입력에서 시간 5:30:10 PM이 언급되는 경우, 10을 리턴합니다. 초 값을 지정하지 않으면 헬퍼가 0을 리턴합니다. |
| @sys-time.specific_{timeframe} | 문자열 | at 5 o'clock의 경우 specific_hour = 5을 리턴합니다. at 2:30의 경우, specific_minute = 30를 리턴합니다. 23:30:22의 경우, specific_second = 22을 리턴합니다. |
날짜 및 시간 멘션
일부 사용자 입력에는 날짜 및 시간 정보를 포함하는 정보를 포함됩니다. 어시스턴트는 두 값을 모두 캡처하여 하나는 @sys-date, 하나는 @sys-time의 서로 다른 두 엔티티 멘션으로 저장합니다.
날짜 값과 시간 값 간의 관계는 두 가지 방식으로 설정됩니다.
- 관계에 참여하는 각 엔티티가 동일한
datetime_link속성을 포함합니다. - 입력에 함께 언급될 때 전체 날짜 및 시간에 걸친 리터럴 문자열은 두 엔티티 모두에 대해 동일합니다.
datetime_link이름에 위치 정보가 추가됩니다.
인식되는 형식
- 현재
- two hours from now
- on Monday at 4pm
속성
.datetime_link: 이 옵션이 선택되어 있다면, 사용자의 입력 내용에 날짜와 시간이 함께 언급되어 있다는 것을 의미하며, 이는 날짜와 시간이 서로 관련되어 있음을 의미합니다. 날짜 및 시간을 포함하는 문자열의 시작 및 종료 인덱스 값은 링크 이름의 일부로 저장됩니다.
다음 표는 각 속성이 사용자 입력에서 캡처하는 정보를 보여줍니다.
| 속성 | 유형 | 예 |
|---|---|---|
@sys-date.datetime_link 및 @sys-time.datetime_link |
문자열 | 입력 내용이 다음과 같다면, Are you open today at 5?, 그러면 today 은 위치 [13,18] 에서 날짜 언급( 2020-05-21 )으로 인식되고, at 5 은 위치 [19,23] 에서 시간 언급( 05:00:00 )으로 인식됩니다.
날짜 및 시간 멘션 둘 다를 포괄하는 [13,23] 위치 값이 결과적으로 datetime_link에 추가됩니다. 이름이 datetime_link_13_23으로 지정되고 @sys-date 및 관계에 참여하는 @sys-time 엔티티의 출력에 포함됩니다. |
시간대
현재 시간과 관련된 날짜나 시간의 언급은 선택한 시간대에 대해 해결됩니다. 기본적으로 시간대는 그리니치 표준시입니다. 따라서 다른 시간대에 있는 REST API 클라이언트는 now가 입력에서 언급되면 협정 세계시(UTC)를 가져옵니다.
선택적으로 REST API 클라이언트는 로컬 시간대를 컨텍스트 변수 $timezone으로 추가할 수 있습니다. 이 컨텍스트 변수는 모든 클라이언트 요청과 함께 보내야 합니다. 예를 들어, $timezone 값은 America/Los_Angeles, EST 또는 UTC일 수 있습니다. 지원되는 시간대의 전체 목록은
지원되는 시간대를 참조하십시오.
$timezone 변수가 제공되면, 상대적인 @sys-date 와 @sys-time 멘션의 값은 협정 세계시(Coordinated Universal Time)가 아닌 클라이언트 시간대를 기준으로 계산됩니다.
날짜 및 시간 값 처리에 대한 정보는 날짜 및 시간 메소드 참조를 참조하십시오.
@sys-number 엔티티
@sys-number 시스템 엔티티는 사용자 입력에서 숫자 멘션을 발견합니다. 숫자는 숫자 또는 단어로 작성할 수 있습니다. 두 경우 모두 숫자가 리턴됩니다.
인식되는 형식
- 21
- twenty one
- 3.13
속성
.literal: 입력에서 수로 해석되는 정확한 구입니다..location: 수로 해석되는 텍스트 문자열에 있는 첫 번째 및 마지막 문자의 인덱스 요소 값입니다..numeric_value: 정수 또는 실수인 표준 숫자 값입니다..range_link: 있는 경우, 사용자 입력에 숫자 범위가 포함되어 있음을 나타냅니다. 범위를 지정하는 텍스트의 위치 값이 링크 이름에 추가됩니다. 범위 관계에서 각@sys-number가 하는 역할을 포함하는 추가 정보가 제공됩니다. 예를 들어 시작 숫자는number_from의 역할 유형을, 종료 숫자는number_to유형의 역할을 갖습니다. 역할 값을 확인하기 위해서@sys-number.role?.type == 'number_from'구문을 사용할 수 있습니다.
다음 표는 각 속성이 사용자 입력에서 캡처하는 정보를 보여줍니다.
| 속성 | 유형 | 예 |
|---|---|---|
| @sys-number | 문자열 | 입력이 twenty인 경우 20을 리턴합니다. 입력이 1,234.56인 경우 1234.56을 리턴합니다. |
| @sys-number.literal | 문자열 | 입력이 twenty인 경우, twenty를 리턴합니다. 입력이 1,234.56이면 1,234.56을 리턴합니다. |
| @sys-number.location | 배열 | 입력이 twenty인 경우 [0,6]을 리턴합니다. 입력이 1,234.56인 경우 [0,8]을 리턴합니다. |
| @sys-number.numeric_value | 수 | 입력이 twenty인 경우 20을 리턴합니다. 입력이 1,234.56인 경우 1234.56을 리턴합니다. |
| @sys-number.range_link | 문자열 | 입력이 I'm interested in 5 to 7.인 경우, 발견된 두 @sys-number 시스템 엔티티 각각은 출력에 range_link의 number_range_18_24를 가집니다. 첫 번째 @sys-number 엔티티(5)에는 number_from 역할 유형이 있습니다. 마지막 @sys-number 엔티티(7)에는 number_to 역할 유형이 있습니다. |
@sys-number 사용 팁
-
@sys-number 엔티티를 노드 조건으로 사용하고 사용자가 0을 값으로 지정하면, 0 값이 숫자로 올바르게 인식됩니다. 그러나 0은 조건에 대한
null값으로 해석되며, 이는 노드가 처리되지 않게 합니다. 0을 올바르게 처리하는 방식으로 수 여부를 확인하려면 노드 조건에서@sys-number == 0표현식도 사용하십시오. 사용할 전체 표현식은@sys-number OR @sys-number == 0입니다. -
@sys-number를 사용하여 조건에서 숫자 값을 비교하는 경우 숫자의 존재에 대한 검사를 별도로 포함해야 합니다. 숫자가 없는 경우 @sys-number는 널로 평가됩니다. 숫자가 없는 경우에도 비교가 true로 평가될 수 있습니다.
예를 들어, 숫자가 없으면
@sys-number항목이 널로 평가되므로@sys-number<4만 사용하지 마십시오. 널이 4보다 작으므로, 숫자가 없더라도 조건은 true로 평가됩니다.(@sys-number OR @sys-number == 0) AND @sys-number < 4항목을 대신 사용하십시오. 숫자가 없는 경우 첫 번째 조건이 false로 평가됩니다. 결과적으로 전체 조건이 false로 평가됩니다.
숫자 값 처리에 대한 자세한 정보는 숫자 메소드 참조를 참조하십시오.
@sys-percentage 엔티티
@sys-percentage 시스템 엔티티는 사용자 입력에서 백분율 멘션을 발견합니다. 백분율은 백분율 기호가 있는 발화(utterance)로 표시되거나 percent 단어를 사용하여 기록할 수 있습니다. 어느 경우에나 숫자 값이 리턴됩니다.
인식되는 형식
- 15%
- 10 percent
속성
.literal: 입력에서 백분율로 해석되는 정확한 구입니다..location: 백분율 멘션으로 해석되는 텍스트 문자열에 있는 첫 번째 및 마지막 문자의 인덱스 요소 값입니다..numeric_value: 정수 또는 실수인 표준 숫자 값입니다..range_link: 있는 경우, 사용자 입력에from 2 to 3 percent와 같은 범위가 포함되어 있음을 의미합니다. 범위를 지정하는 텍스트의 위치 값이 링크 이름에 추가됩니다. 범위 관계에서 각@sys-percentage가 하는 역할을 포함하는 추가 정보가 제공됩니다. 예를 들어 시작 숫자는number_from의 역할 유형을, 종료 숫자는number_to유형의 역할을 갖습니다. 역할 값을 확인하려면@sys-percentage.role?.type == 'number_from'구문을 사용할 수 있습니다.
다음 표는 각 속성이 사용자 입력에서 캡처하는 정보를 보여줍니다.
| 속성 | 유형 | 예 |
|---|---|---|
| @sys-percentage | 문자열 | 입력에 1,234.56%가 포함된 경우 1234.56을 리턴합니다. |
| @sys-percentage.literal | 문자열 | 입력에 50 percent가 포함된 경우 50 percent를 리턴합니다. |
| @sys-percentage.location | 배열 | 입력에 from 2 to 3 percent가 포함된 경우 [0,19]을 리턴합니다. |
| @sys-percentage.numeric_value | 수 | 입력에 50 percent가 포함된 경우 50을 리턴합니다. |
| @sys-percentage.range_link | 문자열 | 입력에 from 2 to 3 percent가 포함된 경우 number_range_0_19을 리턴합니다. |
@sys-percentage 사용 팁
-
@sys-percentage 엔티티를 노드 조건으로 사용하고 사용자가
0%항목을 값으로 지정하는 경우 값이 적절하게 백분율로 인식되지만 조건은 0% 백분율이 아닌 숫자 0으로 평가됩니다. 결과적으로 조건에서null이 false로 평가되고 노드는 처리되지 않습니다. 0을 올바르게 처리하는 방식으로 백분율 여부를 확인하려면 노드 조건에서@sys-percentage OR @sys-percentage == 0을 대신 사용하십시오. -
1-2%와 같은 값을 입력하는 경우 값1%및2%가 시스템 엔티티로 리턴됩니다.
조건에서 시스템 엔티티 사용
#Customer_Care_Store_Hours 인텐트를 조건으로 하는 노드에서 새 시스템 엔티티 특성을 사용하는 조건부 응답을 추가하여 사용자가 요청하는 내용에 따라 상점 시간에 대한 약간 다른 응답을 제공할 수 있습니다.
실제 대화에서는 이러한 조건부 응답을 모두 사용하고 싶지 않을 수 있습니다. 여기서는 가능한 것을 설명하기 위해 설명되어 있습니다.
| 조건부 응답 조건 구문 | 설명 | 예제 응답 텍스트 |
|---|---|---|
@sys-date.festival == 'thanksgiving' |
고객이 특별히 추수감사절의 시간을 묻고 있는지 확인합니다. | 우리는 추수 감사절에 필요한 사람들에게 무료 식사를 제공합니다. |
@sys-date.festival |
고객이 다른 특정 휴일의 시간을 묻고 있는지 확인합니다. | 우리는 크리스마스 당일, 7월 4일, 대통령의 날에 문을 닫습니다. 다른 휴일에는 오전 10시부터 오후 5시까지 문을 엽니다. |
@sys-time.part_of_day == 'night' |
사용자가 입력에서 하루 중 시간으로 밤을 멘션하는 용어를 포함하는지 여부를 확인합니다. | 우리는 늦게까지 열지 않습니다. 대부분 오후 9시에 닫습니다. |
@sys-date.datetime_link && input.text.contains('today') && now().sameOrAfter(@sys-time) |
입력에 today at 8 등의 구문이 포함되어 있는지 확인합니다. 또한 발견된 @sys-time에서 현재 시간인지 여부를 확인합니다. 값이 <? @sys-time.plusHours(12) ?>인 $new_time 변수를 작성하는 조건부 응답에 컨텍스트 변수를 추가할 수 있습니다. 이 방법을 사용하여 정오에 Are you open today at 8 를 묻는 사용자가 의미하는 가장 가능성이 높은 시간을 캡처하는 날짜 변수를 작성할 수 있습니다. 시스템은 사용자가 8PM 아니라 8AM 의미한다고 가정합니다. |
You mean today at $new_time, correct? |
@sys-time.range_link && entities[0].role?.type == 'time_from' && entities[1].role?.type == 'time_to' |
입력에 시간 범위가 포함되어 있는지 확인합니다. 이 조건은 또한 entities 배열에 나열된 첫 번째 @sys-time 시스템 엔티티가 시작 시간이고 두 번째 엔티티가 종료 시간임을 확인한 후에 응답에 포함합니다. |
<? entities[0] ?> 및 <? entities[1] ?>사이에 열고, 정확한지 알고 싶나요? |
@sys-time && entities.size() < 2 && entities[0].role?.type == 'time_to' |
입력이 @sys-time 역할 유형이 있는 하나의 time_to 멘션을 포함하는지 여부를 확인합니다. 사용자 입력이 이 조건과 일치하면 사용자가 개방형 시간 범위의 종료 시간을 지정했음을 의미합니다. 예를 들어, 입력 Are you open until 9pm? 에 의해 응답이 트리거됩니다. 이 입력은 시간 범위에서 하나의 시간만 식별하고 멘션에 time_to 역할이 있으므로 일치합니다. |
지금부터(<? now().reformatDateTime('h:mm a') ?>) <? @sys-time.reformatDateTime('h:mm a') ?>까지를 의미합니까? |
@sys-date.day_of_week == 'sunday' |
사용자가 요청하는 특정 날짜가 일요일인지 여부를 확인합니다. | 우리는 일요일에는 문을 닫습니다. |
@sys-date.specific_day_of_week == 'monday' && @sys-date.alternative |
사용자가 조회에서 Monday 요일을 언급했는지 여부를 확인합니다. 예를 들어, Are you open Monday입니다. 조건은 또한 대체 날짜가 저장되었는지를 확인합니다. 대체 날짜는 어시스턴트가 사용자가 어느 월요일을 의미하는지 전적으로 확신하지 못할 때 작성되므로 대체 월요일의 날짜들도 저장합니다. 사용자가 요일을 지정하면 어시스턴트는 사용자가 다가오는 요일을 의미한다고
가정합니다(다음 월요일). 발견된 대체 값을 사용하여 의도한 날짜를 두 번 확인하는 응답을 추가할 수 있습니다. 이 경우 대체 날짜는 이전 월요일의 날짜입니다. |
Do you mean @sys-date or @sys-date.alternative? |
true |
상점 시간 정보에 대한 기타 요청에 응답합니다. | We're open from 9AM to 9PM Monday through Saturday. |