如何仅显示 Twilio 错误消息的描述部分?

How to show only description part of Twilio error message?

在 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:无法创建 record\nThe 'To' 号码 +XXXXXXX 不是有效的 phone 号码。\nhttps://www.twilio。 com/docs/errors/21211\n\n

我要找的是这个:

无法创建 record\nThe 'To' 号码 +XXXXXXX 不是有效的 phone 号码。

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)

此处为 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

如果这有帮助,请告诉我。