General Hooks
Common hooks implementation
This section will show how the general hooks are processed, These hooks include:
- on-receive -
[POST]
logic to process after user responds / sends a message - on-generate -
[PRE]
logic to process before a template is processed for rendering to user - middleware -
[POST]
middleware logic to process mid-flight
Consider an example for middleware
below
The example below works for
on-receive
,on-generate
andmiddleware
hooks
Middleware
Imagine you want to do any general business logic mid-flight of the template processing.
You can define a middleware
hook just for that.
An example will be saving some data to the db or retrieving some data and save them in the user session
1000:
type: text
middleware: "example.engine_chatbot.hooks.account_service.fetch_accounts"
message: "Type `transfer` to start funds transfer process"
routes:
"transfer": "FUNDS-TRANSFER"
"no": "HOME"
When user responds, the hook will be processed.
Consider a sample business logic
# example/engine_chatbot/hooks/account_service.py
from pywce import HookArg
def fetch_accounts(arg: HookArg) -> HookArg:
"""
fetch corresponding user accounts & save to user session to retrieve later
"""
print(f"Received hook arg: {arg}")
if arg.user_input.lower() == "transfer":
user_accounts: list = AccountsManager(mobile=arg.session_id).get_accounts()
arg.session_manager.save(
session_id=arg.session_id,
key="accounts",
data=user_accounts
)
return arg