Как показать только часть описания сообщения об ошибке Twilio? - PullRequest
1 голос
/ 01 июля 2019

В ответе на ошибку Twilio у нас есть код ошибки и адрес веб-сайта в виде строки. Мне нужно показать единственную часть описания ошибки пользователю, а не всю ошибку. как это сделать в моем приложении rails?

begin
  client = Twilio::REST::Client.new(
      Rails.application.credentials.twilio[:sid],
      Rails.application.credentials.twilio[:token]
  )
  client.messages.create(
      from: Rails.application.credentials.twilio[:number],
      to: "+#{account.country_code}#{account.phone_number}",
      body: "#{before} #{verification_code} #{after}"
  )
rescue Twilio::REST::TwilioError => e
  puts  e
  puts e.message
  return errors.add(:message, e.message) if e.message

end

этот код выдаёт мне ошибку в следующем формате:

Сообщение [HTTP 400] 21211: Невозможно создать запись \ nНомер «Кому» + XXXXXXX не является допустимым номером телефона. \ N https://www.twilio.com/docs/errors/21211\n\n

что я ищу это:

Невозможно создать запись \ nНомер «Кому» + XXXXXXX не является допустимым номером телефона.

Ответы [ 2 ]

3 голосов
/ 02 июля 2019

Разработчик Twilio здесь.

Сообщения об ошибках от API, представленные в библиотеке, предназначены для разработчиков, а не конечных пользователей. Я бы не стал полагаться, что они станут хорошим опытом для ваших пользователей.

Вместо этого я бы порекомендовал вам проверить ошибки, которые вы можете получить, например пример 21211, с которым вы здесь работаете, и написать для них свои собственные сообщения об ошибках. Затем вы должны проверить на code ошибки, чтобы получить правильную ошибку. Это будет работать лучше, если вы когда-нибудь придете и локализовать свое приложение.

Пример:

TWILIO_ERROR_MESSAGES = {
  "21211" => "The number you are sending the message to does not appear to be valid."
}

begin
  client = Twilio::REST::Client.new(
      Rails.application.credentials.twilio[:sid],
      Rails.application.credentials.twilio[:token]
  )
  client.messages.create(
      from: Rails.application.credentials.twilio[:number],
      to: "+#{account.country_code}#{account.phone_number}",
      body: "#{before} #{verification_code} #{after}"
  )
rescue Twilio::REST::TwilioError => e
  message = TWILIO_ERROR_MESSAGES[e.code]
  return errors.add(:message, message)
end

Дайте мне знать, поможет ли это вообще.

0 голосов
/ 01 июля 2019

см. https://github.com/twilio/twilio-ruby/blob/08f1ba2f042eeefb29f19f7dd13add40c4117ac9/lib/twilio-ruby/framework/error.rb#L39

Все, что вам нужно сделать, это написать свой метод ошибки владельца, например

error_message = "#{e.error_message}\n#{e.detail}\n#{e.more_info}" 
errors.add(:message, error_message)
...