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 |