Desviar a chamada twilio para o correio de voz, se não for atendida

Eu adoraria alguns conselhos na minha configuração twilio para um problema que estou tentando resolver.

Visão global:

Cada usuário em nosso sistema recebe um número de telefone twilio que pode ser entregue a qualquer pessoa para contatá-lo.

Se a pessoaA entrar em contato com um usuário em nosso sistema (usuárioB) por meio do número de telefone do twilio provisionado, gostaríamos de conectá-lo ao usuárioB, se estiverem disponíveis. Se o usuárioB não estiver disponível, gostaríamos de direcionar a pessoaA para o correio de voz. Em outras palavras, queremos garantir que tenhamos controle da experiência do correio de voz e do próprio correio de voz para que possamos armazená-lo em nosso sistema, em vez de deixar o correio de voz no dispositivo do usuário B.

Solução atual:

A chamada de entrada do PersonA é adicionada a uma fila. Ao mesmo tempo, o sistema disca o usuárioB.Solicita-se ao usuário B que pressione 1 para aceitar a chamada. O motivo da entrada explícita do UsuárioB é detectar se o UsuárioB está disponível para atender a chamada. (Por exemplo, se a chamada para o Usuário B for para o correio de voz pessoal, a entrada explícita de dígitos não acontecerá, informando que eles não estão disponíveis para atender.)Se o UsuárioB não digitar 1 em um período especificado, o PersonA será direcionado para o correio de voz.Se o UsuárioB pressionar 1, a chamada para o UsuárioB é modificada (via twilio rest api) para discar a fila em que o PersonA está para conectar o UsuárioB e o PersonA.

Problema com a solução atual:

Nesta solução, o controle de quando desviar a chamada de pessoaA para o correio de voz é controlado pelo resultado da chamada para o UsuárioB, que parece subótimo. Por exemplo, talvez não possamos ligar para o UsuárioB. Nesse caso, personA ficaria na fila indefinidamente.

O que eu gostaria que acontecesse nesse caso é pesquisar a fila personA para verificar o tempo na fila e desviar a chamada para o correio de voz se o tempo na fila for maior que um limite. No entanto, não parece possível saber com precisão por quanto tempo uma chamada está desacompanhada em uma fila porque:

O status de uma chamada em uma fila éin-progress mesmo se o chamador estiver ouvindo, aguarde música. Este é o mesmo status como se a chamada do PersonA tivesse sido atendida.

Se o UsuárioB discar para a fila, a chamada será retirada da fila somente quando as partes em ponte forem desconectadas, sem alteração no status da chamada da PessoaA para indicar que elas foram conectadas ao UsuárioB.

Questões

O meu entendimento de por que não consigo pesquisar na fila de chamadas para desviar chamadas para o correio de voz está correto?Em vez disso, devo chamar a PersonA para uma conferência e, se o UsuárioB estiver disponível, conectá-lo à conferência na qual a PersonA está?Se eu usar uma configuração de conferência, qual seria a maneira mais fácil de detectar por quanto tempo o PersonA está aguardando na conferência, a fim de desviar a chamada do PersonA para o correio de voz no caso de o Usuário B nunca ingressar na conferência?

questionAnswers(1)

yourAnswerToTheQuestion