Twilio只是拨打电话说出确认令牌并挂断电话

时间:2015-01-08 18:40:44

标签: ruby twilio

我正在向我的用户发送确认令牌以验证他们的电话号码作为消息,我想添加呼叫选项,以防短信发送有任何问题。例如,我需要拨打电话并说“您的确认令牌是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

目标电话号码响了,但它只是说“发现应用程序错误”并挂断。任何想法?

1 个答案:

答案 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.。这会导致问题。

尝试这些建议,如果有效,请告诉我。