Git Product home page Git Product logo

virtuoso's Introduction

Virtuoso

"For as the body is one, and hath many members, and all the members of that one body, being many, are one body..."

Virtuoso is a bot orchestration framework built on Phoenix. Simply put, one place for all your bots.

Quick Start

  1. mix phx.new project_name
  2. cd project_name
  3. Add {:virtuoso, ">= 0.0.28"}, {:poison, "~> 3.0"} to mix.exs
  4. mix deps.get
  5. mix virtuoso.gen.bot BotName
  6. mix virtuoso.gen.client
  7. mix virtuoso.gen.routine BotName HelloWorld

Test your webhook.

Config. If left unconfigured, the project has one default bot - MementoMori. Out of the box, it is a fast thinking bot with a Greeting routine.

dev.exs at the bottom:

config :virtuoso, bots: [ BotName ]

import_config "dev.secret.exs"

dev.secret.exs:

use Mix.Config

config :virtuoso,
  wit_server_access_token: "",
  watson_assistant_version: "",
  watson_assistant_id: "",
  watson_assistant_token: "",
  default_nlp: Wit

config :bot_name,
  fb_page_recipient_id: "",
  fb_page_access_token: "",
  default_routine: BotName.Routine.RoutineName

For Admin testing dashboard add

To setup Admin testing dashboard to your bot application follow following steps.

  1. Setup liveview in your applicaiton by refering to https://hexdocs.pm/phoenix_live_view/installation.html
  2. Add import VirtuosoWeb.Router to your _app__web.ex's at router.ex in def router function e.g
  def router do
    quote do
      use Phoenix.Router
      import Plug.Conn
      import Phoenix.Controller
      import VirtuosoWeb.Router
    end
  end
  1. Add admin_routes_and_pipelines() at the top of your router.ex e.g.
defmodule YourAppWeb.Router do
  use YourAppWeb, :router

  admin_routes_and_pipelines()
  1. Also make sure you remove or comment out websocket connect_info in endpoint.ex e.g.
 socket "/live", Phoenix.LiveView.Socket# ,
    # websocket: [connect_info: [session: @session_options]]
  1. After above steps, you should be able to access dashboard at http://localhost:4000/admin/dashboard

Supported Platforms

  • FbMessenger (needs documentation, rules, and postback accomodations)

Todo

  • Twitter
  • Slack
  • Twilio
  • Gossip

Executive

Delegates incoming impression to the appropriate Bot.

When an impression is received by a bot, the first thing to do is to identify the intent of the user.

Some platforms make the intent explicit in the structure of the response (such as pressing a button to respond to fb messenger bot) or in structure of the message itself (phone numbers fit into several immediately recognizable patterns).

These types of messages are defined by templates that you set in the FastThinking context of your bot.

Other messages require additional processing for your bot to understand. These get passed into the SlowThinking context. SlowThinking uses NLP libraries to evaluate probable intents and entities.

YOU MUST TRAIN YOUR NLP PROVIDER TO ACCURATELY GAUGE INTENTS FROM TEXT

Entities are concepts parsed from your input. All incoming messages have an intent and one or more entities. The question for your bot to answer is: "Which of these entities, if any, are relevant to the satisfaction of the user's intent?"

Todo

  • Dialogue Flow Client
  • Open API
  • Admin Portal

virtuoso's People

Contributors

justuseapen avatar ccarvalho-eng avatar marceloreichert avatar dependabot[bot] avatar anildigital avatar

Stargazers

Niranjan Anandkumar avatar  avatar C. R. Oldham avatar Yos avatar Abbas Tolgay Yılmaz avatar Ryan Hurst avatar Charles avatar Eric Steen avatar Roman Hossain Shaon avatar Santiago Torres avatar  avatar  avatar James Stephens avatar Zhe Cheng avatar  avatar Chris Owen avatar Martin Tomov avatar Tobias Pfeiffer avatar norbertka avatar  avatar  avatar Carlos Sisnett avatar Wojciech Orzechowski avatar David Devlin avatar Alessandro Iob avatar  avatar  avatar Ianko Leite avatar KaFai avatar Yordis Prieto avatar Manuel Zubieta avatar Arjan Scherpenisse avatar David Cole avatar Ricardo Echavarria avatar Peter Mueller avatar Ethan Sherbondy avatar Giancarlo avatar Dan Ivovich avatar Yair Flicker avatar Eric Oestrich avatar

Watchers

James Cloos avatar Santiago Torres avatar Yordis Prieto avatar  avatar

virtuoso's Issues

Publish latest

The published version on hex is behind the version on github in regards to dependencies (cowboy, phoenix). Any chance you could publish the latest? Thanks!

Is this project Dead?

Just saw a talk by @justuseapen and I felt the this was a well thought out framework, though when I looked the repo I see that the last commit was 5 months ago, just wondering if this is still an active project?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.