zendesk_polly 0.0.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 +10 -0
- data/.rspec +2 -0
- data/.travis.yml +5 -0
- data/Gemfile +4 -0
- data/README.md +100 -0
- data/Rakefile +6 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/bin/zp +110 -0
- data/lib/zendesk_polly.rb +15 -0
- data/lib/zendesk_polly/client.rb +88 -0
- data/lib/zendesk_polly/config.rb +56 -0
- data/lib/zendesk_polly/greeting.rb +70 -0
- data/lib/zendesk_polly/version.rb +3 -0
- data/zendesk_polly.gemspec +32 -0
- metadata +188 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 269764c0e5de3cb725c7c4ebfba2cea5c2647351
|
4
|
+
data.tar.gz: e74d1ef832be18aaec6d6aa1da83d8744f800a32
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: f437279099fff99f89ef812077e467b655395bcf26656967f1f4a38f3e58839af3ec1d1e7e0f008188a9ffb67ce2a3a772834e7f9ad3ac11ce777b04e05a94c8
|
7
|
+
data.tar.gz: abbe6e29888222feeb8add23de6343b63ccccf84f943ea51ed79733f668eb7dca37bef274f1a2bb2dcaf64d04a7088b9e0b08b556c9f1e8996a148facea65e55
|
data/.gitignore
ADDED
data/.rspec
ADDED
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/README.md
ADDED
@@ -0,0 +1,100 @@
|
|
1
|
+
# Zendesk Polly
|
2
|
+
|
3
|
+
Too shy to record your own voice for __Zendesk Talk__ greetings? How about letting someone else read your text?
|
4
|
+
__ZendeskPolly__ uses __Amazon Polly__ text-to-speech engine to convert your text messages into audio files.
|
5
|
+
|
6
|
+
This gem is far from being production ready. As of now, it's just a spike to get to know a bit of Zendesk's API.
|
7
|
+
|
8
|
+
|
9
|
+
## Installation
|
10
|
+
|
11
|
+
Install the gem and use the command line:
|
12
|
+
|
13
|
+
```bash
|
14
|
+
$ gem install zendesk_polly
|
15
|
+
```
|
16
|
+
|
17
|
+
Or add this line to your application's Gemfile:
|
18
|
+
|
19
|
+
```ruby
|
20
|
+
gem 'zendesk_polly'
|
21
|
+
```
|
22
|
+
|
23
|
+
And then provide ZendeskPolly with the required credentials and account details:
|
24
|
+
|
25
|
+
```bash
|
26
|
+
$ zp init
|
27
|
+
```
|
28
|
+
This command will start an interactive shell session and will save your credentials at `~/.zendesk_polly`.
|
29
|
+
|
30
|
+
## Usage
|
31
|
+
|
32
|
+
```
|
33
|
+
$ zp --help
|
34
|
+
|
35
|
+
NAME:
|
36
|
+
|
37
|
+
ZendeskPolly
|
38
|
+
|
39
|
+
DESCRIPTION:
|
40
|
+
|
41
|
+
Client to create zendesk greetings with Aws Polly
|
42
|
+
|
43
|
+
COMMANDS:
|
44
|
+
|
45
|
+
categories Lists available greeting categories
|
46
|
+
create Creates a Zendesk greeting with Aws Polly
|
47
|
+
help Display global or [command] help documentation
|
48
|
+
init Configures ZendeskPolly
|
49
|
+
voices Lists available voices
|
50
|
+
```
|
51
|
+
|
52
|
+
|
53
|
+
## Usage
|
54
|
+
|
55
|
+
Most commands have interactive mode, but can be initialized with some options.
|
56
|
+
Use `zp [command] --help` for details.
|
57
|
+
|
58
|
+
# Examples
|
59
|
+
|
60
|
+
```bash
|
61
|
+
# creating an IVR greeting
|
62
|
+
$ zp create --name 'My new greeting' --category 'ivr' --voice 'Joanna' --text 'This will be read by Joanna'
|
63
|
+
|
64
|
+
# or just
|
65
|
+
$ zp create
|
66
|
+
```
|
67
|
+
|
68
|
+
You can also use ZendeskPolly's client inside your own application.
|
69
|
+
|
70
|
+
```ruby
|
71
|
+
client = ZendeskPolly::Client.new do |c|
|
72
|
+
c.aws_region = ... # defaults to 'us-east-1'
|
73
|
+
c.zendesk_token = ... # create an API token at `[your_zd_url]agent/admin/api/settings`
|
74
|
+
c.zendesk_username = ... # your email
|
75
|
+
c.zendesk_url = ... # https://{your_zd_portal}.zendesk.com/api/v2
|
76
|
+
c.aws_key = ... # Create an AMI user and grant access to Polly services
|
77
|
+
c.aws_secret = ...
|
78
|
+
end
|
79
|
+
|
80
|
+
# This won't create the greeting just yet. You have a change to listen to it before submitting to Zendesk.
|
81
|
+
greeting = client.polly_greeting.new(name: 'greeting name', text: "I've just initialized a voice message")
|
82
|
+
|
83
|
+
# Opens your default player and plays the converted audio file
|
84
|
+
greeting.play
|
85
|
+
|
86
|
+
# To submit to zendesk use:
|
87
|
+
greeting.save
|
88
|
+
|
89
|
+
```
|
90
|
+
|
91
|
+
## Development
|
92
|
+
|
93
|
+
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.
|
94
|
+
|
95
|
+
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).
|
96
|
+
|
97
|
+
## Contributing
|
98
|
+
|
99
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/angelim/zendesk_polly.
|
100
|
+
|
data/Rakefile
ADDED
data/bin/console
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require "bundler/setup"
|
4
|
+
require "zendesk_polly"
|
5
|
+
|
6
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
7
|
+
# with your gem easier. You can also use a different console, if you like.
|
8
|
+
|
9
|
+
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
+
# require "pry"
|
11
|
+
# Pry.start
|
12
|
+
|
13
|
+
require "irb"
|
14
|
+
IRB.start
|
data/bin/setup
ADDED
data/bin/zp
ADDED
@@ -0,0 +1,110 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require "bundler/setup"
|
4
|
+
require "zendesk_polly"
|
5
|
+
require 'commander/import'
|
6
|
+
LANGUAGES = [
|
7
|
+
"all",
|
8
|
+
"en-US",
|
9
|
+
"en-AU",
|
10
|
+
"en-GB",
|
11
|
+
"en-GB-WLS",
|
12
|
+
"en-IN",
|
13
|
+
"cy-GB",
|
14
|
+
"da-DK",
|
15
|
+
"de-DE",
|
16
|
+
"es-ES",
|
17
|
+
"es-US",
|
18
|
+
"fr-CA",
|
19
|
+
"fr-FR",
|
20
|
+
"is-IS",
|
21
|
+
"it-IT",
|
22
|
+
"ja-JP",
|
23
|
+
"nb-NO",
|
24
|
+
"nl-NL",
|
25
|
+
"pl-PL",
|
26
|
+
"pt-BR",
|
27
|
+
"pt-PT",
|
28
|
+
"ro-RO",
|
29
|
+
"ru-RU",
|
30
|
+
"sv-SE",
|
31
|
+
"tr-TR"
|
32
|
+
]
|
33
|
+
|
34
|
+
program :name, 'ZendeskPolly'
|
35
|
+
program :version, ZendeskPolly::VERSION
|
36
|
+
program :description, 'Client to create zendesk greetings with Aws Polly'
|
37
|
+
|
38
|
+
command :create do |c|
|
39
|
+
c.syntax = 'zp create'
|
40
|
+
c.description = 'Creates a Zendesk greeting with Aws Polly'
|
41
|
+
|
42
|
+
c.option '--name STRING', String, 'Greeting name'
|
43
|
+
c.option '--category STRING', String, 'Greeting category'
|
44
|
+
c.option '--voice STRING', String, 'Greeting voice'
|
45
|
+
c.option '--text STRING', String, 'Greeting text'
|
46
|
+
|
47
|
+
c.action do |args, options|
|
48
|
+
client = ZendeskPolly::Client.new
|
49
|
+
client.check_configurations
|
50
|
+
|
51
|
+
name = options.name || ask("Greeting name: ")
|
52
|
+
category = options.category || choose("Greeting Category", *ZendeskPolly::Greeting::CATEGORIES.keys)
|
53
|
+
voice = options.voice || choose("Choose a voice from the list", *client.voice_names)
|
54
|
+
text = options.text || ask("Type your message:")
|
55
|
+
|
56
|
+
greeting = client.poly_greeting(
|
57
|
+
name: name,
|
58
|
+
category: category,
|
59
|
+
voice: voice,
|
60
|
+
text: text
|
61
|
+
)
|
62
|
+
|
63
|
+
should_play = agree("Would you like to play the message(y/n)?")
|
64
|
+
greeting.play if should_play
|
65
|
+
|
66
|
+
if agree("Would you like to save the message(y/n)?")
|
67
|
+
say "Creating... #{name}"
|
68
|
+
greeting.save
|
69
|
+
else
|
70
|
+
say "Message was not created"
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
command :init do |c|
|
76
|
+
c.syntax = 'zp init .'
|
77
|
+
c.description = 'Configures ZendeskPolly'
|
78
|
+
c.action do |args, options|
|
79
|
+
say 'Initializing Configuration'
|
80
|
+
config = ZendeskPolly::Config.new
|
81
|
+
config.aws_key = ask("AWS key: ")
|
82
|
+
config.aws_secret = ask("AWS secret: ")
|
83
|
+
config.aws_region = ask("AWS region: ")
|
84
|
+
config.zendesk_username = ask("Zendesk username: ")
|
85
|
+
config.zendesk_token = ask("Zendesk token: ")
|
86
|
+
config.zendesk_url = ask("Zendesk url: ")
|
87
|
+
config.serialize_to_file
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
command :voices do |c|
|
92
|
+
c.syntax = 'zp voices'
|
93
|
+
c.description = 'Lists available voices'
|
94
|
+
c.option '--language String', String, 'Language code'
|
95
|
+
c.action do |args, options|
|
96
|
+
code = options.language || choose('Which language', *LANGUAGES)
|
97
|
+
say 'These are the available voices:'
|
98
|
+
client = ZendeskPolly::Client.new
|
99
|
+
client.voices(code)
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
command :categories do |c|
|
104
|
+
c.syntax = 'zp categories'
|
105
|
+
c.description = 'Lists available greeting categories'
|
106
|
+
c.action do |args, options|
|
107
|
+
say 'These are the available greeting categories'
|
108
|
+
say ZendeskPolly::Greeting::CATEGORIES.keys.map(&:to_s)
|
109
|
+
end
|
110
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require "zendesk_polly/version"
|
2
|
+
require 'aws-sdk-core'
|
3
|
+
require 'zendesk_api'
|
4
|
+
require 'zendesk_polly/client'
|
5
|
+
require 'zendesk_polly/greeting'
|
6
|
+
require 'pry-nav'
|
7
|
+
|
8
|
+
module ZendeskPolly
|
9
|
+
|
10
|
+
# uri = "http://www.ruby-lang.org"
|
11
|
+
# Launchy.open( uri ) do |exception|
|
12
|
+
# puts "Attempted to open #{uri} and failed because #{exception}"
|
13
|
+
# end
|
14
|
+
|
15
|
+
end
|
@@ -0,0 +1,88 @@
|
|
1
|
+
require 'zendesk_polly/config'
|
2
|
+
require 'command_line_reporter'
|
3
|
+
|
4
|
+
module ZendeskPolly
|
5
|
+
class Client
|
6
|
+
include CommandLineReporter
|
7
|
+
|
8
|
+
ZendeskPollyError = Class.new(ArgumentError)
|
9
|
+
|
10
|
+
attr_reader :polly, :zendesk, :config
|
11
|
+
|
12
|
+
def initialize
|
13
|
+
@config = Config.new(self)
|
14
|
+
yield config if block_given?
|
15
|
+
end
|
16
|
+
|
17
|
+
# Call when config is dirty
|
18
|
+
def reset!
|
19
|
+
@polly_client = nil
|
20
|
+
@zendesk_client = nil
|
21
|
+
end
|
22
|
+
|
23
|
+
def polly
|
24
|
+
check_polly_configuration
|
25
|
+
@polly_client ||= begin
|
26
|
+
Aws::Polly::Client.new(
|
27
|
+
access_key_id: config.aws_key,
|
28
|
+
secret_access_key: config.aws_secret,
|
29
|
+
region: config.aws_region
|
30
|
+
)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def zendesk
|
35
|
+
check_zendesk_configuration
|
36
|
+
@zendesk_client ||= begin
|
37
|
+
ZendeskAPI::Client.new do |z|
|
38
|
+
z.token = config.zendesk_token
|
39
|
+
z.username = config.zendesk_username
|
40
|
+
z.url = config.zendesk_url
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def check_configurations
|
46
|
+
check_zendesk_configuration
|
47
|
+
check_polly_configuration
|
48
|
+
end
|
49
|
+
|
50
|
+
def check_zendesk_configuration
|
51
|
+
if attr = config.zendesk_configuration.find{ |_, v| v.nil? }
|
52
|
+
raise ZendeskPollyError.new("missing #{attr}")
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
def check_polly_configuration
|
57
|
+
if attr = config.polly_configuration.find{ |_, v| v.nil? }
|
58
|
+
raise ZendeskPollyError.new("missing #{attr}")
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
def poly_greeting(options = {})
|
63
|
+
Greeting.new(self, options)
|
64
|
+
end
|
65
|
+
|
66
|
+
def voice_names
|
67
|
+
polly.describe_voices.voices.map(&:id)
|
68
|
+
end
|
69
|
+
|
70
|
+
def voices(code)
|
71
|
+
code = nil if code == "all"
|
72
|
+
table border: true do
|
73
|
+
row do
|
74
|
+
column 'Voice'
|
75
|
+
column 'Language'
|
76
|
+
column 'Gender'
|
77
|
+
end
|
78
|
+
polly.describe_voices({language_code: code}).voices.each do |voice|
|
79
|
+
row do
|
80
|
+
column voice.id
|
81
|
+
column voice.language_name
|
82
|
+
column voice.gender
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
require 'fileutils'
|
2
|
+
require 'yaml'
|
3
|
+
|
4
|
+
module ZendeskPolly
|
5
|
+
class Config
|
6
|
+
attr_accessor :zendesk_token, :zendesk_username, :zendesk_url
|
7
|
+
attr_accessor :aws_key, :aws_secret, :aws_region
|
8
|
+
attr_reader :client
|
9
|
+
|
10
|
+
def initialize(client = nil)
|
11
|
+
@client = client # retrieves the client to allow reseting when changing attributes
|
12
|
+
deserialize_from_file if File.exist?(config_file)
|
13
|
+
@aws_region ||= 'us-east-1'
|
14
|
+
end
|
15
|
+
|
16
|
+
def config_file
|
17
|
+
@config_file ||= File.join(File.expand_path('~'), '.zendesk_polly')
|
18
|
+
end
|
19
|
+
|
20
|
+
def deserialize_from_file
|
21
|
+
self.attributes = YAML.load_file(config_file)
|
22
|
+
end
|
23
|
+
|
24
|
+
def serialize_to_file
|
25
|
+
File.write(config_file, attributes.to_yaml)
|
26
|
+
end
|
27
|
+
|
28
|
+
def attributes=(options)
|
29
|
+
self.zendesk_token = options[:zendesk_token]
|
30
|
+
self.zendesk_username = options[:zendesk_username]
|
31
|
+
self.zendesk_url = options[:zendesk_url]
|
32
|
+
self.aws_region = options[:aws_region]
|
33
|
+
self.aws_key = options[:aws_key]
|
34
|
+
self.aws_secret = options[:aws_secret]
|
35
|
+
end
|
36
|
+
|
37
|
+
def attributes
|
38
|
+
{
|
39
|
+
zendesk_token: zendesk_token,
|
40
|
+
zendesk_username: zendesk_username,
|
41
|
+
zendesk_url: zendesk_url,
|
42
|
+
aws_key: aws_key,
|
43
|
+
aws_secret: aws_secret,
|
44
|
+
aws_region: aws_region
|
45
|
+
}
|
46
|
+
end
|
47
|
+
|
48
|
+
def zendesk_configuration
|
49
|
+
attributes.select{ |k, _| k =~ /\Azendesk/ }
|
50
|
+
end
|
51
|
+
|
52
|
+
def polly_configuration
|
53
|
+
attributes.select{ |k, _| k =~ /\Aaws/ }
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
@@ -0,0 +1,70 @@
|
|
1
|
+
require 'forwardable'
|
2
|
+
require 'launchy'
|
3
|
+
require 'tempfile'
|
4
|
+
require 'digest'
|
5
|
+
|
6
|
+
module ZendeskPolly
|
7
|
+
class Greeting
|
8
|
+
extend Forwardable
|
9
|
+
|
10
|
+
AUDIO_CONTENT_TYPE = 'audio/mpeg'
|
11
|
+
OUTPUT_FORMAT = 'mp3'
|
12
|
+
|
13
|
+
CATEGORIES = {
|
14
|
+
voicemail: 1,
|
15
|
+
available: 2,
|
16
|
+
wait: 3,
|
17
|
+
hold: 4,
|
18
|
+
ivr: 5,
|
19
|
+
callback: 6,
|
20
|
+
callback_confirmation: 7
|
21
|
+
}
|
22
|
+
|
23
|
+
attr_accessor :name, :category, :text, :mp3_file, :voice
|
24
|
+
attr_reader :client
|
25
|
+
|
26
|
+
def initialize(client, options = {})
|
27
|
+
@client = client
|
28
|
+
@text = options[:text]
|
29
|
+
raise ArgumentError.new("text is required") unless text
|
30
|
+
|
31
|
+
@voice = options[:voice] || 'Joanna'
|
32
|
+
@name = options[:name] || encoded_text
|
33
|
+
@category = options[:category] || :ivr
|
34
|
+
@category = category.to_sym
|
35
|
+
@mp3_file = "/tmp/#{encoded_text}.mp3" if options[:text]
|
36
|
+
synthesize_speech
|
37
|
+
end
|
38
|
+
|
39
|
+
def encoded_text
|
40
|
+
@et ||= Digest::MD5.hexdigest(text)
|
41
|
+
end
|
42
|
+
|
43
|
+
def play
|
44
|
+
Launchy.open("file://#{mp3_file}")
|
45
|
+
end
|
46
|
+
|
47
|
+
def save
|
48
|
+
placeholder = client.zendesk.greetings.create!(name: name, category_id: CATEGORIES[category])
|
49
|
+
upload(placeholder.id)
|
50
|
+
end
|
51
|
+
|
52
|
+
def synthesize_speech
|
53
|
+
client.polly.synthesize_speech({
|
54
|
+
voice_id: voice,
|
55
|
+
text: text,
|
56
|
+
output_format: OUTPUT_FORMAT,
|
57
|
+
response_target: mp3_file
|
58
|
+
})
|
59
|
+
end
|
60
|
+
|
61
|
+
def upload(greeting_id)
|
62
|
+
raise ArgumentError.new("voice was not generated") unless mp3_file
|
63
|
+
client.zendesk.greetings.update!(
|
64
|
+
id: greeting_id,
|
65
|
+
upload_attributes: { uploaded_data: Faraday::UploadIO.new(mp3_file, AUDIO_CONTENT_TYPE) }
|
66
|
+
)
|
67
|
+
end
|
68
|
+
|
69
|
+
end
|
70
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'zendesk_polly/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "zendesk_polly"
|
8
|
+
spec.version = ZendeskPolly::VERSION
|
9
|
+
spec.authors = ["Alexandre Angelim"]
|
10
|
+
spec.email = ["angelim@angelim.com.br"]
|
11
|
+
|
12
|
+
spec.summary = %q{Zendesk Talk integration with AWS Polly}
|
13
|
+
spec.description = %q{Create Zendesk Talk greetings using AWS Polly text-to-speech engine}
|
14
|
+
spec.homepage = "http://github.com/angelim/zendesk_polly"
|
15
|
+
spec.license = 'MIT'
|
16
|
+
|
17
|
+
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
18
|
+
spec.bindir = "bin"
|
19
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
20
|
+
spec.require_paths = ["lib"]
|
21
|
+
|
22
|
+
spec.add_runtime_dependency 'commander', '~> 4.4'
|
23
|
+
spec.add_runtime_dependency 'aws-sdk', '~> 2.10'
|
24
|
+
spec.add_runtime_dependency 'zendesk_api', '~> 1.14'
|
25
|
+
spec.add_runtime_dependency 'launchy', '~> 2.4'
|
26
|
+
spec.add_runtime_dependency 'command_line_reporter', '~> 3.0'
|
27
|
+
|
28
|
+
spec.add_development_dependency "pry-nav", "~> 0.2"
|
29
|
+
spec.add_development_dependency "bundler", "~> 1.12"
|
30
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
31
|
+
spec.add_development_dependency "rspec", "~> 3.0"
|
32
|
+
end
|
metadata
ADDED
@@ -0,0 +1,188 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: zendesk_polly
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Alexandre Angelim
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2017-07-05 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: commander
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '4.4'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '4.4'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: aws-sdk
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '2.10'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '2.10'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: zendesk_api
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '1.14'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '1.14'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: launchy
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '2.4'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '2.4'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: command_line_reporter
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '3.0'
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '3.0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: pry-nav
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0.2'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0.2'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: bundler
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '1.12'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '1.12'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: rake
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - "~>"
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '10.0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - "~>"
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '10.0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: rspec
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - "~>"
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '3.0'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - "~>"
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '3.0'
|
139
|
+
description: Create Zendesk Talk greetings using AWS Polly text-to-speech engine
|
140
|
+
email:
|
141
|
+
- angelim@angelim.com.br
|
142
|
+
executables:
|
143
|
+
- console
|
144
|
+
- setup
|
145
|
+
- zp
|
146
|
+
extensions: []
|
147
|
+
extra_rdoc_files: []
|
148
|
+
files:
|
149
|
+
- ".gitignore"
|
150
|
+
- ".rspec"
|
151
|
+
- ".travis.yml"
|
152
|
+
- Gemfile
|
153
|
+
- README.md
|
154
|
+
- Rakefile
|
155
|
+
- bin/console
|
156
|
+
- bin/setup
|
157
|
+
- bin/zp
|
158
|
+
- lib/zendesk_polly.rb
|
159
|
+
- lib/zendesk_polly/client.rb
|
160
|
+
- lib/zendesk_polly/config.rb
|
161
|
+
- lib/zendesk_polly/greeting.rb
|
162
|
+
- lib/zendesk_polly/version.rb
|
163
|
+
- zendesk_polly.gemspec
|
164
|
+
homepage: http://github.com/angelim/zendesk_polly
|
165
|
+
licenses:
|
166
|
+
- MIT
|
167
|
+
metadata: {}
|
168
|
+
post_install_message:
|
169
|
+
rdoc_options: []
|
170
|
+
require_paths:
|
171
|
+
- lib
|
172
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
173
|
+
requirements:
|
174
|
+
- - ">="
|
175
|
+
- !ruby/object:Gem::Version
|
176
|
+
version: '0'
|
177
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
178
|
+
requirements:
|
179
|
+
- - ">="
|
180
|
+
- !ruby/object:Gem::Version
|
181
|
+
version: '0'
|
182
|
+
requirements: []
|
183
|
+
rubyforge_project:
|
184
|
+
rubygems_version: 2.6.12
|
185
|
+
signing_key:
|
186
|
+
specification_version: 4
|
187
|
+
summary: Zendesk Talk integration with AWS Polly
|
188
|
+
test_files: []
|