whatsapp-cloud-api
هي مكتبة Node.js لإنشاء الروبوتات وإرسال/استقبال الرسائل باستخدام Whatsapp Cloud API.
يحتوي على إعلانات Typescript المضمنة.
تمت أرشفة هذا المشروع الآن. يرجى قراءة المزيد هنا.
باستخدام npm:
npm i whatsapp-cloud-api
باستخدام الغزل:
yarn add whatsapp-cloud-api
import { createBot } from 'whatsapp-cloud-api' ;
// or if using require:
// const { createBot } = require('whatsapp-cloud-api');
( async ( ) => {
try {
// replace the values below
const from = 'YOUR_WHATSAPP_PHONE_NUMBER_ID' ;
const token = 'YOUR_TEMPORARY_OR_PERMANENT_ACCESS_TOKEN' ;
const to = 'PHONE_NUMBER_OF_RECIPIENT' ;
const webhookVerifyToken = 'YOUR_WEBHOOK_VERIFICATION_TOKEN' ;
// Create a bot that can send messages
const bot = createBot ( from , token ) ;
// Send text message
const result = await bot . sendText ( to , 'Hello world' ) ;
// Start express server to listen for incoming messages
// NOTE: See below under `Documentation/Tutorial` to learn how
// you can verify the webhook URL and make the server publicly available
await bot . startExpressServer ( {
webhookVerifyToken ,
} ) ;
// Listen to ALL incoming messages
// NOTE: remember to always run: await bot.startExpressServer() first
bot . on ( 'message' , async ( msg ) => {
console . log ( msg ) ;
if ( msg . type === 'text' ) {
await bot . sendText ( msg . from , 'Received your text message!' ) ;
} else if ( msg . type === 'image' ) {
await bot . sendText ( msg . from , 'Received your image!' ) ;
}
} ) ;
} catch ( err ) {
console . log ( err ) ;
}
} ) ( ) ;
إرسال أنواع رسائل أخرى (اقرأ المزيد في مرجع واجهة برمجة التطبيقات):
// Send image
const result = await bot . sendImage ( to , 'https://picsum.photos/200/300' , {
caption : 'Random jpg' ,
} ) ;
// Send location
const result = await bot . sendLocation ( to , 40.7128 , - 74.0060 , {
name : 'New York' ,
} ) ;
// Send template
const result = await bot . sendTemplate ( to , 'hello_world' , 'en_us' ) ;
خادم سريع مخصص (اقرأ المزيد أدناه):
import cors from 'cors' ;
// Create bot...
const bot = createBot ( ... ) ;
// Customize server
await bot . startExpressServer ( {
webhookVerifyToken : 'my-verification-token' ,
port : 3000 ,
webhookPath : `/custom/webhook` ,
useMiddleware : ( app ) => {
app . use ( cors ( ) ) ,
} ,
} ) ;
الاستماع إلى أنواع الرسائل الأخرى (اقرأ المزيد في مرجع واجهة برمجة التطبيقات):
const bot = createBot ( ... ) ;
await bot . startExpressServer ( { webhookVerifyToken } ) ;
// Listen to incoming text messages ONLY
bot . on ( 'text' , async ( msg ) => {
console . log ( msg ) ;
await bot . sendText ( msg . from , 'Received your text!' ) ;
} ) ;
// Listen to incoming image messages ONLY
bot . on ( 'image' , async ( msg ) => {
console . log ( msg ) ;
await bot . sendText ( msg . from , 'Received your image!' ) ;
} ) ;
افتراضيًا، ستكون نقطة النهاية للطلبات المتعلقة بـ whatsapp هي: /webhook/whatsapp
. هذا يعني أن عنوان URL الخاص بك محليًا سيكون: http://localhost/webhook/whatsapp
.
يمكنك استخدام وكيل عكسي لجعل الخادم متاحًا للعامة. مثال على ذلك نجروك.
يمكنك قراءة المزيد عن البرنامج التعليمي.
يؤدي التنفيذ أعلاه إلى إنشاء خادم سريع لك يستمع من خلاله إلى الرسائل الواردة. قد تكون هناك خطط لدعم أنواع أخرى من الخوادم في المستقبل (نرحب بممثلي العلاقات العامة! :)).
يمكنك تغيير المنفذ على النحو التالي:
await bot . startExpressServer ( {
port : 3000 ,
} ) ;
افتراضيًا، تتم معالجة جميع الطلبات من خلال نقطة النهاية POST|GET /webhook/whatsapp
. يمكنك تغيير هذا على النحو التالي:
await bot . startExpressServer ( {
webhookPath : `/custom/webhook` ,
} ) ;
ملحوظة: تذكر البادئة /
; أي لا تستخدم custom/whatsapp
؛ بدلاً من ذلك استخدم /custom/whatsapp
.
إذا كنت تقوم بالفعل بتشغيل خادم سريع في تطبيقك، فيمكنك تجنب إنشاء خادم جديد باستخدامه على النحو التالي:
// your code...
import express from 'express' ;
const app = express ( ) ;
...
// use the `app` variable below:
await bot . startExpressServer ( {
app ,
} ) ;
لإضافة البرامج الوسيطة:
import cors from 'cors' ;
await bot . startExpressServer ( {
useMiddleware : ( app ) => {
app . use ( cors ( ) ) ,
} ,
} ) ;
الإعداد المخصص الكامل:
import cors from 'cors' ;
await bot . startExpressServer ( {
webhookVerifyToken : 'my-verification-token' ,
port : 3000 ,
webhookPath : `/custom/webhook` ,
useMiddleware : ( app ) => {
app . use ( cors ( ) ) ,
} ,
} ) ;
on()
المستمعتستخدم هذه المكتبة pubsub عملية واحدة، مما يعني أنها لن تعمل بشكل جيد إذا كنت تقوم بالنشر على مجموعات متعددة المثيلات، على سبيل المثال، مجموعات Kubernetes الموزعة. في المستقبل، قد تكون هناك خطط لتصدير/دعم مرجع pubsub الذي يمكن تخزينه في وحدة تخزين خارجية، على سبيل المثال redis (نرحب بـ العلاقات العامة! :)).
# install npm modules
npm i
# eslint
npm run lint
# typescript check
npm run ts-check
# test
# # Read 'Local Testing' below before running this
npm t
# build
npm run build
قم بإنشاء ملف .env في جذر مشروعك:
FROM_PHONE_NUMBER_ID=""
ACCESS_TOKEN=""
VERSION=""
TO=""
WEBHOOK_VERIFY_TOKEN=""
WEBHOOK_PATH=""
واجهة برمجة تطبيقات المكتبة مستوحاة من Node-telegram-bot-api.
أي وجميع العلاقات العامة مفتوحة.