Rails 3和Twilio进行电话验证

| 我正在Rails 3中构建一个应用程序,使用twilio来验证业务是否存在。基本上,当您创建新的商务电话时,我会随机生成一个6位数的电话号码,然后使用此验证码拨打公司电话号码,用户需要将其重新输入系统以完成注册过程。我很难找到有关如何进行此设置的任何相关示例。我已经找到了它,但是它似乎已经过时了,而且似乎不适用于Rails 3。 twilio-rb gem的文档也令人困惑。 有谁知道任何示例或任何代码示例可以为我指明正确的方向?
已邀请:
正如我在对您的问题的评论中所说的那样,我是您提到的twilio-rb gem的作者。在我的脑海中,我将实施一个验证资源,您将电话号码发布到该资源。
POST /verifications.voice { telephone_number: \'+12125551234\' }
在创建动作中,使用
Twilio::Call.create
与Twilio创建新呼叫
def create
  @verification = Verification.new params[:verification]

  if @verification.save
    Twilio::Call.create to: @verification.telephone_number, 
      from: YOUR_CALLER_ID, url: verification_url(@verification, format: :voice)
    # 201 created and return verification code etc
  else
    # Handle errors
  end
end 
您还将希望挽救twilio-rb可能引发的所有API错误。 url表示验证资源实例的show动作。然后Twilio将拨出提供的电话号码,并且当呼叫接通时将请求URL,例如
GET /verifications/1.voice
,因此您将需要一个显示视图,要求输入验证码并使用with4ѭ动词收集数字:
res.gather num_digits: 4, action: twilio_hack_verification_url(@verification, :format => :voice), method: \'POST\' do |form|
  form.say \'Please enter the your 4 digit verification code\'
end
由于Twilio当前未实现PUT动词,因此您需要向资源中添加成员
resources :verifications do
  member { post \'twilio_hack\' }
end
然后在控制器中使用用户输入更新对象:
def twilio_hack
  @verification = Verification.find(params[:id]).tap do |v|
    v.user_input params[\'Digits\']
    v.save
  end

  if @verification.confirmed?
    # handle success
  else
    # handle failure
  end

end
最后,在模型中,您将需要用于生成验证码并验证是否已确认的代码
class Verification < ActiveRecord::Base
  before_save   -> { self[:confirmed] = true if user_input == verification_code }, if: user_input
  before_create -> { self[:verification_code] = rand.to_s[2..5] }
end
这一切都未经测试,并且经过大约2分钟的思考才浮出水面,但这应该会让您入门。
当您希望验证业务时: 生成验证码。 使用Twilio REST API发起出站调用,将回调的URL传递给将处理验证逻辑的控制器。 Twilio的文档在这里,例子在这里。 这意味着您需要通过回调URL将验证码传递到控制器中。使用具有绑定参数的非资源路由。看这里。 编写一个处理呼叫并处理验证的控制器: 发出挑战用户输入验证码的TwiML。我发现使用Nokogiri自己构建TwiML是最简单的方法。 (请参阅我在此编写的这个简单应用程序中的phone_greeting方法:) 如果正确,则将业务标记为已验证,向用户表示祝贺,然后挂断电话。 如果没有,请循环。 希望这些信息足以为您指明正确的方向。
您是否考虑过使用Twilio的去电显示来帮助解决此问题? 通过REST调用Twilio将新的呼叫者ID添加到您的帐户时,Twilio将返回一个6位数字的验证码(属性ValidationCode)供您在UI中显示,然后Twilio将自动呼叫该号码并提示输入代码。当用户通过电话验证号码时,他们的号码将添加到您帐户的呼叫方ID中。然后,您可以通过REST(参数PhoneNumber)查询Twilio的电话号码,以确保验证成功。 请参阅此处以获得文档: 添加呼叫者ID:http://www.twilio.com/docs/api/rest/outgoing-caller-ids#list-post 查找来电显示:http://www.twilio.com/docs/api/rest/outgoing-caller-ids#list

要回复问题请先登录注册