2016-08-24 2 views
0

저는 Lync 2013 SDK를 처음 사용하고 (몇 주 동안 사용 해왔음) 이 모든 것을 제외하고는 필요한 모든 것을 알아낼 수있었습니다.Lync 2013 SDK - "회의 오디오 가져 오기"설정이 "오디오에 참여하지 않음"으로 설정된 경우 회의 및 연결 AVModality에 가입하십시오.

ConversationManager.JoinConference()를 사용하여 회의에 참가할 때 잘 결합됩니다. 그러나 일부 경우 (전부는 아님)에서 AVModality를 회의에 연결하려고합니다. 때로는 제대로 작동하지만 가끔은 "Connecting"에 앉아서 연결하지 않습니다 (EndConnect라고 불렀음에도 불구하고).

스카이프의 옵션 -> Skype 미팅 -> 전화 회의 가입 섹션의 설정이 내 코드를 무시하는 것으로 나타났습니다. 아마 경쟁 조건일까요?

설정이 "오디오에 참여하지 마십시오"및 "회의에 참가하기 전에 사용하고 싶은 오디오 장치 확인"확인란을 선택하지 않은 경우 (회의에 참가할 때 아무 메시지도 표시되지 않음) 회의가 참가하고 AVModality 연결이 끊어짐 -> 연결 -> 연결이 끊김. 그런 다음 내 코드가 BeginConnect를 시작하고 AVModality가 Disconnected -> Connecting - 간다가 해결되지 않습니다 (때로는 빠른 통화 중 톤 오디오 사운드가 발생 함).

"미팅에 참여하기 전에 내가 사용하고 싶은 오디오 장치를 확인하십시오"라는 메시지가 표시되면 (즉, 프롬프트가 표시됨) : 전화 회의가 연결되고, 연결 방법을 묻는 메시지가 나타납니다. Skype for business - 오디오를 잘 연결합니다 (예상). 흥미롭게도, Lync UI (AVModality가 Disconnected로 이동)를 사용하여 전화를 끊으면 즉시 다시 연결됩니다 (BeginConnect가이 작업을한다고 가정). 정말 복잡한 얻는 경우 여기

는 다음과 같습니다 상태가 ModalityStateChanged 이벤트 핸들러 내에서 AVmodality에 연결되었을 때 나는 BeginConnect를 호출하면 ... 다음과 같은 일이 발생 : 회의 조인 메시지가 어떻게 연결하는 (AVmodality 상태가 나에게 묻는다 프롬프트에 대한 결정이 내려 질 때까지이 시점에서 "연결 중"입니다.) 이것은 내 BeginConnect가 작동 함을 의미합니다. 그런 다음 프롬프트에서 "오디오에 참여하지 마십시오"를 선택하면 AVModality 상태가 연결 -> 연결 끊김 -> 연결 -> 연결 -> 연결됩니다. 그래서 - 나의 BeginConnect는 이미 진행 중이며이 경우에는 "오디오에 가입하지 마십시오"를 선택하기 전에 작동합니다.

그래서 "오디오 결합 안함"선택 여부에 따라 (프롬프트의 유무에 관계없이) AVModality가 그 지점 이후에 추가로 초점을 맞추지 않고 연결되는 것을 막는 다른 속성이 실제로 설정되어 있는지 궁금합니다. 그렇다면 - 수행해야 할 추가 포커스 문제를 알고 싶습니다.

고마워요!

답변

0

JoinConference()가 호출되면 BeginConnect()를 명시 적으로 호출하지 않아도 오디오 양식이 연결됩니다.

오디오 장치 선택을 묻는 프롬프트가 표시되면 (음성 옵션 선택이 스카이프에 설정되기 전에 확인하는 경우) 대화 속성 ConferenceEscalationProgress의 값이 AwaitingJoinDialogResponse가됩니다.

대화 속성 설정 ConferenceJoinDialogCompleted를 true로 설정하면 프롬프트가 닫히지 않은 경우에도 모덜리티 연결이 시작됩니다.

오디오를 선택 가입하지 않으면는 양상은() BeginConnect를 호출하려고하는이 시점에서, 연결이 끊어집니다 편집. BeginConnect()를 호출하기 전에 모달리티 엔드 포인트를 설정하십시오.그것은이에

conversation.Modalities[ModalityTypes.AudioVideo].Endpoint = lyncClient.Self.Contact.CreateContactEndpoint(lyncClient.Self.Contact.Uri); 
+0

첫 번째 - 답장을 보내 주셔서 감사합니다. 최근 테스트에서이 속성을 추적 해왔습니다. 일부 동작을 설명하는 데 도움이됩니다. 그러나 프롬프트가 표시되지 않는 설정 인 경우 ConferenceJoinDialogCompleted 속성이 즉시 True로 설정되어 있고 AVModality가 연결되면 연결됨 -> 연결 -> 연결이 끊긴 것으로 나타났습니다. 이 문제가 발생하면 AVModality를 성공적으로 연결하는 방법을 찾지 못했습니다 ...? – Scott7004

+0

프롬프트는 오디오 엔드 포인트 uri, 즉 AV 모달 엔드 포인트 uri를 선택하는 것입니다. 오디오를 skype endpoint로 선택하면 uri는 sip : [email protected]으로 유지되고 전화 번호를 선택하면 끝점 URI는 "tel : 전화 번호"가됩니다. UI에 경고가 있습니까? –

+0

오랜 기간 동안 죄송합니다. 그동안 다른 문제가 발생했습니다. 아래에 새로운 응답을 작성하겠습니다. – Scott7004

1

내려왔다 ... 가입 회의 오디오 여부에 가입하지 여부 - 내가 제외한 모든 시나리오를 처리했습니다, 난 여전히 알아낼 수 : 1. 나는 필요 회의 오디오를 참가시키지 만 사용자가 오디오에 참여하지 않기로 선택하면 (프롬프트 또는 Skype 옵션 설정에서).

이 경우 - 이벤트 처리기를 모달 상태 변경 이벤트에 추가했으며 NewState == Disconnected 일 때 모달 리티 자체에서 BeginConnect를 트리거합니다. 이것은 잘 작동합니다. 콜백 내에서 EndConnect 호출이 있습니다. 그러나 AVModality 상태는 계속 "연결 중"상태를 유지하며 연결 ​​상태로는 해결되지 않습니다. UI에서 - 오디오 버튼을 표시하지만 모두 회색으로 표시됩니다 (정상적으로 연결할 때처럼). 연결을 완료하는 방법을 모르겠습니다. 여기

코드의 조각이다 :

if (merge) 
      { 
       myHandler = delegate (object sender1, ModalityStateChangedEventArgs e1) 
       { 
        AVModality avModality = (AVModality)sender1; 
        Globals.ThisAddIn.confConvo = avModality.Conversation; 
        if (e1.NewState == ModalityState.Connected) 
        {        
         DialNumberInSkype(meetingInfo); 
         avModality.ModalityStateChanged -= myHandler; 
        } 
        if (e1.NewState == ModalityState.Disconnected) 
        { 
         object[] asyncState = { avModality, "CONNECT" }; 
         avModality.BeginConnect((ar) => 
         { 
          avModality.EndConnect(ar); 
          DialNumberInSkype(meetingInfo); 
         }, asyncState); 
         avModality.ModalityStateChanged -= myHandler; 
        } 
       }; 
      } 

편집 : 어떤 이유 , 내가 지금 코멘트를 추가 할 수 아니에요 ...

내가 엔드 포인트로 설정 시도 너는 제안했다. 그러나 ArgumentException 오류가 발생합니다. "값이 예상되는 범위 내에 들지 않습니다." 그래서 "sip : [email protected]"(물론 실제 값은 제외하고)에 CreateContactEndpoint의 uri 값을 하드 코딩하려고 시도했지만 동일한 ArgumentException 오류가 발생했습니다. 이 전에 breakpoint를 추가하고 avModality.Endpoint의 값을 볼 수있었습니다. 실제로 BeginConnect를 호출하려고 할 때 null이 아니거나 설정되지 않았습니다.