Ibm cloud 如何从Watson';什么是对话API?

Ibm cloud 如何从Watson';什么是对话API?,ibm-cloud,ibm-watson,watson-dialog,watson-conversation,Ibm Cloud,Ibm Watson,Watson Dialog,Watson Conversation,有没有人已经知道如何在Watson的对话API中获取用户输入的日期? 在对话框API中,我们可以使用标准实体,如DATE\u TIME\u RANGE和FROM\u DATE,但我找不到任何方法不结束自己添加新的自定义实体。 我想在Dialog API上以这种方式创建验证: <input> <grammar> <item>$ (IATA)={var-from} * (IATA)={var-to} * (DATE_TIME_RANGE)={var-dat

有没有人已经知道如何在Watson的对话API中获取用户输入的日期? 在对话框API中,我们可以使用标准实体,如DATE\u TIME\u RANGE和FROM\u 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>

$(IATA)={var from}*(IATA)={var to}*(日期时间范围)={var-date1}*(日期时间范围)={var-date2}
$(IATA)={var from}*(IATA)={var to}*(日期时间范围)={var-date1}*(日期时间范围)={var-date2}*
(IATA)={var from}*(IATA)={var to}*(日期时间范围)={var-date1}*(日期时间范围)={var-date2}*
(IATA)={var from}*(IATA)={var to}*(日期时间范围)={var-date1}*(日期时间范围)={var-date2}
{var from.value:main}
{var to.value:main}
{var-date1.值:FROM_DATE}
{var-date2.value:FROM_DATE}
{var from}{var to}{var-date1}{var-date2}

对话API还没有该功能。短期内,一种解决方法可能是使用正则表达式在客户端应用程序中提取日期,并将其作为上下文变量传递给API

您可以使用条件访问具有

input.text.matches( '[0-9]+' )
(添加您想要的任何正则表达式)

要提取节点中的值,请提取该值。在上下文变量中添加如下内容

"context": {
    "number_extract": "<? input.text.extract('[\\d]+',0) ?>"
}
“上下文”:{
“数字\u摘录”:”
}
(您可以在摘录中放入任何想要的正则表达式)

这是您目前在watson对话中能做的最好的事情。因此,您必须创建自己的正则表达式来解析日期

我个人使用的另一个解决方案是在watson之前制作一个自定义解析器。 这家伙详细说明了如何使用炼金术


你好,大卫。我发现可以使用condition节点中的input.text.matches函数验证正则表达式。所以我现在使用input.text.matches(“^\d{4}-\d{2}-\d{2}$”)来验证2006-01-01是否为日期格式。