프로그래밍/RiveScript

[Tutorial] TRIGGERS

프리월드 2017. 3. 7. 19:29

Open-Ended Triggers

기존에는 "hello bot"이라는 트리거가 입력이 되어야 지만 정상적인 응답이 이루어 졌습니다. "hello there" 또는 "hello robot"등과 말 할 수 있지만 오직 "hello bot"이라는 트리거에만 응답합니다.

이번에 배울 기능의 핵심은 바로 와일드카드(Wildcards)입니다. 와일드 카드를 사용한 트리거에 일부 단어를 무한대로 표현할 수 있습니다. 아래 예제를 살펴 보겠습니다.

+ my name is *
- Nice to meet you, <star1>!

+ * told me to say *
- Why would <star1> tell you to say "<star2>"?
- Did you say "<star2>" after <star1> told you to?

+ i am * years old
- A lot of people are <star1> years old.

예제 트리거를 통해 사용자는 "My name is martin"또는 "I 've 20 years old"라고 말할 수 있으며 RiveScript는 이 메시지를 모두 일치시킬 수 있습니다. 와일드 카드는 이름이나 숫자와 같은 "가변"데이터를 포함 할 수있는 메시지를 일치시키는 데 매우 유용합니다. 아래의 예제를 보겠습니다.

+ where is *
- Where it belongs.
- Where you left it.
- Where the heart is.

이러한 방법은  봇이 주제에 대해 가짜 지식(fake knowledge)을 가질 수 있도록 도와줍니다.

와일드 카드(*)를 사용하면 일반적인 질문(이름,나이 등)에 대한 트리거를 작성 할 수 있습니다. 

또한 트리거에 없는 질문을 있더라도 적어도 그 주제에 맞는 일반적인 응답을 줄 수 있습니다. 

예제에서 이미 눈치채셨겠지만 <star1>과 <star2>태그는 응답시에 와일드 카드와 일치하는 단어를 반복 할 수 있습니다.

하나의 와일드 카드만 있는 경우에는 번호를 제거한 <star>태그를 사용할 수 있습니다.

+ who is *
- I don't know who <star> is.

Catch-All Trigger

일치하는 트리거가 없을 때 RiveScript는 "ERR: No Reply Matched"라고 응답합니다. 우리는 와일드 카드를 사용해서 모든 응답에 대응하는 트리거를 작성 할 수 있습니다.

+ *
- I'm not sure how to reply to that.
- Try asking your question a different way.
- Let's change the subject.

사용자의 메시지가 트리거와 일치하지 않았을때 에러 표시를 제거 할 수 있습니다.

Specialized Wildcards

와일드 카드는 유용한 기능입니다. 그렇지만 무조건적인 와일드 카드가 문제가 될 경우가 있습니다. 예를 들어 나이를 물을 때 "i am * years old"일때 숫자로 24를 표현할 수 있지만 문자로 "I am twenty four years old"도 동일한 응답을 하게 됩니다. 

여기에서 우리는 2가지 심볼을 통해서 숫자와 문자를 구별 할 수 있습니다. #는 숫자와 일치하는 와일드 카드이고 _는 숫자를 제외한 공백과 문자와 일치하는 와일드 카드 심볼입니다. 아래 예제에서 보듯이 똑같아 보이지만 서로 다른 심볼을 통해서 여러 개의 트리거를 가질 수 있으며 원하는 방식대로 동작 가능하게 할 수 있습니다.

+ i am # years old
- A lot of people are <star> years old.

+ i am _ years old
- Tell me that again but with a number this time.

+ i am * years old
- Can you use a number instead?

사용하는 심볼 타입에 관계 없이 <star>태그는 사용 가능합니다.

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

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