是否有人已经知道如何获取用户在Watson的Conversation API中输入的日期? 在Dialog API中,我们可以使用标准实体,如DATE_TIME_RANGE和FROM_DATE,但我找不到任何方式不自行结束添加新的自定义实体。 我想在Dialog API上创建这样的验证:
<input>
<grammar>
<item>$ (IATA)={var-from} * (IATA)={var-to} * (DATE_TIME_RANGE)={var-date1} * (DATE_TIME_RANGE)={var-date2}</item>
<item>$ (IATA)={var-from} * (IATA)={var-to} * (DATE_TIME_RANGE)={var-date1} * (DATE_TIME_RANGE)={var-date2} *</item>
<item>(IATA)={var-from} * (IATA)={var-to} * (DATE_TIME_RANGE)={var-date1} * (DATE_TIME_RANGE)={var-date2} *</item>
<item>(IATA)={var-from} * (IATA)={var-to} * (DATE_TIME_RANGE)={var-date1} * (DATE_TIME_RANGE)={var-date2}</item>
</grammar>
<output id="itinerario">
<action varName="var-from" operator="SET_TO">{var-from.value:main}</action>
<action varName="var-to" operator="SET_TO">{var-to.value:main}</action>
<action varName="var-date1" operator="SET_TO">{var-date1.value:FROM_DATE}</action>
<action varName="var-date2" operator="SET_TO">{var-date2.value:FROM_DATE}</action>
<prompt>
<item>{var-from} {var-to} {var-date1} {var-date2}</item>
</prompt>
</outputt>
答案 0 :(得分:2)
Conversation API还没有该功能。在短期内,一种解决方法可能是使用正则表达式在客户端应用程序中提取日期,并将它们作为上下文变量传递给API。
答案 1 :(得分:2)
您可以使用条件通过
访问特殊节点input.text.matches( '[0-9]+' )
(添加你想要的任何正则表达式) http://www.ibm.com/watson/developercloud/doc/conversation/expression-language.html
提取要提取值的节点中的值。在上下文变量中添加类似
的内容"context": {
"number_extract": "<? input.text.extract('[\\d]+',0) ?>"
}
(你可以在提取中加入你想要的任何正则表达式)
这是您目前与沃森谈话所能做的最好的事情。所以你必须制作自己的正则表达式来解析日期。
我个人使用另一个解决方案,即在watson之前制作一个自定义解析器。 这个人详细介绍了如何使用alchemyAPI
https://kozhayasite.wordpress.com/2016/08/27/watson-conversation-with-alchemy-entity-extraction/