Skip to main content

A template-driven engine for building WhatsApp chatbots

Project description

Python WhatsApp ChatBot Engine

A library for creating WhatsApp chatbots using a template-driven approach. It decouples the engine from the WhatsApp client library, allowing developers to use them independently or together.

Templates use YAML allowing you to define conversation flows and business logic in a clean and modular way.

Features

  • Template-Driven Design: Use YAML templates for conversational flows.
  • Hooks for Business Logic: Attach Python functions to process messages or actions.
  • Easy-to-use API for WhatsApp Cloud.
  • Supports dynamic messages with placeholders.
  • Built-in support for WhatsApp Webhooks.

Installation

pip install pywce

WhatsApp Client Library

PyWCE provides a simple, Pythonic interface to interact with the WhatsApp Cloud API:

Note: You can use pywce as a standalone whatsapp client library. See FastApi Example

  • Send messages (text, media, templates, interactive)
  • Receive and process webhooks
  • Media management (upload and download)
  • Out of the box utilities using the WhatsApp.Utils class.

Example usage:

from pywce import WhatsAppConfig, WhatsApp

config = WhatsAppConfig(
    token="your_access_token",
    phone_number_id="your_phone_number_id",
    hub_verification_token="your_webhook_hub_verification_token"
)

whatsapp = WhatsApp(whatsapp_config=config)

# Sending a text message
response = whatsapp.send_message(
    recipient_id="recipient_number",
    message="Hello from PyWCE!"
)

# verify if request was successful, using utils
is_sent = whatsapp.util.was_request_successful(
    recipient_id="recipient_number",
    response_data=response
)

if is_sent:
    message_id = whatsapp.util.get_response_message_id(response)
    print("Request successful with msg id: ", message_id)

Template Engine ChatBot

Here's a simple example template to get you started:

Note: Checkout complete example chatbot with Fast Api here

  1. Define your YAML template:
# path/to/templates
"START-MENU":
  type: button
  template: "example.hooks.name_template.username"
  message:
    title: Welcome
    body: "Hi {{ name }}, I'm your assistant, click below to start!"
    footer: pywce
    buttons:
      - Start
  routes:
    "start": "NEXT-STEP"
  1. Write your hook:
# example/hooks/name_template.py
from pywce import hook, HookArg, TemplateDynamicBody

@hook
def username(arg: HookArg) -> HookArg:
    # set render payload data to match the required template dynamic var
    arg.template_body = TemplateDynamicBody(
        render_template_payload={"name": arg.user.name}
    )

    return arg
  1. Start the engine:
from pywce import PywceEngine, PywceEngineConfig

config = PywceEngineConfig(
    templates_dir="path/to/templates",
    start_template_stage="START-MENU"
)
engine = PywceEngine(config=config)

Documentation

Visit the official documentation for a detailed guide.

Contributing

We welcome contributions! Please check out the Contributing Guide for details.

License

This project is licensed under the MIT License. See the LICENSE file for details.

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

pywce-1.0.1.tar.gz (30.3 kB view details)

Uploaded Source

Built Distribution

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

pywce-1.0.1-py3-none-any.whl (35.2 kB view details)

Uploaded Python 3

File details

Details for the file pywce-1.0.1.tar.gz.

File metadata

  • Download URL: pywce-1.0.1.tar.gz
  • Upload date:
  • Size: 30.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.11.9

File hashes

Hashes for pywce-1.0.1.tar.gz
Algorithm Hash digest
SHA256 5ec520ac28eb2469add8d3c2c85fcc6dfd0feadeaac8bcdcd3d76dbf49180117
MD5 34e470109cb9aab19b7e3332d2416569
BLAKE2b-256 2997ddebcbe61ed3531afe5b6d32585cb83a4b351e8b289e5247dded0c1ffe70

See more details on using hashes here.

File details

Details for the file pywce-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: pywce-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 35.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.11.9

File hashes

Hashes for pywce-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 4fdf5e4c60c567eb988007028541eef387a8ead5e3b61a619653158809be8948
MD5 272633a97c1bd4c849c87e3fe19c0580
BLAKE2b-256 eb0f37a21ce6b1dddf475cdcea8552819dc5e3822bfcaf3aa91e106d8ce6bcee

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