我正在向我的用户发送确认令牌以验证他们的电话号码作为消息,我想添加呼叫选项,以防短信发送有任何问题。例如,我需要拨打电话并说“您的确认令牌是123456”并挂断,这是代码:
def connect
render text: 'message parameter not found!' if params[:message].blank?
response = Twilio::TwiML::Response.new do |r|
r.Say "hello world", :voice => 'alice'
r.
end
# Render response as xml
#response.headers["Content-Type"] = "text/xml"
render text: response.text, :status => :ok
end
def call
account_sid = ENV["TWILIO_ACCOUNT_SID"]
auth_token = ENV["TWILIO_AUTH_TOKEN"]
mobile = params[:mobile]
message = params[:message]
@client = Twilio::REST::Client.new account_sid, auth_token
@call = @client.account.calls.create(
:from => ENV["TWILIO_MOBILE"],
:to => mobile,
:url => "https://server_address/connect"
)
render json: {result:'call executed.'}, :status => :ok
end
目标电话号码响了,但它只是说“发现应用程序错误”并挂断。任何想法?
答案 0 :(得分:2)
Twilio开发者传道者在这里。
我认为这里存在一些问题,但没有什么是无法克服的!
首先,您的connect
操作中出现双重渲染错误。如果消息参数未显示,您的操作将尝试render text: 'message parameter not found!'
,但它不会停在那里,也会尝试渲染twiml。
这不会出现问题是消息参数存在。事情是,在您的call
操作中,您提供了连接呼叫的URL,但您没有包含message参数。如果您将创建呼叫的行更改为:
@call = @client.account.calls.create(
:from => ENV["TWILIO_MOBILE"],
:to => mobile,
:url => "https://server_address/connect?message=#{message}"
)
然后,当电话号码被应答时调用connect
操作时,将设置您的消息参数。
最后,请注意,您的TwiML响应中有一个挂起方法调用。您的示例中有一个没有动词的尾随r.
。这会导致问题。
尝试这些建议,如果有效,请告诉我。