Skip to main content

A django Whatsapp chatbot session manager

Project description

WhatsApp Chatbot Session Flow

Overview

This package provides a Django-based session management system for building a WhatsApp chatbot. It enables:

  • Dynamic page-based navigation
  • Session tracking
  • Dynamic method execution for custom tasks (e.g., adding to cart)
  • Middleware support
  • Admin integration

Installation

Install the package via pip:

pip install chatbot_session_flow

Environment Variables

Set the following environment variables in your shell or a .env file:

export pub_key=""
export secret=""
export SECRET_KEY="xx56r_@x_jb8(rqiw5+xw^+@l#m(=%9h+!98k1o$ex3_zogx"
export MODE=dev
export DEBUG=True
export DB_NAME=<dbname>
export DB_USER=<db connection user>
export DB_PASSWORD=<database password>
export DB_HOST="<database connection host>"
export DB_PORT=<database running port>
export NGUMZO_API_KEY=<your api key if using ngumzo APIs>
export DYNAMIC_METHOD_VIEWS="<your_app.dynamic_methods>"

Django Settings

Add it to your INSTALLED_APPS:

INSTALLED_APPS = [
    ...,
    'chatbot_session_flow',
]

Add middleware to enable session handling:

MIDDLEWARE = [
    ...,
    'chatbot_session_flow.middleware.WhatsappSessionMiddleware',
]

Migrations

Run the migrations:

python manage.py makemigrations chatbot_session_flow
python manage.py migrate chatbot_session_flow

Internal Logic

The chatbot flow is managed through a sequence of Page instances. Each page can reference the next, allowing dynamic navigation. Sessions are tied to users via the Session and Stepper models.

Dynamic Methods

Custom tasks such as saving data, calling APIs, or formatting messages are handled by dynamic methods specified in a dynamic file defined by DYNAMIC_METHOD_VIEWS. These include:

  • sendWhatsappMessage(session, phoneNumber, message) – your logic to send messages.
  • formatRequest(request) – used by middleware to shape incoming data.
  • Any task-specific functions (e.g., add_to_cart) that can be dynamically executed.

Dynamic Method Example

# your_app/dynamic_methods.py

def add_to_cart(session, page, message, *args, **kwargs):
    print(f"Adding product to cart for user {session.user.phoneNumber}")
    return "Item added to cart"

Call it dynamically:

from chatbot_session_flow.views import perform_dynamic_action

response = perform_dynamic_action(session, page, "Item name")

Dynamic Message Templating

Use collected data within page content dynamically:

Hello {firstName}, your order has been placed!

The values in {} are replaced by corresponding session or user data.

Models

Profile

Handles user identity:

from chatbot_session_flow.models import Profile

profile = Profile.objects.create(
    firstName="John",
    lastName="Doe",
    phoneNumber="+1234567890",
    email="john@example.com"
)

Session

Tracks the user’s chatbot session:

session = Session.objects.create(user=profile, isValidSession=True)
print(session.is_session_expired())

Page

Each page drives a single step in the conversation:

page = Page.objects.create(title="Welcome", pageType="text", content="Hello {firstName}")

Common Issues & Fixes

No Migrations Detected

  • Ensure your environment is correct.
  • Use pip install -e . if developing locally.
  • Run:
    python manage.py makemigrations chatbot_session_flow
    python manage.py migrate
    

Dynamic Methods Not Found or Not Executing

  • Confirm the file path in DYNAMIC_METHOD_VIEWS is correct.
  • Check that the function name matches the task attribute in your Page.
  • Ensure the function signature accepts dynamic args/kwargs:
    def custom_task(session, page, message, *args, **kwargs):
        ...
    

known Issues

  • As of yet there are no knows issues but you are encouragedd to test and create github issues for any issues faced in your development.
  • Feel free to reachout To me via email kamadennis05@gmail.com

Conclusion

This package offers a powerful framework for building WhatsApp-based conversational flows with dynamic logic and session handling. Feel free to contribute or extend the package to fit your business logic!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

chatbot_session_flow-0.1.10.tar.gz (11.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

chatbot_session_flow-0.1.10-py3-none-any.whl (11.8 kB view details)

Uploaded Python 3

File details

Details for the file chatbot_session_flow-0.1.10.tar.gz.

File metadata

  • Download URL: chatbot_session_flow-0.1.10.tar.gz
  • Upload date:
  • Size: 11.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.13

File hashes

Hashes for chatbot_session_flow-0.1.10.tar.gz
Algorithm Hash digest
SHA256 52971e30870374bcf90d0c49d731b8cf3f79c90f5cea8db17a8b7538a091aa4d
MD5 930d1d493b6ef88ba4d7384672067bbb
BLAKE2b-256 46320840746eebbb2653626ec6081012afd8d514afc7066bde78c58ca23ac1e8

See more details on using hashes here.

File details

Details for the file chatbot_session_flow-0.1.10-py3-none-any.whl.

File metadata

File hashes

Hashes for chatbot_session_flow-0.1.10-py3-none-any.whl
Algorithm Hash digest
SHA256 fa2011efd013e020c2e386844a2cca027729af4bc32d7b947e2745e5b0a4de3b
MD5 c7ff478a258e976428cf27272eed4e40
BLAKE2b-256 551fa6e05caf5da91c9e317ede9b2a9538ba7b6ca58e4bfe6927144762ef155a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page