sfmc_emailer 0.0.3 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 71670b98e465d6aeb3b6a6816634bde6ee9d9da9a712d559daf0bea7b1bb64d2
4
- data.tar.gz: 5e59ee0b279dbd6a0523d3ddd2dbab5c7b894a7f1888940dbcc478502a47054d
3
+ metadata.gz: 1adf9b8e0dad89341a1112c11f39d4d3a941ac4939aa9765a903b3110ee733fc
4
+ data.tar.gz: 7d16ea5996dfd53e530a96c6017a9bb26151adb44c8ca7a6f9eb81c6ecb2f1f1
5
5
  SHA512:
6
- metadata.gz: a362ec1e2c90134f035b02bde553757ca8bf0bce374e29667888133422950a7660a474fd6b7683f426482154601dc05df53607171485d184cbaf917a6fc3b1c5
7
- data.tar.gz: 1232d21dad0c1ba5e10b86cb7e078b96475ecede5eb3bb1221bc00c6ec8d47b173519839871190c7a70fee221985d133e62c4cda98650828d61615b322e76f7c
6
+ metadata.gz: 6f707821530e877188f0aa5a1ec4fc67a855aff8340387d40ddf08f005cf2cd9f595a5ee2ec34095819a8c09763585adefbe574618a91487ae33b51c72ad344a
7
+ data.tar.gz: 72a0150f271142c8be252b58da1a35e62564ff675b8e618d932e690db211de1965fbb2224f098bfca21c440c4a7fb8261165df22e2f27b05a348cbf61500b6df
data/README.md ADDED
@@ -0,0 +1,60 @@
1
+ # Salesforce Marketing Cloud (SFMC) Emailer
2
+ Supports sending both transactional & triggered send (marketing) emails
3
+
4
+ ## How to use
5
+ ### Config
6
+ ```ruby
7
+ # config/initializers/sfmc.rb
8
+
9
+ SFMC::SFMCBase.init(
10
+ subdomain: 'mchf5m7e9wjxn-f2xxn6l5ul1x0q',
11
+ client_id: 'client_id',
12
+ client_secret: 'super_secret',
13
+ default_send_classification: 'Default Send Classification - 293',
14
+ default_subscriber_list: 'All Subscribers - 9136',
15
+ default_data_extension: 'C4530F44-5C72-4113-8EA0-5210C9222455',
16
+ default_bcc: ['example@example.com'] # optional
17
+ )
18
+ ```
19
+
20
+ ### Transactional Emails
21
+
22
+ ```ruby
23
+ SFMC::Transactional::Email.send_email(
24
+ email: 'email_name',
25
+ to: 'example@example.com',
26
+ params: { # Each attribute should be present in the corresponding data extension in SFMC
27
+ First_Name: "Bob",
28
+ }
29
+ )
30
+ ```
31
+
32
+ ### Triggered Send Emails
33
+
34
+ ```ruby
35
+ SFMC::Triggered::Email.send_email(
36
+ email: 'email_name',
37
+ to: 'example@example.com',
38
+ params: { # Each attribute should be present in the corresponding data extension in SFMC
39
+ First_Name: "Bob",
40
+ }
41
+ )
42
+ ```
43
+
44
+ <b>Note:</b> Changes to transactional emails only take effect once its send definition is refreshed:
45
+ ```ruby
46
+ SFMC::Transactional::SendDefinition.refresh 'email_name'
47
+ ```
48
+
49
+ ### Creating a Transactional Email Send Definition
50
+ <b>Note:</b> The first time an email is sent a send definition for it will be created with the default values. This definition take about a minute to actually become active, so try sending again after that. You can also manually create a send definition using:
51
+ ```ruby
52
+ SFMC::Transactional::SendDefinition(
53
+ definition_key: 'definition_key',
54
+ customer_key: 'customer_key',
55
+ send_classification: 'send_classification',
56
+ subscriber_list: 'subscriber_list',
57
+ data_extension: 'data_extension',
58
+ bcc: ['example@example.com'] # optional
59
+ )
60
+ ```
data/lib/sfmc/errors.rb CHANGED
@@ -1,13 +1,11 @@
1
1
  module SFMC
2
2
  module Errors
3
- # rubocop:disable Layout/EmptyLineBetweenDefs
4
3
  class BadRequestError < StandardError; end
5
4
  class UnauthorizedError < StandardError; end
6
5
  class ForbiddenError < StandardError; end
7
6
  class NotFoundError < StandardError; end
8
7
  class UnprocessableEntityError < StandardError; end
9
8
  class APIError < StandardError; end
10
- # rubocop:enable Layout/EmptyLineBetweenDefs
11
9
 
12
10
  def error_class(code)
13
11
  case code.to_i
@@ -6,16 +6,16 @@ module SFMC
6
6
  # If an email hasn't ever been sent then we will not have an email send definition
7
7
  # We're waiting a minute for the send definition to fully be initialized
8
8
  # Thankfully this is a rare edge case
9
- def self.create_email_send_definition_and_retry(name, to, params)
9
+ def self.create_email_send_definition(name)
10
10
  asset = SFMC::Assets::Asset.query("name eq '#{name}'", 'customerKey')
11
11
  raise SFMC::Errors::BadRequestError, "No emails found with name #{name}" if asset.count == 0
12
12
 
13
13
  consumer_key = asset.items.first["customerKey"]
14
14
 
15
- SFMC::Transactional::SendDefinition.create(name, consumer_key)
15
+ SFMC::Transactional::SendDefinition.create(definition_key: name, customer_key: consumer_key)
16
16
 
17
17
  # Even though the send def is "Active" it won't function for another minute
18
- delay(run_at: 70.seconds.from_now).send_email(email: name, to: to, params: params, create_email_if_needed: false)
18
+ pp "Email send definition inactive. Try again in a minute"
19
19
  end
20
20
 
21
21
  # Will attempt once to create a new email send definition if one isn't found
@@ -43,7 +43,7 @@ module SFMC
43
43
  rescue SFMC::Errors::NotFoundError
44
44
  raise unless create_email_if_needed
45
45
 
46
- create_email_send_definition_and_retry(email, to, params)
46
+ create_email_send_definition(email)
47
47
  end
48
48
  end
49
49
  end
@@ -9,12 +9,12 @@ module SFMC
9
9
  end
10
10
 
11
11
  def self.create(
12
- definition_key,
13
- customer_key,
14
- send_classification = nil,
15
- subscriber_list = nil,
16
- data_extension = nil,
17
- bcc = []
12
+ definition_key:,
13
+ customer_key:,
14
+ send_classification: nil,
15
+ subscriber_list: nil,
16
+ data_extension: nil,
17
+ bcc: []
18
18
  )
19
19
  params = {
20
20
  classification: SFMCBase.default_send_classification || send_classification,
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sfmc_emailer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Angel Ruiz-Bates
@@ -17,6 +17,9 @@ dependencies:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0.20'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: '0.20'
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
@@ -24,6 +27,29 @@ dependencies:
24
27
  - - "~>"
25
28
  - !ruby/object:Gem::Version
26
29
  version: '0.20'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: '0.20'
33
+ - !ruby/object:Gem::Dependency
34
+ name: webmock
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: 3.18.1
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: 3.18.1
43
+ type: :development
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: 3.18.1
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: 3.18.1
27
53
  description: API wrapper for Salesforce Marketing Cloud's Transactional and Triggered
28
54
  Send APIs
29
55
  email: angeljrbt@gmail.com
@@ -31,6 +57,7 @@ executables: []
31
57
  extensions: []
32
58
  extra_rdoc_files: []
33
59
  files:
60
+ - README.md
34
61
  - lib/sfmc/assets/asset.rb
35
62
  - lib/sfmc/authentication.rb
36
63
  - lib/sfmc/contacts/contact_key.rb