在Dialogflow中使用NodeMailer

Vic*_*lle 1 node.js nodemailer actions-on-google dialogflow-es

我想发送一封电子邮件,用于我在Dialogflow中创建的程序中的操作.

我想使用NodeMailer但是当我部署我的项目时,我有这样的错误消息:

您的Cloud功能部署失败:功能加载错误:无法加载文件index.js中的代码.您是否列出了package.json依赖项中所有必需的模块?详细的堆栈跟踪:错误:找不到模块'nodemailer'

这可以在DialogFlow中使用NodeMailer吗?

谢谢

Pri*_*ner 7

听起来你在Dialogflow中使用了内置的Fulfillment Editor.

如果是这样,使用NodeMailer有两个问题

  1. 您需要将它包含在package.json文件中
  2. 默认情况下,您的代码将在具有有限网络访问权限的Firebase云功能中运行.

两者都是可以修复的.

但请记住,您不需要使用Dialogflow编辑器.欢迎您在任何可公开访问的HTTPS服务器上运行实现.

将NodeMailer添加到package.json中

在Fulfillment页面的Inline Editor部分中,您将单击标记为package.json的选项卡.你会在那里看到一些JSON,包括一个标题为"依赖"的部分.您需要在该部分添加行,指示其他npm模块是必需的 - 在您的情况下,是"nodemailer"包.

在此输入图像描述

您的新"依赖项"部分可能如下所示:

  "dependencies": {
    "actions-on-google": "^1.5.x",
    "firebase-admin": "^4.2.1",
    "firebase-functions": "^0.5.7",
    "nodemailer": "^4.4.2",
    "apiai": "^4.0.3"
  }
Run Code Online (Sandbox Code Playgroud)

测试一下以确保它正确部署.但是一旦它部署,你可能会遇到另一个问题.

有限的网络访问

对于nodemailer的某些配置,它似乎可能想要连接到某个地方的邮件服务器.Firebase云功能的基础级别限制您仅连接到Google网络服务.如果您要连接到GMail - 您可能没事.但如果没有,你需要升级.

您可以转到Firebase控制台并选择与Dialogflow相同的项目,然后升级到Blaze Plan.虽然这要求您输入信用卡,并且需要使用计费,但仍有一个免费套餐足以进行测试和实验.