Class: Lita::Handlers::Zendesk

Inherits:
Handler
  • Object
show all
Defined in:
lib/lita/handlers/zendesk.rb

Constant Summary collapse

API_VERSION_URL_PATH =
'api/v2'
WEB_TICKETS_URL_PATH =
'tickets'
QUERY_TICKETS_ALL =
'type:ticket'
QUERY_TICKETS_ESCALATED =
'type:ticket tags:escalated status:open status:pending'
QUERY_TICKETS_HOLD =
'type:ticket status:hold'
QUERY_TICKETS_OPEN =
'type:ticket status:open'
QUERY_TICKETS_NEW =
'type:ticket status:new'
QUERY_TICKETS_PENDING =
'type:ticket status:pending'
QUERY_TICKETS_UNSOLVED =
'type:ticket status<solved'
QUERY_USERS =
'users'

Instance Method Summary collapse

Instance Method Details

#api_version_urlObject



40
41
42
# File 'lib/lita/handlers/zendesk.rb', line 40

def api_version_url
  uri_join base_url, API_VERSION_URL_PATH
end

#base_urlObject



36
37
38
# File 'lib/lita/handlers/zendesk.rb', line 36

def base_url
  "https://#{config.subdomain}.zendesk.com"
end

#clientObject



25
26
27
28
29
30
31
32
33
34
# File 'lib/lita/handlers/zendesk.rb', line 25

def client
  return @_client if @_client
  Lita.logger.info "#{logger_prefix}Connecting Zendesk Client to #{api_version_url}"
  @_client = ZendeskAPI::Client.new do |client|
    client.url = api_version_url.to_s
    client.username = config.username || config.user
    client.token = config.token
    client.password = config.password
  end
end

#escalated_tickets(response) ⇒ Object



83
84
85
# File 'lib/lita/handlers/zendesk.rb', line 83

def escalated_tickets(response)
  ticket_count response, QUERY_TICKETS_ESCALATED, 'escalated'
end

#escalated_tickets_list(response) ⇒ Object



120
121
122
# File 'lib/lita/handlers/zendesk.rb', line 120

def escalated_tickets_list(response)
  ticket_list response, QUERY_TICKETS_ESCALATED, 'escalated'
end

#new_tickets(response) ⇒ Object



78
79
80
# File 'lib/lita/handlers/zendesk.rb', line 78

def new_tickets(response)
  ticket_count response, QUERY_TICKETS_NEW, 'new'
end

#new_tickets_list(response) ⇒ Object



115
116
117
# File 'lib/lita/handlers/zendesk.rb', line 115

def new_tickets_list(response)
  ticket_list response, QUERY_TICKETS_NEW, 'new'
end

#onhold_tickets(response) ⇒ Object



93
94
95
# File 'lib/lita/handlers/zendesk.rb', line 93

def onhold_tickets(response)
  ticket_count response, QUERY_TICKETS_HOLD, 'on hold'
end

#onhold_tickets_list(response) ⇒ Object



130
131
132
# File 'lib/lita/handlers/zendesk.rb', line 130

def onhold_tickets_list(response)
  ticket_list response, QUERY_TICKETS_HOLD, 'on hold'
end

#open_tickets(response) ⇒ Object



88
89
90
# File 'lib/lita/handlers/zendesk.rb', line 88

def open_tickets(response)
  ticket_count response, QUERY_TICKETS_OPEN, 'open'
end

#open_tickets_list(response) ⇒ Object



125
126
127
# File 'lib/lita/handlers/zendesk.rb', line 125

def open_tickets_list(response)
  ticket_list response, QUERY_TICKETS_OPEN, 'open'
end

#pending_tickets(response) ⇒ Object



73
74
75
# File 'lib/lita/handlers/zendesk.rb', line 73

def pending_tickets(response)
  ticket_count response, QUERY_TICKETS_PENDING, 'pending'
end

#pending_tickets_list(response) ⇒ Object



110
111
112
# File 'lib/lita/handlers/zendesk.rb', line 110

def pending_tickets_list(response)
  ticket_list response, QUERY_TICKETS_PENDING, 'pending'
end

#search_tickets(response) ⇒ Object



56
57
58
# File 'lib/lita/handlers/zendesk.rb', line 56

def search_tickets(response)
  ticket_search response, response.matches[0][0]
end

#ticket_details_with_comments(response) ⇒ Object



137
138
139
140
141
142
143
144
145
146
147
# File 'lib/lita/handlers/zendesk.rb', line 137

def ticket_details_with_comments(response)
  Lita.logger.info "#{logger_prefix}Processing Zendesk Ticket Details"
  ticket_id = response.matches[0][0].to_i
  begin
    ticket = client.ticket.find!(id: ticket_id)
    response.reply get_text_for_ticket_with_comments(ticket)
  rescue => e
    Lita.logger.warn "#{logger_prefix}#{e}"
    response.reply "Error processing ticket #{ticket_id}"
  end
end

#total_tickets(response) ⇒ Object



68
69
70
# File 'lib/lita/handlers/zendesk.rb', line 68

def total_tickets(response)
  ticket_count response, QUERY_TICKETS_ALL, 'total'
end

#total_tickets_list(response) ⇒ Object



105
106
107
# File 'lib/lita/handlers/zendesk.rb', line 105

def total_tickets_list(response)
  ticket_list response, QUERY_TICKETS_ALL, 'total'
end

#unsolved_tickets(response) ⇒ Object



63
64
65
# File 'lib/lita/handlers/zendesk.rb', line 63

def unsolved_tickets(response)
  ticket_count response, QUERY_TICKETS_UNSOLVED, 'unsolved'
end

#unsolved_tickets_list(response) ⇒ Object



100
101
102
# File 'lib/lita/handlers/zendesk.rb', line 100

def unsolved_tickets_list(response)
  ticket_list response, QUERY_TICKETS_UNSOLVED, 'unsolved'
end

#web_tickets_urlObject



44
45
46
# File 'lib/lita/handlers/zendesk.rb', line 44

def web_tickets_url
  uri_join base_url, WEB_TICKETS_URL_PATH
end

#zd_instance_info(response) ⇒ Object



51
52
53
# File 'lib/lita/handlers/zendesk.rb', line 51

def zd_instance_info(response)
  response.reply "Using Zendesk instance at: #{base_url}"
end