首页
学习
活动
专区
圈层
工具
发布

深入理解Amazon Alexa Skill(三)

Alexa内功能的授权 Alexa会发给skill用户的token,然后skill代码使用这个token来访问Web API访问用户的Alexa内的功能,如list等。...app显示让用户登录第三方系统(门锁公司)的界面。 用户输入用户名密码登录成。 用户被重定向回Alexa app的界面。 当用户关联成功后,Alexa就获得并存储代表了用户的access token。...Alexa给skill的每个请求中,都会携带这个token方便你skill来使用访问第三方系统。由此产生几个疑问:Alexa是如何获得到token,并关联到这个Alexa账户的?...但是,还需要设置一个client_secret,这个secret是存在Alexa云的,Alexa在获得到code后(谁都可以声称自己是Alexa的这个skill来获得code),Alexa使用code+...skill发出的推送),同时进行该用户Alexa账号和第三方云账号的关联。

3.2K40

AVS之Notifications概述

原文地址 译者:远方的自由 转载请注明出处: http://blog.csdn.net/z2066411585 通知指示告知用户, Alexa skill和Domains提供了新的内容,当发送通知时...该图说明了用户启用和检索通知的端到端流程: 1.Enable : 用户使用Amazon Alexa应用程序启用Alexa skill和通知 2.Generate : Alexa skill生成发送到基于云端的队列通知...用户如何启用通知 用户能够使用Amazon Alexa App 选择通过每个 Alexa skill的通知,并在通过其产品上的视觉和音频指示器检索到新信息提醒用户.有三种启用通知的方法: - 用户可以启动特定...Alexa技能的通知,当它第一次通过Alexa Skills Store.启用 - Alexa引导用户访问Amazon Alexa App的页面,在那里用户可以启用当前正在使用的Alexa skill...的通知 - 用户可以随时使用Amazon Alexa App启用或禁用Alexa skill的通知,导航到Settings > Account > Notifications并打开或关闭通知

1.8K00
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Nodejs深度探秘:event loop的本质和异步代码中的Zalgo问题

    在每个阶段,主线程会从对应队列中获取数据返回给客户端,或者是将存储在队列中的回调函数进行执行,当队列清空,或者访问的队列元素超过给定值后就会进入下一个阶段。...从上图可以看出,所有时钟相关的回调都在Timer阶段执行,例如代码使用setTimer, setInterval等接口时,NodeJS会把时钟请求提交给操作系统,一旦时钟结束后,操作系统会通知NodeJS...第二个阶段是操作系统在某项情况下需要通知特定事件给NodeJS,例如TCP连接请求被拒绝,数据库连接失败等;idle阶段属于nodejs内部使用,主线程会执行一些nodejs内部特定回调函数执行一些内部事务...readFile进行异步读取,如果缓存已经存在,那么cb对应的回调函数将直接执行,因此cb有可能在执行时存在不同上下文环境,这种情况很容易导致代码出现问题,例如创建文件zalgo.mjs,实现代码如下:...这给我们的教训是,在代码中要不全部使用异步模式,要不就同步模式,决不能两种交叉混合使用。

    1.6K10

    《Node.js 极简教程》 东海陈光剑

    这个传递到队列中的回调函数在堵塞任务运行结束后才被线程调用。...优点 高并发(最重要的优点) 适合I/O密集型应用 RESTful API npm,前后端分离 缺陷 回调模式下的异步是有明显缺陷的,程序的执行顺序必须依靠回调来保证,没有层层回调,就没有可以保障的逻辑顺序...npm 简介 NPM是随同NodeJS一起安装的包管理工具,能解决NodeJS代码部署上的很多问题,常见的使用场景有以下几种: 允许用户从NPM服务器下载别人编写的第三方包到本地使用。...异步的方法函数最后一个参数为回调函数,回调函数的第一个参数包含了错误信息(error)。 建议大家使用异步方法,比起同步,异步方法性能更高,速度更快,而且没有阻塞。...因此,阻塞是按顺序执行的,而非阻塞是不需要按顺序的,所以如果需要处理回调函数的参数,我们就需要写在回调函数内。

    2K30

    Backbone事件模块及其用法

    在属性变化事件的回调函数中,通过回传的value参数获取最新修改后的属性值。...示例3:使用on方法获取属性修改前的值 在使用on方法绑定change和change属性事件时,还可以通过回调函数中的model对象获取属性修改前的所有值,如下所示: model.previous('attrName...在第一个属性事件change:score 中,通过回调函数中model模型对象的previous方法,获取上一次保存的score属性值。...在第二个属性事件change:age 中,通过回调函数中model模型对象的previousAttributes方法,获取上一次保存结果的对象,并将对象保存至变量objAttr中,再通过访问对象变量objAttr...监听事件 listenTo方法 相对于对象的on方法而言,listenTo方法的监听效果更为突出,它是一个对象监听另一个对象的事件,如果被监听对象触发了被监听的事件,执行相应的回调函数或代码块。

    2.8K50

    从发布订阅模式入手读懂Node.js的EventEmitter源码

    本文所有例子已经上传到GitHub,同一个repo下面还有我所有博文和例子: github.com/dennis-jian… 为什么要用发布订阅模式 在没有Promise之前,我们使用异步API的时候经常会使用回调...,但是如果有几个互相依赖的异步API调用,回调层级太多可能就会陷入“回调地狱”。...发布事件 代码传送门:github.com/nodejs/node… EventEmitter发布事件的API是emit,这个API里面会对"error"类型的事件进行特殊处理,也就是抛出错误: ?...如果不是错误类型的事件,就把订阅的回调事件拿出来执行: image.png 取消订阅 代码传送门:github.com/nodejs/node… EventEmitter里面取消订阅的API是removeListener...总结下来发布订阅模式有以下特点: 解决了“回调地狱” 将多个模块进行了解耦,自己执行时,不需要知道另一个模块的存在,只需要关心发布出来的事件就行 因为多个模块可以不知道对方的存在,自己关心的事件可能是一个很遥远的旮旯发布出来的

    1.2K31

    关于NodeJS工作原理的五个误解

    误解2 - 所有接受回调的函数都是异步的 函数是同步的还是异步的取决于函数在执行期间是否创建异步资源。...,process.nextTick,等等) 执行异步的 NodeJS API(例如,异步函数 child_process,fs,net等等) 使用 PromiseAPI(包括使用 async-await...但是,通常异步函数的确接受回调作为最后一个参数(除非包装返回一个 Promise )。接受回调并将结果传递给回调的这种模式称为Continuation Passing Style。...一旦预定的异步任务完成,将调用提供的任何回调,并且该回调函数将再次占据该堆栈。此时,启动异步任务的函数将不再可用,因为它已经返回。 考虑到以上定义,请尝试确定以下函数是异步还是同步。...但是,process.nextTick相对而言,回调具有更高的优先级,从而使其比 setImmediate 更快。

    2K20

    通过nodejs源码理解http pipeline的实现

    socket.on('data', state.onData); // tcp读端结束时的回调 socket.on('end', state.onEnd); // 解析完http请求头时的回调...parser.onIncoming = null; // 解析http头时的回调,在http头个数达到阈值时回调,可能会回调多次 parser[kOnHeaders] = parserOnHeaders...; return parser; }); 从上面的代码中我们可以知道,nodejs在tcp连接上接收到数据后,会交给http解析器处理,http是一个非常复杂的状态机,在解析数据的时候会回调nodejs...(incoming, shouldKeepAlive); } 我们刚才看到nodejs注册的onIncoming回调是parserOnIncoming。...我们看到nodejs维护了两个队列,分别是请求和响应队列。 ? 当前处理的请求在请求队列的队首,该请求对应的响应会挂载到socket的_httpMessage属性上。

    1.4K20

    前端Node.js面试题

    比如,读取一个文件,文件读取完毕后,就会触发对应的状态,然后通过对应的回调函数来进行处理。...API层: 为上层模块提供系统调用,一般是由 C 语言来实现,和操作系统进行交互 。...I/O事件回调阶段(I/O callbacks):执行延迟到下一个循环迭代的 I/O 回调,即上一轮循环中未被执行的一些I/O回调。 闲置阶段(idle、prepare):仅系统内部使用。...在Node中,一个进程的最大内存容量为1.5GB,因此在实际使用时请合理控制内存的使用。...即可看到进程界面,更详细的内容请参考官网 10.3 Node性能优化 关于Node的性能优化的方式有如下几个: 使用最新版本Node.js 正确使用流 Stream 代码层面优化 内存管理优化 10.3.1

    1.8K20

    最强nodejs下C++绑定方案介绍

    该标准的addon无需重新编译可以在实现了该标准的游戏引擎(UE /Unity),nodejs、lua等环境加载使用。...回调签名 虚拟机调用宿主的一个函数,其实是调用宿主注册的一个特定接口的回调,回调中读取参数调用实际函数后,把结果返回给虚拟机。每个虚拟机对这回调的定义基本都不一样,也很难评个高下。...是兼容的,可以直接作为v8的回调,减少v8适配的性能损失 单参数的接口,其它多参数回调只要栈上构造一个栈结构体装一下即可,性能损失也不大,以quickjs为例,它的签名是这样的 typedef JSValue...性能 我们对一个C++类进行声明式绑定,默认编译后生成的是对pesapi的调用,好处是这种addon不依赖于任何的脚本引擎/虚拟机,以二进制形式发布,可以在任意支持pesapi的环境使用,但它也有缺点:...前面也说过原生调用是通过特定形式的回调来实现,每一个参数处理都至少有一次函数调用,而fast api call是根据函数签名信息,用TurboFan编译器运行时jit生成代码完成虚拟机内部Calling

    1.3K71

    从0到1学习nodejs(1)

    首先,我们要清楚一个概念,nodejs并不是一种编程语言,官方的说法是: Nodejs是一个开源的,跨平台的JavaScript运行环境 Nodejs的作用 命令行 命令的结构: 常用命令: 小结:...嗯这就是比较基本的命令行,如果是dir /s那就是输出这个文件夹下的所有文件(包括子目录) Nodejs注意事项 在nodejs中不能使用DOM和BOM的api 在浏览器中的JavaScript...nodejs中的JavaScript 像这些都是不可以的 但是可以使用global和globalThis顶级对象 计算机基本知识 下面老师又介绍了一些计算机的基础知识,比如一个软件运行的基本流程。...文件读取 readFile 这个接收三个参数,其中回调函数接收error和读取到的数据,这个数据是一个buffer类型,可以使用toString转成字符。...newPath 文件新的路径 callback 操作后的回调 本文由“壹伴编辑器”提供技术支持 文件删除 在 Node.js 中,我们可以使用 unlink 或 unlinkSync 来删除文件 语法

    40110

    Vue 前后端交互基础

    在前后端分离的应用模式中 ,前端与后端的耦合度相对较低。在前后端分离的应用模式中,我们通常将后端开发的每个视图都称为一个接口,或者 API,前端通过访问接口来对数据进行增删改查。...Promise 提供统一的 API,各种异步操作都可以用同样的方法进行处理。Promise对象有以下两个特点。   ♞ 对象的状态不受外界影响。...Promise实例生成以后,可以用 then 方法分别指定 resolved 状态和 rejected 状态的回调函数。then 方法可以接受两个回调函数作为参数。...第一个回调函数是 Promise 对象的状态变为 resolved 时调用,第二个回调函数是 Promise 对象的状态变为 rejected 时调用。其中,第二个函数是可选的,不一定要提供。...API  ♞ 拦截请求和响应  ♞ 转换请求数据和响应数据  ♞ 取消请求  ♞ 自动转换 JSON 数据  ♞ 客户端支持防御 XSRF 1.4.2 axios 的使用 ☞ 安装 #

    2.7K50

    nodejs事件和事件循环简介

    同样的nodejs中也有事件,并且还有一个专门的events模块来进行专门的处理。 同时事件和事件循环也是nodejs构建异步IO的非常重要的概念。 今天我们来详细了解一下。...事件 nodejs为事件提供了一个专门的模块:lib/events.js。 还记得我们在讲使用nodejs构建web服务器吗?...nodejs的核心API是基于异步事件驱动来进行架构的,所以nodejs中有非常多的事件。...这是因为settimeout触发了定时器,当定时器到期的时候,回调函数会被放入消息队列中等待被处理,而不是放入栈中。...它们都会在事件循环的下一个迭代中运行。 setInterval() 如果想要定时执行某些回调函数,则需要用到setInterval。

    1.1K40

    nodejs事件和事件循环简介

    同样的nodejs中也有事件,并且还有一个专门的events模块来进行专门的处理。 同时事件和事件循环也是nodejs构建异步IO的非常重要的概念。 今天我们来详细了解一下。...事件 nodejs为事件提供了一个专门的模块:lib/events.js。 还记得我们在讲使用nodejs构建web服务器吗?...nodejs的核心API是基于异步事件驱动来进行架构的,所以nodejs中有非常多的事件。...这是因为settimeout触发了定时器,当定时器到期的时候,回调函数会被放入消息队列中等待被处理,而不是放入栈中。...它们都会在事件循环的下一个迭代中运行。 setInterval() 如果想要定时执行某些回调函数,则需要用到setInterval。

    1.3K50

    息息相关的 JS 同步,异步和事件轮询

    因此,在执行上述代码时,咱们不能执行任何其他操作,这是不理想的。 解决办法是什么? 最简单的解决方案是异步回调,各位使用异步回调使代码非阻塞。...请记住setTimeout不是JS引擎的一部分,它是Web Api的一部分。 为了理解这段代码是如何执行的,咱们必须理解更多的概念,比如事件轮询和回调队列(或消息队列)。 ?...事件轮询、web api和消息队列不是JavaScript引擎的一部分,而是浏览器的JavaScript运行时环境或Nodejs JavaScript运行时环境的一部分(对于Nodejs)。...在Nodejs中,web api被c/c++ api所替代。 现在让我们回到上面的代码,看看它是如何异步执行的。...ES6 任务队列 我们已经了解了异步回调和DOM事件是如何执行的,它们使用消息队列存储等待执行所有回调。 ES6引入了任务队列的概念,任务队列是 JS 中的 promise 所使用的。

    10.6K31

    彻底搞懂nodejs事件循环_2023-03-15

    nodejs是单线程执行的,同时它又是基于事件驱动的非阻塞IO编程模型。这就使得我们不用等待异步操作结果返回,就可以继续往下执行代码。当异步事件触发之后,就会通知主线程,主线程执行相应事件的回调。...undefined在nodejs里,胶水代码的主要作用是把nodejs底层实现的C/C++库暴露给js环境。...undefined三方插件是我们自己实现的C/C++库,同时需要我们自己实现胶水代码,将js和C/C++进行桥接。底层库nodejs的依赖库,包括大名鼎鼎的V8、libuv。...2、调用 performance_node_start 方法,对 nodejs 进行性能统计。3、openssl设置的判断。...进入 event-loop进入 timers 阶段检查 timer 队列是否有到期的 timer 回调,如果有,将到期的 timer 回调按照 timerId 升序执行。

    1.3K30

    nodejs事件和事件循环简介

    同样的nodejs中也有事件,并且还有一个专门的events模块来进行专门的处理。 同时事件和事件循环也是nodejs构建异步IO的非常重要的概念。 今天我们来详细了解一下。...事件 nodejs为事件提供了一个专门的模块:lib/events.js。 还记得我们在讲使用nodejs构建web服务器吗?...nodejs的核心API是基于异步事件驱动来进行架构的,所以nodejs中有非常多的事件。...这是因为settimeout触发了定时器,当定时器到期的时候,回调函数会被放入消息队列中等待被处理,而不是放入栈中。...它们都会在事件循环的下一个迭代中运行。 setInterval() 如果想要定时执行某些回调函数,则需要用到setInterval。

    1.1K41
    领券