関数の成功応答/node.jsのカスタマイズ

セブ

このnode.jsコードをIBMCloud関数として取得し、WatsonAssistantのユーザーが電子メールでリマインダーを送信できるようにしました。よく働く。

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);
    });
}

リクエストが成功した後、「結果」に表示される応答をカスタマイズする必要があります。したがって、「Eメールは正常に送信されました」のようなものをユーザーに印刷できます(実際に成功した場合)

関数を呼び出すと、次のようになります。

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:
{
  "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

電子メールが正常に送信されるようにしたい場合(または問題がない場合)は、次のようにします。

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

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

関数の成功応答/node.jsのカスタマイズ

分類Dev

Chart.jsのカスタマイズ

分類Dev

角度 js 成功応答 $scope 変数 別の関数

分類Dev

AJAX応答の成功

分類Dev

Chart.js凡例のカスタマイズ

分類Dev

Next.jsを使用したBulmaのカスタマイズ

分類Dev

Chart.JSのカスタマイズ-デバッグ方法は?

分類Dev

Djangoは成功と失敗のために応答をカスタマイズします

分類Dev

アレイのカスタマイズ

分類Dev

ggplotの凡例のカスタマイズ

分類Dev

Vimの配色のカスタマイズ

分類Dev

datatablesdataSrc関数がajax応答の成功時に呼び出されない

分類Dev

Node.JSの応答オブジェクトにカスタム関数を追加する方法

分類Dev

git関数のPreztoZSHでの補完のカスタマイズ

分類Dev

Zuul例外のカスタマイズ

分類Dev

JTextFieldのカスタマイズ

分類Dev

Swift iOSUITabBarのカスタマイズ

分類Dev

.ideavimrcの便利なカスタマイズ

分類Dev

CSS:変換のカスタマイズ

分類Dev

JHipsterのカスタマイズ

分類Dev

SqlErrorCodesのカスタマイズ

分類Dev

AndroidSearchViewのカスタマイズ

分類Dev

GridLayoutManagerのカスタマイズ

分類Dev

NopCommerceのカスタマイズ

分類Dev

ngbAccordionのカスタマイズ

分類Dev

WinFormsDesignerとTableLayoutPanelSmartTagのカスタマイズ

分類Dev

ASP.NETIDのカスタマイズ

分類Dev

Sylius、ProductAttributeValueのカスタマイズ

分類Dev

画像pdfmakeのカスタマイズ