as

Settings
Sign out
Notifications
Alexa
亚马逊应用商店
Ring
AWS
文档
Support
Contact Us
My Cases
开发
测试
应用发布
盈利
用户参与
设备规格
资源

Lambda概述 (VSK Echo Show)

Lambda概述 (VSK Echo Show)

Lambda函数用作视频技能的后端。您可以在本地更新参考Lambda代码,使用CLI工具更新、重建、重新部署项目,并自动将您的Lambda推送到AWS。

工作方式

所有Lambda脚本都存储在本地项目中,位于您的./lambda/src文件夹下。当您使用CLI工具部署视频技能时,它们会被推送到云端。如果您成功部署视频技能,您将能够在AWS控制台中以单个文件的形式找到整个Lambda函数。在那里,您可以搜索自己的Lambda:

在AWS控制台上搜索您的Lambda

单击您的函数名称 (<您的项目>-lambda)。您的Lambda函数位于index.js文件中。

您的Lambda代码

通过使用CLI工具,您只需要专注于更新存储在本地的特定脚本(例如,您可以更新视频内容database.js脚本),更新、重新部署Lambda组件,以及将更新后的Lambda推送到云端。

Lambda函数可以用JSON形式接收来自Alexa的指令,对其进行处理,然后返回包含预期的JSON的响应。指令是JSON消息,包含有关执行特定操作(例如获取视频的元数据)的指示。当前,有一个JSON对象用作嵌入在参考Lambda代码中的视频内容数据库。

要配置Lambda函数以与您拥有的另一个现有数据库进行交互,请修改数据库访问类以查询该数据库,并以与参考代码相同的结构方式返回数据。Lambda代码的其余部分可以保持不变,因为它会动态响应数据库访问层返回的内容。

默认情况下,参考Lambda使用Gracenote目录(命名为“ontv”)。如果您拥有已被Alexa引入的目录并想改用该目录,请参阅使用自己的目录名称

功能

参考Lambda支持以下主要功能:

功能 用户 示例
搜索 视频ID 搜索Stranger Things
搜索Psych第1季
搜索Black Panther
搜索 演员姓名 搜索Liam Neeson出演的电影
搜索Jamie Foxx出演的电影
搜索 Genre 搜索喜剧电影
搜索动作电影
搜索冒险电影
搜索 多个视频元数据字段,例如Actor + Genre(演员+流派) 搜索Liam Neeson出演的动作片
搜索Jennifer Aniston出演的喜剧电视连续剧

请注意,在搜索结果页面上,您也可以这样说:

选择第二个
播放编号1
快速播放 视频名称 观看Stranger Things
观看Psych第1季第1集
观看Black Panther
快速播放 演员姓名 观看Liam Neeson出演的电影
观看Jamie Foxx出演的电影
快速播放 Genre 观看喜剧电影
观看动作电影
观看冒险电影
快速播放 多个视频元数据字段,例如Actor + Genre 观看Liam Neeson出演的动作电影
观看Jennifer Aniston演出的喜剧电视连续剧
频道导航 调至PBS
调至NBC
浏览和列表选择 浏览列出的不同类别
通过说出以下表述,浏览More Categories(更多类别)下的其他类别:

选择Highly Rated(高评分)
选择More Categories(更多类别)

请注意,传输控制由参考软件中包含的网页播放器指定。

Lambda安装和更新

您的Lambda需要托管在AWS上,在安装过程中由CLI工具处理。还需要在技能清单中配置它,这可能是您希望在开发者门户中做的事情。但是,通常,项目中包含的基础架构CLI工具会自动为您进行此设置。

通过使用--deploy,基础架构CLI工具创建和部署Lambda函数。这发生在参考视频技能设置过程中。

使用--update --lambda在开发周期中更新和部署Lambda代码。这大大加快了开发过程。

有关手动安装Lambda的过程,请参阅手动设置Lambda(可选)

必须在视频技能的清单中配置Lambda。项目中包含的基础架构CLI工具可为您处理此问题。但是,如果您选择手动配置,则必须访问Alexa开发者控制台并按照手动设置Lambda(可选)下的步骤进行操作。

手动设置Lambda(可选)

如果您想手动安装Lambda(而不是通过CLI工具),则必须遵循不同的流程:

  1. 导航到您的项目在本地的./lambda文件夹。
  2. 运行npm run release
  3. 按照此处提到的步骤,在您想要部署视频技能的同一区域创建AWS Lambda函数。
  4. ./lambda/dist/lambda中将编译的Lambda代码复制到步骤3中创建的AWS Lambda函数。
  5. 在步骤3中创建的Lambda执行角色中,添加以下策略:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "s3:GetObject",
            "dynamodb:BatchGetItem",
            "dynamodb:BatchWriteItem",
            "dynamodb:PutItem",
            "dynamodb:DeleteItem",
            "dynamodb:GetItem",
            "dynamodb:Scan",
            "dynamodb:Query",
            "dynamodb:UpdateItem",
            "logs:CreateLogGroup",
            "logs:CreateLogStream",
            "logs:PutLogEvents"
          ],
          "Resource": ["*"]
        }
      ]
    }
    
  6. 为您的Lambda创建DynamoDB数据库,以使用以下规范存储分页数据:

    "PaginationDatabase": {
        "Type" : "AWS::DynamoDB::Table",
        "Description": "保留分页数据",
        "Properties" : {
            "TableName" : {
                "Fn::Sub": [
                    "${ProjectName}-pagination-table",
                    {
                        "ProjectName": {
                            "Ref": "ProjectName"
                        }
                    }
                ]
            },
            "AttributeDefinitions" : [
                {
                    "AttributeName" : "token",
                    "AttributeType" : "S"
                }
            ],
            "KeySchema" : [
                {
                    "AttributeName" : "token",
                    "KeyType" : "HASH"
                }
            ],
            "ProvisionedThroughput" : {
                "ReadCapacityUnits" : "5",
                "WriteCapacityUnits" : "5"
            }
        }
    }
    

后续步骤

请参阅Lambda自定义


Last updated: 2020年10月29日