Forward transcription data packets to the room (#2687)

This commit is contained in:
David Zhao
2024-04-26 00:00:30 -07:00
committed by GitHub
parent 79f6506553
commit 37346774bb
+32 -29
View File
@@ -1516,44 +1516,47 @@ func (p *ParticipantImpl) onDataMessage(kind livekit.DataPacket_Kind, data []byt
dp.ParticipantIdentity = string(p.params.Identity)
}
shouldForward := false
// only forward on user payloads
switch payload := dp.Value.(type) {
case *livekit.DataPacket_User:
u := payload.User
if p.Hidden() {
u.ParticipantSid = ""
u.ParticipantIdentity = ""
} else {
u.ParticipantSid = string(p.params.SID)
u.ParticipantIdentity = string(p.params.Identity)
}
if dp.ParticipantIdentity != "" {
u.ParticipantIdentity = dp.ParticipantIdentity
} else {
dp.ParticipantIdentity = u.ParticipantIdentity
}
if len(dp.DestinationIdentities) != 0 {
u.DestinationIdentities = dp.DestinationIdentities
} else {
dp.DestinationIdentities = u.DestinationIdentities
}
shouldForward = true
case *livekit.DataPacket_SipDtmf:
if p.Kind() == livekit.ParticipantInfo_SIP {
shouldForward = true
}
case *livekit.DataPacket_Transcription:
if p.Kind() == livekit.ParticipantInfo_AGENT {
shouldForward = true
}
default:
p.pubLogger.Warnw("received unsupported data packet", nil, "payload", payload)
}
if shouldForward {
p.lock.RLock()
onDataPacket := p.onDataPacket
p.lock.RUnlock()
if onDataPacket != nil {
u := payload.User
if p.Hidden() {
u.ParticipantSid = ""
u.ParticipantIdentity = ""
} else {
u.ParticipantSid = string(p.params.SID)
u.ParticipantIdentity = string(p.params.Identity)
}
if dp.ParticipantIdentity != "" {
u.ParticipantIdentity = dp.ParticipantIdentity
} else {
dp.ParticipantIdentity = u.ParticipantIdentity
}
if len(dp.DestinationIdentities) != 0 {
u.DestinationIdentities = dp.DestinationIdentities
} else {
dp.DestinationIdentities = u.DestinationIdentities
}
onDataPacket(p, kind, dp)
}
case *livekit.DataPacket_SipDtmf:
if p.grants.GetParticipantKind() == livekit.ParticipantInfo_SIP {
p.lock.RLock()
onDataPacket := p.onDataPacket
p.lock.RUnlock()
if onDataPacket != nil {
onDataPacket(p, kind, dp)
}
}
default:
p.pubLogger.Warnw("received unsupported data packet", nil, "payload", payload)
}
p.setIsPublisher(true)