Мне нужно разработать приложение для Skype для бизнеса Server 2015, которое позволяет переадресацию звонков, но не переадресацию мгновенных сообщений.Мне удалось сделать это с управляемой службой MSPL, работающей на каждом внешнем интерфейсе.Вот фрагмент кода:
public void OnRequest(object sender, RequestReceivedEventArgs e)
{
if (e.Request.StandardMethod == Request.StandardMethodType.Invite)
{
// Enable simple proxy mode and disable forking.
e.Request.SimpleProxy = true;
e.ServerTransaction.EnableForking = false;
if (e.Request.AllHeaders.FindFirst(Header.StandardHeaderType.MsImFormat) == null) // do not manage IM message
{
if (e.Request.Content != null && e.Request.Content.Contains("m=audio")) //This is an audio call
{
string destination = ComputeDestinationFromHeader(e); //some business code here
e.Request.Retarget(destination);
}
}
}
e.ServerTransaction.CreateBranch().SendRequest(e.Request);
}
Сценарий MSPL отлично работает с более низким приоритетом, чем UserServices.Проблемы возникают при смешивании IM и аудио на стороне клиента.Вот два проблемных сценария:
СЦЕНАРИЙ 1
- Алиса отправляет сообщение Бобу
- Боб открывает окно чата в скайпе
- Алиса звонит Бобу
- MSPL ретаргетеры приглашают Сесиль
- Сесиль отвечает на звонок
- Алиса или Сесиль вешают трубку
Проблема
Алиса больше не может звонить Бобу, это приводит к ошибке Skype, которая появляется в окне чата "Вызов не был завершен или завершился".
Это проблема клиента, причина нетSIP-приглашение отправляется Бобу в соответствии со снупером.
Как только Боб отправляет Алисе IM-сообщение, оно решает проблему.Или, если Алиса или Боб закрывают окно чата.
СЦЕНАРИЙ 2
- Алиса отправляет сообщение Бобу
- Боб открывает чат в скайпеокно
- Боб закрывает окно чата
- Алиса звонит Бобу
- MSPL ретаргетинг приглашает Сесиль
- Сесиль отвечает на звонок
- Алиса илиСесиль вешает трубку
Проблема
На стороне Алисы окно чата больше не адресовано Бобу, а Сесиль.Фактически, если Алиса отправляет новое IM-сообщение в этом окне чата, сообщение приходит к Сесиль.
Я уже попробовал SIP-ответ 302 (временно перемещен): https://docs.microsoft.com/en-us/lync/server-sdk/how-to-forward-im-invite-to-a-different-target Но Skype для бизнес-клиентакажется, не понимает код ответа и отправляет только ответ ACK, не инициируя новый запрос на приглашение.
Кто-то знает, что мне не хватает?Любая помощь будет принята с благодарностью!