Build chatbots using Tock and Python
Project description
tock-py
Build chatbots using Tock and Python
DISCLAIMERS
- Work in progress
- Not production ready
- not yet implemented
- Managing User / conversational context
- Testing
Prerequisites
Run a Tock bot in API mode
Create a Bot application using the web connector type in Tock Studio and get your API key
Environment
We suggest you to create an isolated Python virtual environment:
$ python3 -m venv env
$ source env/bin/activate
Install tock-py on your project
$ pip install tock-py
Usage
import logging
import os
from tock.bot import TockBot
from tock.bus import TockBotBus
from tock.story import story
logging.basicConfig(
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
level=logging.DEBUG
)
# First create story that handle "greetings" intent
@story(
intent="greetings",
other_starter_intents=[],
secondary_intents=[]
)
def greetings(bus: TockBotBus):
bus.send("Hello i'm a tock-py bot")
# If decorator @story is not provided, the intention with the function name is user
def goodbye(bus: TockBotBus):
bus.send("Hello i'm a tock-py bot")
# Configure your bot and start it
TockBot() \
.register_story(greetings) \
.register_story(goodbye) \
.start_websocket(apikey=os.environ['TOCK_APIKEY'])
# You can also use webhook mode
# TockBot() \
# .register_story(greetings) \
# .register_story(goodbye) \
# .start_webhook("0.0.0.0", "tock-py", 5000)
Sentence
bus.send("Hello i'm a tock sentence")
Suggestion
bus.send(
Sentence.Builder("Hello i'm a tock sentence")
.add_suggestion("with suggestion")
.build()
)
Card with action
bus.send(
Card
.Builder()
.with_title("card title")
.with_sub_title("with subtitle")
.with_attachment("https://www.sncf.com/themes/sncfcom/img/favicon.png", AttachmentType.IMAGE)
.add_action("visit", "http://www.sncf.com")
.build()
)
Carousel
card = Card \
.Builder() \
.with_title("Card title") \
.with_sub_title("wit subtitle") \
.with_attachment("https://www.sncf.com/themes/sncfcom/img/favicon.png", AttachmentType.IMAGE) \
.add_action("visit", "http://www.sncf.com") \
.build()
bus.send(
Carousel
.Builder()
.add_card(card)
.add_card(card)
.add_card(card)
.build()
)
Custom state
Your bot can store custom state data in session
def greetings(bus):
if bus.session.get_item("greetings_flag") is None:
bus.send("Welcome")
else:
bus.send("Welcome back")
bus.session.set_item("greetings_flag", True)
You can clear session
def goodbye(bus):
bus.session.clear()
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
tock-py-0.0.1.dev10.tar.gz
(16.5 kB
view details)
File details
Details for the file tock-py-0.0.1.dev10.tar.gz
.
File metadata
- Download URL: tock-py-0.0.1.dev10.tar.gz
- Upload date:
- Size: 16.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.4.2 requests/2.22.0 setuptools/50.3.0 requests-toolbelt/0.8.0 tqdm/4.30.0 CPython/3.8.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6d8c4112caf859865c79d6e220fc4831d909ff2a6a8cd256163582cb0efc84ee |
|
MD5 | 2249d890a5df7d8896e4125ac2a32fed |
|
BLAKE2b-256 | 669cceba7bc5e923515c3fdcb27e4958bdf630f588620b66874f0715c569955a |