Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/cristianbica/lita-wizard
https://github.com/cristianbica/lita-wizard
bot bot-framework lita ruby
Last synced: about 1 month ago
JSON representation
- Host: GitHub
- URL: https://github.com/cristianbica/lita-wizard
- Owner: cristianbica
- License: mit
- Created: 2016-03-23T07:58:46.000Z (almost 9 years ago)
- Default Branch: master
- Last Pushed: 2017-01-24T20:27:30.000Z (almost 8 years ago)
- Last Synced: 2024-04-23T20:54:07.769Z (8 months ago)
- Topics: bot, bot-framework, lita, ruby
- Language: Ruby
- Size: 21.5 KB
- Stars: 7
- Watchers: 2
- Forks: 4
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# lita-wizard
[![Build Status](https://travis-ci.org/cristianbica/lita-wizard.png?branch=master)](https://travis-ci.org/cristianbica/lita-wizard)
[![Coverage Status](https://coveralls.io/repos/github/cristianbica/lita-wizard/badge.svg?branch=master)](https://coveralls.io/github/cristianbica/lita-wizard?branch=master)A lita extension to build wizards (surveys, standups, etc). You can instruct your chat bot to ask several questions, validate responses.
## Installation
Add lita-wizard to your Lita plugin's gemspec:
``` ruby
spec.add_runtime_dependency "lita-wizard"
```## Usage
Create a subclass of `Lita::Wizard`
``` ruby
class MyWizard# provide the wizard steps
step :name, label: "Your name:"
step :bio, label: "Tell me something about yourself:", multiline: true
step :lang, label: "What's your preferred programming language?", options: %w(ruby php)
step :years, label: "For how many years you're a programmer?", validate: /\d+/
step :really, label: "Really?", options: %w(yes no), if: ->(wizard) { value_for(:years).to_i > 15 }# or you can have dynamic wizard steps
def steps
# return an array of objects responding to the following methods:
# name: a string / symbol
# lable: a string
# multiline: boolean
# (optional) validate: regexp
# (optional) options: array
# (optional) if: a proc
end# you can override the following methods to customize the messages
def initial_message
"Great! I'm going to ask you some questions. During this time I cannot take regular commands. " \
"You can abort at any time by writing abort"
enddef abort_message
"Aborting. Resume your normal operations"
enddef final_message
"You're done!"
end# You can implement the following methods to customize the wizard behaviour.
# The wizard has an instance method `meta` which contains some data you
# set when starting the wizarddef start_wizard
enddef abort_wizard
enddef finish_wizard
endend
```In your handler call `start_wizard` to initialize the process
``` ruby
route /^some command$/, :a_callbackdef a_callback(request)
start_wizard(Mywizard, request.message, some_data: 1, other_data: 2)
end
```## Contributing
1. Fork it ( https://github.com/cristianbica/lita-wizard/fork )
2. Create your feature branch (`git checkout -b my-new-feature`)
3. Commit your changes (`git commit -am 'Add some feature'`)
4. Push to the branch (`git push origin my-new-feature`)
5. Create a new Pull Request