Twilio - 蒙面数字

时间:2018-01-18 12:49:03

标签: ruby-on-rails twilio twilio-api

我正在开发一个应用程序,我希望在用户之间实现屏蔽数字。这个想法是......假设你想打电话给我。您无需通过仪表板和/或订单显示页面查看我的号码,而是获得“呼叫”按钮。单击此按钮将导致手机响铃。当您接听电话时,twilio将尝试将您连接到我的号码但是,您将看到的号码将是twilio号码而不是我的号码。并且......如果我拨打号码,我将连接到应用程序团队,而不是直接给你回电话。

我一直在尝试在Rails中实现这一点,我检查了关于蒙面数字的教程,但我不确定我是否理解这是如何工作的:我如何向twilio发送我要连接的两个数字。 Twilio :: TwiML :: VoiceResponse.new的目的是什么,以及如何开始通话?

提前致谢

1 个答案:

答案 0 :(得分:0)

Twilio开发者传道者在这里。

要构建用户单击按钮并接收将其连接到您的回调的流程,您需要执行以下操作:

首先,您需要将用户的号码与" Call"按钮。或许您已经从他们的帐户中获得了他们的号码。不管怎样,你现在需要他们的号码。

当他们点击" Call"响应您的操作中的按钮需要use the Twilio REST API to make the call to their number。你的行动可能看起来像这样:

def call
  client = Twilio::REST::Client.new(ENV["ACCOUNT_SID"], ENV["AUTH_TOKEN"])
  client.calls.create(
    from: ENV["TWILIO_NUMBER"],
    to: params[:phone_number],
    url: connect_call_url
  )
  redirect_to order_path
end

这假设了一些事情。您需要Twilio console中的Twilio帐户sid和身份验证令牌。你还需要一个Twilio号码。在此示例中,我将它们存储在环境中,但您可以使用secrets.yml或其他任何内容。

我还将connect_call_url传递给了呼叫创建方法。这应该是一个路由到一个操作的URL,该操作将返回一些TwiML以使用<Dial> TwiML将第一个呼叫连接到您的号码。这就是Twilio::TwiML::VoiceResponse.new的用武之地。此操作可能如下所示:

def connect_call
  response = Twilio::TwiML::VoiceResponse.new
  response.dial caller_id: ENV["TWILIO_NUMBER"] do |dial|
    dial.number ENV["YOUR_NUMBER"]
  end
  render xml: response.to_xml
end

在这种情况下,我还将您的号码存储在环境中。如果这个数字实际上是针对订单存储的,那么您需要自己从数据库中获取该数字。

另请注意,我添加了caller_id attribute,其值为Twilio数字。这可确保每个用户只能看到Twilio编号。

对于最后一部分,您希望振铃Twilio号码将您连接到应用程序团队。为此,您需要另一个将返回不同TwiML的操作。您希望将Twilio号码的语音URL设置为此URL,以便在拨打号码时对他们进行呼叫。

这个TwiML和以前几乎一样,你只需要用应用程序团队的号码替换你的号码。类似的东西:

def inbound_call
  response = Twilio::TwiML::Response.new
  response.dial do |dial|
    dial.number ENV["APP_TEAM_NUMBER"]
  end
  render xml: response.to_xml
end

让我知道这是否有帮助。     端