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
Дайте мне знать, если это поможет.