توابع Yandex نامه ارسال می کنند

توابع Yandex نامه ارسال می کنند

امروز ما به اصطلاح ایجاد خواهیم کرد. تابع Yandex (نام رسمی توابع ابر یاندکس) که با سرویس پستی تبانی کرد SendGrid "صابون" را برای کاربرانی که در خواب آرام هستند ارسال می کند (شوخی می کنم - می دانم که همه ما با هرزنامه مخالفیم).

من هم مخالف (اما بدون تعصب) سرورهای سنتی هستم و طرفدار به اصطلاح. بدون سرور راه حل های (بدون سرور)، زیرا من دوست ندارم (و واقعاً نمی دانم چگونه) سرورها را مدیریت کنم و حتی بیشتر از آن - برای زمانی که بارگذاری نمی شوند هزینه کنم. چیز دیگر توابع است. کسی بدون من به آنها خدمات می دهد و من فقط هزینه تماس را پرداخت می کنم. در ابتدای اکتبر 2019، Yandex خود را ارائه کرد توابع ابر یاندکس - به نظر می رسد اولین در فدراسیون روسیه است بدون سرور. و چیزی که به خصوص خوب است این است که برای مهارت های آلیس، آنها به طور کلی آزاد هستند، بنابراین از آن زمان تاکنون در دید پیرامونی من بوده اند. اما بیایید از قبل شروع کنیم.

بیایید این سناریو را تصور کنیم. درخواست شما (به عنوان مثال، مهارت آلیس به خاطر بسپار و فراموش کن که اتفاقاً روی آن نیز کار می کند توابع Yandex) کاربر را به خرید یک محصول دیجیتال دعوت می کند، به عنوان مثال گزینه های اضافی، و کاربر پرداخت می کند. نوعی سیستم پرداخت (به طرز گیج کننده ای شبیه به Yandex.Money) پرداخت را پردازش می کند و آن را به آدرسی که شما ارائه می دهید ارسال می کند (و ما پیوندی برای تماس خواهیم داشت توابع Yandex) HTTP- درخواستی حاوی جزئیات پرداخت، مانند مبلغ، نام کامل، شماره تلفن و ایمیل پرداخت کننده. ما می خواهیم این داده ها را به طریقی پردازش کنیم، به عنوان مثال: مقدار را بررسی کنید، ورودی های مناسب را در پایگاه داده انجام دهید، برای کاربران ارسال کنید. SMS и پست الکترونیک (ایمیل) با تایید دریافت پرداخت و دستورالعمل های بیشتر. پس خودت میکروسرویس.

در مورد چگونگی از توابع Yandex در پایگاه داده وارد کنید Cloud Firestore قبلاً در آموزش به آن نگاه کردیم آلیس همه چیز را به خاطر می آورد (و در آینده، من فکر می کنم، ما نمونه ای را برای پایگاه داده دیگری در نظر خواهیم گرفت - پایگاه داده Yandex). درباره نحوه ارسال به کاربران SMS و اپلیکیشن ما را با Yandex.Money - در آینده نزدیک آن را مرتب خواهیم کرد. حالا فقط به ارسال نامه بپردازیم.

1. یک حساب کاربری در SendGrid ایجاد کنید

یادداشتSendGrid فقط انتخاب من است که به چند دلیل انجام دادم، اصلی ترین دلیل این است که آنها یک SDK آماده برای Node.js دارند. شما می توانید هر سرویس پستی دیگری را انتخاب کنید.

بیایید ادامه دهیم به صفحه ثبت حساب و فرم ثبت نام را در آنجا پر کنید. سپس به داشبورد، در پانل پیمایش را انتخاب کنید ایمیل API -> راهنمای ادغامو در پانل اصلی - API وب و دکمه را فشار دهید را انتخاب کنید. همه چیز مانند تصویر است:

توابع Yandex نامه ارسال می کنند

در مرحله بعد انتخاب می کنیم Node.js و:

توابع Yandex نامه ارسال می کنند

بعد ما برای خودمان می آییم API-نام کلید (فقط در کنسول در لیست کلیدها نمایش داده می شود و ربطی به کد آینده ما ندارد؛ من فقط به یک فاسد شدنی رسیدم دمو-آپی-کلید) و دکمه را فشار دهید کلید ایجاد کنید:

توابع Yandex نامه ارسال می کنند

کلید تولید می شود، ما آن را کپی می کنیم و در عمیق ترین اطمینان نگه می داریم. و ما یک صفحه نمایش با یک دکمه خواهیم داشت یکپارچگی را تأیید کنیدمانند تصویر زیر، اما ما هنوز روی آن کلیک نمی کنیم، اما اجازه دهید به نوشتن کد ادامه دهیم:

توابع Yandex نامه ارسال می کنند

2. نوشتن کد

اما خود کد، همانطور که می بینید، به طرز مسخره ای کوچک است - 22 خط!

توابع Yandex نامه ارسال می کنند

در صف #8 ایمیل من سخت کد شده است (و بنابراین خجالتی پنهان شده است) - لطفاً ایمیل خود را نشان دهید. در زندگی واقعی، ما تمام داده ها (از جمله پست الکترونیک) از شی واقعه. به عنوان مثال، اگر روش پست یک شی به تابع ما ارسال می شود کاربر دارای زمینه (مالکیت) پست الکترونیک، مقدار این فیلد را می توان به صورت زیر بدست آورد:

const { user } = event;
const email = user.email;

و اگر آدرس ایمیل با استفاده از روش به تابع ارسال شود شو، برای مثال: https://functions.yandexcloud.net/123abc?[email protected]
مقدار پارامتر پست الکترونیک شما می توانید آن را به این صورت دریافت کنید:

const email = event.queryStringParameters.email;

نگاهی به آنچه دقیقاً در یک شی وجود دارد واقعه، می توانید ساده ترین را ایجاد کنید تابع Yandex و آن را با پرس و جوها بچرخانید:

module.exports.handler = async function (event) {
  return {
   'statusCode': 200, 
   'body': JSON.stringify(event)
  };
};

این با جزئیات بیشتر (اما با وضوح کمتر) در اسناد رسمی مورد بحث قرار گرفته است اینجا.

بنابراین، یک فهرست پروژه ایجاد کنید (به عنوان مثال، پستچی، به آن بروید، پروژه را مقداردهی اولیه کنید، وابستگی ها را نصب کنید:

mkdir mailer
cd mailer
npm init -y
npm i @sendgrid/mail email-validator dotenv

در اینجا فقط بسته مورد نیاز است @sendgrid/mail. کیسه پلاستیکی اعتبار سنجی ایمیل آدرس ایمیل را از نظر اعتبار بررسی می کند (چطور من بلافاصله حدس نمی زدم؟)، اما اگر از آن مطمئن باشیم (قبلاً بدون ما برای مدت طولانی بررسی شده است)، نیازی به نصب آن نداریم (و البته، ما مجبور نیستیم آن را در کد بررسی کنیم). کیسه پلاستیکی dotenv طراحی شده برای خواندن سوابق از یک فایل .NS به عنوان متغیرهای زمان اجرا ولی در توابع Yandex امکان قرار دادن این متغیرها به طور مستقیم در محیط زمان اجرا وجود دارد. چگونه؟ - من آن را در زیر نشان می دهم. بنابراین بسته dotenv شما همچنین نمی توانید آن را نصب کنید، و فایل .NS - ایجاد نکنید و در عین حال کد در فایل موجود است index.js تغییر نده. اما در اینجا ما این بسته را نصب کرده ایم، بنابراین فایل ها را ایجاد می کنیم index.js и .NS:

touch index.js
touch .env

در پرونده index.js 22 خط کد نشان داده شده در تصویر بالا بنویسید (فقط در خط #8 ایمیل خود را تغییر دهید)، و در فایل .NS - (بدون هیچ گونه نقل قول یا نقطه گذاری) جفت - نام/مقدار کلید را مشخص کنید APIکه اخیرا در کنسول دریافت کردیم SendGrid:
SENDGRID_API_KEY=خیلی-مخفی-sendgrid-api-key

و اگر کار کمتری می خواهید، مخزن را کلون کنید و بسته ها را نصب کنید:

git clone https://github.com/stmike/ycf-sendgrid-mailer-tutorial.git
cd ycf-sendgrid-mailer-tutorial
npm i

در پرونده index.js، در صف #8 تغییر ایمیل؛ یک فایل در دایرکتوری ریشه ایجاد کنید .NSو در آن نام/مقدار کلید را مشخص کنید API، همانطور که در بالا نشان داده شده است.

3. مستقر کنید

کم و بیش واضح و با جزئیات در مورد Yandex.Cloud و نحوه قرار دادن آن در آنجا توابع Yandex در مقاله من شرح داده شده است آلیس در سرزمین بیتریکس - من نادانان را به این کشور می فرستم و برای همه (و کسانی که برگشتند) - سپس یک کتاب کمیک کوچک (یعنی یک سری عکس و متن).

ما ایجاد می کنیم زیپ-بایگانی (مثلاً آن را بنامیم، mailer.zip) که در آن دایرکتوری را قرار می دهیم node_modules و فایل ها .env، index.js - همه چیز از کاتالوگ پروژه ما:

توابع Yandex نامه ارسال می کنند

ما یک تابع با نام ... درست می کنیم - پستچی، در منوی ناوبری سمت چپ وارد می شویم سردبیر، فیلدهای مورد نیاز را پر کنید و به برگه بروید آرشیو ZIP آرشیو ما را دانلود کنید mailer.zip:

توابع Yandex نامه ارسال می کنند

و در اینجا گزینه ای که قبلا ذکر شد برای دانلود وجود دارد کلید ای پی ای به‌جای ایجاد فایل در پروژه، مستقیماً در اینجا .NS، و بسته را نصب نکنید dotenv. اما ما قبلاً همه این کارها را انجام داده‌ایم، بنابراین فقط برای اطلاعات آن را نشان می‌دهم. یعنی نیازی به کپی نیست!

توابع Yandex نامه ارسال می کنند

حالا در گوشه بالا سمت راست روی دکمه کلیک کنید ایجاد نسخهو چند ثانیه صبر کنید. وقتی همه چیز آماده شد، به طور خودکار به بخش خواهیم رفت مرور. در آنجا گزینه را فعال خواهیم کرد عملکرد عمومیتا بتوانید از دنیای بیرون با آن تعامل داشته باشید.

توابع Yandex نامه ارسال می کنند

لینک آبی رنگ روبروی کتیبه را می بینید لینک تماس? روی آن کلیک کنید. یک پنجره خالی مرورگر باز می شود ... اما صبر کنید - یک ایمیل دریافت کردم:

توابع Yandex نامه ارسال می کنند

اکنون می توانید به کنسول بازگردید SendGrid، و دکمه را فشار دهید یکپارچگی را تأیید کنید. سیستم همه چیز را از طریق کانال های خود بررسی می کند و در نتیجه باید صفحه ای مانند این را برگرداند:

توابع Yandex نامه ارسال می کنند

همین است، بچه ها (البته دختران) - همه چیز واقعاً بسیار ساده و ظریف است! مقالات بیشتری وجود خواهد داشت. اگر کسی علاقه مند به خواندن چنین چیزی است، مشترک شوید تا فرصت را از دست ندهید.

4. کمک های مالی

توابع Yandex نامه ارسال می کنند

منبع: www.habr.com

اضافه کردن نظر