Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/theopenconversationkit/tock-py
Tock client to build conversational stories using Python.
https://github.com/theopenconversationkit/tock-py
ai chatbot opensource python
Last synced: 2 months ago
JSON representation
Tock client to build conversational stories using Python.
- Host: GitHub
- URL: https://github.com/theopenconversationkit/tock-py
- Owner: theopenconversationkit
- License: mit
- Created: 2020-07-06T22:08:54.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2023-07-20T15:09:56.000Z (over 1 year ago)
- Last Synced: 2024-09-15T04:54:23.641Z (4 months ago)
- Topics: ai, chatbot, opensource, python
- Language: Python
- Homepage: https://doc.tock.ai
- Size: 102 KB
- Stars: 4
- Watchers: 3
- Forks: 6
- Open Issues: 10
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# tock-py
Build chatbots using Tock and Python
## DISCLAIMERS
- Work in progress
- Not production ready
- not yet implemented
- Managing User / conversational context
- Testing
## PrerequisitesRun 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")
# Suggestionbus.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 stateYour 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 sessiondef goodbye(bus):
bus.session.clear()