SIP REFER de entrada (inbound) para a Twilio
Para usar o recurso SIP REFER inbound, você deve ativar os "Enhanced Programmable SIP Features" (Recursos SIP do Programmable Enhanced) nas Voice settings in the Console (configurações do Voice no Console).
Se estiver procurando SIP Refer Outbound, use o verbo <Refer> do TwiML
A transferência de chamadas permite mover uma chamada ativa de um endpoint para outro. As chamadas SIP do Programmable Voice da Twilio agora oferecem suporte para transferências de chamadas "blind" (cegas) usando o SIP REFER
. Isso significa que agora você pode solicitar que uma chamada SIP ativa seja transferida enviando à Twilio uma mensagem SIP REFER
da sua infraestrutura de comunicações SIP. A Twilio pode então funcionar como ponto de articulação e lidar com o redirecionamento de chamadas, permitindo‐lhe libertar recursos na sua infraestrutura de comunicações de IP que já não são necessários.
As transferências de chamada podem ser chamadas SIP tanto de entrada (inbound) quanto de saída (outbound). Por exemplo, em uma chamada SIP inbound do telefone SIP para um domínio SIP da Twilio, você pode transferir o autor da chamada para um agente diferente pressionando o botão "Transfer" (Transferir) no telefone. Seu telefone SIP enviará um REFER
contendo as informações de contato do novo agente, instruindo a Twilio a iniciar uma transferência. A Twilio aceitará o REFER
e poderá iniciar a transferência para conectar o autor da chamada inicial ao novo agente. De forma semelhante, você pode iniciar uma transferência usando um REFER em direção à Twilio em uma chamada SIP outbound da Twilio para seu endpoint SIP.
Um SIP REFER
do seu endpoint SIP acionará um webhook para seu aplicativo contendo dados de chamada, incluindo o conteúdo do cabeçalho Refer-To
no parâmetro ReferTransferTarget
. Na chamada inicial, você define o atributo referUrl
no verbo <Dial>
para definir o URL do aplicativo que receberá essas solicitações do webhook. Contanto que um trecho da chamada seja uma conexão SIP, a Twilio honrará a mensagem do SIP REFER
que o dispositivo SIP está enviando. Você também pode enviar informações contextuais em seu SIP REFER
como um cabeçalho UUI ou cabeçalho personalizado incluindo‐as como parte do cabeçalho Refer-To
; o conteúdo será passado no webhook como parte do parâmetro ReferTransferTarget
.
O REFER funciona para chamadas SIP criadas usando o verbo <Dial>
usando um dos seguintes substantivos:
<Sip>
<Number>
<Client>
O REFER não oferece suporte para os substantivos <Conference>
, <Sim>
e <Queue>
.
O comprimento máximo compatível do cabeçalho Refer-To no SIP REFER que você envia para a Twilio é de 256 caracteres.
Como enviar o Refer (Encaminhar) para a Twilio
Certifique‐se de que referUrl
esteja presente no atributo do verbo <Dial>
da chamada inicial.
Atributos | Valores permitidos | Valores padrão |
referUrl | Qualquer Url | Nenhum |
referMethod | GET, POST | POST |
Os detalhes do REFER
, incluindo as informações de contato ReferTransferTarget
são passados no webhook resultante para o referUrl
. Seu aplicativo pode então manipular o webhook da maneira que quiser, você pode usar qualquer um dos recursos do Programmable Voice como <Dial>
, <Say>
, <Play>
, <Gather>
, <Enqueue>
, <Sim>
, etc.
Aqui está um exemplo de fluxo de chamada.
- O UserA chamou um banco e se conectou ao telefone SIP do AgentA do Banco.
- É nessa etapa que o verbo <Dial> precisará conter o atributo
referUrl
.
- É nessa etapa que o verbo <Dial> precisará conter o atributo
- Eles concluíram a conversa inicial e agora o UserA deseja se conectar ao AgentB em outro departamento, de modo que o AgentA envia o SIP
REFER
para a Twilio contendo as informações de contato do AgentB no cabeçalhoRefer-To
. - A Twilio lida com o
REFER
e envia as informações em um webhook para o aplicativo do cliente, que estabelece uma chamada para o telefone SIP do AgentB usando um verbo <Dial> do TwiML. A Twilio então conecta a chamada do UserA com a chamada SIP conectada ao AgentB.
Um exemplo simples do TwiML que seu aplicativo referUrl
pode retornar é o seguinte:
<Response>
<Dial>
<Sip>sip:AGENTB@YOURDOMAIN.sip.us1.twilio.com</Sip>
</Dial>
</Response>
Em que o endereço SIP do Agente B foi recuperado do parâmetro ReferTransferTarget
no SIP REFER
.
Observação: não é necessário um referUrl
nesse trecho da chamada.
O exemplo acima não define o atributo answerOnBridge
no verbo <Dial>
; ou seja, esse atributo usa o valor padrão de false
. Portanto, logo após o webhook ser buscado, a Twilio enviará imediatamente o SIP NOTIFY
e desconectará o trecho da chamada "Transferor" (transferidor) (AgentA no fluxo de chamada acima). Se o Transfer-Target
(AgentB no fluxo de chamada acima) não atender a chamada ou se a busca de chamada ou aplicativo falhar, a chamada do UserA será desconectada, a menos que seu aplicativo seja gravado para ser capaz de lidar com o caso de falha.
O exemplo acima define o atributo answerOnBridge
como true
no verbo <Dial>
. Portanto, a Twilio não desconectará o trecho da chamada "Transferor" (transferidor) (AgentA no fluxo de chamada acima) até que o Transfer-Target
(AgentB no fluxo de chamada acima) atenda a chamada. Se o Transfer-Target
(AgentB no fluxo de chamada acima) não atender a chamada ou se a busca de chamada ou aplicativo falhar, a chamada do UserA permanecerá conectada com o AgentA.
Casos de uso
Neste exemplo, seguiremos o fluxo de chamada explicado acima.
- Chamada inicial – o UserA chama o AgentA. Eles estão conectados e ativamente na conversa.
- Refer (Encaminhar) – o UserA deseja se conectar a outro departamento no banco. O AgentA pressiona o botão de transferência e passa as informações do contato.
- Final call (Chamada final) – o UserA agora está conectado ao AgentB. A chamada inicial foi interrompida.
Cenários |
Status da chamada inicial
|
Status da chamada inicial
|
O webhook |
A chamada inicial ainda está conectada |
A chamada inicial está desconectada |
O AgentB atende a chamada |
A chamada inicial agora será desconectada |
A chamada inicial foi desconectada logo após a execução do webhook |
O AgentB não atende a chamada |
A chamada inicial pode ser restabelecida. Portanto, o UserA será conectado ao AgentA novamente |
A chamada inicial foi desconectada logo após a execução do webhook |
|
A chamada inicial pode ser restabelecida. Portanto, o UserA será conectado ao AgentA novamente |
A chamada inicial foi desconectada logo após a execução do webhook |
O atributo |
A Twilio gerará um alerta e a chamada inicial será restabelecida. Portanto, o UserA será conectado ao AgentA novamente |
A Twilio gerará um alerta e a chamada inicial será restabelecida. Portanto, o UserA será conectado ao AgentA novamente |
Precisa de ajuda?
Às vezes, todos nós precisamos; a programação é difícil. Receba ajuda agora da nossa equipe de suporte, ou confie na sabedoria da multidão navegando pelo Stack Overflow Collective da Twilio ou buscando a tag Twilio no Stack Overflow.