Sha256: 002adcc1a1d81bc92104696840fb17d422753e21a1eb7925d28b8b1e0669be48

Contents?: true

Size: 1.84 KB

Versions: 14

Compression:

Stored size: 1.84 KB

Contents

require 'intercom/service/base_service'
require 'intercom/api_operations/find_all'
require 'intercom/api_operations/find'
require 'intercom/api_operations/load'
require 'intercom/api_operations/save'
require 'intercom/utils'

module Intercom
  module Service
    class Conversation < BaseService
      include ApiOperations::FindAll
      include ApiOperations::List
      include ApiOperations::Find
      include ApiOperations::Load
      include ApiOperations::Save

      def collection_class
        Intercom::Conversation
      end

      def mark_read(id)
        @client.put("/conversations/#{id}", read: true)
      end

      def reply(reply_data)
        id = reply_data.delete(:id)
        collection_name = Utils.resource_class_to_collection_name(collection_class)
        response = @client.post("/#{collection_name}/#{id}/reply", reply_data.merge(:conversation_id => id))
        collection_class.new.from_response(response)
      end

      def reply_to_last(reply_data)
        collection_name = Utils.resource_class_to_collection_name(collection_class)
        response = @client.post("/#{collection_name}/last/reply", reply_data)
        collection_class.new.from_response(response)
      end

      def open(reply_data)
        reply reply_data.merge(message_type: 'open', type: 'admin')
      end

      def close(reply_data)
        reply reply_data.merge(message_type: 'close', type: 'admin')
      end

      def snooze(reply_data)
        snoozed_until = reply_data.fetch(:snoozed_until) { fail 'snoozed_until field is required' }
        reply reply_data.merge(message_type: 'snoozed', type: 'admin')
      end

      def assign(reply_data)
        assignee_id = reply_data.fetch(:assignee_id) { fail 'assignee_id is required' }
        reply reply_data.merge(message_type: 'assignment', assignee_id: assignee_id, type: 'admin')
      end
    end
  end
end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
intercom-3.9.5 lib/intercom/service/conversation.rb
intercom-3.9.4 lib/intercom/service/conversation.rb
intercom-3.9.3 lib/intercom/service/conversation.rb
intercom-3.9.2 lib/intercom/service/conversation.rb
intercom-3.9.0 lib/intercom/service/conversation.rb
intercom-3.8.1 lib/intercom/service/conversation.rb
intercom-3.8.0 lib/intercom/service/conversation.rb
intercom-3.7.7 lib/intercom/service/conversation.rb
intercom-3.7.6 lib/intercom/service/conversation.rb
intercom-3.7.5 lib/intercom/service/conversation.rb
intercom-3.7.4 lib/intercom/service/conversation.rb
intercom-3.7.3 lib/intercom/service/conversation.rb
intercom-3.7.2 lib/intercom/service/conversation.rb
intercom-3.7.1 lib/intercom/service/conversation.rb