在 Dialogflow 中使用 NodeMailer

Use NodeMailer in Dialogflow

我想为我在 Dialogflow 中制作的程序中的操作发送一封电子邮件。

我想使用 NodeMailer,但是当我部署我的项目时,出现以下错误消息:

The deployment of your Cloud Function failed: Function load error: Code in file index.js can't be loaded. Did you list all required modules in the package.json dependencies? Detailed stack trace: Error: Cannot find module 'nodemailer'

是否可以在 DialogFlow 中使用 NodeMailer?

谢谢

听起来您正在使用 Dialogflow 中的 built-in Fulfillment Editor。

如果是这样,您在使用 NodeMailer 时遇到了两个问题

  1. 您需要将其包含在您的 package.json 文件中
  2. 默认情况下,您的代码将 运行 在网络访问受限的 Firebase 云函数中。

两者都是可以修复的。

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

正在将 NodeMailer 添加到您的 package.json

在 Fulfillment 页面的 Inline Editor 部分,您将单击标有 package.json 的选项卡。您会在其中看到一些 JSON,包括标题为 "dependencies" 的部分。您需要向该部分添加行以指示需要哪些其他 npm 模块 - 在您的情况下,"nodemailer" 包。

您的新 "dependencies" 部分可能如下所示:

  "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"
  }

对此进行测试以确保其部署正确。但是一旦部署,您可能 运行 会遇到另一个问题。

网络访问受限

对于 nodemailer 的某些配置,它似乎可能想要连接到某处的邮件服务器。 Firebase Cloud Functions 的基本级别限制您只能连接到 Google 网络服务。如果您连接到 GMail - 您可能没问题。但如果没有,则需要升级。

您可以转到 Firebase Console 并选择您用于 Dialogflow 的同一项目,然后升级到 Blaze 计划。虽然这需要您输入信用卡,并且需要支付使用费,但仍然有足够的免费套餐来进行测试和实验。