Giter Site home page Giter Site logo

whatsapp-questionnaire-bot's Introduction

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!

whatsapp-questionnaire-bot's People

Contributors

raulmar0 avatar

Watchers

Daniel Secco avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤ī¸ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.