1

我正在尝试构建一个用户将写入的简单对话框:“我的名字是 Joe”,并且我希望 Dialog 将 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>

我不希望将用户名输入与句子分开......有什么建议吗?

谢谢!

4

3 回答 3

2

您需要有一个实体,例如

<entity name="DYNAMIC_DATA" entityType="GENERIC">
    <value name="DataCapture" value="DataCapture">
        <grammar>
            <item>*</item>
        </grammar>
    </value>
    <entityRules/>
</entity>
于 2016-03-17T15:52:29.240 回答
2

我最近做了这样的事情。也许它会有所帮助:

https://github.com/codyburleson/watson-dialogs/blob/master/dialogs/getUserNameAndRespond.xml

于 2016-03-18T04:10:11.230 回答
1

我发现最好的方法是改用这个实体:

<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>

上述实体所做的是使用正则表达式来捕获任何内容。!开头的意思是它后面的所有内容都是正则表达式。

于 2016-05-28T08:33:31.930 回答