Browse Source

Working on issue #558 - Archived Zendesk tickets won't get imported.

Thorsten Eckel 8 years ago
parent
commit
0d20c9095f
1 changed files with 17 additions and 1 deletions
  1. 17 1
      lib/import/zendesk.rb

+ 17 - 1
lib/import/zendesk.rb

@@ -25,7 +25,7 @@ module Import::Zendesk
     Import::Zendesk::UserFactory.import(client.users)
 
     Import::Zendesk::TicketFieldFactory.import(client.ticket_fields)
-    Import::Zendesk::TicketFactory.import(client.tickets)
+    Import::Zendesk::TicketFactory.import(all_tickets)
 
     # TODO
     Setting.set( 'system_init_done', true )
@@ -40,6 +40,22 @@ module Import::Zendesk
 
   private
 
+  # this special ticket logic is needed since Zendesk archives tickets
+  # after 120 days and doesn't return them via the client.tickets
+  # endpoint as described here:
+  # https://github.com/zammad/zammad/issues/558#issuecomment-267951351
+  # the proper way is to use the 'incremental' endpoint which is not available
+  # via the ruby gem yet but a pull request is pending:
+  # https://github.com/zendesk/zendesk_api_client_rb/pull/287
+  # the following workaround is needed to use this functionality
+  def all_tickets
+    ZendeskAPI::Collection.new(
+      client,
+      ZendeskAPI::Ticket,
+      path: 'incremental/tickets?start_time=1'
+    )
+  end
+
   def client
     Import::Zendesk::Requester.client
   end