深入理解Amazon Alexa Skill(四)】的更多相关文章

本节利用三星Smartthings Classic物联网平台的web service smartapp,实现了一个Alexa智能家居skill的例子,由此来了解Alexa是如何控制其他云的智能家居设备的. 三星Smartthings平台是如何运行第三方云来控制其设备的 三星Smartthings Classic支持开发者自己编写SmartApp来控制智能家居设备.参考官网中Web Service SmartApps的教程就可以写一个允许使用Web API来远程控制该平台设备的SmartApp.简…
本节来讨论Alexa Skill中涉及到的授权问题. Alexa内功能的授权 Alexa会发给skill用户的token,然后skill代码使用这个token来访问Web API访问用户的Alexa内的功能,如list等. 授予skill第三方的权限--Account Linking 参考:https://developer.amazon.com/docs/account-linking/understand-account-linking.html#account-linking-and-th…
语音助手(Virtual Personal Assistants, VPA)是物联网智能家居中很火的一个领域,用户可以通过语言作为入口来控制家里各种各样的设备,而亚马逊的Alexa(echo,echo dot)是做的最早也是最优秀的一款产品,衍生出了很大的开发生态圈.本文基于亚马逊的官方文档试图记录作者对其Skill工作原理的理解. 这不是一个手把手Skill开发入门教程,仅仅讲解了概念与个人的一些理解 宏观概念 Alexa提供一系列内置的功能,比如回答问题,语音游戏,控制智能家居设备,这些功能…
理解skill调用 本节来更详细的讨论alexa是如何确定调用哪个skill的. 参考:https://developer.amazon.com/zh/docs/custom-skills/understanding-how-users-invoke-custom-skills.html 明确调用(Specific Request (Intent)) 用户在语音中明确的包含了要调用的skill的名字,云会给skill发送一个带有具体intent的 IntentRequest.用户可以有很多种表达…
访问Alexa的API,必须要携带AccessToken,也就是必须要登录授权,本文主要记录Amazon Alexa在Android平台上的登录授权过程. 一.在亚马逊开发者平台注册应用 进入亚马逊开发者平台的Alexa栏 https://developer.amazon.com/edw/home.html#/ 点击Alexa Voice Service的Get Started,进入到应用管理页面 选择注册一个产品,我这边选的是application,然后开始填写相关信息. 这里Applicat…
Alexa是Amazon自家的语音识别技术,需要配合自家的Echo音箱使用.开发者可以在Amazon上建立自己的程序(Skill)来连接到自己的应用或是硬件.例如,用户家里有一套xx牌的智能灯,现在希望通过语音来控制.首先,用户对Echo音箱说出唤醒词(默认是Alexa,也可以设置为Echo),随后说出命令,如Ask xx to turn on the lights,xx是应用的关键词.随后,amazon在识别出用户的意图之后,会发起一个post请求到开发者的服务器上,开发者服务器对此请求作出回…
转载:http://blog.csdn.net/zhangjg_blog/article/details/21658415 前情回顾   在上一篇博客深入理解Java Class文件格式(三) 中, 介绍了常量池中的两种类型的数据项, 分别是 CONSTANT_Utf8_info CONSTANT_NameAndType_info . CONSTANT_Utf8_info中存储了几乎所有类型的字符串, 包括方法名, 字段名, 描述符等等. 而CONSTANT_NameAndType_info是方…
一.什么是socket? 中文名叫套接字,是对底层的 TCP IP UDP 等网络协议进行封装,使得上层的应用程序开发者,不用直接接触这对复杂,丑陋的协议. 在程序员的言论,他就是一个封装好的模块,要完成网络通讯,只需要使用系统提供的socket模块就行,我们通过调用模块中已经实现的方法建立两个进程之间的 连接和通信. 了解socket层: 二.套接字的发展史 套接字起源于 20 世纪 70 年代加利福尼亚大学伯克利分校版本的 Unix,即人们所说的 BSD Unix. 因此,有时人们也把套接字…
本文目录: 同步方式爬取博客标题 async/await异步爬取博客标题 本片为深入理解协程系列文章的补充. 你将会在从本文中了解到:async/await如何运用的实际的爬虫中. 案例 从CSDN上批量爬取指定文章的标题.文章列表如下: urls = [ 'https://blog.csdn.net/Jmilk/article/details/103218919', 'https://blog.csdn.net/stven_king/article/details/103256724', 'h…
原文链接:http://www.orlion.ga/1237/ 类的成员变量在PHP中本质是一个变量,只是这些变量都归属于某个类,并且给这些变量是有访问控制的. 类的成员方法在PHP中本质是一个函数,只是这个函数以类的方法存在,他可能是一个类方法也可能是一个实例方法,并且在这些方法都加上了类的访问控制.类的成员方法是现实世界实体行为的抽象,可以用来实现类的行为. 一.成员变量 成员变量在编译时已经注册到了类的结构中.在编译时类的声明编译会调用zend_do_begin_class_declara…
>Web Workers 是 HTML5 提供的一个javascript多线程解决方案,我们可以将一些大计算量的代码交由web Worker运行而不冻结用户界面. 一:如何使用Worker Web Worker的基本原理就是在当前javascript的主线程中,使用Worker类加载一个javascript文件来开辟一个新的线程,起到互不阻塞执行的效果,并且提供主线程和新线程之间数据交换的接口:postMessage,onmessage. 那么如何使用呢,我们看一个例子: //worker.js…
开发者建立的Skill的主要设置项目都在Skill的console内.需要填写的东西大致有以下几个: 1.Skill 名字.这个名字是用户用来唤醒你这个Skill的. 2.Intent Schema:这个描述了Skill有多少个Intent,每个Intent是否带有参数(slot).如果带有参数的话,则必须在Custom slot type内填写对应的项目,否则会出错.Intent描述了需要执行的动作,而slot则是描述了动作执行的对象.如,开灯,开是intent,灯就是slot. 3.Samp…
4.52以后的题目中的代码大多是书上的,如需使用请联系 randy.bryant@cs.cmu.edu 更新:关于编译Y86-64中遇到的问题,可以参考一下CS:APP3e 深入理解计算机系统_3e Y86-64模拟器指南 流水线部分只写了偶数题号的,这几天太浮躁,落下了好多课... 4.45 A. 不正确,当REG为%rsp时,这样会压入%rsp - 8而非%rsp B. 对于 pushq REG: movq REG, -8(%rsp) subq $8, %rsp 4.46 A. 不正确,当R…
今天我们来介绍下集合Queue中的几个重要的实现类.关于集合Queue中的内容就比较少了.主要是针对队列这种数据结构的使用来介绍Queue中的实现类. Queue用于模拟队列这种数据结构,队列通常是指“先进先出”(FIFO)的容器.新元素插入(offer)到队列的尾部,访问元素(poll)操作会返回队列头部的元素.通常,队列不允许随机访问队列中的元素.     这种结构就如同我们生活中的排队一样. 下面我们就来介绍Queue中的一个重要的实现类PriorityQueue. PriorityQue…
1.Java语言的特性 Java代码经过编译器编译成Class文件(字节码)后,就需要虚拟机将其加载到内存里面执行字节码所定义的代码实现程序开发设定的功能. Java语言中类型的加载.连接(验证.准备.解析).初始化都是在程序运行期间内完成的与C++不同(C++在编译期就需要进行连接),这样也使得Java语言更具灵活性. 2.虚拟机类加载的过程 (1)虚拟机什么时候进行类的加载(类加载的时机) 1)遇到new.getstatic.putstatic或者invokestatic 这四条字节码指令的…
在开始本章内容之前,这里先简单介绍下List的相关内容. List的简单介绍 有序的collection,用户可以对列表中每个元素的插入位置进行精确的控制.用户可以根据元素的整数索引(在列表中的位置)访问元素,并搜索列表中的元素.列表通常允许重复的元素,且允许null元素的存放. ArrayList的简单介绍 JDK中这样定义ArrayList:List接口的大小可变数据的实现. 主要有以下特点: 1.有序 2.线程不安全 3.元素可以重复 4.可以存放null值 顾名思义,取名ArrayLis…
本文原创作者:Cloud Chou. 出处:本文链接 本系列博客将详细阐述Activity的启动流程,这些博客基于Cm 10.1源码研究. 深入理解Activity启动流程(一)--Activity启动的概要流程 深入理解Activity启动流程(二)--Activity启动相关类的类图 深入理解Activity启动流程(三)--Activity启动的详细流程1 深入理解Activity启动流程(三)--Activity启动的详细流程2 前面两篇博客介绍了Activity的详细启动流程,提到Ac…
垃圾收集算法 一般来说,垃圾收集算法分为四类: 标记-清除算法 最基础的算法便是标记-清除算法(Mark-Sweep).算法分为“标记”和“清除”两个阶段:首先标记处需要收集的对象,在标记完成之后,再统一回收所有被标记的对象. 这是最简单的一种算法,但是缺点也是很明显的:一个是效率问题,标记和清除效率都不高.二是空间问题,清除之后会产生大量的空间碎片,导致之后分配大对象找不到足够的连续对象而不得不触发另一次垃圾收集动作.算法执行过程如下图. 复制算法 复制算法(Copying)将可用内存按照容量…
本系列博客将详细阐述Activity的启动流程,这些博客基于Cm 10.1源码研究. 深入理解Activity启动流程(一)--Activity启动的概要流程 深入理解Activity启动流程(二)--Activity启动相关类的类图 深入理解Activity启动流程(三)--Activity启动的详细流程1 深入理解Activity启动流程(三)--Activity启动的详细流程2 前面两篇博客介绍了Activity的详细启动流程,提到ActivityStack类的startActivityU…
Objective-C对象收到消息之后,究竟会调用何种方法需要在运行期间才能解析出来.那你也许会问:与给定的选择子名称相应的方法是不是也可以在runtime改变呢?没错,就是这样.若能善用此特性,则可发挥出巨大优势,因为我们既不需要源代码,也不需要通过继承子类来覆写方法就能改变这个类本身的功能.这样一来,新功能将在本类的所有实例中生效,而不仅限于覆写了相关方法的那些子类实例.此方案就是大名鼎鼎的「method swizzling」,中文常称之为『方法调配』或『方法调和』或『方法混合』. Meth…
面试中被问到不少次TCP的三握四挥,今天特意来做一个总结(一些资料是很久前找的,忘了参考的链接了) 一.三次握手 首先来看一张图 最初,客户机A与服务器B的TCP进程都处于 CLOSED 状态. 然后由服务器B先创建TCB(传输控制块),进入到 LISTEN 状态,准备随时响应客户请求 下面开始三握: 第一次握手 A的TCP进程创建TCB(传输控制块),然后向B发出连接请求报文段.段首部中的 同步位SYN=1,同时选择一个初始序列号seq=x:(SYN报文段不能携带数据,但需要消耗一个序列号)这…
前面的话 在使用ajax的过程中,常用的请求方式是GET和POST两种.本文将以实例的形式来详细说明这两种请求方式 GET GET是最常见的请求类型,最常用于向服务器查询某些信息.必要时,可以将查询字符串参数追加到URL的末尾,以便将信息发送给服务器.对于XHR而言,位于传入open()方法的URL末尾的查询字符串必须经过正确的编码才行 使用GET请求经常会发生的一个错误,就是查询字符串的格式有问题.查询字符串中每个参数的名称和值都必须使用encodeURIComponent()进行编码,然后才…
前面的话 现代Web应用中频繁使用的一项功能就是表单数据的序列化,XMLHttpRequest 2级为此定义了FormData类型.FormData为序列化表单以及创建与表单格式相同的数据提供了便利.本文将先介绍表单编码,然后过渡到表单序列化,最后引出FormData的核心概念 表单编码 当用户提交表单时,表单中的数据(每个表单元素的名字和值)编码到一个字符串中并随请求发送.默认情况下,HTML表单通过POST方法发送给服务器,而编码后的表单数据则用做请求主体 对表单数据使用的编码方案相对简单:…
前面的话 现代Web应用中频繁使用的一项功能就是表单数据的序列化,XMLHttpRequest 2级为此定义了FormData类型.FormData为序列化表单以及创建与表单格式相同的数据提供了便利.本文将先介绍表单编码,然后过渡到表单序列化,最后引出FormData的核心概念 表单编码 当用户提交表单时,表单中的数据(每个表单元素的名字和值)编码到一个字符串中并随请求发送.默认情况下,HTML表单通过POST方法发送给服务器,而编码后的表单数据则用做请求主体 对表单数据使用的编码方案相对简单:…
第4章 虚拟机性能监按与故障处理工具 jps 虚拟机进程状况工具 jstat 虚拟机统计信息监视工具 JVM Statistics Monitoring Tool jstat [ option vmid [interval[s|ms] [count]] jstat -gc 2764 250 20 其中option的选项: -class  -gc  -gccapacity -gcutil ...... jinfo java配置信息工具 jmap Java内在映射工具 用于生成堆转储快照 也可配置…
通过以下实例拦截窗体WM_SysCommand消息,我们可以获取到很多有趣的数据. 一.程序界面 二.程序代码 unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) ListBox1: TListBox; private { Private declarat…
Wait的背景 当子进程退出的时候,内核会向父进程发送SIGCHLD信号,子进程的退出是个异步事件(子进程可以在父进程运行的任何时刻终止) 子进程退出时,内核将子进程置为僵尸状态,这个进程称为僵尸进程,它只保留最小的一些内核数据结构,以便父进程查询子进程的退出状态. 父进程查询子进程的退出状态可以用wait/waitpid函数 [cpp] view plaincopy #include <sys/types.h> #include <sys/wait.h> pid_t wait(i…
  首先承认有点标题党了,当时自己搞的时候可不止十分钟,好吧,我承认是坑太多了,所以特意开了一篇博文,就是要准备尝试的和我一样的菜鸟们,可以真正的十分钟搞定.  当然高手可能用不上十分钟. 首先,就是要注册Aws,可能初看觉得麻烦,不过因为都是可视化操作,难度不大,一步一步来,很简单. 以下是主要步骤: 一.创建AWS EC2账户 登录http://aws.amazon.com/cn/ec2/页面,选择“免费试用Amazon EC2”. 我们来看一下免费套餐详细信息: 也就是说创建1个虚拟机,可…
去年以来,React的出现为前端框架设计和编程模式吹来了一阵春风.很多概念,无论是原本已有的.还是由React首先提出的,都因为React的流行而倍受关注,成为大家研究和学习的热点.本篇分享主要就聚焦于这些概念中出现频率较高的两个:virtual dom(虚拟DOM)和data immutability(数据不变性).希望通过几段代码和同学们分享博主对于这两个概念的思考和理解. 文章分为四个部分,由大家最为熟悉的基于dom node的编程开始:1. 基于模板和dom node的编程:回顾前端传统…
深入理解Javascript面向对象编程 阅读目录 一:理解构造函数原型(prototype)机制 二:理解原型域链的概念 三:理解原型继承机制 四:理解使用类继承(继承的更好的方案) 五:建议使用封装类实现继承 六:理解使用复制继承 回到顶部 一:理解构造函数原型(prototype)机制 prototype是javascript实现与管理继承的一种机制,也是面向对象的设计思想.构造函数的原型存储着引用对象的一个指针,该指针指向与一个原型对象,对象内部存储着函数的原始属性和方法:我们可以借助p…