首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何通过Lambda函数向设备发回消息?

如何通过Lambda函数向设备发回消息?
EN

Stack Overflow用户
提问于 2018-05-29 03:45:06
回答 2查看 571关注 0票数 -1

我们有没有办法从Lambda函数向设备发送一条消息,这个函数是由Alexa Skill调用的。该消息包含一些由Lambda函数收集的值。所以基本上我想这样做:

  • 设备->语音命令-> Alexa Skill --(触发)--> Lambda function
  • Lambda function(收集值)- message -> Device

在Java中有什么例子吗?

感谢你的指点/帮助。

-James

EN

回答 2

Stack Overflow用户

发布于 2018-05-30 09:19:22

Invoke Alexa device from lambda function是一个非常类似的问题,答案是:“还不可能”。

我会详细说明。您可以向技能的所有用户发送通知,但不能向调用函数的特定用户发送通知。

要向启用了通知的Alexa技能的所有用户发送通知,请参阅此design

有关向特定用户发送通知的限制的详细信息,请参阅此thread

票数 0
EN

Stack Overflow用户

发布于 2020-09-04 13:43:37

你所要求的是可以做到的。

首先,语音命令不是来自您的图表中的人类。一个设备在和Alexa对话。Alexa调用或触发Lambda。Lambda函数消息设备。

Lambda内部的函数是httphttps。如果你的设备可以处理https或TLS加密,那就好了。但大多数设备都很小,计算能力有限,所以你最终会使用http。从现在到2020年,AWS允许http,但一年后,由于联邦法规的原因,它要求您使用https或TLS 1.3。但直到它发生,我们才能知道。

下面是NodeJS中Lambda http帖子的示例。触发器数据以request格式提供。因此,您应该知道JSON将提供什么,并使用if语句从JSON中提取数据。NodeJS网站有很好的http示例。

现在你的设备就是服务器了。它必须预测Lambda请求,并处理它,并在需要时回复Lambda。

现在你的设备会说话并接收信息。

    const http = require('http');
exports.handler = async (request, context) => {

 if (request.directive.header.namespace === 'FromAlexaSkill') {
httpost("This is your data to device", "192.168.1.2");
}

//**********************************************
let httpPost =async (postData, servername) => {
  
    let dataString = '';
    
    const response = await new Promise((resolve, reject) => {

        const options = {
          hostname: servername,
          port: 1777,
          path: '/dim',
          method: 'POST',
          headers: {
            'Content-Type': 'application/x-www-form-urlencoded',
            'Content-Length': Buffer.byteLength(postData)
          }
        };
        
        const req = http.request(options, (res) => 
          {
              res.setEncoding('utf8');
              res.on('data', chunk => {
                  dataString += chunk;
              });
              
              res.on('end', () => {
                  resolve({
                       "body":dataString
                  });
              });
            
          });//http.request
        
       
        req.on('error', (e) => {
          console.error("problem with request: "+e.message);
          reject({
              statusCode: 500,
              body: 'Something went wrong!'
          });
        });
        
        
        // Write data to request body
        req.write(postData);
        req.end();
    
    }); //Promise
    
    return response;

};//httpPost
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50572672

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档