gpt4 book ai didi

javascript - 自定义函数成功响应/node.js

转载 作者:行者123 更新时间:2023-12-04 08:13:32 24 4
gpt4 key购买 nike

我将此 node.js 代码用作 IBM Cloud 函数,让 Watson Assistant 的用户通过电子邮件向我发送提醒。很好用。

var nodemailer = require('nodemailer');

let smtpConfig = {
host: 'hosthere', // you can also use smtp.gmail.com
port: porthere,
secure: false, // use TLS
auth: {
user: 'emailhere',
pass: 'passwordhere'
}
};

function main(params) {
return new Promise(function (resolve, reject) {
let response = {
code: 200,
msg: 'E-mail was sent successfully!'
};

if (!params.reminder) {
response.msg = "Error: Reminder was not provided.";
response.code = 400;
}
else if (!params.email) {
response.msg = "Error: Destination e-mail was not provided.";
response.code = 400;
}
else if (!params.conversation_id) {
response.msg = "Error: Conversation id was not provided.";
response.code = 400;
}
if (response.code != 200) {
reject(response);
}

console.log(`Validation was successful, preparing to send email...`);

sendEmail(params, function (email_response) {
response.msg = email_response['msg'];
response.code = email_response['code'];
response.reason = email_response['reason'];
console.log(`Email delivery response: (${email_response['code']}) ${response.msg}`);
resolve(response);
});

});
}

function sendEmail(params, callback) {

let transporter = nodemailer.createTransport(smtpConfig);
let mailOptions = {
from: `Watson Assistent Message <${smtpConfig.auth.user}>`,
to: params.email,
subject: `REMINDER: ${params.reminder}`,
text: `Do it!`
};
transporter.sendMail(mailOptions, function (error, info) {

let email_response = {
code: 200,
msg: 'Email was sent successfully',
reason: 'Success'
};

if (error) {
email_response.msg = 'Error';
email_response.code = 500;
email_response.reason = error;
}
else {
email_response.msg = info.response;
email_response.code = 200;
email_response.reason = info.response;
}
callback(email_response);
});
}
我只需要在请求成功后自定义“结果”中显示的响应。所以我可以向用户打印类似“电子邮件发送成功”的内容(如果它确实成功了)
调用该函数时,它给了我这个:
Results:
{
"code": 200,
"msg": "250 Requested mail action okay, completed: id=1N0Fxf-1lzPHJ457n-00xO6a",
"reason": "250 Requested mail action okay, completed: id=1N0Fxf-1lzPHJ457n-00xO6a"
}
Logs:
[
"2021-01-20T23:11:38.706021Z stdout: Validation was successful, preparing to send email...",
"2021-01-20T23:11:39.117946Z stdout: Email delivery response: (200) 250 Requested mail action okay, completed: id=1N0Fxf-1lzPHJ457n-00xO6a"
]
问题是,打印到“msg”的整个答案在代码中没有任何定义。实际上,代码中有一个成功请求的定义答案,只是没有打印出来。
这是为什么?我怎么能改变呢?
有了错误响应,一切正常。代码中定义的答案打印在“results”:
Results:
{
"error": {
"code": 400,
"msg": "Error: Destination e-mail was not provided."
}
}
Logs:
[
"2021-01-21T09:47:14.531598Z stdout: Validation was successful, preparing to send email..."
]
成功消息有什么问题?

最佳答案

当你定义:msg: 'Email was sent successfully',email_response它只是被 if/else 覆盖了.
如果您希望电子邮件已成功发送消息(或者如果不是 oky),请执行以下操作:

callback(error ? {
code: 500,
msg: 'Error',
reason: error
} : {
code: 200,
msg: 'Success',
reason: info.response.includes('okey') ? 'Email was sent successfully' : info.response
})

关于javascript - 自定义函数成功响应/node.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65824946/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com