0

I have a translation_api.rb file, and one of the body inputs is a text input, which I isolate in a function & name 'ticket_description'. However, when I use this variable in my 'make_request' method, the value is nil, and therefore the API returns me an empty translation. How do I ensure that the value is carried over?

How do I best take the 'ticket_description' value and sub it into my API request?

translation_api.rb

    module Ccenter
  module Utils
    class TranslationApi
      attr_accessor :cc_message_id
      include Service

      InvalidResponseError = Class.new(StandardError)

      def initialize(cc_message_id)
        @cc_message_id = cc_message_id
      end

      def call
        grab_de_message_text(cc_message_id)
        make_request
      end

      private

      def make_request
        response = Faraday.post('https://api.deepl.com/v2/translate', auth_key: '', text: @ticket_description, target_lang: 'DE', source_lang: 'EN')
        if response.status == 200
          body = response.body
          message_element = body.split('"')[-2]
          return message_element
        else
          raise InvalidResponseError unless response.success?
        end
      end

      def grab_de_message_text(cc_message_id)
        ticket = Ccenter::Adapters::Zendesk::TicketBase.new(zendesk_id: @cc_message_id).zendesk_ticket
        ticket_data = ticket.pretty_inspect
        refined_data = ticket_data.split(" ")
        ticket_description = refined_data.select { |word| word.include? 'description' }
        @ticket_description = ticket_description
      end
    end
  end
end

EDIT w/ further details of 'ticket'

ticket.class => ZendeskAPI::Ticket

    #<ZendeskAPI::Ticket {"url"=>"https://-staging.zendesk.com/api/v2/tickets/2116450.json", "id"=>2116450, "external_id"=>nil, "via"=>{"channel"=>"email", "source"=>{"from"=>{"address"=>"xxxx@pairfinance.com", "name"=>"xxxx"}, "to"=>
{"name"=>"Pair Finance GmbH", "address"=>"support@pairfinance-staging.zendesk.com"}, "rel"=>nil}},
 "created_at"=>2021-11-05 12:25:36 UTC, "updated_at"=>2021-11-12 11:09:33 UTC, "type"=>"incident", "subject"=>"Add Participant Check", "raw_subject"=>"Add Participant Check", "description"=>"Testing participant addition", "priority"=>nil, "status"=>"open", "recipient"=>"support@pairfinance-staging.zendesk.com", "requester_id"=>387320355880, "submitter_id"=>387320355880,
 "assignee_id"=>2944262769, "organization_id"=>375908938920, "group_id"=>24802909, "collaborator_ids"=>[], "follower_ids"=>[], "email_cc_ids"=>[], "forum_topic_id"=>nil, "problem_id"=>nil, "has_incidents"=>false, "is_public"=>true, "due_at"=>nil, "tags"=>["creditor_test1", "not_matched"], "custom_fields"=>[#<ZendeskAPI::Trackie id=27262705 value="">, #<ZendeskAPI::Trackie id=360022581580 value="">, #<ZendeskAPI::Trackie id=360000824460 value=nil>, #<ZendeskAPI::Trackie id=45203605 value="">, #<ZendeskAPI::Trackie id=360000038229 value="">, #
<ZendeskAPI::Trackie id=360022718000 value="">, #<ZendeskAPI::Trackie id=360022689799 value="27">, #
<ZendeskAPI::Trackie id=360022840199 value="2021-11-12">, #<ZendeskAPI::Trackie id=1900000581074 value="0.0">, #<ZendeskAPI::Trackie id=360022823559 value="">, #
<ZendeskAPI::Trackie id=1900000642554 value=false>, #<ZendeskAPI::Trackie id=360022857519 value=nil>, #<ZendeskAPI::Trackie id=360022738860 value=nil>, #
<ZendeskAPI::Trackie id=1900000693194 value="">, #<ZendeskAPI::Trackie id=1900000768974 value=nil>, #<ZendeskAPI::Trackie id=360022886360 value=nil>, #<ZendeskAPI::Trackie id=1900000752094 value=nil>], "satisfaction_rating"=>nil, "sharing_agreement_ids"=>[], "fields"=>[#<ZendeskAPI::Trackie id=27262705 value="">, #<ZendeskAPI::Trackie id=360022581580 value="">, #<ZendeskAPI::Trackie id=360000824460 value=nil>, #<ZendeskAPI::Trackie id=45203605 value="">, #<ZendeskAPI::Trackie id=360000038229 value="">, #<ZendeskAPI::Trackie id=360022718000 value="">, #<ZendeskAPI::Trackie id=360022689799 value="27">, #<ZendeskAPI::Trackie id=360022840199 value="2021-11-12">, #<ZendeskAPI::Trackie id=1900000581074 value="0.0">, #<ZendeskAPI::Trackie id=360022823559 value="">, #<ZendeskAPI::Trackie id=1900000642554 value=false>, #<ZendeskAPI::Trackie id=360022857519 value=nil>, #<ZendeskAPI::Trackie id=360022738860 value=nil>, #<ZendeskAPI::Trackie id=1900000693194 value="">, #<ZendeskAPI::Trackie id=1900000768974 value=nil>, #<ZendeskAPI::Trackie id=360022886360 value=nil>, #<ZendeskAPI::Trackie id=1900000752094 value=nil>], "followup_ids"=>[], "brand_id"=>721889, "allow_channelback"=>false, "allow_attachments"=>true}>
  • What value has `ticket_data ` where you inspect? If refined_data is an array, ticket_description can only be an array (empty or with some values). – razvans Nov 12 '21 at 12:48
  • @razvans ticket_data is a string, while refined_data is an array. ticket_description is also an array (With a value of ["\"description\"=>\"Testing"] ) –  Nov 12 '21 at 12:58
  • @razvans Interesting! due to the characters contained I assume? how would one grab say, any words after the '=>' ? –  Nov 12 '21 at 13:06
  • 1
    It's a bit difficult to read but what does `ticket.description` look like? Does it work? You should be able to get the description directly from the ticket object. You don't need to pretty_inspect. – razvans Nov 12 '21 at 13:17
  • @razvans This worked, thanks! –  Nov 12 '21 at 16:13

0 Answers0