如何阻止Dialogflow CX将对象渲染为datetime?IS_PAST_TIME使用遇阻求助
Dialogflow CX 判断嵌套Datetime是否为过去时间的解决办法
针对你遇到的嵌套datetime参数无法被IS_PAST_TIME正确识别的问题,可以试试以下几种方案:
直接传入嵌套参数路径
不要使用系统自动渲染的日期字符串,直接把嵌套的datetime对象作为IS_PAST_TIME的输入参数,比如:$sys.func.IS_PAST_TIME($parameters.getOrders.orders[0].cutOffTime)Dialogflow CX原生支持识别嵌套结构里的datetime类型对象,只要参数本身的类型定义正确,这个方法应该能生效。
手动构造Datetime对象传入
如果直接传路径不行,就提取嵌套字段的各个时间分量,手动构造符合要求的datetime结构,注意把字符串类型的分钟转成数字:$sys.func.IS_PAST_TIME({ "year": $parameters.getOrders.orders[0].cutOffTime.year, "month": $parameters.getOrders.orders[0].cutOffTime.month, "day": $parameters.getOrders.orders[0].cutOffTime.day, "hours": $parameters.getOrders.orders[0].cutOffTime.hours, "minutes": $sys.func.TO_NUMBER($parameters.getOrders.orders[0].cutOffTime.minutes), "seconds": $parameters.getOrders.orders[0].cutOffTime.seconds })检查并修正参数类型定义
进入Dialogflow CX的参数配置页面,找到getOrders参数,确保其嵌套结构里的cutOffTime和deliveryDate字段被设置为datetime类型,而不是默认的object或string。参数类型定义错误会导致系统自动把对象转成字符串,进而让IS_PAST_TIME无法正确处理。用临时参数中转
新建一个会话级或页面级的临时参数(比如tempCutOffTime),类型设为datetime,然后将其值设置为$parameters.getOrders.orders[0].cutOffTime,之后再用这个临时参数调用IS_PAST_TIME:$sys.func.IS_PAST_TIME($parameters.tempCutOffTime)
内容的提问来源于stack exchange,提问作者emmas90
相关产品推荐
相关产品推荐

