Transferencia de llamadas

La transferencia de llamada traslada una línea activa a un nuevo contexto de conversación. En las llamadas de retorno del cliente, callId se mantiene estable mientras que conversationId cambios.

Entre los casos de uso más habituales se incluyen el enrutamiento en centros de atención al cliente y el traspaso de llamadas del sistema de respuesta interactiva (IVR) a los agentes.

Evento de transferencia 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 del Estado

  • callId: sin cambios
  • conversationId: actualizado a la conversación de destino
  • sesión con los medios: continúa a lo largo del proceso de traspaso

Transferencia NCCO

El ejemplo que aparece a continuación ilustra la estructura NCCO requerida. Tu implementación concreta variará en función del lenguaje y el marco de trabajo que utilices en el backend.

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

res.json(transferNcco);

Referencia: Procedimiento de transferencia de la NCCO