Home

Awesome

ThingTalk

Build Status Coverage Status Dependency Status Language grade: JavaScript

The Programming Language of Virtual Assistants

ThingTalk is the declarative (rule-based) distributed programming language for virtual assistants. It connects to multiple web services and IoT devices in a single when-get-do statement.

For example, in ThingTalk you can say:

monitor(@com.washingtonpost.get_article(section=enum world))
=> @com.yandex.translate.translate(target_language="zh"^^tt:iso_lang_code, text=title)
=> @com.facebook.post(status=$result);

This program automatically monitors Washington Post headlines, translates them to Chinese, and then posts them on Facebook. It does so by referring to primitives defined in Thingpedia, an open-source crowdsourced repository of APIs and metadata. Documentation for the ThingTalk language is available on the Almond wiki.

This package contains the grammar, the compiler of the language, the interface to analyze programs using SMT, the code to translate from ThingTalk to natural language, part of the ThingTalk runtime, and various libraries to manipulate ThingTalk abstract syntax trees.

While this library is useful on its own for specific purposes, to run ThingTalk programs you will need a full virtual assistant runtime, such as one provided by the Genie Toolkit.

ThingTalk is developed by the Stanford Open Virtual Assistant Lab, a research initiative led by prof. Monica Lam, from Stanford University. You can find more information at https://oval.cs.stanford.edu

License

This package is covered by the Apache 2.0 license. See LICENSE for details.

Versioning

This package does not follow semantic versioning. Instead, the version should be interpreted as:

Minor version bumps can introduce incompatibility to library users; it is recommended that library users use tilde version ranges on their ThingTalk dependency.

Source compatibility

The syntax of ThingTalk is designed to be forward and backward compatible to a limited extent.

Within major versions, we guarantee the following