Вы наверняка можете. Вот пример:
<?xml version="1.0" encoding="UTF-8" ?>
<dialog xsi:noNamespaceSchemaLocation="WatsonDialogDocument_1.0.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<flow>
<folder label="Main">
Выведите начальное приглашение:
<output>
<prompt>
<item>Write something and I’ll echo it back to you.</item>
</prompt>
</output>
Получить ввод:
<getUserInput>
<input>
<grammar>
<item>(ANYTHING)={anything}</item>
</grammar>
<action varName="anything" operator="SET_TO">{anything.source}</action>
<output>
<prompt>
<item>{anything}</item>
</prompt>
</output>
</input>
</getUserInput>
</folder>
</flow>
Теперь, я думаю, вы попытались зафиксировать входные данные так, как это делает IBM во всех своих примерах. Но этот метод молча отбрасывает многие символы, отличные от ASCII. Это просто не то, как вы хотите захватывать входные данные. (См. этот ответ SO для списка некоторых символов, которые он отбрасывает.)
Вот как я это делаю:
<entities>
<entity name="ANYTHING">
<value>
<grammar>
<item>!.*</item>
</grammar>
</value>
</entity>
</entities>
Восклицательный знак означает, что мы используем регулярное выражение. (Все после !
является регулярным выражением.) Этот метод не отбрасывает столько символов, но отбрасывает <
и >
. Возможно другие. Вы можете использовать этот же скрипт, чтобы узнать, какие символы безопасны.
И, наконец, нам понадобится переменная для захвата.
<variables>
<var_folder name="Home">
<var name="anything" type="TEXT" />
</var_folder>
</variables>
</dialog>
Полный пример см. в этой сути.
person
plindberg
schedule
28.05.2016