Используйте NodeMailer в диалоге

Я хотел бы отправить электронное письмо для операции в моей программе, которую я делаю в Dialogflow.

Я хочу использовать NodeMailer, но при развертывании проекта у меня появляется следующее сообщение об ошибке:

Развертывание вашей облачной функции не удалось: Ошибка загрузки функции: Код в файле index.js не может быть загружен. Вы перечислили все необходимые модули в зависимостях package.json? Подробная трассировка стека: ошибка: не удается найти модуль 'nodemailer'

Можно ли использовать NodeMailer в DialogFlow?

Спасибо

1 ответ

Решение

Похоже, вы используете встроенный редактор Fulfillment в диалоге.

Если это так, у вас есть две проблемы с использованием NodeMailer

  1. Вы должны включить его в свой файл package.json
  2. По умолчанию ваш код будет работать в облачной функции Firebase с ограниченным доступом к сети.

Оба исправимы.

Помните, однако, что вам не нужно использовать редактор Dialogflow. Вы можете запустить выполнение на любом общедоступном HTTPS-сервере.

Добавление NodeMailer в ваш package.json

На странице "Выполнение" в разделе "Встроенный редактор" перейдите на вкладку с названием 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"
  }

Проверьте это, чтобы убедиться, что оно разворачивается правильно. Но как только он развернется, вы, вероятно, столкнетесь с другой проблемой.

Ограниченный доступ к сети

Для некоторых конфигураций nodemailer кажется вероятным, что он захочет подключиться к почтовому серверу где-нибудь. Базовый уровень Firebase Cloud Functions ограничивает вас подключением только к сетевым сервисам Google. Если вы подключаетесь к GMail - у вас все будет хорошо. Но если нет, вам нужно обновить.

Вы можете сделать это, перейдя в консоль Firebase и выбрав тот же проект, который вы используете для Dialogflow, а затем обновив до Blaze Plan. Хотя для этого требуется ввести кредитную карту и выставляется счет за пользование, все еще существует бесплатный уровень, достаточный для тестирования и экспериментов.

Другие вопросы по тегам