A framework and API for developing chatbots and other command-driven applications
Project description
commandintegrator
What it does
CommandIntegrator is a lightweight framework and API for creating apps controlled with human language interfaces. It concists of base classes and ready-to-use objects along with a set and clear structure for how to develop and scale a chat bot / Virtual assistant.
Objects such as the Feature
, which can be thought of a micro service within your app, makes it easier to keep the OOP structure clean and well maintained. Automatic command parsing with the CommandParser
and CommandProcessor
makes it very straight forward to build and scale your command-controlled application without having to worry about name and word collisions, edge-case actions etcetera.
Objects and wrappers for more effective and easier development
commandintegrator exists for one reason: To make development of language-driven apps easier. Decorator wrappers for automated logging, scheduling of function execution, caching objects and API DAO's are a few that are included in the package.
You can build the backend of your virtual assistant / chatbot with the tools and structures of commandintegrator and use it in your chatbot for whichever platform you want to use. commandintegrator is platform independent and can be used even with a simple command-line app as demonstrated below.
Example
Here's a short example of how to create a virtual assistant that tells you what time it is.
For a more comprehensive example, please read the demo_feature.py
file here
import commandintegrator as ci
import time
from pprint import pprint
class ClockFeature(ci.FeatureBase):
def __init__(self, *args, **kwargs):
super().__init__(self, *args, **kwargs)
self.command_parser = ci.CommandParser()
# Defines which keywords that this Feature identifies with initially
self.command_parser.keywords = ('what')
# The Callback object is a more intricate and well defined way of
# binding a sentence / sequence of words to a function.
self.command_parser.callbacks = ci.Callback(lead = 'time', trail = ('is', 'it'), func = self.get_time)
@ci.logger.loggedmethod
def get_time(self):
ci.logger.log(message = "Manual log entry here", level = "info")
return f'The time is {time.strftime("%H:%M")}.'
if __name__ == '__main__':
processor = ci.CommandProcessor()
processor.features = (ClockFeature(),)
msg = ci.Message()
while True:
msg.content = input("-> ")
response = processor.process(msg)
print("\n-> Response received:\n")
pprint(f"\t{response.__dict__}")
print("\n-> Bot said: ", response.response(), "\n")
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file commandintegrator-1.3.0.tar.gz
.
File metadata
- Download URL: commandintegrator-1.3.0.tar.gz
- Upload date:
- Size: 19.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.23.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.50.2 CPython/3.8.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1fd1190f4edcad85e2fd87abe86077960187dccade0f34feb46e09141b9fc739 |
|
MD5 | b9cf8c7c1986bd77f46c2c949860048c |
|
BLAKE2b-256 | 311436f0fb416efca6f8f9905c8ae91811b638406f726074b3f765623d47f43e |
File details
Details for the file commandintegrator-1.3.0-py3-none-any.whl
.
File metadata
- Download URL: commandintegrator-1.3.0-py3-none-any.whl
- Upload date:
- Size: 29.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.23.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.50.2 CPython/3.8.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8847b3843f408f5c770a4907d32ec6b05ffc18984889a5aedec5a6af9e0edce4 |
|
MD5 | b074bbb58a935188bc452f9c9deb6f49 |
|
BLAKE2b-256 | 6c6fb4c9024499a4ae04fb1968005044129df01fb501b7659c53735de2125272 |