Skip to main content

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


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)

Uploaded Source

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

Hashes for tock-py-0.0.1.dev10.tar.gz
Algorithm Hash digest
SHA256 6d8c4112caf859865c79d6e220fc4831d909ff2a6a8cd256163582cb0efc84ee
MD5 2249d890a5df7d8896e4125ac2a32fed
BLAKE2b-256 669cceba7bc5e923515c3fdcb27e4958bdf630f588620b66874f0715c569955a

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page