All Projects → ironman5366 → W.i.l.l

ironman5366 / W.i.l.l

Licence: mit
A python written personal assistant

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to W.i.l.l

Sarif
A distributed system serving as a personal assistant
Stars: ✭ 29 (-92.31%)
Mutual labels:  ai, assistant, personal-assistant
Mycroft Core
Mycroft Core, the Mycroft Artificial Intelligence platform.
Stars: ✭ 5,489 (+1355.97%)
Mutual labels:  ai, personal-assistant
Spacy
💫 Industrial-strength Natural Language Processing (NLP) in Python
Stars: ✭ 21,978 (+5729.71%)
Mutual labels:  ai, spacy
Pytlas
An open-source 🤖💬 Python 3 assistant library built for people and made to be super easy to setup and understand
Stars: ✭ 34 (-90.98%)
Mutual labels:  ai, assistant
Naomi
The Naomi Project is an open source, technology agnostic platform for developing always-on, voice-controlled applications!
Stars: ✭ 171 (-54.64%)
Mutual labels:  assistant, personal-assistant
Projectalice
Main repository of Project Alice, contains main unit source code
Stars: ✭ 189 (-49.87%)
Mutual labels:  assistant, personal-assistant
Cltk
The Classical Language Toolkit
Stars: ✭ 650 (+72.41%)
Mutual labels:  ai, spacy
Thinc
🔮 A refreshing functional take on deep learning, compatible with your favorite libraries
Stars: ✭ 2,422 (+542.44%)
Mutual labels:  ai, spacy
Tock
Tock - the open source conversational AI toolkit
Stars: ✭ 175 (-53.58%)
Mutual labels:  ai, assistant
Friday
An open-source virtual assistant.
Stars: ✭ 88 (-76.66%)
Mutual labels:  ai, personal-assistant
Jarvis
Jarvis.sh is a simple configurable multi-lang assistant.
Stars: ✭ 701 (+85.94%)
Mutual labels:  assistant, personal-assistant
leon
🧠 Leon is your open-source personal assistant.
Stars: ✭ 8,560 (+2170.56%)
Mutual labels:  assistant, personal-assistant
Dragonfire
the open-source virtual assistant for Ubuntu based Linux distributions
Stars: ✭ 1,120 (+197.08%)
Mutual labels:  personal-assistant, spacy
Bot
Telegram Chatbot Assistant for Managing Club Activities
Stars: ✭ 208 (-44.83%)
Mutual labels:  assistant, telegram
Mattata
A powerful, plugin-based, multi-purpose Telegram bot designed to serve a wide variety of purposes
Stars: ✭ 107 (-71.62%)
Mutual labels:  plugins, telegram
Openvoiceos
OpenVoiceOS is a minimalistic linux OS bringing the open source voice assistant Mycroft A.I. to embbeded, low-spec headless and/or small (touch)screen devices.
Stars: ✭ 64 (-83.02%)
Mutual labels:  ai, personal-assistant
Question Generation
Generating multiple choice questions from text using Machine Learning.
Stars: ✭ 227 (-39.79%)
Mutual labels:  ai, spacy
Olivia
💁‍♀️Your new best friend powered by an artificial neural network
Stars: ✭ 3,114 (+725.99%)
Mutual labels:  ai, assistant
Unifiedmessagerelay
Group Message Forward Framework (supports QQ Telegram Line Discord)
Stars: ✭ 363 (-3.71%)
Mutual labels:  telegram
Userge
Userge, Durable as a Serge
Stars: ✭ 363 (-3.71%)
Mutual labels:  telegram

W.I.L.L 3.1

The W.I.L.L Project has been retired and development has stopped. Read more here: https://willbeddow.com/page/wheres-w-i-l-l

Welcome to W.I.L.L

W.I.L.L is an open source personal assistant that aims to be free, easy to use, and expandable by the user. It runs on a python based plugin framework accessible by a JSON API that let's you access it from a variety of different platforms. We've provided some platforms for you, but if you don't like any of those, you can easily create your own, or, if you want to change W.I.L.L, setup your own version

Docs: http://will.readthedocs.io

Quickstart

Use a provided platform

Signup

Before you can use W.I.L.L, you need to sign up. You can sign up for free at https://willbeddow.com/signup

Android

W.I.L.L is now available as an android app, complete with voice commands and app hookins for services like spotify and netflix! Download it now from https://play.google.com/store/apps/details?id=com.willbeddow.will

Telegram

All you have to do to use W.I.L.L on telegram is go @WillAssistantBot and click start!

Use the json api

The main W.I.L.L server, as well as the web app, is at https://willbeddow.com It runs on a flask server that provides a JSON API

Quickstart

Send a request with python

import requests
import json
#Assume that the user has already signed up
server_url = "https://willbeddow.com"
payload = dict(username="myusername", password="mypassword")
#Start the session and generate a session token. This session token will endure until you go to /end_session or the server reboots
response = requests.post(url="{0}/api/start_session".format(server_url), data=payload).json()
#{"type": "success", "text": "Authentication successful", "data": {"session_id": "aaaa-bbbb-cccc-dddd"}
session_id = response["data"]["session_id"]
#Submit a command
command_data = dict(session_id=session_id, command="What is the meaning of life?")
answer = requests.post(url="{0}/api/command".format(server_url), data=command_data).json()
#{"type": "success", "text", "42 (according to the book The Hitchhiker's Guide to the Galaxy, by Douglas Adams)", "data": {"command_id": "aaaa-bbbb-cccc-dddd_1", "command_response": "42 (according to the book The Hitchhiker's Guide to the Galaxy, by Douglas Adams)"}}
print answer["text"]
#42 (according to the book The Hitchhiker's Guide to the Galaxy, by Douglas Adams)
#End your session
requests.post(url="{0}/api/end_session".format(server_url), data={"session_id": session_id})

API Docs:

The core of the JSON API is a response object. A response object looks like this:

{"type": "success", "text": "Request successful!", "data": {}}

As you can see, each response object has three objects.

  • Type
    • The type of the response. This will be either success, error, or response
    • success indicates that a request completed successfully
    • error indicates that a request encountered an error
    • responseindicates that the request requires a response or a callback. The information for this will usually be in data
  • Text
    • The message to the user
  • Data
    • A dictionary that contains any request specific data the user should interpret

API Methods:

  • /api/new_user
    • Requires the following parameters in the request
    • first_name
    • last_name
    • username
    • password (the password will laster be encrypted by bcrypt in the databsae)
    • email
    • default_plugin (It's usually best just to submit search for this)
  • /api/start_session
    • Takes username and password and returns a session_id in data
  • /api/command
    • Takes session_id and command and returns command_response in data
  • /api/end_session Takes a session_id and ends it
  • /api/get_updates
    • Takes a session_id and returns all pending updates and notifications
  • /api/get_sessions
    • Takes a username and password and returns all active sessions
  • /api/check_session
    • Takes a session_id and returns a boolean

Events framework

W.I.L.L has a customizable events framework that allows you to pass events and notifications that will be asynchronously pushed to the user. At the moment W.I.L.L offers three classes of events, two of which endure between reboots of the server

  • notification
    • A pending notification to the user. Unlike the rest of the notifications, as well as being available from /api/get_updates, a notification is also pushed to the user in various ways, including email, telegram, and text. Information about which of these the user has enabled is stored in a JSON array in the database
    • Endures between server updates
  • url
    • A url that will be opened, the contents of the page pushed to the updates for /api/get_updates
    • Endures between server updates
  • function
    • A function object that will be run, the result pushed to the updates for /api/get_updates
    • Does not endure between server updates, as a python func object cannot be stored between runs

An event object is defined by 5 keys:

  • type
    • The type of the event, notification, url, or function
  • username
    • The username of the user who the event belongs to
  • value
    • The data of the event. In a notification event it's the notification text, it's the url in a url event, and the func object in a function event
  • time
    • The time when the event should be run in Unix epoch time.
    • Can be generated with the builtin time module like so:
   import time
   #The current epoch time
   current_time = time.time()
   #Set the time for a minute
   event_activation_time = current_time+60
  • uid
    • A modified uuid object providing a unique identifier for the event
    • Generated with tools.get_event_uid(type) where type is the type key explained above
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].