massenversand.rb 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. # Copyright (C) 2012-2024 Zammad Foundation, https://zammad-foundation.org/
  2. class Channel::Driver::Sms::Massenversand
  3. NAME = 'sms/massenversand'.freeze
  4. def deliver(options, attr, _notification = false)
  5. Rails.logger.info "Sending SMS to recipient #{attr[:recipient]}"
  6. return true if Setting.get('import_mode')
  7. Rails.logger.info "Backend sending Massenversand SMS to #{attr[:recipient]}"
  8. begin
  9. send_create(options, attr)
  10. true
  11. rescue => e
  12. message = "Error while performing request to gateway URL '#{url}'"
  13. Rails.logger.error message
  14. Rails.logger.error e
  15. raise message
  16. end
  17. end
  18. def send_create(options, attr)
  19. url = build_url(options, attr)
  20. return if Setting.get('developer_mode')
  21. response = Faraday.get(url).body
  22. return if response.match?('OK')
  23. message = "Received non-OK response from gateway URL '#{url}'"
  24. Rails.logger.error "#{message}: #{response.inspect}"
  25. raise message
  26. end
  27. def self.definition
  28. {
  29. name: 'Massenversand',
  30. adapter: 'sms/massenversand',
  31. notification: [
  32. { name: 'options::gateway', display: __('Gateway'), tag: 'input', type: 'text', limit: 200, null: false, placeholder: 'https://gate1.goyyamobile.com/sms/sendsms.asp', default: 'https://gate1.goyyamobile.com/sms/sendsms.asp' },
  33. { name: 'options::token', display: __('Token'), tag: 'input', type: 'text', limit: 200, null: false, placeholder: 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' },
  34. { name: 'options::sender', display: __('Sender'), tag: 'input', type: 'text', limit: 200, null: false, placeholder: '00491710000000' },
  35. ]
  36. }
  37. end
  38. private
  39. def build_url(options, attr)
  40. params = {
  41. authToken: options[:token],
  42. getID: 1,
  43. msg: attr[:message],
  44. msgtype: 'c',
  45. receiver: attr[:recipient],
  46. sender: options[:sender]
  47. }
  48. "#{options[:gateway]}?#{URI.encode_www_form(params)}"
  49. end
  50. end