Amazon web services 从Alexa skill呼叫AES SES Sendmail

Amazon web services 从Alexa skill呼叫AES SES Sendmail,amazon-web-services,alexa,alexa-skills-kit,amazon-ses,alexa-sdk-nodejs,Amazon Web Services,Alexa,Alexa Skills Kit,Amazon Ses,Alexa Sdk Nodejs,几周来,我一直在想如何从Alexa托管的node.js技能调用sendmail。这是一项非常简单的技能,用户可以进行选择。当做出选择时,我想给自己发送一封包含选择内容的电子邮件。我一直在尝试从index.js调用sendmail,其中包含了我技能的逻辑。如AWS所示,我使用适当的.json文件创建了一个IAM角色,并且能够从AWS命令行界面运行一个基本节点文件,向我发送电子邮件。我需要采取什么样的步骤才能让我的Alexa技能发送电子邮件?我可以调用lambda函数吗?它已经在我的Alexa技能中

几周来,我一直在想如何从Alexa托管的node.js技能调用sendmail。这是一项非常简单的技能,用户可以进行选择。当做出选择时,我想给自己发送一封包含选择内容的电子邮件。我一直在尝试从index.js调用sendmail,其中包含了我技能的逻辑。如AWS所示,我使用适当的.json文件创建了一个IAM角色,并且能够从AWS命令行界面运行一个基本节点文件,向我发送电子邮件。我需要采取什么样的步骤才能让我的Alexa技能发送电子邮件?我可以调用lambda函数吗?它已经在我的Alexa技能中运行了

我一直在尝试将代码放在下面,代码与之类似,而无需NodeEmailer执行基本的ses发送电子邮件。我从aws ses网页开始。我找不到任何一个教程可以指导你一步一步地使用Alexa技巧调用ses发送电子邮件功能,如果能为你指明正确的方向,我将不胜感激。 '''

'''

编辑:谢谢大家的回复!我得到的唯一值得注意的错误是请求的技能响应存在问题。所以我的Alexa技能是亚马逊托管的。我是否必须将此更改为使用SES,sendEmail()?在amazon上的lambda页面中,我在一个名为sendEmail()的文件夹中有一个文件,但在调试器中输出“errorMessage”时,这会导致关于行AWS=require(等)的错误:“2021-03-14T00:33:00.315Z e19e74c6-4c00-47dc-9872-77c0a602541a任务在3.00秒后超时”我在名为sendEmail的lambda函数中的代码实际上是下面的代码。sendEmail()行也给出了Alexa请求的技能响应存在问题。我在lambda函数中没有看到我的Alexa技能。我必须添加它吗?抱歉,我真的是AWS编程的noob。谢谢

`AWS = require('aws-sdk');
// Set the region 
AWS.config.update({region: 'us-east-1'});
// Create sendEmail params 
var params = {
  Destination: { /* required */
    ToAddresses: [
      'x@gmail.com',
      /* more items */
    ]
  },
  Message: { /* required */
    Body: { /* required */
      Html: {
       Charset: "UTF-8",
       Data: "HTML_FORMAT_BODY"
      },
      Text: {
       Charset: "UTF-8",
       Data: "TEXT_FORMAT_BODY"
      }
     },
     Subject: {
      Charset: 'UTF-8',
      Data: 'Test email'
     }
    },
  Source: 'x@gmail.com', /* required */
  ReplyToAddresses: [
     'pamphl3t@gmail.com',
    /* more items */
  ],
};
// Create the promise and SES service object
var sendPromise = new AWS.SES({apiVersion: '2010-12-01'}).sendEmail(params).promise();
// Handle promise's fulfilled/rejected states
sendPromise.then(
  function(data) {
    console.log(data.MessageId);
  }).catch(
    function(err) {
    console.error(err, err.stack);
  });`
我相信您需要的是文档的完整性。将自定义技能应用于Lambda功能后,您需要将正文内容发送到您的电子邮件:

const querystring = require('querystring');
let post_data = null;
exports.handler = function (event, context) {
post_data = querystring.stringify(event.body);
}

// your emailing code here

也请检查此项

您在哪里定义
process.env
?如果您在Alexa Hosted中运行,您将获得Alexa拥有的IAM角色的环境变量,该角色将无法访问SES


您是否尝试过对个人AWS帐户中的密钥和密码进行硬编码?如果可以解决此问题,请查看在package.json中添加dotenv包,并按照其文档设置可以添加到.gitignore中的.env文件中的值。

您能提供错误信息吗?可能有许多原因导致此错误e错误,因此您可以提供更多关于正在发生的事情的信息将是有帮助的。谢谢Jason,我添加了一些关于编辑中正在发生的事情的结构的更多信息
const querystring = require('querystring');
let post_data = null;
exports.handler = function (event, context) {
post_data = querystring.stringify(event.body);
}

// your emailing code here