Developer documentation v1.x

Documentation

WhatsApp Bot - Complete Overview

High-level view of all conversation paths in the WhatsApp bot.

Complete Flow Diagram

flowchart LR
    START([User sends message]) --> BOT_ENABLED{Bot Enabled?}
    BOT_ENABLED -->|No| WHITELIST{Whitelisted?}
    WHITELIST -->|No| MAINTENANCE[Send maintenance message]
    WHITELIST -->|Yes| CONTINUE
    BOT_ENABLED -->|Yes| CONTINUE
    
    CONTINUE --> NEW_USER{New User?}
    NEW_USER -->|Yes| LANG[Language Selection]
    NEW_USER -->|No| RETURNING{Returning User?}
    
    RETURNING -->|Fresh conversation| KEYWORD_CHECK{Keyword detected?}
    KEYWORD_CHECK -->|Yes| KEYWORD_ACTION[Handle keyword action]
    KEYWORD_CHECK -->|No| MAIN_MENU
    
    RETURNING -->|Active conversation| PROCESS_STEP[Process current step]
    
    LANG --> LANG_CONFIRM[Confirm Language]
    LANG_CONFIRM -->|Confirmed| MAIN_MENU[Main Menu]
    LANG_CONFIRM -->|Change| LANG
    
    MAIN_MENU --> OPTION{User Selection}
    OPTION -->|1| DOCTOR[Talk to Doctor]
    OPTION -->|2| LAB[Order Lab Exam]
    OPTION -->|3| PHARMACY[Order Pharmacy]
    OPTION -->|4| PRODUCT[Purchase Pack]
    OPTION -->|5| TUTORIAL[Health Tips]
    OPTION -->|6| CUSTOMER_SERVICE[Customer Service]
    OPTION -->|7| TRACK_LAB[Track Lab Results]
    OPTION -->|8| GET_RESULTS[Get Lab Results]
    
    DOCTOR --> COMPLETED
    LAB --> COMPLETED
    PHARMACY --> COMPLETED
    PRODUCT --> COMPLETED
    TUTORIAL --> COMPLETED
    CUSTOMER_SERVICE --> COMPLETED
    TRACK_LAB --> COMPLETED
    GET_RESULTS --> COMPLETED
    KEYWORD_ACTION --> COMPLETED
    
    subgraph COMPLETED[Completion Flow]
        SKIP_GOODBYE{Skip goodbye?}
        SKIP_GOODBYE -->|Yes| MARK_COMPLETE[Mark Completed]
        SKIP_GOODBYE -->|No| AWAITING_CLOSURE[Awaiting Closure]
        AWAITING_CLOSURE --> HOPE_MSG[Send 'Hope that helped']
        HOPE_MSG --> USER_RESPONSE{User responds?}
        USER_RESPONSE -->|Thanks| YOURE_WELCOME[You're welcome]
        USER_RESPONSE -->|More help| MAIN_MENU
        USER_RESPONSE -->|Timeout| MARK_COMPLETE
    end