Используя Plivo, как переадресовать неотвеченный вызов на голосовую почту?

Я хочу перенаправить звонок на голосовую почту, если он не получен. Код является:

get '/inbound' do
CALLER_ID = 'caller_number'
to = 'dest_number'
r = Response.new()
r.addSpeak('Thanks for calling acme, if someone does not answer within 20 seconds you will be directed to voicemail')
r.addDial({'callerId' => CALLER_ID, 'timeout' => '20'}).addNumber(to)
r.addSpeak("The number you're trying is not reachable at the moment. You are being redirected to the voice mail")
r.addDial('action' => 'http://frozen-lake-7349.herokuapp.com/voicemail', 'method' => 'GET')
 content_type 'text/xml'
    r.to_xml()
end

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

Итак, должно ли быть где-то предложение if, которое в основном говорит: если ответ на звонок закончится при зависании, если нет, перейдите на голосовую почту? Как я могу это сделать?

Спасибо!

1 ответ

Решение

Решаемые. Следующее получает вызов и во всех случаях передает на URL-адрес голосовой почты (соблюдая тайм-аут, если на звонок не ответили)

get '/inbound' do
#from = params[:From]
CALLER_ID = 'from caller'
#to = lookup in DB routing
to = 'destination_number'
r = Response.new()
r.addSpeak('Thanks for calling acme, you will be routed to voicemail in 25 seconds if he does not answer!')
r.addDial({'callerId' => CALLER_ID, 'action' => 'http://frozen-lake-7349.herokuapp.com/voicemail', 'method' => 'GET', 'timeout' => '25'}).addNumber(to)
content_type 'text/xml'
    r.to_xml()
end

Затем предложение if помещается в раздел голосовой почты следующим образом:

get '/voicemail' do
r = Response.new()
if params['CallStatus'] != 'completed'
r.addSpeak('Please leave a message and press the hash sign when done.')
r.addRecord({'method' => 'GET', 'maxLength' => '60', 'finishOnKey' => '#', 'playBeep' => 'true'}) 
r.addHangup()
else
r.addHangup()
end
content_type 'text/xml'
    r.to_xml()
end

Я надеюсь, что это поможет кому-то еще, мне потребовалось немало экспериментов, чтобы добраться туда!

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