tenios 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop_todo.yml +15 -3
- data/README.md +56 -11
- data/lib/tenios/blocks.rb +84 -0
- data/lib/tenios/version.rb +1 -1
- data/lib/tenios.rb +7 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: af1772cc247dc0e26b8b4165401cc3c735557810a5246ad8dfa02c1be98925db
|
4
|
+
data.tar.gz: b319c0b8e1f32e312fb3ede0300bf0c26e03e5f0519caa58e3bcbbc6d4cbac33
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f441d26e9bcdd2628d078ee3d843679b806be57837df3e85a6ef40980fdcf4f5618583a72bf43211a286832cd17c6e7fcc0e6b7751899d4ff43957348412fc3c
|
7
|
+
data.tar.gz: ec40c0cd903eb1e803deb41c86b1e2bf7bd07491a5c52d7824e65f4323b753a8a015c39dbc8b83f13385fb97b260308bad143696ad7bc2e3d435936dac62a745
|
data/.rubocop_todo.yml
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# This configuration was generated by
|
2
2
|
# `rubocop --auto-gen-config`
|
3
|
-
# on 2019-02-
|
3
|
+
# on 2019-02-21 23:25:38 +0000 using RuboCop version 0.63.1.
|
4
4
|
# The point is for the user to remove these configuration records
|
5
5
|
# one by one as the offenses are removed from the code base.
|
6
6
|
# Note that changes in the inspected code, or installation of new
|
@@ -14,12 +14,12 @@ Metrics/AbcSize:
|
|
14
14
|
Metrics/CyclomaticComplexity:
|
15
15
|
Max: 10
|
16
16
|
|
17
|
-
# Offense count:
|
17
|
+
# Offense count: 3
|
18
18
|
# Configuration parameters: CountComments, ExcludedMethods.
|
19
19
|
Metrics/MethodLength:
|
20
20
|
Max: 13
|
21
21
|
|
22
|
-
# Offense count:
|
22
|
+
# Offense count: 2
|
23
23
|
# Configuration parameters: CountKeywordArgs.
|
24
24
|
Metrics/ParameterLists:
|
25
25
|
Max: 10
|
@@ -27,3 +27,15 @@ Metrics/ParameterLists:
|
|
27
27
|
# Offense count: 1
|
28
28
|
Metrics/PerceivedComplexity:
|
29
29
|
Max: 10
|
30
|
+
|
31
|
+
# Offense count: 6
|
32
|
+
# Configuration parameters: Max.
|
33
|
+
RSpec/ExampleLength:
|
34
|
+
Exclude:
|
35
|
+
- 'spec/tenios/blocks_spec.rb'
|
36
|
+
- 'spec/tenios_spec.rb'
|
37
|
+
|
38
|
+
# Offense count: 3
|
39
|
+
# Configuration parameters: AggregateFailuresByDefault.
|
40
|
+
RSpec/MultipleExpectations:
|
41
|
+
Max: 2
|
data/README.md
CHANGED
@@ -1,6 +1,61 @@
|
|
1
1
|
# Tenios
|
2
2
|
|
3
|
-
|
3
|
+
Wraps [Tenios Call Control](https://www.tenios.de/en/doc/api-spec) blocks in ruby.
|
4
|
+
Each accepted block has a corresponding object under `Tenios::Blocks`, currently these are:
|
5
|
+
- `Tenios::Blocks::Announcement`
|
6
|
+
- `Tenios::Blocks::Bridge`
|
7
|
+
- `Tenios::Blocks::CollectDigits`
|
8
|
+
- `Tenios::Blocks::CollectSpeech`
|
9
|
+
- `Tenios::Blocks::HangUp`
|
10
|
+
- `Tenios::Blocks::RoutingPlan`
|
11
|
+
- `Tenios::Blocks::Say`
|
12
|
+
|
13
|
+
Each of these can be used as part of a `Tenios::Blocks` object, by using `Tenios::Blocks#add`.
|
14
|
+
|
15
|
+
`Tenios::Blocks` implements `#as_json` which returns a JSON-like hash (although with symbolised keys).
|
16
|
+
|
17
|
+
In rails you can pass the `Tenios::Blocks` object directly to `render` under the `json:` key.
|
18
|
+
|
19
|
+
```ruby
|
20
|
+
require 'tenios'
|
21
|
+
|
22
|
+
class TeniosController < ApplicationController
|
23
|
+
def redirect_to_number
|
24
|
+
announcement = Tenios::Blocks::Announcement.new(announcement: 'redirect', standard: false)
|
25
|
+
bridge = Tenios::Blocks::Bridge.new(mode: Tenios::Blocks::Bridge::SEQUENTIAL) do |redirect|
|
26
|
+
redirect.with_destination(Tenios::Blocks::Bridge::EXTERNAL_NUMBER, '+440123456789', 10)
|
27
|
+
end
|
28
|
+
|
29
|
+
blocks = Tenios::Blocks.new do |response|
|
30
|
+
response.add(announcement)
|
31
|
+
response.add(bridge)
|
32
|
+
end
|
33
|
+
|
34
|
+
render json: blocks
|
35
|
+
end
|
36
|
+
end
|
37
|
+
```
|
38
|
+
|
39
|
+
Else you can use any JSON serializer that can deal with a ruby `Hash`
|
40
|
+
|
41
|
+
```ruby
|
42
|
+
require 'json'
|
43
|
+
require 'tenios'
|
44
|
+
|
45
|
+
announcement = Tenios::Blocks::Announcement.new(announcement: 'redirect', standard: false)
|
46
|
+
bridge =
|
47
|
+
Tenios::Blocks::Bridge
|
48
|
+
.new(mode: Tenios::Blocks::Bridge::SEQUENTIAL)
|
49
|
+
.with_destination(Tenios::Blocks::Bridge::EXTERNAL_NUMBER, '+440123456789', 10)
|
50
|
+
|
51
|
+
Tenios::Blocks.new
|
52
|
+
.add(announcement)
|
53
|
+
.add(bridge)
|
54
|
+
.as_json
|
55
|
+
.yield_self { |hash| JSON.generate(hash) }
|
56
|
+
```
|
57
|
+
|
58
|
+
As you may have noticed in the exampled above you can both chain calls to `Tenios::Blocks#add` and `Tenios::Blocks::Bridge#with_destination` or pass a block to those initialisers. :man_shrugging: whatever floats your boat.
|
4
59
|
|
5
60
|
## Installation
|
6
61
|
|
@@ -18,16 +73,6 @@ Or install it yourself as:
|
|
18
73
|
|
19
74
|
$ gem install tenios
|
20
75
|
|
21
|
-
## Usage
|
22
|
-
|
23
|
-
TODO: Write usage instructions here
|
24
|
-
|
25
|
-
## Development
|
26
|
-
|
27
|
-
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
28
|
-
|
29
|
-
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
30
|
-
|
31
76
|
## Contributing
|
32
77
|
|
33
78
|
Bug reports and pull requests are welcome on GitHub at https://github.com/carwow/tenios-ruby.
|
data/lib/tenios/blocks.rb
CHANGED
@@ -14,6 +14,90 @@ module Tenios
|
|
14
14
|
self
|
15
15
|
end
|
16
16
|
|
17
|
+
def announce(announcement:, standard: false)
|
18
|
+
block = Announcement.new(
|
19
|
+
announcement: announcement,
|
20
|
+
standard: standard
|
21
|
+
)
|
22
|
+
|
23
|
+
add(block)
|
24
|
+
end
|
25
|
+
|
26
|
+
def bridge(mode:, timeout: nil)
|
27
|
+
block = Bridge.new(
|
28
|
+
mode: mode,
|
29
|
+
timeout: timeout
|
30
|
+
)
|
31
|
+
|
32
|
+
yield(block) if block_given?
|
33
|
+
|
34
|
+
add(block)
|
35
|
+
end
|
36
|
+
|
37
|
+
def collect_digits(
|
38
|
+
announcement:,
|
39
|
+
standard_announcement:,
|
40
|
+
error_announcement:,
|
41
|
+
standard_error_announcement:,
|
42
|
+
variable:,
|
43
|
+
min_digits:,
|
44
|
+
max_digits:,
|
45
|
+
terminator:,
|
46
|
+
max_tries:,
|
47
|
+
timeout:
|
48
|
+
)
|
49
|
+
block = CollectDigits.new(
|
50
|
+
announcement: announcement,
|
51
|
+
standard_announcement: standard_announcement,
|
52
|
+
error_announcement: error_announcement,
|
53
|
+
standard_error_announcement: standard_error_announcement,
|
54
|
+
variable: variable,
|
55
|
+
min_digits: min_digits,
|
56
|
+
max_digits: max_digits,
|
57
|
+
terminator: terminator,
|
58
|
+
max_tries: max_tries,
|
59
|
+
timeout: timeout
|
60
|
+
)
|
61
|
+
|
62
|
+
add(block)
|
63
|
+
end
|
64
|
+
|
65
|
+
def collect_speech(
|
66
|
+
announcement:,
|
67
|
+
missing_input_announcement:,
|
68
|
+
language:,
|
69
|
+
variable:,
|
70
|
+
max_tries:
|
71
|
+
)
|
72
|
+
block = CollectSpeech.new(
|
73
|
+
announcement: announcement,
|
74
|
+
missing_input_announcement: missing_input_announcement,
|
75
|
+
language: language,
|
76
|
+
variable: variable,
|
77
|
+
max_tries: max_tries
|
78
|
+
)
|
79
|
+
|
80
|
+
add(block)
|
81
|
+
end
|
82
|
+
|
83
|
+
def hang_up(cause:)
|
84
|
+
block = HangUp.new(cause: cause)
|
85
|
+
|
86
|
+
add(block)
|
87
|
+
end
|
88
|
+
|
89
|
+
def routing_plan(routing_plan:)
|
90
|
+
block = RoutingPlan.new(routing_plan: routing_plan)
|
91
|
+
|
92
|
+
add(block)
|
93
|
+
end
|
94
|
+
|
95
|
+
def say(text:, voice:, ssml:)
|
96
|
+
block = Say.new(text: text, voice: voice, ssml: ssml)
|
97
|
+
|
98
|
+
add(block)
|
99
|
+
end
|
100
|
+
|
17
101
|
def as_json(*)
|
18
102
|
{
|
19
103
|
blocks: @blocks.map(&:as_json)
|
data/lib/tenios/version.rb
CHANGED
data/lib/tenios.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tenios
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- carwow Developers
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-02-
|
11
|
+
date: 2019-02-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|