Я пытаюсь настроить API Zendesk в своем приложении. Я решил использовать API, созданный Zendesk< /а>
Я настроил объект инициализатора для загрузки клиента.
config/initializers/zendesk.rb
require 'zendesk_api'
client = ZendeskAPI::Client.new do |config|
# Mandatory:
config.url = Rails.application.secrets[:zendesk][:url]
# Basic / Token Authentication
config.username = Rails.application.secrets[:zendesk][:username]
config.token = Rails.application.secrets[:zendesk][:token]
# Optional:
# Retry uses middleware to notify the user
# when hitting the rate limit, sleep automatically,
# then retry the request.
config.retry = true
# Logger prints to STDERR by default, to e.g. print to stdout:
require 'logger'
config.logger = Logger.new(STDOUT)
# Changes Faraday adapter
# config.adapter = :patron
# Merged with the default client options hash
# config.client_options = { :ssl => false }
# When getting the error 'hostname does not match the server certificate'
# use the API at https://yoursubdomain.zendesk.com/api/v2
end
Это в значительной степени копипаст с сайта, но я решил использовать комбинацию token
+ username
.
Затем я создал служебный объект, которому я передаю объект JSON и создаю билеты. Этот сервисный объект вызывается из контроллера.
app/services/zendesk_notifier.rb
class ZendeskNotifier
attr_reader :data
def initialize(data)
@data = data
end
def create_ticket
options = {:comment => { :value => data[:reasons] }, :priority => "urgent" }
if for_operations?
options[:subject] = "Ops to get additional info for CC"
options[:requester] = { :email => '[email protected]' }
elsif school_in_usa_or_canada?
options[:subject] = "SRM to communicate with student"
options[:requester] = { :email => '[email protected]' }
else
options[:subject] = "SRM to communicate with student"
options[:requester] = { :email => '[email protected]' }
end
ZendeskAPI::Ticket.create!(client, options)
end
private
def for_operations?
data[:delegate] == 1
end
def school_in_usa_or_canada?
data[:campus_country] == "US" || "CA"
end
end
Но теперь я получаю
NameError - undefined local variable or method `client' for #<ZendeskNotifier:0x007fdc7e5882b8>:
app/services/zendesk_notifier.rb:20:in `create_ticket'
app/controllers/review_queue_applications_controller.rb:46:in `post_review'
Я думал, что клиент был тем же, что и в моем инициализаторе конфигурации. Почему-то мне кажется, что это уже другой объект. Я попытался просмотреть их документацию для получения дополнительной информации, но я не понимаю, что это такое?