Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为Amazon Lex调度bot检测并解析格式为“2-4pm”的时间范围_Javascript_Regex_String_Amazon Lex - Fatal编程技术网

Javascript 为Amazon Lex调度bot检测并解析格式为“2-4pm”的时间范围

Javascript 为Amazon Lex调度bot检测并解析格式为“2-4pm”的时间范围,javascript,regex,string,amazon-lex,Javascript,Regex,String,Amazon Lex,简短版本:如果用户输入我将从下午2点到4点离开办公室,或者我将从明天上午10点到中午离开办公室,我如何隔离时间范围,以便我可以在仪表板上分割它,并将其作为开始和结束时间进行处理 长版本,以防其他解决方案起作用: 我正在开发一个Amazon Lex机器人,用于办公室外的日程安排。我的发言是用类似于我将从{StartTime}到{EndTime}不在办公室的短语进行设置的,如果用户以下午2点到4点的格式键入时间,这将非常有效。然而,一些用户说我将从下午2-4点甚至更糟的是上午10点离开办公室。因为L

简短版本:如果用户输入我将从下午2点到4点离开办公室,或者我将从明天上午10点到中午离开办公室,我如何隔离时间范围,以便我可以在仪表板上分割它,并将其作为开始和结束时间进行处理

长版本,以防其他解决方案起作用:

我正在开发一个Amazon Lex机器人,用于办公室外的日程安排。我的发言是用类似于我将从{StartTime}到{EndTime}不在办公室的短语进行设置的,如果用户以下午2点到4点的格式键入时间,这将非常有效。然而,一些用户说我将从下午2-4点甚至更糟的是上午10点离开办公室。因为Lex语句的格式必须像可以对Alexa等大声说话的句子一样,它不允许您使用破折号,所以我不能创建像{StartTime}-{EndTime}这样的语句来告诉它以这种格式预期日期


我已经设置了Lambda验证函数,以便对用户的输入进行自定义处理,但我不确定如何隔离该字符串片段,以便将其解析到我的开始时间和结束时间段中。

如果您正在查找正则表达式:

\b(\w+)\s*-\s*(\w+)\b

简短回答:创建一个lambda来进行预处理。如果您查看Lex中意图的顶部,您会发现一个“Lambda初始化和验证”字段。如果设置此选项,它将把sessionAttributes传递给指定的Lambda函数。在那里,您可以按照bot需要的方式进行操作并返回插槽类型:我已经设置了一个Lambda来进行预处理-问题是如何进行此特定的预处理,因为我不确定如何将所需的数据从其周围的字符串中分离出来。您可以尝试使用正则表达式来匹配时间。没有“简单的方法”可以做到这一点。你必须建立逻辑。谢谢!对它进行了一点修改,以允许:例如12:00pm,并使其成为单个捕获组:/\b?:[\w\:]+\s*-\s*?:[\w\:]+\b/i