3. MongoDB#
This is a tutorial on using MongoDB.
See MongoContextStorage class for storing you users’ contexts in Mongo database.
DFF uses motor library for asynchronous access to MongoDB.
[1]:
# installing dependencies
%pip install -q dff[mongodb]
Note: you may need to restart the kernel to use updated packages.
[2]:
import os
from dff.context_storages import context_storage_factory
from dff.pipeline import Pipeline
from dff.utils.testing.common import (
check_happy_path,
is_interactive_mode,
run_interactive_mode,
)
from dff.utils.testing.toy_script import TOY_SCRIPT_ARGS, HAPPY_PATH
[3]:
db_uri = "mongodb://{}:{}@localhost:27017/{}".format(
os.environ["MONGO_INITDB_ROOT_USERNAME"],
os.environ["MONGO_INITDB_ROOT_PASSWORD"],
os.environ["MONGO_INITDB_ROOT_USERNAME"],
)
db = context_storage_factory(db_uri)
pipeline = Pipeline.from_script(*TOY_SCRIPT_ARGS, context_storage=db)
[4]:
if __name__ == "__main__":
check_happy_path(pipeline, HAPPY_PATH)
if is_interactive_mode():
run_interactive_mode(pipeline)
(user) >>> text='Hi'
(bot) <<< text='Hi, how are you?'
(user) >>> text='i'm fine, how are you?'
(bot) <<< text='Good. What do you want to talk about?'
(user) >>> text='Let's talk about music.'
(bot) <<< text='Sorry, I can not talk about music now.'
(user) >>> text='Ok, goodbye.'
(bot) <<< text='bye'
(user) >>> text='Hi'
(bot) <<< text='Hi, how are you?'