Lync 2013 - консумира 180 отговора на позвъняване от разклонена заявка

Възможно ли е да конфигурирате Lync 2013 да изпраща само едно 180/183 позвъняване обратно нагоре, след като INVITE към Lync задейства множество INVITE към крайни точки на абонати на Lync, всяка от които в крайна сметка генерира 180/183 съобщение.

В случай на едновременно позвъняване, искам Lync да изразходва всички тези 180, за да избегна ненужни съобщения обратно към инициатора, който ПОКАНИ Lync, който е зад SBC.

Изглежда, че действа като разклоняващо прокси, а не b2bua.


person Luke B    schedule 25.11.2014    source източник


Отговори (2)


Прав си, като казваш, че Lync разклонява повикванията. Ако даден потребител има няколко крайни точки, Lync ще разклони повикването към всяка крайна точка и в замяна всяка крайна точка ще върне отговора на звънене.

Можете да създадете MSPL скрипт за улавяне на 180 отговора. Тъй като MSPL е без състояние, ще изисква поддържащо приложение (a ServerApplication), което проверява дали отговор 180 вече е изпратен за текущото повикване и блокира последващи отговори на позвъняване. Въз основа на предположението, че за всички заявки заглавката CallID ще бъде идентична, тогава можете да решите кои отговори да изпратите и кои не.

Един прост MSPL би бил нещо като:

<lc:applicationManifest
 lc:appUri="http://www.contoso.com/DefaultRoutingScript"
 xmlns:lc="http://schemas.microsoft.com/lcs/2006/05">
<lc:responseFilter reasonCodes="1XX" />
<lc:proxyByDefault action="true" />
<lc:splScript><![CDATA[
    if (sipResponse && sipResponse.StatusCode == 180)
    {
        Dispatch("OnResponse");
    }
]]></lc:splScript>
</lc:applicationManifest>

След това във вашето сървърно приложение обработвате събитието OnResponse, представям си нещо подобно:

public void OnResponse(object sender, ResponseReceivedEventArgs e)
{
    if (e.Response.StatusCode == 180)
    {
        var callIdHeader = e.Response.AllHeaders.FindFirst(Header.StandardHeaderType.CallID);
        if (callIdHeader != null)
        {
            var callId = callIdHeader.Value;
            if (ShouldSendRingingResponse(callId))
            {
                e.ClientTransaction.ServerTransaction.SendResponse(e.Response);
            }
        }
    }
}

public bool ShouldSendRingingResponse(string callId) { .... }

След това можете да създадете някаква логика във функцията ShouldSendRingingResponse, за да видите дали да изпратите отговора 180 или не.

Обърнете внимание, че не съм тествал това, това е само основна схема за това как бих се опитал да се справя със ситуацията.

person Willem    schedule 02.12.2014

Няма начин да се предотврати това в Lync; обикновено обаче ще бъде разгърнат и AudioCodes SBC, който съдържа опция за справяне с този сценарий.

Множество 18x: Устройството поддържа взаимодействието на различна поддръжка за множество 18x отговори (включително 180 Звънене, 181 Повикването се пренасочва, 182 Повикване в опашка и 183 Прогрес на сесията), които се препращат към повикващия. UA може да бъде конфигуриран като поддържащ само получаване на първия 18x отговор (т.е. устройството препраща само този отговор към повикващия) или получаване на множество 18x отговори (по подразбиране). Това се конфигурира от параметъра на IP профила, „SBC Remote Multiple 18x Support

person Luke B    schedule 25.01.2015