Re: StartBridge и исходящая сессия

От: Dmitry Akindinov <CGatePro_at_mx_ru>
Дата: Tue 15 Dec 2009 - 12:58:54 MSK

Здравствуйте,

Некоторые дополнения ниже.

Dmitry Akindinov wrote:

> Здравсвуйте,
> 
> Subscriber wrote:

>> 14.12.2009 15:31, Dmitry Akindinov пишет:
>>> Здравствуйте,
>>>
>>> Subscriber wrote:
>>>> Во все документации, где описывается функция StartBridge, она 
>>>> описывается для входящей сессии, для исходящей же сессии есть только 
>>>> кусок кода из callerleg.sppi, где данная функция вызывается, только 
>>>> тогда, когда исходящая сессия в состоянии connected.
>>>> По-этому у меня вопрос можно ли вызвать StartBridge для исходящей 
>>>> сессии, когда получается событие с промежуточным откликом на вызов?
>>>
>>> То есть, когда получен provisional ответ на исходящий INVITE?
>>> Да, в этот момент можно сделать StartBridge().
>>>
>>> <http://www.communigate.com/CommuniGatePro/PBXApp.html#Bridge>
>>>
>>> StartBridge(taskRef)
>>>     This function sends a special StartBridge Event to the specified 
>>> Task asking it to take over this Task peer media.
>>> ...
>>>     The current Task should be in the incoming, *provisioned*, or 
>>> connected mode.

>> Есть такой кусок кода для исходящей сесии
>> if input != null and then (IsCallProvisionEvent(input) and
>> then relayProvisioning) then
>>

>> syslog("StartBridge");
>> errorCode = StartBridge(peerLeg);
>> if errorCode != null then
>> void(SendEvent(peerLeg,"error",errorCode));
>> SysLog("StartBridge failed: " + errorCode);
>> stop;
>> else
>> relayProvisioning = false;
>> end if;
>>
>> end if;
>>

>> в логах мы получаем
>>

>> 16:58:16.109 2 PBXLEG-002632 calling sip:134@domain.com
>> 16:58:16.219 2 PBXLEG-002632 ProgramLog: StartBridge
>> 16:58:16.219 1 PBXLEG-002632 bridge(NODE-002628) starting failed.
>> Error Code=Disconnected
>> 16:58:16.219 2 PBXLEG-002632 ProgramLog: "StartBridge failed:
>> Disconnected"
>> 16:58:16.219 2 PBXLEG-002632 program stopped
>> 16:58:16.219 2 PBXLEG-002632 cancelling(task stopped)
>>

>> Почему Disconnected?
> 
> Прошу прощения, я был неправ. Provisioned состояние определено для 
> задач, принимающих входной звонок, а не для тех, которые делают 
> исходящий. Состояние у этой задачи - connecting.
> 
> <http://www.communigate.com/CommuniGatePro/PBXApp.html#Model>
> 
> То есть, вам надо дождаться финального ответа (установления диалога), а 
> потом уже строить мост.

Поясните, пожалуйста, в чём смысл построения моста сразу после получения provisioning ответа?

Имейте в виду, ответы эти будут не обязательно с SDP, а даже если и будут, то их может быть несколько, от разных источников. В такой ситуации не ясно, какой SDP отдавать другой задаче. В результатет получится, что при получении финального ответа всё равно придётся слать re-INVITE, чтобы проинициализировать медиа каналы с окончательным вариантом SDP ответившей стороны. Не лучше ли тогда просто отложить построение моста до получения финального ответа?

-- 
Best regards,
Dmitry Akindinov
Получено Tue Dec 15 09:58:58 2009

Этот архив был сгенерирован hypermail 2.1.8 : Tue 15 Dec 2009 - 16:14:48 MSK