在 JavaScript 中将 Dialogfow 持续时间系统实体从分钟转换为秒

2023-12-30

我正在寻找将 JavaScript 代码中的 Dialogflow 中的 Duration (@sys.duration) 系统实体从几分钟转换为几秒的方法。

我询问用户一段时间,用户可以回答,例如:

  • 20分钟
  • 5分钟

etc.

该输入被保存到变量 the_duration 中。现在要进行某些计算,我需要将其转换为秒。我怎样才能实现这个目标?

编辑:如果我需要从字符串中提取数字,也许会有帮助?我尝试过寻找这种方式,但提供的示例并不真正适用于几分钟内的这种特定情况。


The @sys.duration 系统实体 https://cloud.google.com/dialogflow/docs/reference/system-entities将向您发送一个具有两个属性的对象,“金额”包含一个整数,“单位”包含一个字符串。

所以在 Javascript 中,这将表示为:

{
  "amount": 20,
  "unit": "min"
}

要将其转换为秒,您需要查找提供的“单位”中有多少秒,并将其乘以该数量。

执行此查找的一个好方法是创建一个对象,该对象具有可能的单位名称作为属性和秒数作为值。对于大多数单位来说,这在长达一周的时间里效果很好。然而,当您达到一个月或一年(或更长时间)时,您就会遇到麻烦,因为这些时间段的秒数可能是可变的。为了表示这些,我将它们标记为负数,以便您可以检查转换是否失败。 (我忽略了时钟更改的问题,例如由于夏令时/夏令时。)

我还没有完全测试这段代码,但它似乎是正确的。该函数允许您传递在the_duration参数并返回秒数:

function durationToSeconds( duration ){
  const mult = {
    "s":      1,
    "min":    60,
    "h":      60*60,
    "day":    60*60*24,
    "wk":     60*60*24*7,
    "mo":     -1,
    "yr":     -1,
    "decade": -1
  };
  return duration.amount * mult[duration.unit];
}

从字符串中提取数字当然是可能的,并且您可以调整此函数以这种方式工作,但由于 Dialogflow 已经将其作为具有规范化字符串的对象提供给您,因此这将变得更加困难。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 JavaScript 中将 Dialogfow 持续时间系统实体从分钟转换为秒 的相关文章

随机推荐

  • 实现 Endless RecyclerView

    我想实现一个无尽的 RecyclerView 但到目前为止 我遇到的所有实现和教程都描述了从服务器加载数据 然后加载它或使用循环动态添加元素 就我而言 我已经有一个大的 ArrayList 其中包含我想要在 RecyclerView 中显示
  • SQL Server 索引使用统计信息多久更新一次以及什么触发它?

    还有一些其他类似的问题 但请不要混淆 我知道有一个功能STATS DATE 知道统计数据在哪里更新 这很好 但我想知道是什么触发了该统计数据的更新或截止 我知道也有这样的报告 但上周我看到了某些服务器中的统计数据 它们为我提供了非常好的信息
  • Django:多对多关系的反向列表?

    我在 models py 中有两个简单的模型 Service 和 Host Host services 与 Service 具有 m2m 关系 换句话说 一台主机有多个服务 一个服务可以驻留在多个主机上 基本的 m2m 模型 py clas
  • 有没有办法创建带有两个输入字段的提示?

    有没有办法在 JavaScript 中创建带有两个输入字段的提示 我尝试了该代码 但它对我没有帮助 var a prompt A var b prompt B alert a n b 对于弹出的操作系统或本机浏览器窗口来说这是不可能的 您必
  • mongoDB时域触发器?

    我有一个基于节点的后端 与 mongoDb 实例集成 数据库有一组日历事件 每个事件都有一个唯一的日期时间字段 我正在尝试考虑在设定时间前 15 分钟执行提醒功能的最佳方式 我想到的唯一想法是使用 setInterval 一致地查询数据库
  • Python - 2D列表 - 查找一列中的重复项并对另一列中的值求和

    我有一个二维列表 其中分别包含足球运动员的姓名 他们进球的次数以及他们尝试射门的次数 player stats Adam 5 10 Kyle 12 18 Jo 20 35 Adam 15 20 Charlie 31 58 Jo 6 14 A
  • 将列表样式添加到 p 标签[重复]

    这个问题在这里已经有答案了 我知道这看起来很愚蠢 但我正在尝试将列表样式添加到 p 标签 由于 php 的循环方式 我无法将它们放入 li 标签中 所以我有点想把它们设计得像一个列表 我尝试过这样的事情 taskSubList text i
  • 对于随机浮点集的最佳排序算法是什么?

    我的一位同事今天下午刚刚提出了这个问题 这让我有些好奇 我精通排序算法 但缺乏 compsci compeng 的正式学位 我有点不愿意承认这一点 无法真正把手指放在这个上 p 哦 是的 这只是在 C NET 实现的上下文中 以防万一发生一
  • C++ 数组可以在内存边界结束吗?

    C 标准 以及就此而言的 C 允许创建 但不是取消引用 指向超出数组末尾的一个元素的指针 这是否意味着数组永远不会被分配到其最后一个元素在内存边界结束的位置 我知道在实践中 部分 所有实现可能遵循这一约定 但以下哪一项是正确的 这实际上是错
  • 如何为 CreateProcess() 启动的进程设置区域设置

    当启动一个进程时CreateProcessW 是否可以使用与配置为系统范围默认代码页不同的 MBCP 区域设置 代码页创建进程 在目标进程中 这应该与调用具有相同的效果 setmbcp 目标进程不支持 unicode 并且使用普通的main
  • 如果 REST 应用程序应该是无状态的,那么如何管理会话?

    我需要一些澄清 我一直在阅读有关 REST 的内容 并构建 RESTful 应用程序 根据维基百科 REST 本身被定义为代表性状态转移 因此我不明白这一切无国籍官样文章每个人都在不断吐槽 来自维基百科 在任何特定时间 客户端可以在 应用程
  • 在非 Symfony 项目中使用 Symfony 2 组件?

    为了在 PHP 中获得 XLIFF 2 支持 请在另一个答案 https stackoverflow com a 22057407 282729 有人建议 使用 Symfony 2 翻译组件 所以我下载了来自Github https git
  • ES6中的新规范“块级函数声明”是什么意思?

    我正在查看 es6 兼容性表尝试学习Here https kangax github io compat table es6 block level function note in the bindings部分它说 块级函数声明 除了官方
  • 如何在帧之间保持影片剪辑的颜色?

    我的应用程序有 2 个框架 在第 1 帧中有 5 个 MC 在DOUBLE CLICK事件目标颜色发生变化并转到下一帧 2 在第 2 帧中 我有一个返回到第 1 帧的按钮 当我返回到第 1 帧时如何保持 MC 颜色 public class
  • set -e 和 exec "$@" 对 docker 入口点脚本有什么作用?

    我注意到许多 docker 的entrypoint sh 脚本都会执行以下操作 bin bash set e code exec 什么是set e和exec for 它基本上需要传递给的任何命令行参数entrypoint sh并将它们作为命
  • 是否可以在函数内部定义异常

    在 OCaml 中实现 提前返回 的一种方法是通过异常 exception Exit let myfunc try for i 0 to do if then raise Exit done false with Exit gt true
  • C# 命名空间中的枚举与类中的枚举有什么区别

    我有一个关于枚举的问题 代码如下 namespace space public enum MyEnums Enum1 Enum2 namespace space public class MyClass public enum MyEnum
  • 角度的 $on 和 $broadcast

    我有一个 footerController 和 codeScannerController 具有不同的视图 angular module myApp controller footerController scope function sc
  • jsf 中嵌套 el

    我在嵌套 EL 时遇到问题
  • 在 JavaScript 中将 Dialogfow 持续时间系统实体从分钟转换为秒

    我正在寻找将 JavaScript 代码中的 Dialogflow 中的 Duration sys duration 系统实体从几分钟转换为几秒的方法 我询问用户一段时间 用户可以回答 例如 20分钟 5分钟 etc 该输入被保存到变量 t