whatsapp-api-js: ساخت ربات واتساپ با TypeScript
خلاصهٔ کاملتر
whatsapp-api-js یه کتابخونهی TypeScript هست که ارتباط با WhatsApp Cloud API رو برات آسون میکنه. این پکیج سبک، بدون dependency خارجی، و کاملاً تایپدار طراحی شده، یعنی هم توی پروژههای بزرگ راحت باهاش کار میکنی، هم نگران حجم اضافه نیستی.
برای شروع، باید یه اپ Meta Business داشته باشی که WhatsApp API روش فعاله. بعد از اون، API Token و App Secret رو از داشبورد Meta میگیری و پکیج رو نصب میکنی.
بعد از نصب، میتونی یه instance از WhatsAppAPI بسازی و شروع به گوش دادن به پیامهای ورودی کنی. این کتابخونه یه سیستم event-based داره که باهاش میتونی روی رویدادهایی مثل دریافت پیام یا ارسال موفق واکنش نشون بدی:
import { WhatsAppAPI } from "whatsapp-api-js";
import { Document, Image, Text } from "whatsapp-api-js/messages";
const Whatsapp = new WhatsAppAPI({ token: TOKEN, appSecret: APP_SECRET });
Whatsapp.on.message = async ({ phoneID, from, message, name, reply }) => {
if (message.type === "text") {
await reply(new Text(`*${name}* said:\n\n${message.text.body}`), true);
}
if (message.type === "image") {
await reply(new Image(message.image.id, true, `Nice photo, ${name}`));
}
Whatsapp.markAsRead(phoneID, message.id);
return 200;
};همونطور که میبینی، هندل کردن انواع مختلف پیام خیلی تمیز و خوانا هست. پیامهای متنی، عکس، سند و خیلی انواع دیگه مثل لوکیشن، تمپلیت، interactive و reaction هم پشتیبانی میشن.
برای دریافت آپدیت پیامها، باید webhook رو توی داشبورد Meta تنظیم کنی. کتابخونه یه GET handler هم برای احراز هویت webhook داره که فقط کافیه Verify Token دلخواهت رو بهش بدی:
const Whatsapp = new WhatsAppAPI({
token: TOKEN,
appSecret: APP_SECRET,
webhookVerifyToken: VERIFY_TOKEN
});
function get(e) {
return Whatsapp.get(e.query);
}کتابخونه کاملاً تایپدار هست و میتونی تایپهای مورد نیازت رو از فایلهای /types و /emitters ایمپورت کنی. این کار کمک میکنه که توی ادیتور autocomplete و type-checking درستی داشته باشی.
پشتیبانی از رانتایمها و فریمورکهای مختلف هم یکی از ویژگیهای مهم این پکیجه و فایل Environments.md جزئیات راهاندازی روی هر پلتفرم رو توضیح میده. یه پوشهی examples هم داره که نحوهی ساخت انواع مختلف پیام و استفاده از متدهای اصلی کتابخونه رو نشون میده.
برای کسایی که میخوان آخرین تغییرات رو دنبال کنن، لیست کامل breaking changes توی فایل BREAKING.md موجوده و یه نسخهی بتا هم با تگ @beta روی npm قابل نصبه، هرچند استفاده ازش در محیط پروداکشن توصیه نمیشه.
نکات کلیدی:
- کتابخونهی TypeScript برای WhatsApp Cloud API، سبک و بدون dependency خارجی
- سیستم event-based برای مدیریت پیامهای دریافتی و ارسالی
- پشتیبانی از انواع مختلف پیام: متن، عکس، سند، لوکیشن، تمپلیت، interactive و بیشتر
- شامل GET handler برای احراز هویت webhook و POST handler برای دریافت پیامها
- کاملاً تایپدار با قابلیت ایمپورت تایپها از
/typesو/emitters - نسخهی بتا با
npm install whatsapp-api-js@betaقابل نصبه (با احتیاط!)




