npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

whatsapp-questionnaire-bot

v2.0.2

Published

[Try it!](https://wa.me/5218135453539?text=Hola)

Downloads

16

Readme

Whatsapp bot for questionnaires

Try it!

This is a library for turning your diagrams into whatsapp bots in order to reach millions of people thanks to its wide adoption worldwide.

Common applications

  • Medical pre-diagnoses
  • Whatsapp price list for bussinesses
  • Technical support guide bot
  • Digital menus/gallery
  • Your imagination is the limit

Example of medical algorithm diagram turned into whatsapp bot in order to prevent cardiovascular diseases:

Technical information

The foundation of the logic of the script is the structure of the questions.js file. Because every time the bot receives a message, it registers the user and looks for the last node he was in, then it compares the options of the next possible nodes with the received message to know which is the next step.

  • Built on whatsapp-web.js (for preventing bans)
  • Easy to configure
  • Puppeteer based
  • Run anywhere
  • Node and npm required

Getting Started

  1. Install the library
npm i whatsapp-questionnaire-bot
  1. Add index.js to the root of the project

  2. Inside index.js configure the library

const { WhatsappQuestionnnaireBot } = require('whatsapp-questionnaire-bot');

// Consult the example questions file at "./example/questions.js" for the structure
const { questions } = require('./questions');

// This will appear when entering a non-existing option (the ** turn bold the messages)
const errorString = '*Please type the letter of the desired option. Example: a*'

// This will be the first message you receive when client is ready
const successString = 'Hi, I am online'

const country_code = 'XXX'; // 521 for Mexico
const number = 'XXXXXXXXXX'; // phone number
const platform = 'headful-arm-x86' // other: 'headless-arm' for rpi or arm cloud machines or 'headless-x86' for remote servers

const questionnaire = new WhatsappQuestionnnaireBot(
  questions, // array of obj (specific structure)
  country_code,
  number,
  successString,
  errorString,
  platform,
)
  1. Question structure example
// question.content needs to be strictly unindented for good formating in whatsapp
// The first keyword needs to be stricly 'init'
// Each object is a node in the diagram
// Each object has an unique keyword for identification 
// Each object has an options array with the letters to be match in order to reach the next (keyword) option

const questions = [
  {
    keyword: 'init',
    content: `
*Hi there! How can I help you?*
*Please type the letter of the desired option. Example: a*

ℹ️ Information
🅰️ Locations
🅱️ Opening hours
    `,
    options: [
      {i: 'information'},
      {a: 'locations'},
    ]
  },
  {
    keyword: 'information',
    content: `
*Visit the website*
*www.raulmar.me*

🅰️ Main menu
    `,
    options: [
      {a: 'init'},
    ]
  },
  {
    keyword: 'locations',
    content: `
*Locations*
*Monterrey, MX*
*Lyon, FR*

🅰️ Main menu
    `,
    options: [
      {a: 'init'},
    ]
  },
  ...
]
  1. For headless systems (rpi os lite, cloud vm, remote servers) install the following packages
sudo apt install -y gconf-service libgbm-dev libasound2 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libnspr4 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 ca-certificates fonts-liberation libappindicator1 libnss3 lsb-release xdg-utils wget
  1. Install dependencies
npm i

In case you get an error regarding the chromium installation install it manually

sudo apt install chromium
  1. Run it!

For development:

# start
node index.js

# stop
ctrl + c

For production (daemon):

  • Install pm2:
npm i pm2 --save
# start
npx pm2 start index.js

# stop
npx pm2 delete all
  1. Scan the QR from the terminal and chat!