我正在开发一个应用程序,我希望在用户之间实现屏蔽数字。这个想法是......假设你想打电话给我。您无需通过仪表板和/或订单显示页面查看我的号码,而是获得“呼叫”按钮。单击此按钮将导致手机响铃。当您接听电话时,twilio将尝试将您连接到我的号码但是,您将看到的号码将是twilio号码而不是我的号码。并且......如果我拨打号码,我将连接到应用程序团队,而不是直接给你回电话。
我一直在尝试在Rails中实现这一点,我检查了关于蒙面数字的教程,但我不确定我是否理解这是如何工作的:我如何向twilio发送我要连接的两个数字。 Twilio :: TwiML :: VoiceResponse.new的目的是什么,以及如何开始通话?
提前致谢
答案 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
让我知道这是否有帮助。 端