whatsapp-cloud-api
adalah perpustakaan Node.js untuk membuat bot dan mengirim/menerima pesan menggunakan Whatsapp Cloud API.
Berisi deklarasi TypeScript bawaan.
Proyek ini sekarang Diarsipkan . Silakan baca lebih lanjut di sini.
Menggunakan npm:
npm i whatsapp-cloud-api
Menggunakan benang:
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 ) ;
}
} ) ( ) ;
Mengirim jenis pesan lain (baca selengkapnya di referensi API):
// 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' ) ;
Server ekspres yang disesuaikan (baca lebih lanjut di bawah):
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 ( ) ) ,
} ,
} ) ;
Mendengarkan jenis pesan lain (baca selengkapnya di referensi API):
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!' ) ;
} ) ;
Secara default, titik akhir untuk permintaan terkait whatsapp adalah: /webhook/whatsapp
. Artinya secara lokal, URL Anda adalah: http://localhost/webhook/whatsapp
.
Anda dapat menggunakan proxy terbalik untuk membuat server tersedia untuk umum. Contohnya adalah ngrok.
Anda dapat membaca lebih lanjut di Tutorial.
Implementasi di atas membuat server ekspres untuk Anda yang dapat digunakan untuk mendengarkan pesan masuk. Mungkin ada rencana untuk mendukung jenis server lain di masa depan (PR dipersilakan! :)).
Anda dapat mengubah port sebagai berikut:
await bot . startExpressServer ( {
port : 3000 ,
} ) ;
Secara default, semua permintaan ditangani oleh titik akhir POST|GET /webhook/whatsapp
. Anda dapat mengubahnya seperti di bawah ini:
await bot . startExpressServer ( {
webhookPath : `/custom/webhook` ,
} ) ;
Catatan: Ingat /
; yaitu tidak menggunakan custom/whatsapp
; sebagai gantinya gunakan /custom/whatsapp
.
Jika Anda sudah menjalankan server ekspres di aplikasi Anda, Anda dapat menghindari pembuatan yang baru dengan menggunakannya seperti di bawah ini:
// your code...
import express from 'express' ;
const app = express ( ) ;
...
// use the `app` variable below:
await bot . startExpressServer ( {
app ,
} ) ;
Untuk menambahkan middleware:
import cors from 'cors' ;
await bot . startExpressServer ( {
useMiddleware : ( app ) => {
app . use ( cors ( ) ) ,
} ,
} ) ;
Pengaturan penuh yang disesuaikan:
import cors from 'cors' ;
await bot . startExpressServer ( {
webhookVerifyToken : 'my-verification-token' ,
port : 3000 ,
webhookPath : `/custom/webhook` ,
useMiddleware : ( app ) => {
app . use ( cors ( ) ) ,
} ,
} ) ;
on()
pendengarPustaka ini menggunakan proses pubsub tunggal, yang berarti pustaka ini tidak akan berfungsi dengan baik jika Anda menerapkannya pada kluster multi-instance, misalnya kluster Kubernetes yang terdistribusi. Di masa depan, mungkin ada rencana untuk mengekspor/mendukung referensi pubsub yang dapat disimpan di penyimpanan eksternal, misalnya redis (PR dipersilakan! :)).
# 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
Buat file .env di root proyek Anda:
FROM_PHONE_NUMBER_ID=""
ACCESS_TOKEN=""
VERSION=""
TO=""
WEBHOOK_VERIFY_TOKEN=""
WEBHOOK_PATH=""
Library API terinspirasi oleh node-telegram-bot-api.
Semua PR terbuka.