Установление вызова UCMA дает занятый ответ только через 30 секунд - PullRequest
1 голос
/ 04 марта 2012

Я пытаюсь установить вызов, используя следующий код в приложении рабочего процесса UCMA:

try{
var conversation = new Conversation(endpoint);
avCall = new AudioVideoCall(conversation);
avCall.EndEstablish(avCall.BeginEstablish(CalleeParty,options,null,null));
catch (FailureResponseException frex){
_logger.WriteToLog(frex.Message, "TransferCall", this.CallerUri, this.CalleeParty);
}
catch (OperationFailureException ofex)
{
_logger.WriteToLog(ofex.Message, "TransferCall", this.CallerUri, this.CalleeParty);
}
catch (RealTimeException rtex){
}
_logger.WriteToLog(rtex.Message, "TransferCall", this.CallerUri, this.CalleeParty);
}

если сторона назначения отклоняет вызов, приложение получает ответ «занято» только после истечения времени ожидания (30 секунд). и поскольку вызов устанавливается внутри приложения ucma, я вообще не получаю голоса, которые указывают на состояние звонка и занято.

это нормально, и если нет, то как я могу это исправить?

1 Ответ

2 голосов
/ 17 апреля 2012

Вы можете подписаться на событие Call.StateChanged, прежде чем вызывать BeginEstablish.

Если вы сделаете это, то будете уведомлены, когда вызов проходит через различные состояния. В вашем примере вы увидите, что вызов переместился прямо из «Установлено» в «Завершено». (принятый вызов будет означать «Установлено» - «Установлено», а затем, в конечном счете, «Прекращено», когда одна из сторон повесит трубку).

MSDN имеет полезную визуальную диаграмму здесь: http://msdn.microsoft.com/en-us/library/hh347379.aspx. На самом деле, я свяжу ее здесь, чтобы все могли увидеть:

Lync Call States

Кроме того, у Майкла Гринли есть пост в блоге , в котором рассказывается именно об этом , и описывается, как вы также можете получить дополнительную информацию, такую ​​как TransitionReason.

Надеюсь, это поможет.

...