2011-08-22 11 views
13

Come integrare Lync 2010, con un programma che esegue la ricerca di un DB e mostra un piccolo popup, con le informazioni trovate e anche alcuni pulsanti con alcune opzioni.
Il programma è già in esecuzione con altri tipi di sistemi telefonici, ho bisogno di un connettore per Lync.
Non voglio inserire una scheda o un'altra interfaccia utente in Lync.Integrazione di Lync 2010 con un programma esterno

+0

Presumibilmente questa è un'app di tipo Screen-pop, ovvero rileva una chiamata audio in arrivo, quindi visualizza le informazioni sul chiamante? –

+0

Sì, esattamente. Inoltre, consente all'utente di chiamare da un elenco, che deriva dal DB. Questa chiamata deve essere inviata a Lync, che quindi effettua la chiamata. – Martin

+0

Ho appena visto che l'esempio nel 2010 SDK, AudioVideoConversation, sta praticamente facendo quello che voglio, lo indago. – Martin

risposta

21

Avrai bisogno di iniziare con il Lync SDK. Puoi costruire la tua app come un'app Winforms o WPF.

firma a

Per connettersi e accedere al l'istanza in esecuzione di Lync, controlla this page dal SDK. Assicurati di mantenere un riferimento all'oggetto LyncClient che rappresenta Lync. Questo può essere ottenuto chiamando il metodo statico LyncClient.GetClient()

Rilevamento di una chiamata in arrivo

Per rilevare una chiamata in arrivo, è possibile intercettare l'evento ConversationManager.ConversationAdded. ConversationManager è una proprietà nell'istanza LyncClient.

Per determinare se la chiamata è a) una chiamata audio, e b) in entrata (al contrario di una chiamata in uscita posizionato dall'utente) è possibile utilizzare il seguente metodo:

bool IsIncomingAVCall(Conversation conversation) 
{ 
    // Test to see if the call contains the AV modality 
    bool containsAVModality = conversation.Modalities.ContainsKey(ModalityTypes.AudioVideo); 

    if (containsAVModality) 
    { 
     // Get the state of the AV modality 
     var state = conversation.Modalities[ModalityTypes.AudioVideo].State; 

     // 'Notified' means the call is incoming 
     if (state == ModalityState.Notified) return true; 
    } 

    return false; 
} 

In caso ConversationAdded , è necessario iscriversi all'evento Conversation.ParticipantAdded, in modo da poter controllare chi è il chiamante. L'oggetto EventArgs ha una proprietà Participant, che a sua volta ha una proprietà Contact. La proprietà Contact ha un numero di proprietà tra cui Uri, che dovrebbe darti il ​​numero di telefono (se è quello che ti serve).

È quindi possibile effettuare la chiamata DB e inserire le proprie informazioni.

Edit: Ho scritto un post su schermate pop-up, che va in modo molto più dettagliato - here

Esecuzione di una chiamata

Se la vostra applicazione è WPF, il modo più semplice per consentire una chiamata da piazzare è usando il controllo StartAudioCallButton. In caso contrario, le istruzioni here dovrebbero essere d'aiuto.

+0

Fantastico! Proverò i tuoi suggerimenti e daremo un'occhiata più approfondita all'esempio AudioVideoConversation. – Martin

+0

Fantastico! Non dimenticare di contrassegnare come risposta (usando il segno di spunta) se questo risolve il tuo problema, per aiutare qualcun altro a sfogliare questa domanda in un secondo momento - cheers –

+0

Ci può volere un giorno o tre per arrivarci, ma me lo ricorderò. Grazie per il tuo tempo. – Martin