J C*_*ton 1 ruby ruby-on-rails twilio
如何处理 Twilio API 中有关创建 SMS 消息的错误?
每次输入无效的电话号码时,我都会收到一条消息和 500 错误:
无法创建记录:“收件人”号码不是有效的电话号码。
我怎样才能让它重定向回主页并简单地闪现错误通知?
class Messager
def initialize
@account_sid = ENV['ACCOUNT_SID']
@auth_token = ENV['AUTH_TOKEN']
@twilio_number = ENV['TWILIO_NUMBER']
@client = Twilio::REST::Client.new @account_sid, @auth_token
end
def send_message(phone_number, movies, username)
text_message = @client.api.account.messages.create(
from: @twilio_number,
to: phone_number,
body: "Hello movie lover, #{username}!\nHere is your current watch list:\n#{movies}"
)
puts text_message.to
end
end
Run Code Online (Sandbox Code Playgroud)
我不需要任何花哨的东西,只需重定向到主页和一条快速错误消息,说明他们的电话号码无效,而不是 500 错误页面。我是 Twilio API 的新手,我已经解决了这个问题好几个小时了。
Twilio 开发人员布道者在这里。
当您使用 Ruby gem 向 Twilio API 发出请求并且出现问题时,库将抛出类型为 的错误Twilio::REST::RestError。
为了避免您的用户出现 500 错误,您应该从这个错误中拯救出来,并对您的控制器做一些其他的事情。我不确定你的控制器是什么样子,所以我会猜测你应该做什么。
首先,Messager如果您收到错误消息,我会更新该类以存储错误消息。此外,该send_message函数应返回一个布尔值来描述消息是否已成功发送。
class Messager
attr_reader :error
def initialize
@account_sid = ENV['ACCOUNT_SID']
@auth_token = ENV['AUTH_TOKEN']
@twilio_number = ENV['TWILIO_NUMBER']
@client = Twilio::REST::Client.new @account_sid, @auth_token
end
def send_message(phone_number, movies, username)
begin
text_message = @client.api.account.messages.create(
from: @twilio_number,
to: phone_number,
body: "Hello movie lover, #{username}!\nHere is your current watch list:\n#{movies}"
)
return true
rescue Twilio::REST::RestError => error
@error = error
return false
end
end
end
Run Code Online (Sandbox Code Playgroud)
然后,在您的控制器中send_message,如果消息成功或失败,您可以调用并执行不同的操作。
class MessagingController < ApplicationController
def create
messager = Messager.new
if messager.send_message(params[:phone_number], current_user.movies, current_user.username)
# Success! Message sent!
# Now do what you were going to do with the successfull result
else
# Boo, something happened.
Rails.logger.warn("#{messager.error.code}: #{messager.error.message}")
# Redirect or render an action with an error here.
end
end
end
Run Code Online (Sandbox Code Playgroud)
让我知道这是否有帮助。
| 归档时间: |
|
| 查看次数: |
1502 次 |
| 最近记录: |