intercom 4.0.0 → 4.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 +5 -5
- data/README.md +15 -10
- data/changes.txt +8 -0
- data/lib/intercom/api_operations/save.rb +1 -0
- data/lib/intercom/conversation.rb +1 -0
- data/lib/intercom/version.rb +1 -1
- data/spec/unit/intercom/contact_spec.rb +55 -0
- data/spec/unit/intercom/conversation_spec.rb +26 -0
- metadata +3 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: c2825cafe4bba63c25a6a4c520d2eb001cd76442b6fcbcd6454eab4c6319dfd6
|
4
|
+
data.tar.gz: 912189efc621173579186ebc5aabecb8fb71e96306a722cd68a477d423c50f61
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 51c4b80bef30445a5cdee9cd6f3715e34857d1879295626cd475eb49881c19f1647a11caadaa3828e99d33009ce88b973839429b7ef54950d047ffb2eb4f1df5
|
7
|
+
data.tar.gz: 44529233028270a8da89edacf0f0d07cfe465faf4d04ea60559ab8a6e2cbbc71e3de2e4b273515da3449e50d9b7f098cfdc585a130fc4b5d6a70556b6ce781ef
|
data/README.md
CHANGED
@@ -61,7 +61,7 @@ Resources this API supports:
|
|
61
61
|
https://api.intercom.io/counts
|
62
62
|
https://api.intercom.io/subscriptions
|
63
63
|
https://api.intercom.io/jobs
|
64
|
-
|
64
|
+
|
65
65
|
|
66
66
|
### Examples
|
67
67
|
|
@@ -99,7 +99,7 @@ contacts = intercom.contacts.search(
|
|
99
99
|
}
|
100
100
|
)
|
101
101
|
contacts.each {|c| p c.email}
|
102
|
-
# For full detail on possible queries, please refer to the API documentation:
|
102
|
+
# For full detail on possible queries, please refer to the API documentation:
|
103
103
|
# https://developers.intercom.com/intercom-api-reference/reference
|
104
104
|
|
105
105
|
# Merge a lead into an existing user
|
@@ -191,7 +191,7 @@ intercom.data_attributes.save(attribute)
|
|
191
191
|
attribute.archived = true
|
192
192
|
intercom.data_attributes.save(attribute)
|
193
193
|
|
194
|
-
# Find all customer attributes including archived
|
194
|
+
# Find all customer attributes including archived
|
195
195
|
customer_attributes_incl_archived = intercom.data_attributes.find_all({"model": "contact", "include_archived": true})
|
196
196
|
customer_attributes_incl_archived.each { |attr| p attribute.name }
|
197
197
|
```
|
@@ -321,7 +321,7 @@ conversation.statistics.time_to_admin_reply
|
|
321
321
|
conversation.statistics.last_assignment_at
|
322
322
|
|
323
323
|
# Get information on the sla applied to a conversation
|
324
|
-
conversation.sla_applied.sla_name
|
324
|
+
conversation.sla_applied.sla_name
|
325
325
|
|
326
326
|
# REPLYING TO CONVERSATIONS
|
327
327
|
# User (identified by email) replies with a comment
|
@@ -370,9 +370,9 @@ intercom.conversations.mark_read(conversation.id)
|
|
370
370
|
intercom.conversations.run_assignment_rules(conversation.id)
|
371
371
|
|
372
372
|
# Search for conversations
|
373
|
-
# For full detail on possible queries, please refer to the API documentation:
|
374
|
-
# https://developers.intercom.com/intercom-api-reference/reference
|
375
|
-
|
373
|
+
# For full detail on possible queries, please refer to the API documentation:
|
374
|
+
# https://developers.intercom.com/intercom-api-reference/reference
|
375
|
+
|
376
376
|
# Search for open conversations sorted by the created_at date
|
377
377
|
conversations = intercom.conversations.search(
|
378
378
|
query: {
|
@@ -386,18 +386,23 @@ conversations = intercom.conversations.search(
|
|
386
386
|
conversations.each {|c| p c.id}
|
387
387
|
|
388
388
|
# Tagging for conversations
|
389
|
-
tag = intercom.tags.find(id: "2")
|
389
|
+
tag = intercom.tags.find(id: "2")
|
390
390
|
conversation = intercom.conversations.find(id: "1")
|
391
391
|
|
392
392
|
# An Admin ID is required to add or remove tag on a conversation
|
393
|
-
admin = intercom.admins.find(id: "1")
|
393
|
+
admin = intercom.admins.find(id: "1")
|
394
394
|
|
395
395
|
# Add a tag to a conversation
|
396
396
|
conversation.add_tag(id: tag.id, admin_id: admin.id)
|
397
397
|
|
398
398
|
# Remove a tag from a conversation
|
399
399
|
conversation.remove_tag(id: tag.id, admin_id: admin.id)
|
400
|
-
|
400
|
+
|
401
|
+
# Add a contact to a conversation
|
402
|
+
conversation.add_contact(admin_id: admin.id, customer: { intercom_user_id: contact.id })
|
403
|
+
|
404
|
+
# Remove a contact from a conversation
|
405
|
+
conversation.remove_contact(id: contact.id, admin_id: admin.id)
|
401
406
|
```
|
402
407
|
|
403
408
|
#### Full loading of an embedded entity
|
data/changes.txt
CHANGED
@@ -1,3 +1,11 @@
|
|
1
|
+
4.0
|
2
|
+
New version to support API version 2.0.
|
3
|
+
- Added support for new Contacts API.
|
4
|
+
- Added support for Conversation Search and for Conversation model changes.
|
5
|
+
- New DataAttribute class to support the Data Attributes. See README for details on usage.
|
6
|
+
- New method to run assignment rules on a conversation: `intercom.conversations.run_assignment_rules(<convo_id>)`.
|
7
|
+
- See Migration guide for breaking changes: https://github.com/intercom/intercom-ruby/wiki/Migration-guide-for-v4
|
8
|
+
|
1
9
|
3.9.5
|
2
10
|
Add Unstable version support
|
3
11
|
|
data/lib/intercom/version.rb
CHANGED
@@ -311,5 +311,60 @@ describe Intercom::Contact do
|
|
311
311
|
client.expects(:delete).with("/contacts/1/companies/#{company.id}", "id": tag.id ).returns(test_company)
|
312
312
|
contact.remove_company({ "id": tag.id })
|
313
313
|
end
|
314
|
+
|
315
|
+
describe 'just after creating the contact' do
|
316
|
+
let(:contact) do
|
317
|
+
contact = Intercom::Contact.new('email' => 'jo@example.com', :external_id => 'i-1224242')
|
318
|
+
client.expects(:post).with('/contacts', 'email' => 'jo@example.com', 'external_id' => 'i-1224242', 'custom_attributes' => {})
|
319
|
+
.returns('id' => 1, 'email' => 'jo@example.com', 'external_id' => 'i-1224242')
|
320
|
+
client.contacts.save(contact)
|
321
|
+
end
|
322
|
+
|
323
|
+
it 'returns a collection proxy for listing notes' do
|
324
|
+
proxy = contact.notes
|
325
|
+
_(proxy.resource_name).must_equal 'notes'
|
326
|
+
_(proxy.url).must_equal '/contacts/1/notes'
|
327
|
+
_(proxy.resource_class).must_equal Intercom::Note
|
328
|
+
end
|
329
|
+
|
330
|
+
it 'returns a collection proxy for listing tags' do
|
331
|
+
proxy = contact.tags
|
332
|
+
_(proxy.resource_name).must_equal 'tags'
|
333
|
+
_(proxy.url).must_equal '/contacts/1/tags'
|
334
|
+
_(proxy.resource_class).must_equal Intercom::Tag
|
335
|
+
end
|
336
|
+
|
337
|
+
it 'returns a collection proxy for listing companies' do
|
338
|
+
proxy = contact.companies
|
339
|
+
_(proxy.resource_name).must_equal 'companies'
|
340
|
+
_(proxy.url).must_equal '/contacts/1/companies'
|
341
|
+
_(proxy.resource_class).must_equal Intercom::Company
|
342
|
+
end
|
343
|
+
|
344
|
+
it 'adds a note to a contact' do
|
345
|
+
client.expects(:post).with('/contacts/1/notes', {body: note.body}).returns(note.to_hash)
|
346
|
+
contact.create_note({body: note.body})
|
347
|
+
end
|
348
|
+
|
349
|
+
it 'adds a tag to a contact' do
|
350
|
+
client.expects(:post).with('/contacts/1/tags', "id": tag.id).returns(tag.to_hash)
|
351
|
+
contact.add_tag({ "id": tag.id })
|
352
|
+
end
|
353
|
+
|
354
|
+
it 'removes a tag from a contact' do
|
355
|
+
client.expects(:delete).with("/contacts/1/tags/#{tag.id}", "id": tag.id ).returns(tag.to_hash)
|
356
|
+
contact.remove_tag({ "id": tag.id })
|
357
|
+
end
|
358
|
+
|
359
|
+
it 'adds a contact to a company' do
|
360
|
+
client.expects(:post).with('/contacts/1/companies', "id": company.id).returns(test_company)
|
361
|
+
contact.add_company({ "id": tag.id })
|
362
|
+
end
|
363
|
+
|
364
|
+
it 'removes a contact from a company' do
|
365
|
+
client.expects(:delete).with("/contacts/1/companies/#{company.id}", "id": tag.id ).returns(test_company)
|
366
|
+
contact.remove_company({ "id": tag.id })
|
367
|
+
end
|
368
|
+
end
|
314
369
|
end
|
315
370
|
end
|
@@ -81,5 +81,31 @@ describe "Intercom::Conversation" do
|
|
81
81
|
client.expects(:delete).with("/conversations/1/tags/1", { "id": tag.id }).returns(nil)
|
82
82
|
_(proc { conversation.remove_tag({ "id": tag.id }) }).must_raise Intercom::HttpError
|
83
83
|
end
|
84
|
+
|
85
|
+
describe 'contacts' do
|
86
|
+
let(:response) do
|
87
|
+
{
|
88
|
+
customers: [
|
89
|
+
{ type: test_contact['type'], id: test_contact['id'] }
|
90
|
+
]
|
91
|
+
}
|
92
|
+
end
|
93
|
+
|
94
|
+
it 'adds a contact to a conversation' do
|
95
|
+
client.expects(:post)
|
96
|
+
.with("/conversations/1/customers",
|
97
|
+
{ admin_id: test_admin['id'], customer: { intercom_user_id: test_contact['id'] } })
|
98
|
+
.returns(response.to_hash)
|
99
|
+
conversation.add_contact(admin_id: test_admin['id'], customer: { intercom_user_id: test_contact['id'] })
|
100
|
+
end
|
101
|
+
|
102
|
+
it 'removes a contact from a conversation' do
|
103
|
+
client.expects(:delete)
|
104
|
+
.with("/conversations/1/customers/aaaaaaaaaaaaaaaaaaaaaaaa",
|
105
|
+
{ id: 'aaaaaaaaaaaaaaaaaaaaaaaa', admin_id: '1234' })
|
106
|
+
.returns(response.to_hash)
|
107
|
+
conversation.remove_contact(id: test_contact['id'], admin_id: test_admin['id'])
|
108
|
+
end
|
109
|
+
end
|
84
110
|
end
|
85
111
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: intercom
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.0.
|
4
|
+
version: 4.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ben McRedmond
|
@@ -15,7 +15,7 @@ authors:
|
|
15
15
|
autorequire:
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
|
-
date: 2020-
|
18
|
+
date: 2020-03-10 00:00:00.000000000 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
name: minitest
|
@@ -262,8 +262,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
262
262
|
- !ruby/object:Gem::Version
|
263
263
|
version: '0'
|
264
264
|
requirements: []
|
265
|
-
|
266
|
-
rubygems_version: 2.5.2.3
|
265
|
+
rubygems_version: 3.0.3
|
267
266
|
signing_key:
|
268
267
|
specification_version: 4
|
269
268
|
summary: Ruby bindings for the Intercom API
|