Voice Relay Stream ControlCopyCommands that can be executed on an ongoing stream.Connection Flow DiagramCustomer WebSocket ServerSinch PlatformCustomer WebSocket ServerSinch PlatformWebSocket ConnectionStream endedalt[WS accepted][WS rejected]Session StartFirst protocol message.Server decides to accept or decline.Stream endedalt[Accepted][Declined]Live Relay LoopSTT (Platform to Server)TTS (Server to Platform)Multiple chunks allowed.A batch ends when isLast=true.Playback Status (Platform to Server)DTMF (Bidirectional)Interrupt Handlingalt[Manual stop requested]Playback continues normally.alt[Speech detected during TTS][No speech interruption]loop[While call is active]Call EndStream endedStream endedalt[Customer closes connection][Sinch ends call]WS connect requestAccept connectionNon-success responseConnectRequest{command: connect}AnswerResponse{command: answer}Close WebSocket (no answer)TextMessage{command: text}TextResponseMessage{command: text}PlaybackEvent{command: textPlaybackStart|textPlaybackStop|textPlaybackCancel}DtmfReceive{command: dtmf}DtmfSend{command: dtmf}InterruptDetect{command: interrupt}Interrupt{command: interrupt}WebSocket closeWebSocket closeCustomer WebSocket ServerSinch PlatformCustomer WebSocket ServerSinch PlatformWebSocket ConnectionStream endedalt[WS accepted][WS rejected]Session StartFirst protocol message.Server decides to accept or decline.Stream endedalt[Accepted][Declined]Live Relay LoopSTT (Platform to Server)TTS (Server to Platform)Multiple chunks allowed.A batch ends when isLast=true.Playback Status (Platform to Server)DTMF (Bidirectional)Interrupt Handlingalt[Manual stop requested]Playback continues normally.alt[Speech detected during TTS][No speech interruption]loop[While call is active]Call EndStream endedStream endedalt[Customer closes connection][Sinch ends call]WS connect requestAccept connectionNon-success responseConnectRequest{command: connect}AnswerResponse{command: answer}Close WebSocket (no answer)TextMessage{command: text}TextResponseMessage{command: text}PlaybackEvent{command: textPlaybackStart|textPlaybackStop|textPlaybackCancel}DtmfReceive{command: dtmf}DtmfSend{command: dtmf}InterruptDetect{command: interrupt}Interrupt{command: interrupt}WebSocket closeWebSocket close