crisp_client 0.2.1 → 0.2.5

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
  SHA1:
3
- metadata.gz: 426656a67b63a73e2fbc15c28c35ee244983df3e
4
- data.tar.gz: 10879af766740e19f775569636327c91c6efbc1d
3
+ metadata.gz: f7324c527da45bbaa55dd5e8a5671d9bf314c6ee
4
+ data.tar.gz: 13b01632fc5e79bc8b4834e60e3e8a4f5bba85b3
5
5
  SHA512:
6
- metadata.gz: 8e7a17a0ef57fc87a87b4dc5586d8025a4ace11348064fb21f0e2b1cfe31ec1cdc3669a9c4e9c1a4deb8b5eb4e7aa494c2b63e989eeb7b7a9b70e68a16f055c6
7
- data.tar.gz: cce3e3343dd4f58f1c597670f792c057249e9bb296b9d66e8bd24bbff38bc66216cd0e6484879647fa5f16ad7cc94a6cb7b8f0ba28c829d96c61314db137cd8e
6
+ metadata.gz: 216d6562b683178df0e60f1b7c8d67f2be2d2a6ea8e62032d6352739b6d256a3d7a2d986f093c67a121825a506a9f141106168a57dfe9e9a5068e40e26264877
7
+ data.tar.gz: 874868efdf1fc092f613e15a99549ccb664df377fe9d7f6276971582bae817dc4447f5a126edbf64111286b45936cf8f2535a24c2fb3a07c2234332a4b38b95f
data/.gitignore CHANGED
@@ -7,3 +7,4 @@
7
7
  /pkg/
8
8
  /spec/reports/
9
9
  /tmp/
10
+ .rbenv-vars
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 2.2.3
data/README.md CHANGED
@@ -27,9 +27,26 @@ cc.remove_people_profile(website_id: website_id, people_id: person_id)
27
27
 
28
28
  cc.list_people_profiles(website_id: website_id)
29
29
  #=> will return the first 20 users by default
30
- cc.list_people_profiles(website_id: website_id, page_number: 2)
30
+ cc.list_people_profiles(website_id: website_id, page_number: 2, search_filter: "test@email.com")
31
31
  #=> will return the next 20 users
32
32
  # Other parameters you can use include: sort_field, sort_order, search_operator, search_filter
33
+ # The search_filter parameter is to be used exactly as in the dashboard, as in: "&search_filter="parameter"
34
+
35
+ cc.update_conversation_metas website_id: website_id, session_id: session_id,
36
+ meta: { nickname: "test nickname", email: "test@email.com", phone: "9999-9999",
37
+ address: "rua teste 99t", segments: ["segmento 1", "segmento 2"],
38
+ data: { teste_data: "data_teste_3", valorArbitrario: "teste arbitrário 3" } }
39
+ # Updates the metadata from a specific conversation, given a session_id
40
+ # Remember that conversation metadata is not equal to profile metadata. Each conversation has their own parameters.
41
+
42
+ cc.update_people_profile website_id: website_id, people_id: people_id,
43
+ profile_data: { person: { phone: "9999-9999", nickname: "test nickname 2",
44
+ address: "rua teste 99t", website: "http://teste.com"},
45
+ segments: ["segmento 4", "segmento 3"],
46
+ company: { name: "Empresa teste" },
47
+ geolocation: { city: "Cidade teste" } }
48
+ # Updates a user's profile data. This is what you see when you click in a specific profile.
49
+
33
50
  ```
34
51
 
35
52
  ## Installation
data/lib/crisp_client.rb CHANGED
@@ -2,7 +2,9 @@ require "crisp_client/version"
2
2
  require "crisp_client/user_availability"
3
3
  require "crisp_client/list_websites"
4
4
  require "crisp_client/website_people"
5
+ require "crisp_client/website_conversation.rb"
5
6
  require "httparty"
7
+ require "uri"
6
8
 
7
9
  module CrispClient
8
10
  class Base
@@ -10,6 +12,7 @@ module CrispClient
10
12
  include UserAvailability
11
13
  include ListWebsites
12
14
  include WebsitePeople
15
+ include WebsiteConversation
13
16
 
14
17
  base_uri "https://api.crisp.im/v1"
15
18
 
@@ -1,3 +1,3 @@
1
1
  module CrispClient
2
- VERSION = "0.2.1"
2
+ VERSION = "0.2.5"
3
3
  end
@@ -0,0 +1,26 @@
1
+ module WebsiteConversation
2
+ # https://docs.crisp.chat/api/v1/#website-website-conversation-post
3
+ def create_a_new_conversation(website_id:)
4
+ response = self.class.post("/website/#{website_id}/conversation",
5
+ headers: { 'Content-Type' => 'application/json' }.merge(@auth))
6
+
7
+ if response["error"] == false
8
+ return response["data"]
9
+ else
10
+ raise response["reason"]
11
+ end
12
+ end
13
+
14
+ # https://docs.crisp.chat/api/v1/#website-website-conversation-patch-4
15
+ def update_conversation_metas(website_id:, session_id:, meta:)
16
+ response = self.class.patch("/website/#{website_id}/conversation/#{session_id}/meta",
17
+ body: meta.to_json,
18
+ headers: { 'Content-Type' => 'application/json' }.merge(@auth))
19
+
20
+ unless response.nil? && response["error"] == true
21
+ return response["data"]
22
+ else
23
+ raise response["reason"]
24
+ end
25
+ end
26
+ end
@@ -5,9 +5,34 @@ module WebsitePeople
5
5
  end
6
6
 
7
7
  # https://docs.crisp.im/api/v1/#website-website-people-get-2
8
- def list_people_profiles(website_id:, page_number: 1, sort_field: "nickname", sort_order: "ascending")
9
- # TODO: accept params sort_field, sort_order, search_operator, search_filter
10
- client_get("/website/#{website_id}/people/profiles/#{page_number}?sort_order=#{sort_order}")["data"]
8
+ def list_people_profiles(website_id:, page_number: 1, sort_field: "active", sort_order: "descending", search_operator: "or", search_filter: "")
9
+ #The way to use the "search_filter" parameter isn't documented in the CRISP docs
10
+ #i've obtained this information by intercepting the HTTP request made when you use the dashboard to search for profiles
11
+ #You can view this information by using the "network" section in your devtools of choice.
12
+ #The "list_people_profiles" is what's used when you search for something in the dashboard, thus, it makes several requests using your parameter.
13
+
14
+ filter = [{"model":"people","criterion":"email","operator":"has","query":["#{search_filter}"]},
15
+ {"model":"people","criterion":"segments","operator":"has","query":["#{search_filter}"]},
16
+ {"model":"people","criterion":"company.name","operator":"has","query":["#{search_filter}"]},
17
+ {"model":"people","criterion":"company.legal_name","operator":"has","query":["#{search_filter}"]},
18
+ {"model":"people","criterion":"person.nickname","operator":"has","query":["#{search_filter}"]},
19
+ {"model":"people","criterion":"person.address","operator":"has","query":["#{search_filter}"]},
20
+ {"model":"people","criterion":"person.employment.name","operator":"has","query":["#{search_filter}"]},
21
+ {"model":"people","criterion":"person.geolocation.city","operator":"has","query":["#{search_filter}"]},
22
+ {"model":"people","criterion":"person.geolocation.country","operator":"has","query":["#{search_filter}"]}]
23
+
24
+ filter = filter.to_json
25
+ filter = URI.encode(filter.to_s)
26
+ filter = filter.gsub(/\[/, "%5B").gsub(/\]/, "%5D")
27
+
28
+ response = client_get("/website/#{website_id}/people/profiles/#{page_number}?search_filter=#{filter}&search_operator=#{search_operator}&sort_field=#{sort_field}&sort_order=#{sort_order}")
29
+ if response["data"].empty?
30
+ return nil
31
+ elsif response["error"] == false
32
+ return response["data"]
33
+ else
34
+ raise response["reason"]
35
+ end
11
36
  end
12
37
 
13
38
  # https://docs.crisp.im/api/v1/#website-website-people-post
@@ -29,4 +54,18 @@ module WebsitePeople
29
54
  headers: { 'Content-Type' => 'application/json' }.merge(@auth))
30
55
  return response["reason"]
31
56
  end
57
+
58
+ #https://docs.crisp.chat/api/v1/#website-website-people-patch
59
+ def update_people_profile(website_id:, people_id:, profile_data:)
60
+ response = self.class.patch("/website/#{website_id}/people/profile/#{people_id}",
61
+ body: profile_data.to_json,
62
+ headers: { 'Content-Type' => 'application/json' }.merge(@auth))
63
+
64
+ unless response.nil? && response["error"] == true
65
+ return response["data"]
66
+ else
67
+ raise response["reason"]
68
+ end
69
+ end
32
70
  end
71
+
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: crisp_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Flavio Wuensche
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-06-09 00:00:00.000000000 Z
11
+ date: 2017-09-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -60,6 +60,7 @@ extensions: []
60
60
  extra_rdoc_files: []
61
61
  files:
62
62
  - ".gitignore"
63
+ - ".ruby-version"
63
64
  - Gemfile
64
65
  - LICENSE.txt
65
66
  - README.md
@@ -71,6 +72,7 @@ files:
71
72
  - lib/crisp_client/list_websites.rb
72
73
  - lib/crisp_client/user_availability.rb
73
74
  - lib/crisp_client/version.rb
75
+ - lib/crisp_client/website_conversation.rb
74
76
  - lib/crisp_client/website_people.rb
75
77
  homepage: https://github.com/fwuensche/crisp_client
76
78
  licenses:
@@ -92,7 +94,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
92
94
  version: '0'
93
95
  requirements: []
94
96
  rubyforge_project:
95
- rubygems_version: 2.6.8
97
+ rubygems_version: 2.4.5.1
96
98
  signing_key:
97
99
  specification_version: 4
98
100
  summary: Ruby Client for Crisp API