标签: alexa

获取每个亚马逊回声设备的唯一设备ID

我需要为Alexa Skills Kit制作一个自定义技能,它应该是每个房间的一个回音设备.我需要为每个echo设备获取device_id.我听说这是不可能的,但也许它改变了,或者如果没有,还有其他办法.

alexa alexa-skill alexa-skills-kit alexa-voice-service alexa-slot

7
推荐指数
1
解决办法
6778
查看次数

我的自定义插槽类型具有意外值

在使用Alexa技能套件测试我的交互模型时,我发现了一些奇怪的东西.

我定义了一个自定义插槽类型,如下所示:

CAR_MAKERS Mercedes | BMW | Volkswagen
Run Code Online (Sandbox Code Playgroud)

我的意图计划是这样的:

{
  "intents": [
    {
      "intent": "CountCarsIntent",
      "slots": [
        {
          "name": "CarMaker",
          "type": "CAR_MAKERS"
        },
   ...
Run Code Online (Sandbox Code Playgroud)

样本话语如:

CountCarsIntent Add {Amount} cars to {CarMaker}
Run Code Online (Sandbox Code Playgroud)

现在,在开发人员控制台中进行测试时,我注意到我可以编写如下内容:

"Add three cars to Ford"
Run Code Online (Sandbox Code Playgroud)

它实际上会解析这个!即使在交互模型中从未提及"福特"!lambda请求是:

  "request": {
    "type": "IntentRequest",
    ...
    "intent": {
      "name": "CountCarsIntent",
      "slots": {
        "CarMaker": {
          "name": "ExpenseCategory",
          "value": "whatever"
        },
 ...
Run Code Online (Sandbox Code Playgroud)

这真的让我感到惊讶,因为有关自定义插槽类型的文档非常清楚,插槽只能采用交互模型中列出的值.

现在,似乎值也是动态解析的!这是一个新功能,还是我错过了什么?

alexa alexa-skill alexa-skills-kit alexa-slot

7
推荐指数
1
解决办法
1895
查看次数

Alexa - 如何接受自由文本作为输入/插槽。除了使用自定义插槽并提供大量列表之外,还有什么方法吗?

如何接受自由文本作为输入/插槽?除了使用自定义插槽并提供大量列表之外,还有什么方法吗?由于不推荐使用文字槽类型,如何向 alexa 提供自由文本/字符串输入?

speech-to-text alexa alexa-skills-kit

7
推荐指数
2
解决办法
6080
查看次数

如何通过Lambda AWS认证Google API?

我正在为Google日历构建Alexa Skill。客户端代码可以在本地计算机上按预期工作,因为我可以使用链接对本地计算机进行身份验证。但是,当我在AWS Lambda上部署代码时,由于无法通过AWS控制台输入代码,因此无法进行身份验证。

当部署在AWS lambda上时,我无法设置Google Calendar API的身份验证。

本文档对我没有太大帮助 Google实施服务器端身份验证

google-calendar-api alexa google-api-client

7
推荐指数
2
解决办法
8377
查看次数

我能否确定哪个 AWS 服务触发了我的 Lambda 函数?

我有一个 Python Lambda 函数,可以同时响应 IoT Button 和 Alexa 技能。

有没有办法读取eventcontext传递给处理程序函数以识别哪个服务触发了该函数(Alexa 或 IoT)?

amazon-web-services alexa aws-lambda aws-iot

7
推荐指数
2
解决办法
3870
查看次数

如何在"认证"中继续开发我的Alexa技能?

我刚刚提交了一个新版本的认证,并希望开始在我的下一个版本上开发新功能.

但不知何故 - 由于我的技能处于认证模式,我无法启动新的开发版本.

在这个漫长的(4-7天)认证模式下,有没有办法开发新版本?

alexa alexa-skills-kit amazon-echo

7
推荐指数
1
解决办法
2243
查看次数

nghttp2多部分POST消息

我目前正在尝试使用nghttp2构建多部分消息.该消息应该如下所示.

在此输入图像描述

我应该使用nghttp2_submit_request(here)函数,nva作为我的HTTP/2标头,以及nghttp2_data_provider *data_prd我的数据.但是,我仍然不明白我究竟能创建两条消息(带有两个消息头).


更新:

我可以在源代码中描述我的想法吗?请看下面.在这里,我nghttp2_data_provider用来打开一个音频文件,然后写入缓冲区.

ssize_t data_prd_read_callback(
    nghttp2_session *session, int32_t stream_id, uint8_t *buf, size_t length,
    uint32_t *data_flags, nghttp2_data_source *source, void *user_data) 
{

  printf("[INFO] C ----------------------------> S (DATA post body), length:%zu\n", length);

  int fd = source->fd;
  ssize_t r;
// writting my opened audio file into buffer
  while ((r = read(fd, buf, length)) == -1 && errno == EINTR); 
  printf("stream_id:%d, nread:%zu\r\n", stream_id, r);
  return nread;
}



void submit_postAudio(http2_session_data *session_data) {
  int32_t …
Run Code Online (Sandbox Code Playgroud)

alexa avspeechsynthesizer http2 nghttp2

7
推荐指数
1
解决办法
842
查看次数

如何将单个AWS Lambda用于Alexa Skills Kit和API.AI?

过去,我已经设置了两个用Java编写的独立AWS lambda.一个用于Alexa,一个用于Api.ai. 他们只是向每个助手api返回"Hello world".所以虽然它们很简单,但它们都有效 当我开始为每个代码编写越来越多的代码时,我开始看到我的java代码有多么相似,而我只是通过拥有两个单独的lambdas来重复自己.

快进到今天.

什么我现在工作的是有一个单一的 AWS拉姆达可从处理输入 Alexa和Api.ai但我遇到了一些麻烦.目前,我的想法是,当运行lambda时,会有一个简单的if语句,如下所示:

以下不是真正的代码,只是我认为我可以做的事情

if (figureOutIfInputType.equals("alexa")){
runAlexaCode();
} else if (figureOutIfInputType.equals("api.ai")){
runApiAiCode();
}
Run Code Online (Sandbox Code Playgroud)

事情是现在我需要以某种方式告诉函数是否被alexa或api.ai调用.

这是我现在的实际java:

public class App implements RequestHandler<Object, String> {

  @Override
  public String handleRequest(Object input, Context context) {
    System.out.println("myLog: " + input.toString());

      return "Hello from AWS";
  }
Run Code Online (Sandbox Code Playgroud)

然后我从Alexa和Api.ai运行lambda来查看在java中生成的Object输入.

API.ai

{id=asdf-6801-4a9b-a7cd-asdffdsa, timestamp=2017-07-
28T02:21:15.337Z, lang=en, result={source=agent, resolvedQuery=hi how 
are you, action=, actionIncomplete=false, parameters={}, contexts=[], 
metadata={intentId=asdf-3a2a-49b6-8a45-97e97243b1d7, 
webhookUsed=true, webhookForSlotFillingUsed=false, 
webhookResponseTime=182, intentName=myIntent}, fulfillment=
{messages=[{type=0, speech=I have failed}]}, score=1}, status=
{code=200, errorType=success}, sessionId=asdf-a7ac-43c8-8ae8-
bc1bf5ecaad0}
Run Code Online (Sandbox Code Playgroud)

Alexa的

{version=1.0, …
Run Code Online (Sandbox Code Playgroud)

alexa aws-lambda alexa-skills-kit actions-on-google api-ai

7
推荐指数
1
解决办法
619
查看次数

我将如何要求用户提供姓名列表?

我正在创建自定义的Alexa技能,它需要收集用户所说的未知数量的名称。

我试图将名称存储在插槽中。我能够以这种方式获得一个名字,但不能多个。现在,我正在尝试向用户询问人数,然后询问用户名称。但是,我不知道如何使该解决方案起作用。另外,我试图将名称存储在会话属性中。

这是我到目前为止所拥有的

    // Api call wrapped into a promise. Returns the person's email.
    return findEmployee(sessionAttributes.client, givenName)
        .then(attendee => {
            let prompt = ''
            if (attendee.value.length === 1) {
            sessionAttributes.attendees = [...sessionAttributes.attendees, attendee.value[0]]
            prompt = `${attendee.value.displayName} added to the meeting.`
            return handlerInput.responseBuilder
                .speak(prompt)
                .reprompt(prompt)
                .getResponse()
            }
         })
         .catch(err => console.log(err))
Run Code Online (Sandbox Code Playgroud)

这个代码片段可以与一个人一起正常工作,但是我将如何重构它,以便Alexa会询问直到达到最终条件。

javascript alexa alexa-skills-kit

7
推荐指数
1
解决办法
229
查看次数