“488 Not acceptable here” when joining a conference via UCMA
This is mostly a reminder to the me in 6 months time who will have forgotten this piece of information and will come to search the internet for it. For anyone else who also finds it useful, you’re welcome!
This error tied us up for a morning the other day. We were joining a conference using a UCMA application. Fairly simple code:
var conferenceSession = Conversation.ConferenceSession;
var options = new ConferenceJoinOptions() {JoinMode = JoinMode.TrustedParticipant};
await conferenceSession.JoinAsync(conferenceUri, options);
Whenever we hit the JoinAsync we were getting an exception from the Microsoft.RTC stack: 488 Not acceptable here.
Huh? We checked that were passing through a valid Uri for the conference. We checked that the application was a valid application endpoint – which it was. So, why couldn’t it join the conference? I thought application endpoints could join any conference?
We fired up Snooper to take a closer look:
The only extra useful piece of information we pulled from that was the ms-diagnostics header: 3041; reason=”Participant is not connected to conference”. Huh? I know – we’re trying to join that conference!!
It turns out that we had the Conference URI wrong, but in a really subtle way – we had the URI to the AVMCU, not the conference. The URI we were trying to join had a GRUU that included “app:conf:audio-video”, whereas what we really wanted was “app:conf:focus”. That happened because of where we were pulling the conference URI from.
Suddenly, those errors make sense. You can’t join the AVMCU because you’re not in the conference. As soon as we fixed that, the application endpoint joined the conference first time. Which was a good thing, because I was starting to doubt everything I knew about UCMA!