Transferência de chamada

A transferência de chamada transfere uma linha ativa para um novo contexto de conversa. Nos callbacks do cliente, callId permanece estável enquanto conversationId mudanças.

Entre os casos de uso mais comuns estão o roteamento em centrais de atendimento e o encaminhamento de chamadas do IVR para os atendentes.

Evento de transferência de cliente — onCallTransfer

client.on('callTransfer', (callId, newConversationId) => {
  console.log(
    `Call ${callId} was transferred to a new conversation ${newConversationId}`
  );
});
 client.setCallTransferListener { call, conversationId ->
     println("Received Call Transfer for call: $call  into the conversation: $conversationId")
 }
 client.setCallTransferListener((call, conversationId) -> {
     System.out.println("Call " + call + " was transferred to conversation " + conversationId);
     return null;
 });
 class CallTransferExampleDelegate: NSObject, VGVoiceClientDelegate {
     func voiceClient(_ client: VGVoiceClient, didReceiveCallTransferForCall callId: VGCallId, withConversationId conversationId: VGConversationId) {
         print("call: \(callId) has been transferred to conversation: \(conversationId)")
     }
     
     func voiceClient(_ client: VGVoiceClient, didReceiveHangupForCall callId: VGCallId, withQuality callQuality: VGRTCQuality, reason: VGHangupReason) {}
     func voiceClient(_ client: VGVoiceClient, didReceiveInviteForCall callId: VGCallId, from caller: String, with type: VGVoiceChannelType) {}
     func voiceClient(_ client: VGVoiceClient, didReceiveInviteCancelForCall callId: VGCallId, with reason: VGVoiceInviteCancelReason) {}
     func client(_ client: VGBaseClient, didReceiveSessionErrorWith reason: VGSessionErrorReason) {}
 }
 - (void)voiceClient:(VGVoiceClient *)client didReceiveCallTransferForCall:(VGCallId)callId withConversationId:(NSString *)conversationId {
     NSLog(@"Call %@ has been transferred to conversation %@", callId, conversationId);
 }

Expectativas do Estado

  • callId: inalterado
  • conversationId: atualizado para a conversa de destino
  • sessão de mídia: continua ao longo do fluxo de transferência

Transferência NCCO

O exemplo abaixo ilustra a estrutura necessária do NCCO. Sua implementação concreta irá variar de acordo com a linguagem e o framework de backend utilizados.

const transferNcco = [
  {
    action: 'transfer',
    conversation_id: 'CON-destination-conversation-id'
  }
];

res.json(transferNcco);

Referência: Ação de transferência da NCCO