lita-api-ai 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +17 -0
- data/Gemfile +3 -0
- data/README.md +26 -0
- data/Rakefile +6 -0
- data/lib/lita-api-ai.rb +12 -0
- data/lib/lita/handlers/api_ai.rb +48 -0
- data/lita-api-ai.gemspec +24 -0
- data/locales/en.yml +4 -0
- data/spec/lita/handlers/api_ai_spec.rb +4 -0
- data/spec/spec_helper.rb +6 -0
- data/templates/.gitkeep +0 -0
- metadata +142 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 185ff494a4325c9334eabbbfdd3b15bd36b7bcdc
|
4
|
+
data.tar.gz: 6f16d41daa22afba2c0eea27071868a230aa2b7a
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 9638533c5b5ac7d04a6e7dfb8ba2522c3bf0890e6d8c79a67c6c47844220fd48c7e1aba2654d3e9ed9afac5bd50ddb92da0cb9344b602e689e4f57bd54ab2798
|
7
|
+
data.tar.gz: 255d5c380b0dc0761fca6cde7028ae3049b1ae47862c484c2e54353d37837e85efd87a0e711dd42da647d962f6db643cdb1abfdf1ab908285e90cfca25c08f71
|
data/.gitignore
ADDED
data/Gemfile
ADDED
data/README.md
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
# lita-api-ai
|
2
|
+
|
3
|
+
This plugin uses the AI routine from http://api.ai to give your bot some personality
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
Add lita-api-ai to your Lita instance's Gemfile:
|
8
|
+
|
9
|
+
``` ruby
|
10
|
+
gem "lita-api-ai"
|
11
|
+
```
|
12
|
+
|
13
|
+
|
14
|
+
## Configuration
|
15
|
+
|
16
|
+
Add in the API key you generate at api.ai into your config.
|
17
|
+
|
18
|
+
config.handlers.api_ai.api_key = "XXXXXXXXXXXXXXXXXXXXXXXXX"
|
19
|
+
|
20
|
+
|
21
|
+
## Usage
|
22
|
+
|
23
|
+
Start your bot up and start talking.
|
24
|
+
|
25
|
+
|
26
|
+
Based heavily on Lita-ai (thanks Tony)
|
data/Rakefile
ADDED
data/lib/lita-api-ai.rb
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
require "lita"
|
2
|
+
require "api-ai-ruby"
|
3
|
+
Lita.load_locales Dir[File.expand_path(
|
4
|
+
File.join("..", "..", "locales", "*.yml"), __FILE__
|
5
|
+
)]
|
6
|
+
|
7
|
+
require "lita/handlers/api_ai.rb"
|
8
|
+
|
9
|
+
Lita::Handlers::ApiAi.template_root File.expand_path(
|
10
|
+
File.join("..", "..", "templates"),
|
11
|
+
__FILE__
|
12
|
+
)
|
@@ -0,0 +1,48 @@
|
|
1
|
+
module Lita
|
2
|
+
module Handlers
|
3
|
+
class ApiAi < Handler
|
4
|
+
on :unhandled_message, :chat
|
5
|
+
config :api_key, type: String
|
6
|
+
|
7
|
+
def self.api_key
|
8
|
+
Lita.config.handlers.api_ai.api_key
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.aibot
|
12
|
+
@aibot ||= ApiAiRuby::Client.new(
|
13
|
+
:client_access_token => api_key
|
14
|
+
)
|
15
|
+
end
|
16
|
+
|
17
|
+
def chat(payload)
|
18
|
+
message = payload[:message]
|
19
|
+
return unless should_reply?(message)
|
20
|
+
robot.send_message(message.source, build_response(message))
|
21
|
+
end
|
22
|
+
|
23
|
+
private
|
24
|
+
|
25
|
+
def should_reply?(message)
|
26
|
+
message.command? || message.body =~ /#{aliases.join('|')}/i
|
27
|
+
end
|
28
|
+
|
29
|
+
def build_response(message)
|
30
|
+
message = extract_aliases(message)
|
31
|
+
response = self.class.aibot.text_request message.body
|
32
|
+
reply = response[:result][:fulfillment][:speech]
|
33
|
+
|
34
|
+
end
|
35
|
+
|
36
|
+
def extract_aliases(message)
|
37
|
+
body = message.body.sub(/#{aliases.join('|')}/i, '').strip
|
38
|
+
Message.new(robot, body, message.source)
|
39
|
+
end
|
40
|
+
|
41
|
+
def aliases
|
42
|
+
[robot.mention_name, robot.alias].map{|a| a unless a == ''}.compact
|
43
|
+
end
|
44
|
+
|
45
|
+
Lita.register_handler(self)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
data/lita-api-ai.gemspec
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
Gem::Specification.new do |spec|
|
2
|
+
spec.name = "lita-api-ai"
|
3
|
+
spec.version = "0.1.1"
|
4
|
+
spec.authors = ["Mark Nicholls"]
|
5
|
+
spec.email = ["mark@nichollsclan.ca"]
|
6
|
+
spec.description = "Api-AI based bot ai"
|
7
|
+
spec.summary = "yet another AI option for your bot."
|
8
|
+
spec.homepage = "https://github.com/manicholls/lita-api-ai"
|
9
|
+
spec.license = "MIT"
|
10
|
+
spec.metadata = { "lita_plugin_type" => "handler" }
|
11
|
+
|
12
|
+
spec.files = `git ls-files`.split($/)
|
13
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
14
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
15
|
+
spec.require_paths = ["lib"]
|
16
|
+
|
17
|
+
spec.add_runtime_dependency "lita", ">= 4.7"
|
18
|
+
|
19
|
+
spec.add_development_dependency "bundler", "~> 1.3"
|
20
|
+
spec.add_development_dependency "pry-byebug"
|
21
|
+
spec.add_development_dependency "rake"
|
22
|
+
spec.add_development_dependency "rack-test"
|
23
|
+
spec.add_development_dependency "rspec", ">= 3.0.0"
|
24
|
+
end
|
data/locales/en.yml
ADDED
data/spec/spec_helper.rb
ADDED
data/templates/.gitkeep
ADDED
File without changes
|
metadata
ADDED
@@ -0,0 +1,142 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: lita-api-ai
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Mark Nicholls
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-10-26 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: lita
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '4.7'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '4.7'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: bundler
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.3'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '1.3'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: pry-byebug
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rake
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rack-test
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rspec
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: 3.0.0
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: 3.0.0
|
97
|
+
description: Api-AI based bot ai
|
98
|
+
email:
|
99
|
+
- mark@nichollsclan.ca
|
100
|
+
executables: []
|
101
|
+
extensions: []
|
102
|
+
extra_rdoc_files: []
|
103
|
+
files:
|
104
|
+
- ".gitignore"
|
105
|
+
- Gemfile
|
106
|
+
- README.md
|
107
|
+
- Rakefile
|
108
|
+
- lib/lita-api-ai.rb
|
109
|
+
- lib/lita/handlers/api_ai.rb
|
110
|
+
- lita-api-ai.gemspec
|
111
|
+
- locales/en.yml
|
112
|
+
- spec/lita/handlers/api_ai_spec.rb
|
113
|
+
- spec/spec_helper.rb
|
114
|
+
- templates/.gitkeep
|
115
|
+
homepage: https://github.com/manicholls/lita-api-ai
|
116
|
+
licenses:
|
117
|
+
- MIT
|
118
|
+
metadata:
|
119
|
+
lita_plugin_type: handler
|
120
|
+
post_install_message:
|
121
|
+
rdoc_options: []
|
122
|
+
require_paths:
|
123
|
+
- lib
|
124
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
125
|
+
requirements:
|
126
|
+
- - ">="
|
127
|
+
- !ruby/object:Gem::Version
|
128
|
+
version: '0'
|
129
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
130
|
+
requirements:
|
131
|
+
- - ">="
|
132
|
+
- !ruby/object:Gem::Version
|
133
|
+
version: '0'
|
134
|
+
requirements: []
|
135
|
+
rubyforge_project:
|
136
|
+
rubygems_version: 2.5.1
|
137
|
+
signing_key:
|
138
|
+
specification_version: 4
|
139
|
+
summary: yet another AI option for your bot.
|
140
|
+
test_files:
|
141
|
+
- spec/lita/handlers/api_ai_spec.rb
|
142
|
+
- spec/spec_helper.rb
|