지금까지 우리는 RiveScript의 TAG에 대해서 공부 했습니다.
우리가 공부했던 태그의 예는 <star>
, <get>
, {topic}
입니다.
실제로는 이 보다 더 많은 태그가 있고 우리는 이를 사용할 수 있습니다!
이번에는 우리가 배우지 않은 태그와 태그 사용 방법을 배워보겠습니다.
태그는 일반적으로 화살괄호(<>)안에 태그를 입력하는 형태로 사용이 되며 중괄호({})는 주변의 텍스를 수정하는데 사용이 됩니다. 태그는 일반적으로 특별히 명시된 경우를 제외하고 모든 RiveScript 명령과 함께 사용할 수 있습니다.
<botstar>
,<botstar1>
-<botstarN>
이 <star>태그는 와 비슷하지만 % Previous에 있는 와일드 카드를 가져옵니다. 다음은 그 예입니다.
+ i bought a new * - Oh? What color is your new <star>? + (@colors) % oh what color is your new * - <star> is a pretty color for a <botstar>.
실제로 실행해보면 <botstar>태그는 이전의 트리거에 표시된 즉 %에 사용된 와일드카드를 가지고 오게 됩니다. "i bought a new car"라고 입력하게 되면 car = <star>가 됩니다. 그리고 "blue"라고 컬러 값을 입력 했을 때 blue = <star>가 되지만 이전에 car = <botstar>가 되게 됩니다. 잘 이해가 안 될 수도 있지만 자주 사용하다보면 어떤 식으로 구동하는지 잘 알 수 있을 것입니다. 물론 와일드 카드 수에 따라서 <botstar1>로 사용할 수 있습니다.
<input>
,<reply>
<input>, <reply> 태그는 사용자 및 봇이 각각 보낸 이전 메시지를 표시하는데 사용됩니다. 이전의 9개 메시지까지가 저장이 되며 <input1> 에서 <input9>까지 <reply1>에서 <reply9>까지 사용이 가능합니다. 다음은 태그가 사용되는 몇가지 예제입니다.
// If the user repeats the bot's previous message + <reply> - Don't repeat what I say. // If the user keeps repeating themselves over and over. + <input1> * <input1> == <input2> => That's the second time you've repeated yourself. * <input1> == <input3> => If you repeat yourself again I'll stop talking. * <input1> == <input4> => That's it. I'm not talking.{topic=sorry} - Please don't repeat yourself. // An example that uses both tags + why did you say that - I said, "<reply>", because you said, "<input>".
- <id>
<id>는 기본적으로 localuser이며 RiveScript는 사용자 ID를 통해서 여러 사용자를 구분합니다. 동일한 RiveScript 인터프리터를 사용하여 여러 사용자에 대한 응답을 제공 할 수 있으며 ID를 기반으로 사용자 변수를 별도로 유지합니다. 다음은 일반 사용자와 관리자를 구분하는 방법의 예입니다.
! var master = kirsle + am i your master * <id> == <bot master> => Yes, you are. Hi Kirsle! - No, <bot master> is my master, and you are <id>.
- <bot>
<bot>태그는 봇 변수를 검색하는데 사용됩니다. 또한 봇 변수를 설정하는데 사용할 수도 있습니다. 봇 변수는 RiveScript 인터프리터 인스턴스에 대해 "전역"으로 간주 될 수 있습니다. 즉, 봇의 이름을 Aiden으로 설정하면 사용자의 ID와 상관없이 요청하는 모든 사람의 이름이 Aiden이됩니다. 이것은 특정 사용자 ID에 연결된 사용자 변수와 대조됩니다.
+ what is your name - You can call me <bot name>. + tell me about yourself - I am <bot name>, a chatterbot written by <bot master>. // Setting a bot variable dynamically + i hate you - Aww! You've just ruined my day.<bot mood=depressed>
- <env>
<env> 태그는 전역 변수를 검색하는 데 사용됩니다. 또한 전역 변수를 설정할 때도 사용할 수 있습니다.
예를 들어 RiveScript 인터프리터가 모든 환경 변수를 RiveScript 전역으로 복사하면 CGI 기반 RiveScript 봇이 사용자에게 자신의 IP 주소를 알릴 수 있습니다.
+ what is my ip - Your IP address is: <env REMOTE_ADDR>
다음은 전역변수를 설정하는 방법에 대한 예제입니다. 이 예제에서 관리자는 디버그 모드를 켜거나 끌 수 있습니다.
+ set debug mode (true|false) * <id> == <bot master> => <env debug=<star>>Debug mode set to <star>. - You're not my master.
<add>
,<sub>
,<mult>
,<div>
이 태그는 숫자 변수를 각각 더하거나 빼거나 곱하거나 나눌 수 있습니다.
+ give me 5 points - <add points=5>You have been given 5 points. Your balance is: <get points>.
정의되지 않는 변수 예를 들어 points를 사용하면 기본 0으로 초기화됩니다. 그리고 숫자가 아닐시에는 오류가 발생합니다. 또한 이 태그는 + Trigger와 함께 사용할 수는 없습니다.
<formal>
, <sentence>
, <uppercase>
, <lowercase>
<formal>은 각 단어의 첫글자를 대문자로 만듭니다.
<sentence>는 첫 단어를 대문자로 만듭니다.
<uppercase>
, <lowercase>
전체 문자열을 대문자 또는 소문자로 만듭니다.
- <call>
이 태그는 매크로를 호출하는 데 사용됩니다.
// Call a macro named "reverse" and give it an argument + say * to me in reverse - <call>reverse <star></call>
다만 이 예제는 우리가 배우지 않은 "Object Macros"에 해당 되는 내용이기 때문에 자세한 내용은 다음에 다루도록 하겠습니다.
'프로그래밍 > RiveScript' 카테고리의 다른 글
[Tutorial] CONCLUSION (0) | 2017.03.09 |
---|---|
[Tutorial] MORE DEFINITIONS (0) | 2017.03.09 |
[Tutorial] The Begin Block (0) | 2017.03.09 |
[Tutorial] Topics (0) | 2017.03.09 |
[Tutorial] Conditionals (0) | 2017.03.09 |