우리는 지난시간까지 트리거에 대한 대부분의 내용을 학습했습니다.

마지막으로 가중치 또는 우선순위 트리거라 불리는 내용에 대해서 배워 보겠습니다. {weight}태그를 가중치 태그라고 이전 시간에 정의했으므로 우선순위 트리거라고 앞으로 설명하겠습니다.

우선순위 트리거는 다른 트리거보다 우선순위가 높습니다.  이는 트리거가 사용자의 메시지와 얼마나 잘 일치 하는지를 임의로 조정하는 데 유용합니다. 다음과 같은 두 가지 트리거가 있다고 가정 해 보겠습니다.

+ google *
- Google search: <a href="http://google.com/search?q=<star>">Click Here</a>

+ * perl script
- You need Perl to run a Perl script.

예제를 실행해서 "google write perl script"라고 메시지를 보내면 우리가 예측하기에는 goolge link를 보여줄 것이라고 생각 할 수 있습니다. 그렇지만 실제를 테스트를 하게 되면 "* perl script" 트리거로 인식해서 응답하는 것을 볼 수 있습니다.

우리는 "+ google *"트리거에 {weight}태그를 추가하여 다른 트리거에 비해 더 중요하게 가중치를 추가 할 수 있습니다. 다음은 트리거에 가중치를 준 예제입니다. 

+ google *{weight=10}
- Google search: <a href="http://google.com/search?q=<star>">Click Here</a>

+ * perl script
- You need Perl to run a Perl script.

기본적으로 가중치를 주지 않은 트리거는 1로 판단됩니다. 그리고 가중치의 값이 높을 수록 더 높은 우선 순위를 가집니다. 0 또는 음수의 값을 가중치로 올 수 없으니 주의 하시기 바랍니다.

'프로그래밍 > RiveScript' 카테고리의 다른 글

[Tutorial] Short Discussions  (2) 2017.03.09
[Tutorial] Redirections  (0) 2017.03.09
[Tutorial] Priority Triggers  (0) 2017.03.08
[Tutorial] Arrays in Triggers  (0) 2017.03.08
[Tutorial] Alternatives and Optionals  (0) 2017.03.07
[Tutorial] TRIGGERS  (0) 2017.03.07

이번 시간에는 배열을 사용하는 방법에 대해서 배워보겠습니다. 아래의 예제를 살펴보면, "what color is my blue shirt?"라고 물어보는 질문에 color와 와일드 카드를 통해서 bot은 응답하도록 되어있습니다.

+ what color is my (red|blue|green|yellow) *
- Your <star2> is <star1>, silly!

()안에 몇가지 color들이 정의된 것을 볼 수 있습니다. 이렇게 사용해도 되지만 color가 필요한 트리거가 몇가지 더 생길 수가 있습니다. 그럼 그때마다 (red|blue|green|yellow)이 내용을 복사해서 붙여넣기 해야되고 그렇게 한다고 하더라도 나중에 black, white등의 color가 새로 추가 될때에는 기존의 스크립트를 다 찾아서 수정하기에는 어려움이 있습니다. 그래서 RiveScript에서는 배열(Arrays)을 통해서 이러한 문제점을 해결 할 수 있습니다. 

배열은 ! array 커멘드를 통해서 정의가 됩니다. 이전 시간에 정의하는 모든 커멘드는 begin.rive에 작성되어야 된다고 설명드렸습니다. 그렇게 때문에 배열 또한 begin.rive에 작성되어야 합니다.

! array colors = red blue green yellow

이제 우리는 배열을 정의할 수 있습니다. 다음 예제를 통해서 배열을 어떻게 활용하는지 알아보겠습니다.

+ what color is my (@colors) *
- Your <star2> is <star1>, silly!
- Do I look dumb to you? It's <star1>!

+ i am wearing a (@colors) shirt
- Do you really like <star>?

예제에서 보시는거와 같이 <star>태그를 사용할 수 있으며 사용하지 않는 경우에는 ()를 제거해주면 됩니다.

// Without parenthesis, the array doesn't go into a <star> tag.
+ what color is my @colors *
- I don't know what color your <star> is.

배열은 optionals에서도 적용할 수 있지만 <star>태그를 안에 사용할 수 는 없습니다. 

왜냐하면 옵션은 생략 가능 하기 때문입니다.

// Arrays in an optional + i am wearing a [@colors] * - Do you really like <star>?

배열을 정의할때 배열 항목을 공백 (단일 단어에 유용함) 또는 파이프 기호 (|)로 구분할 수 있습니다.

// Single word array items
! array colors = red blue green yellow

// Multiple word items
! array blues = light blue|dark blue|medium blue

배열을 정의 할 때 Continuations를 사용하면 각 행의 항목을 공백으로 또는 파이프로 나뉠 수 있습니다. 

// A lot of colors!
! array colors = red blue green yellow orange cyan fuchsia magenta
^ light red|dark red|light blue|dark blue|light yellow|dark yellow
^ light orange|dark orange|light cyan|dark cyan|light fuchsia
^ dark fuchsia|light magenta|dark magenta
^ black gray white silver
^ light gray|dark gray


'프로그래밍 > RiveScript' 카테고리의 다른 글

[Tutorial] Redirections  (0) 2017.03.09
[Tutorial] Priority Triggers  (0) 2017.03.08
[Tutorial] Arrays in Triggers  (0) 2017.03.08
[Tutorial] Alternatives and Optionals  (0) 2017.03.07
[Tutorial] TRIGGERS  (0) 2017.03.07
[Tutorial] The Begin File  (0) 2017.03.07

와일드 카드와 같은 것을 사용하고 싶지만 가능한 단어를 몇 가지로 제한하고 싶다면 어떻게해야할까요? 

몇 가지 예를 통해서 보도록 하겠습니다.

+ what is your (home|office|cell) number
- You can reach me at: 1 (800) 555-1234.

+ i am (really|very|super) tired
- I'm sorry to hear that you are <star> tired.

+ i (like|love) the color *
- What a coincidence! I <star1> that color too!
- I also have a soft spot for the color <star2>!
- Really? I <star1> the color <star2> too!
- Oh I <star1> <star2> too!

이 예에서 사용자는  "what is your home number"또는 "what is your office number"또는 "what is your cell number"라고 말할 수 있습니다. home, office, cell중에서 일치한다면 이에 대응한 응답을 받을 수 있습니다.

또한, 와일드 카드처럼 <star> 태그도 사용할 수 있다는 것입니다. 하나 이상의 옵션을 포함 할 수 있습니다.

+ how [are] you
- I'm great, you?

+ what is your (home|office|cell) [phone] number
- You can reach me at: 1 (800) 555-1234.

+ i have a [red|green|blue] car
- I bet you like your car a lot.

[options]선택 사항이 없어도 트리거가 실행 되도록 합니다. 그렇기 때문에 <star> 태그를 사용 할 수는 없습니다.

optionals로 작성한 트리거를 키워드(keyword) 라고 합니다. 사용자가 메시지에 맞는 또는 생략 가능한 말에 응답할 것입니다.

+ [*] the machine [*]
- How do you know about the machine!?

[*] 옵션을 사용하여 메시지의 일부를 무시할 수 있습니다.



'프로그래밍 > RiveScript' 카테고리의 다른 글

[Tutorial] Priority Triggers  (0) 2017.03.08
[Tutorial] Arrays in Triggers  (0) 2017.03.08
[Tutorial] Alternatives and Optionals  (0) 2017.03.07
[Tutorial] TRIGGERS  (0) 2017.03.07
[Tutorial] The Begin File  (0) 2017.03.07
[Tutorial] FIRST STEPS - Line Breaking  (0) 2017.03.06

+ Recent posts