2016-11-16 4 views
0

목표는 온 디맨드 직원에게 전화를 걸고 파일 시스템에서 음성/오디오 파일을 재생하는 모듈에 대한 시스템 모니터링 솔루션의 인터페이스를 개발하는 것입니다.사업용 발신자 용 skype 및 오디오 파일 재생

저는 전화 옵션이 설정된 비즈니스 용 2015 (fomerly lync) 사용자 용 스카이프가 있습니다. 전화 번호로 전화를 걸 수 있습니다. 그런 다음 질문은 전화 건 사람이 전화를 받고 오디오 파일을 재생할 때까지 기다리는 방법 (또는 오디오 파일을 재생하는 대신 System.Speech 변형이 더 나은 방법)을 수행 한 후 그 사람이 그/그녀를 전화를 받았다.

내가 현재 가지고있는 :

public void SendLyncCall(string numberToCall, string textToSpeech) 
{ 
    var targetContactUris = new List<string> {numberToCall}; //"tel:+4900000000" }; //removed here 

    _automation.BeginStartConversation(AutomationModalities.Audio, targetContactUris, null, StartConversationCallback, null); 

    while (this.globalConv == null) 
    { 
     Thread.Sleep(1); 
    } 
    if (globalConv != null) 
    { 
    LyncClient client = LyncClient.GetClient(); 

    client.DeviceManager.EndPlayAudioFile(
     client.DeviceManager.BeginPlayAudioFile(@"d:\tmp\test1.wav", 
     AudioPlayBackModes.Communication, 
     false, 
     null, 
     null)); 
    } 
} 

private void StartConversationCallback(IAsyncResult asyncop) 
{ 
// this is called once the dialing completes.. 
if (asyncop.IsCompleted == true) 
{ 

    ConversationWindow newConversationWindow = _automation.EndStartConversation(asyncop); 
    globalConv = newConversationWindow; 
    AVModality avModality = globalConv.Conversation.Modalities[ModalityTypes.AudioVideo] as AVModality; 


    foreach (char c in "SOS") 
    { 
     avModality.AudioChannel.BeginSendDtmf(c.ToString(), null, null); 
     System.Threading.Thread.Sleep(300); 
    } 

    } 
} 

을하고 다른 문제는 그것이 Windows 서비스로 실행할 수있는 등록 된 엔드 포인트가 될 수있는 전체 모듈을 변경할 수있다? 현재 내 sfb가 열리고 로그인해야합니다.

+0

위의 코드는 보인다. 덕분에 – ShelbyZ

+0

. 헤더에서 dthat을 제거합니다. lync 클라이언트는 서비스로 실행해야한다는 잘못된 방식입니다. 나는 ucma 5.0 now –

답변

0

코드는 Lync Client SDK 코드입니다.이 메시지는 UCMA 코드가 아닙니다.

Lync Client SDK로 묻는 것을 수행하는 방법을 알고 싶다고 가정합니다.

AVModality.State가 Connected으로 변경 될 때 알리려면 AVModality.ModalityStateChanged 이벤트를 연결해야합니다.

일단 연결 상태가되면 원하는 것을 할 수 있습니다.

내가 생각 해낸 코드를 조정 : 당신은 Lync 클라이언트 SDK 그리고하지 UCMA를 사용하는 것처럼

private void StartConversationCallback(IAsyncResult asyncop) 
{ 
    // this is called once the dialing completes.. 
    if (asyncop.IsCompleted == true) 
    { 
     ConversationWindow newConversationWindow = _automation.EndStartConversation(asyncop); 
     AVModality avModality = newConversationWindow.Conversation.Modalities[ModalityTypes.AudioVideo] as AVModality; 
     avModality.ModalityStateChanged += ConversationModalityStateChangedCallback; 
    } 
} 

private void ConversationModalityStateChangedCallback(object sender, ModalityStateChangedEventArgs e) 
{ 
    AVModality avModality = sender as AVModality; 
    if (avModality != null) 
    { 
     switch (e.NewState) 
     { 
      case ModalityState.Disconnected: 
       avModality.ModalityStateChanged -= ConversationModalityStateChangedCallback; 
       break; 

      case ModalityState.Connected: 
       avModality.ModalityStateChanged -= ConversationModalityStateChangedCallback; 
       foreach (char c in "SOS") 
       { 
        avModality.AudioChannel.BeginSendDtmf(c.ToString(), null, null); 
        System.Threading.Thread.Sleep(300); 
       } 
       break; 
     } 
    } 
} 
+0

thx와 함께 갈 것이다. 위의 글을 참고하세요 : lyncclient는 잘못된 길입니다. 주 검사를 해주셔서 감사합니다. ucma와 함께 서비스로 실행됩니다. –