Aws lambda 如何从Lambda函数将消息发送回设备?

Aws lambda 如何从Lambda函数将消息发送回设备?,aws-lambda,alexa-skill,aws-iot,Aws Lambda,Alexa Skill,Aws Iot,我们是否可以通过Alexa Skill调用的Lambda函数向设备发送消息。该消息包含Lambda函数收集的一些值。 所以基本上我想这样做: 设备-->语音命令-->Alexa技能--(触发器)-->Lambda功能 Lambda函数(收集值)--消息--->设备 Java中有什么例子吗 谢谢你的指点/帮助 -詹姆斯是一个非常相似的问题,答案是:“现在还不可能” 我将详细说明。您可以向技能(如新功能)的所有用户发送通知,但不能向调用函数的特定用户发送通知 要向所有启用通知的Alexa技能用户

我们是否可以通过Alexa Skill调用的Lambda函数向设备发送消息。该消息包含Lambda函数收集的一些值。 所以基本上我想这样做:

  • 设备-->语音命令-->Alexa技能--(触发器)-->Lambda功能
  • Lambda函数(收集值)--消息--->设备
Java中有什么例子吗

谢谢你的指点/帮助

-詹姆斯是一个非常相似的问题,答案是:“现在还不可能”

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

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


有关向特定用户发送通知的限制的更多信息,请参阅此文档。

您所要求的内容可以完成

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

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

下面是NodeJS中Lambda
http
post的示例。触发器数据来自
请求
。因此,您应该知道将引入什么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
}

“向设备发送消息”是什么意思?Alexa函数返回要说的文本。您还想向设备发送什么?感谢您的回复,我看到Alexa函数返回一个“响应”,但如何在代码中获得该响应?有什么例子可以处理这种反应吗?再次感谢。你检查过表了吗?它链接到。目前最好的工具包使用node.js。它将帮助构建您发送回Alexa服务的响应对象,然后Alexa服务将与发出该命令的Alexa设备通信。