Twilio Ruby Gem Call.Create Param - добавление сообщения r.Say

Я пытаюсь добавить опцию добавления устного сообщения до того, как предварительно записанное сообщение будет воспроизведено в моих исходящих вызовах. Самый близкий вопрос этого типа, который я мог найти, был это, принимает ли Twilio Ruby Gem другие параметры

В настоящее время у меня есть форма, в которой вы вводите номер, по которому хотите позвонить, и поле для сообщения, которое хотите

<form action="calls" method="post">
    <input type="text" name="number" placeholder="number e.g. 2124095555" />
    <input type="text" name="message" placeholder="add a message" />
    <input type="submit" value="Roll em!">
</form>

В контроллере моего звонка у меня есть:

 def create

    data = {
      :from => CALLER_ID,
      :to => params['number'],
      :say => params['message'],
      :url => 'http://howenstine.co/rick_roll.mp3',
      :if_machine => 'Continue'
    }

    begin
      client = Twilio::REST::Client.new(ACCOUNT_SID, ACCOUNT_TOKEN)
      client.account.calls.create(data)
    rescue StandardError => bang
      redirect_to :action => '.', 'msg' => "Error #{bang}"
      return
    end
    redirect_to root_path
  end

Очевидно, что: скажем, парам не работает. У меня что-то подобное для входящих звонков, но я не верю, что это будет работать для исходящих звонков

 def voice
    response = Twilio::TwiML::Response.new do |r|
      r.Say 'fooo bar', :voice => 'alice'
         r.Play 'http://linode.rabasa.com/cantina.mp3'
    end

    render_twiml response
  end

Любая помощь или руководство будет принята с благодарностью.

1 ответ

Twilio разработчик евангелист здесь.

При создании звонков через REST API необходимо отправить from, to и либо url или же applications_sid параметры и есть куча необязательных параметров, таких как if_machine, что вы можете отправить тоже. Полный список доступен в документации REST API.

Однако, как вы обнаружили, вы не можете отправить say параметр. Чтобы получить результат, который вы ищете, вам понадобится URL-адрес вашей голосовой конечной точки, чтобы прочитать сообщение, а затем воспроизвести файл.

Поскольку у вас уже есть голосовая конечная точка, вам также нужно будет решить во время разговора, что делать.

Итак, если вы измените свой create действие для чего-то вроде следующего, которое передает сообщение на ваш голосовой URL:

def create
  data = {
    :from => CALLER_ID,
    :to => params['number'],
    :url => voice_url(:message => params['message']),
    :if_machine => 'Continue'
  }

  begin
    client = Twilio::REST::Client.new(ACCOUNT_SID, ACCOUNT_TOKEN)
    client.account.calls.create(data)
  rescue StandardError => bang
    redirect_to :action => '.', 'msg' => "Error #{bang}"
    return
  end
  redirect_to root_path
end

Затем в своей голосовой конечной точке проверьте сообщение и верните его, а затем файл, который вы хотите воспроизвести, в противном случае верните то, что у вас уже было.

def voice
  if params['message'].present?
    # if we have a message, say it followed by the rick roll
    response = Twilio::TwiML::Response.new do |r|
      r.Say params['message'], :voice => 'alice'
      r.Play 'http://howenstine.co/rick_roll.mp3'
    end
  else
    # otherwise return the original response
    response = Twilio::TwiML::Response.new do |r|
      r.Say 'fooo bar', :voice => 'alice'
      r.Play 'http://linode.rabasa.com/cantina.mp3'
    end
  end

  render_twiml response
end

Дайте мне знать, если это поможет.

Другие вопросы по тегам