【问题标题】:getting response on console without response on agent.add()在控制台上获得响应而对 agent.add() 没有响应
【发布时间】:2019-04-17 05:56:37
【问题描述】:

我正在尝试向某人发送电子邮件。我在控制台中打印成功消息,我的代码运行良好并成功发送电子邮件,但是当我在代理中将其打印为消息时,它在响应之前显示不可用。这是我的代码:

function sendEmail(agent){
//get email and name and message and subject

  console.log("Email befor getting: " +fetchedEmail);
  getEmail(agent.parameters.name).then(function(){
    console.log("the email is fetched: "+fetchedEmail);

    const nodemailer = require('nodemailer');
    const transporter = nodemailer.createTransport({
      service: 'gmail',
      auth: {
        user: '*********@gmail.com',
        pass: '*******************'
      }
    });
    var mailOptions = {
      from: '*******@gmail.com',
      to: fetchedEmail, //receiver email 
      subject: agent.parameters.subject,
      text: agent.parameters.message
    };


    return createMessage(mailOptions,transporter).then(()=>{
      console.log("email sent successfully");//this message printed on console
      agent.add(`email sent successfully`);// this not printed in agent

    }).catch(()=>{
      agent.add(`fail`);
    });




  });
}// end of send email

function createMessage(mailOptions,transporter){
return new Promise((resolve,reject)=>{
  // i promise to send email
  transporter.sendMail(mailOptions, function (error, info) {
        if (error) {
          console.log("there is error");
          reject(error);
        } else {
          console.log("success");// printed on console
          resolve('Email sent: ' + info.response);
        }
      });



});


}//end of create message
//---

【问题讨论】:

    标签: node.js dialogflow-es


    【解决方案1】:

    问题是您正在使用 Promises 执行异步函数(您对 getEmail()createMessage() 的调用),但您没有从 sendEmail() 本身返回 Promise。

    Dialogflow 库要求,如果您正在执行异步函数,则返回一个 Promise,以便 Intent Handler 调度程序知道您正在执行异步函数。

    在您的情况下,最简单的方法是从 getEmail().then() 链返回 Promise。因此,像这样更改行应该可以工作:

    return getEmail(agent.parameters.name).then(function(){
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-28
      • 2019-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多