Watson 对话动态数据变量 input/output
Watson Dialog Dynamic Data variable input/output
我正在尝试构建一个用户将编写的简单对话框:"My name is Joe",
我希望对话框将 userName 变量设置为 "Joe"。
我找到了这个例子,但是响应总是空字符串。
<folder label="Main">
<output>
<prompt selectionType="RANDOM">
<item>Hello, What's your name?
</item>
</prompt>
</output>
<input id="input_2530402">
<grammar>
<item>My name is</item>
<item>my name is (DYNAMIC_DATA)={userName}</item>
<item>mine is (DYNAMIC_DATA)={userName}</item>
<item>(DYNAMIC_DATA)={userName} </item>
<item>(DYNAMIC_DATA)={userName} GiveName</item>
</grammar>
<action varName="userName" operator="SET_TO">{userName.source}</action>
<action varName="Defaulted_Previous" operator="SET_TO_NO"/>
<output>
<prompt>
<item>Hi {userName}!</item>
</prompt>
</output>
</input>
</folder>
变量定义:
<variables>
<var_folder name="Home">
<var name="agentName" type="TEXT" initValue="Alice"
description="The virtual agent's name." />
<var name="userName" type="TEXT" initValue="SomeName" description="The user's name" />
</var_folder>
</variables>
我不希望输入的用户名与句子分开...
有什么建议吗?
谢谢!
您需要有一个实体,例如
<entity name="DYNAMIC_DATA" entityType="GENERIC">
<value name="DataCapture" value="DataCapture">
<grammar>
<item>*</item>
</grammar>
</value>
<entityRules/>
</entity>
我最近做了这样的事情。也许它会有所帮助:
https://github.com/codyburleson/watson-dialogs/blob/master/dialogs/getUserNameAndRespond.xml
我发现的最好方法是改用这个实体:
<entity name="ANYTHING">
<value>
<grammar>
<item>!.*</item>
</grammar>
</value>
</entity>
IBM 的所有示例都包含 DYNAMIC_DATA
东西,但这是一种非常糟糕的捕获数据的方式,因为它会默默地丢失许多字符。
被丢弃的字符示例为 / \ " ! ? ( ) ° . , ; : _ – — > < = @
。例如,尝试捕获电子邮件地址。
然后你使用它以完全相同的方式设置变量。
<grammar>
<item>my name is (ANYTHING)={userName}</item>
</grammar>
<action varName="userName" operator="SET_TO">{userName.source}</action>
上面这个实体所做的就是用正则表达式来捕获任何东西。开头的 !
表示其后的所有内容都是正则表达式。
我正在尝试构建一个用户将编写的简单对话框:"My name is Joe", 我希望对话框将 userName 变量设置为 "Joe"。 我找到了这个例子,但是响应总是空字符串。
<folder label="Main">
<output>
<prompt selectionType="RANDOM">
<item>Hello, What's your name?
</item>
</prompt>
</output>
<input id="input_2530402">
<grammar>
<item>My name is</item>
<item>my name is (DYNAMIC_DATA)={userName}</item>
<item>mine is (DYNAMIC_DATA)={userName}</item>
<item>(DYNAMIC_DATA)={userName} </item>
<item>(DYNAMIC_DATA)={userName} GiveName</item>
</grammar>
<action varName="userName" operator="SET_TO">{userName.source}</action>
<action varName="Defaulted_Previous" operator="SET_TO_NO"/>
<output>
<prompt>
<item>Hi {userName}!</item>
</prompt>
</output>
</input>
</folder>
变量定义:
<variables>
<var_folder name="Home">
<var name="agentName" type="TEXT" initValue="Alice"
description="The virtual agent's name." />
<var name="userName" type="TEXT" initValue="SomeName" description="The user's name" />
</var_folder>
</variables>
我不希望输入的用户名与句子分开... 有什么建议吗?
谢谢!
您需要有一个实体,例如
<entity name="DYNAMIC_DATA" entityType="GENERIC">
<value name="DataCapture" value="DataCapture">
<grammar>
<item>*</item>
</grammar>
</value>
<entityRules/>
</entity>
我最近做了这样的事情。也许它会有所帮助:
https://github.com/codyburleson/watson-dialogs/blob/master/dialogs/getUserNameAndRespond.xml
我发现的最好方法是改用这个实体:
<entity name="ANYTHING">
<value>
<grammar>
<item>!.*</item>
</grammar>
</value>
</entity>
IBM 的所有示例都包含 DYNAMIC_DATA
东西,但这是一种非常糟糕的捕获数据的方式,因为它会默默地丢失许多字符。
被丢弃的字符示例为 / \ " ! ? ( ) ° . , ; : _ – — > < = @
。例如,尝试捕获电子邮件地址。
然后你使用它以完全相同的方式设置变量。
<grammar>
<item>my name is (ANYTHING)={userName}</item>
</grammar>
<action varName="userName" operator="SET_TO">{userName.source}</action>
上面这个实体所做的就是用正则表达式来捕获任何东西。开头的 !
表示其后的所有内容都是正则表达式。