2012-05-25 46 views
2

我想在LYNC中自動應答任何呼入呼叫。C#在LYNC中自動應答呼叫

使用SDK我可以檢測到一個無匹配的調用。如果有人用語音或視頻呼叫我,則會調用以下方法。

void AVModalityStateChanged(object sender, ModalityStateChangedEventArgs e) 
{ 
    if (e.NewState == ModalityState.Notified) 
    { 
     // someone is calling me 
    } 
} 

但我現在需要如何回答這個問題。

我的整個的Lync連接類在這裏可以查看:http://www.pastebucket.com/2293

這將會在會議室的設置使用它會是很好,如果這是不夠的,只是撥打房間和人民在另一結束不必做任何事情。

回答

5

你最好打賭的是訂閱一個事件,這個事件會在來電時引發,而不是在狀態變化時。這是因爲傳入事件包含呼叫對象的句柄,您可以使用該句柄來接受呼叫。

看看ConversationManager.ConversationAdded事件。傳入的IM和AV對話(包括AV呼叫)會引發此問題。

略微有點棘手把握的是,你收到通知傳入對話但它實際上是呼叫要接受。雖然如此,因爲Call對象包含在Conversation對象中,這是EventArgs傳遞的一部分。

讓我們假設你只想接受AV呼叫,而不是IM呼叫。所以,你需要做的第一件事是看你剛剛被通知的對話是否實際上是一個AV呼叫。您可以通過使用從事件傳遞的ConversationManagerEventArgs來查看對話的模式來說明這一點。 e.Conversation.Modalities包含傳入會話的所有模式。

假設這是一個AV調用(!並最終回答你原來的問題),你就可以接受與呼叫:

e.Conversation.Modalities[ModalityTypes.AudioVideo].Accept();

希望這有助於。我將很快做一篇關於這方面的博客文章,並提供更詳細的內容,所以我會盡量記住在完成後更新這個答案。

編輯:博客文章寫得更詳細一點,並在這裏:http://thoughtstuff.co.uk/2012/06/answering-the-call-accepting-incoming-calls-in-lync-client-sdk/