Cara Mengirim File PDF Melalui WhatsApp Dengan NodeJS - CRUDPRO

Cara Mengirim File PDF Melalui WhatsApp Dengan NodeJS

Komunikasi yang efektif adalah kunci untuk membangun dan memelihara hubungan pelanggan yang kuat dalam bisnis apa pun. Ini membantu Anda mendapatkan loyalitas yang mengarah pada pembelian, ulasan positif, dan rujukan. Sebaliknya, komunikasi yang buruk dapat menyebabkan ketidakpuasan, frustrasi, dan kehilangan penjualan. Dan di era media sosial, kata-kata negatif dari mulut ke mulut dapat menyebar seperti api. Media yang Anda pilih untuk komunikasi Anda sama pentingnya dengan apa yang ingin Anda sampaikan kepada pelanggan Anda. Komunikasi yang dipersonalisasi terkait dengan layanan, kampanye pemasaran, dan pemesanan pelanggan memainkan peran penting dalam menentukan pengalaman pelanggan secara keseluruhan. Pengalaman pelanggan yang baik meningkatkan tingkat retensi pelanggan perusahaan. Ada beberapa media yang memungkinkan komunikasi seperti SMS, email, notifikasi, panggilan, ivr, tetapi whatsapp telah mendapatkan banyak popularitas selama beberapa tahun terakhir.

Blog ini menjelaskan cara mengirim dokumen informasi ke pelanggan Anda sebagai PDF melalui whatsapp, Anda dapat mengirim dokumen dalam format lain melalui whatsapp dengan mengikuti langkah-langkah berikut:

Buat objek data yang berisi semua informasi penting yang akan dikirim sebagai bagian dari PDF. Sebut saja isinya. kemudian buat template html yang menentukan struktur dan tata letak PDF untuk ditampilkan kepada pengguna akhir. Anda dapat menggunakan template engine Handlebars untuk membuat html dan mendapatkan template yang dikompilasi.

let template = await Promise.resolve(Handlebars.compile(html));

Saya menggunakan library html-pdf untuk membuat pdf dengan cara berikut dengan meneruskan parameter filePath dan opsi sesuai kebutuhan.
const pdfCreator = require('html-pdf');
// file path where created pdf will get stored
const filePath = resolve('whatsapp/pdf/');
let content = {
    user_name : 'Garry',
    greeting_info: 'Have a great day!!'
};
async function createPdf(content, filePath, template) {
    const options = {
        format: "A3",
        orientation: "portrait",
        border: "32px",
        type: "pdf"
    };

    return new Promise(function (resolve, reject) {
        pdfCreator.create(template(content), options).toFile(filePath, (err, res) => {
            if (err) {
                reject(err);
            }
            resolve();
        });
    })
}

Setelah PDF dibuat, Anda perlu mengunggahnya ke server whatsapp menggunakan whatsapp business api /v1/media.

const fs = require('fs');
// contentType - 'application/pdf'
async function uploadOnWhatsapp(filePath, contentType) {
    const stats = fs.statSync(filePath);
    const fileSizeInBytes = stats.size;
    let requestOptions = {
        method: 'POST',
        url: whatsapp_server_url+ '/v1/media',
        json: true,
        headers: {
            authorization: your_bearer_token,
            'content-type' : contentType,
            'content-length': fileSizeInBytes,
        },
    };
    return await fs.createReadStream(filePath).pipe(requestPromise(requestOptions));
}

Jika dokumen berhasil diunggah, respons akan mengembalikan ID dokumen.

{
    "media": [
        {
            "id": "f043afd0-f0ae-4b9c-ab3d-696fb4c8cd68"
        }
    ]
}

Jika Anda menerima respons kesalahan, silakan lihat disni untuk mempelajari lebih lanjut tentang kesalahan ini dan penyelesaiannya.

Setelah mengunggah dokumen, Anda dapat menggunakan API bisnis whatsapp /v1/messages untuk mengirimkannya ke pengguna whatsapp sebagai permintaan posting http menggunakan media.id yang sama yang diterima sebagai response atas permintaan unggahan.

async function sendWhatsappMsg() {
const requestOptions = {
    method: 'POST',
    url: whatsapp_server_url+ '/v1/messages',
    headers: {
        authorization: your_bearer_token
    },
    body: {
        to: whatsappId, // whatsapp number
        type: "document",
        id: media.id,
        // optional fields
        document: {
            provider: {
                name : your_business_account_id
            },
            caption: "Greetings",
        }
    },
    json: true,
    timeout: 10000
    };
    return await requestPromise(requestOptions);
}

response yang berhasil menyertakan message.id yang dapat digunakan untuk mengambil status pesan terkirim dan isinya.

Selamat! ! Anda telah berhasil mengirim PDF melalui Whatsapp.