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.
@@ -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
@@ -0,0 +1,10 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
10
+ .zp
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --format documentation
2
+ --color
@@ -0,0 +1,5 @@
1
+ sudo: false
2
+ language: ruby
3
+ rvm:
4
+ - 2.3.1
5
+ before_install: gem install bundler -v 1.12.5
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in zendesk_polly.gemspec
4
+ gemspec
@@ -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
+
@@ -0,0 +1,6 @@
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task :default => :spec
@@ -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
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
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,3 @@
1
+ module ZendeskPolly
2
+ VERSION = "0.0.1"
3
+ 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: []