wit.ai + 基于插槽的机器人 + 在客户端中保存实体值

2023-12-27

我正在尝试 wit.ai 中的示例,链接如下:https://wit.ai/Nayana-Manchi/CreditCardApp/stories https://wit.ai/Nayana-Manchi/CreditCardApp/stories

第一个故事“BalanceEnquiry”是一个基于老虎机的故事。快乐的场景效果很好。要测试“cardnumbermissing”分支,我会输入“我希望卡上有我的信用卡余额,我的名字是 Nayana”。这里是卡号最后 4 位数字丢失。它要求输入卡的最后 4 位数字,然后我会输入卡的最后 4 位数字。但这里它没有获取之前消息中发送的名称实体。

如何保存上一步发送的实体值“name”?它应该保留实体值名称,并且应该从当前对话中获取输入的最后 4 位数字,然后显示硬编码的余额。

代码和附加的图像。

如果您分享配方的客户端代码 (javascript),将会很有帮助 - 构建基于插槽的机器人。

'use strict';

let Wit = null;
let interactive = null;
try {
    // if running from repo
    Wit = require('../').Wit;
    interactive = require('../').interactive;
} catch (e) {
    Wit = require('node-wit').Wit;
    interactive = require('node-wit').interactive;
}

const accessToken = (() => {
    if (process.argv.length !== 3) {
        console.log('usage: node examples/creditcardbalance.js <wit-access-token>');
        process.exit(1);
    }
    return process.argv[2];
})();

// Quickstart example
// See https://wit.ai/ar7hur/quickstart

const firstEntityValue = (entities, entity) => {
    const val = entities && entities[entity] &&
      Array.isArray(entities[entity]) &&
      entities[entity].length > 0 &&
      entities[entity][0].value
    ;
    if (!val) {
        return null;
    }
    return typeof val === 'object' ? val.value : val;
};

const actions = {
    send(request, response) {
        const {sessionId, context, entities} = request;
        const {text, quickreplies} = response;
        return new Promise(function(resolve, reject) {
            console.log('sending...', JSON.stringify(response));
            return resolve();
        });
    },
    getBalance({context, entities}) {
    return new Promise(function(resolve, reject) {
        var name = firstEntityValue(entities, "name");
        var last4digit = firstEntityValue(entities, "Last4digits");
        
        if (name && last4digit) {
            context.name = name;
            context.last4digit = last4digit;
            context.balance = 'Rs.10000' + name + last4digit; // we should call a credit card API here
            delete context.cardnumbermissing;
        }
        else {
            context.cardnumbermissing = true;
            context.name = name;
            delete context.balance;
        }
        return resolve(context);
    });
},
};

const client = new Wit({accessToken, actions});
interactive(client);
// JavaScript source code

我遇到了类似的问题,发生的情况是firstEntityValue仅从初始对话中提取,因此每次调用它来设置变量时,我实际上都会删除以前的变量。我必须让函数了解上下文,并且如果已经存在上下文,则不要使用firstEntityValue 设置这些变量。

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

wit.ai + 基于插槽的机器人 + 在客户端中保存实体值 的相关文章

  • Selenium - 保存网站,包括所有图像、css、dom

    我想使用 firefox 或 chrome 访问带有 selenium 的页面 当页面加载时 我想从页面下载所有图像 css dom 我想存储每张图像 就像我在其中找到它们一样 chrome gt Tools gt Development
  • 将变换值添加到元素上已有的当前变换中?

    假设我有一个div那有translateX and translateY动态添加的值 div class object child0 style width 50px height 50px 我想添加rotateY 20deg 到当前的变换
  • 如何使用 java/vb 脚本调用自定义 ActiveX dll 中的方法

    我使用 VB6 创建了一个 ActiveX dll 并使用打包和部署向导将其打包 生成了一个 cab 文件和一个演示 HTML 页面 此 ActiveX dll 包含一个 simgle 方法 该方法返回字符串且不接受任何参数 我遇到的麻烦是
  • 等待 JavaScript 中 Json 调用完成

    我正在使用下面的json调用在我的 javascript 方法中 function go123 var cityName var temp getJSON https abc in api city callback args functi
  • 如何检索 jquery $.ajax 对象的responseJSON属性[重复]

    这个问题在这里已经有答案了 我有这个 JavaScript ajax ajax type GET url DBConnect php data dataType json success function data error functi
  • 在 HTML SELECT 标记中禁用键盘

    我想禁用 HTML SELECT 标记的键盘 以便用户只能使用鼠标来选择选项 我试过了event cancelBubble true on the onkeydown onkeyup and onkeypress没有运气的事件 有任何想法吗
  • IE 9 的子元素不透明,我无法使用 captify 阻止它

    好的 我正在使用一段名为 Captify 的 javascript 它为您的图像添加了一个带有文本的小弹出窗口 适用于所有接受 IE9 的浏览器 IE9 会淡化弹出 div 中的所有内容 我已阅读其子元素问题 但无法修复它 由于在网上任何地
  • JavaScript 中的常用数字

    在我的任务中 我必须编写一个程序来查找数组中最常见的数字以及它重复的次数 我写了一些东西 但只打印最大重复次数 所以我的问题是如何打印这个元素的值 最大数量 在我的例子中是 4 var array 13 4 1 1 4 2 3 4 4 1
  • Angular 2 最终版本路由器单元测试

    如何使用 karma 和 jasmine 对 Angular 2 0 0 版中的路由器进行单元测试 这是我的旧单元测试在版本 2 0 0 beta 14 中的样子 import it inject injectAsync beforeEac
  • 如何滚动到 jQuery Mobile 中的页面元素?

    我有一个很长的 jQuery 移动页面 并且想在页面加载后滚动到该页面中间的元素 到目前为止 我已经尝试了一些事情 最成功的是 jQuery document bind mobileinit function var target if t
  • HTML5 拖放 - 没有透明度?

    当我将一个元素拖放到页面上时 该元素会变成 幻影 基本上它获得了一些透明度值 有什么办法可以做到吗opacity 1 看来是做不到了 拖动的元素被放入具有自己的不透明度 低于 1 的容器中 这意味着虽然您可以降低拖动元素的不透明度 但您无法
  • Node.js 和 Express:异步操作后如何返回响应

    我是 Node js 新手 所以我仍然对异步函数和回调很感兴趣 我现在的难题是如何在异步操作中从文件读取数据后返回响应 我的理解是发送回复的工作方式如下 这对我有用 app get search function req res res s
  • Firefox OS 后台服务

    我想构建一个应用程序 用户可以通过它输入一些设置 并且应用程序将启动后台服务来根据这些设置执行一些任务 我只想在模拟器中运行应用程序和后台服务 我知道它需要 认证 模式才能运行后台服务 但我现在不考虑在 Firefox Marketplac
  • Typeahead.js 干扰 Bootstrap 输入组

    如何防止 Typeahead js 拆分我的 Twitter Bootstrap 3 输入组 每当我将 Typeahead javascript 指向属于输入组一部分的文本区域时 连接的文本区域和提交按钮就会停止连接 这只是 Typeahe
  • 如何在流程图中间隔刻度线?

    我下面有一个流程图 您将看到标签被压缩 我想使刻度之间的宽度确保显示所有标签 标记如下 div div class graph info a href span span a a href class active span span a
  • 检查 href 中是否存在 jQuery 中的查询字符串

    我目前有一段 jQuery 用于附加带有一些位置信息的 URL jQuery a attr href function return this href location 123 abc 我的问题是大多数链接都有一个 其中使用上面的 就可以
  • 为什么严格模式下不允许使用八进制数字文字(解决方法是什么?)

    为什么八进制数字文字不允许JavaScript 严格模式 https developer mozilla org en docs Web JavaScript Reference Strict mode 有什么害处呢 use strict
  • 如何在变量名中使用变量

    所以我正在使用这样的 json 变量 opponentInvData item1 它包含项目 1 到 6 我需要动态访问不同的项目并将它们设置为空 itemNum 是我需要访问的特定项目 我正在尝试使用 eval 函数 var itemNu
  • JavaScript 数组中的负索引是否会影响数组长度?

    在javascript中我定义了一个像这样的数组 var arr 1 2 3 我也可以做 arr 1 4 现在如果我这样做 arr undefined 我也失去了对值的引用arr 1 所以对我来说 从逻辑上来说 arr 1 也是arr 但是
  • 使用 Promise 语法编写同步代码有什么好处吗?

    有同步承诺这样的概念吗 使用 Promise 语法编写同步代码有什么好处吗 try foo bar a b bam catch e handleError e 可以写成类似的东西 但使用同步版本then foo then bar bind

随机推荐

  • 有没有办法让我们自己的应用程序上传其崩溃报告?

    不确定这是否可能 但发生的情况是 有时我们的应用程序会随机崩溃 我们不知道问题到底是什么 有没有办法让我们从用户的 iPhone 上获取崩溃报告 通过代码 还是通过其他应用程序 Thanks 您可以在应用程序中注入第三方代码 这基本上会保存
  • 上一页 窗口焦点 / Electron

    目前我正在为一个棘手的问题而挠头 我刚刚开始使用电子 到目前为止一切顺利 但是 当窗口被隐藏时 它是一个带有快捷方式的弹出窗口 当您按 Enter 键时该窗口就会消失 我想将焦点返回到前一个窗口 我使用的是 Mac 菜单栏显示了我以前的应用
  • 需要帮助弄清楚如何在 Spring Boot Java 应用程序中从 yml 加载嵌套列表

    我有一个像这样的 yaml 文件设置 system locators first com 103 105 second com 105 我想将其加载为 autowired配置看起来像这样 Autowired List
  • Capybara & Rspec:如何删除帐户?

    我正在使用 Devise 并为用户删除自己的帐户的场景编写测试 但我对如何调用确认框并单击 确定 感到困惑 这是链接和我的测试 p p 规范 请求 user spec rb scenario user deletes account do
  • 编写一个读取示例文件的 R 包小插图?

    我正在尝试为 R 中的包编写一个小插图 我一直在关注范德比尔特大学的教程 http biostat mc vanderbilt edu wiki Main HowToCreateAnRPackage也官方文档 http cran r pro
  • 字符数组和指针的区别

    我在两个代码中都做了同样的事情 在代码1中 我使用了char 并使用分配空间malloc in main 在代码2中 我使用了char出于相同目的的数组 但为什么输出不同呢 Code 1 struct node2 int data char
  • 如何检查多个订阅是否达到 onComplete()?

    我在 Angular 6 组件中有两个订阅 现在我想在这两个订阅达到 onComplete 时立即启动一个方法 我怎样才能以最简单的方式做到这一点 Use forkJoin https www learnrxjs io learn rxjs
  • 运行 Qt 单元测试

    看着 并且在另一个 Stackoverflow 答案 https stackoverflow com questions 1524390 qt what unit testing framework 3804999 3804999因为我不想
  • Angular 组件的自定义 CSS 属性

    我有一个封装图片轮播的 Angular 组件 如果使用 host 选择器使自己成为一个 Flexbox 并使用 ngFor 为通过 Input 属性传递给它的图片数组中的每个图片重复一个 img 标签 我有两个相关的问题 1 我想让图片的样
  • Python 和 SSL——EOF 发生违反协议

    我正在尝试通过 Python 登录该网站 我有以下代码 import sys sys path append ClientCookie 1 3 0 import ClientCookie sys path append ClientForm
  • 测试方法不确定:测试未运行。错误?

    我有一个测试类 下面我发布了测试类的示例测试 namespace AdminPortal Tests Controller Test Customer TestClass public class BusinessUnitControlle
  • 聚合具有相同 ID 的行并仅保留 R 中唯一的条目

    我是 R 的初学者 我的 R 数据框如下 Id Values A 0 d Low 5524 Low 6412 Hi 50567 A 0 d Low 5509 Low 6412 Low 6897 Hi 16021 A 0 d Low 5524
  • 在 Sinatra 中间件中访问会话

    我正在开发一个 Sinatra 项目 并在会话中设置了一些变量以供以后使用 我需要帮助的场景是我想访问中间件类中的会话对象 我正在使用典狱长进行身份验证 我想在 Middleware 类中做类似的事情 class MyMiddleware
  • 如何防止 iPhone NSNumberFormatter 舍入?

    我正在尝试像这样格式化大的货币数字 NSNumber testVal NSDecimalNumber decimalNumberWithString 999999999999999993 00 NSNumberFormatter forma
  • 扫描仪 nextLine() 有时会跳过输入

    这是我的代码 Scanner keyboard new Scanner System in System out print Last name lastName keyboard nextLine System out print Fir
  • NSDocument 和 CoreData 是可能的组合,还是 NSPersistentDocument 是唯一的方法?

    我正在制作一个应用程序 为我学校的人们创建课程时间表 这是我对应用程序的粗略设计 我希望我的 NSDocument 子类代表个人的时间表 这个想法是 他们打开一个文档 并且可以将池中的课程添加到他们的时间表中 然后保存 共享 打开等 因此时
  • 如果将最小正浮点值乘以非零数,是否能保证得到非零结果?

    如果我采取epsilon是最小的正非零浮点数 可以是16 32 or 64位 并乘以epsilon由相同大小的非零浮点值 我能保证非零结果 of the 相同的标志和原来一样 价值 或者我是否会冒舍入误差 零或切换符号 的风险 环境 Pyt
  • 使用 ServiceLoader 动态加载插件 jar

    我正在尝试为我的应用程序创建一个插件系统 并且我想从一些简单的事情开始 每个插件都应该打包在一个 jar 文件中并实现SimplePlugin界面 package plugintest public interface SimplePlug
  • 直到某一天为止?

    我想让 rand Between 函数只返回一个随机数 直到特定的一天 然后停止更改 有没有办法在 googlesheets 中实现这一点 IF today
  • wit.ai + 基于插槽的机器人 + 在客户端中保存实体值

    我正在尝试 wit ai 中的示例 链接如下 https wit ai Nayana Manchi CreditCardApp stories https wit ai Nayana Manchi CreditCardApp stories