Skype for Business einbinden

  • VB.NET

Es gibt 35 Antworten in diesem Thema. Der letzte Beitrag () ist von Sub7evenHH.

    Kannst du mir sagen wie ich das mache? Ich krieg das nicht auf die Reihe :(

    Ich denke damit stehe echt kurz vor der Lösung. Damit sollte das doch wohl möglich sein, ein Event auszulösen sobald ein Anruf eingeht.

    Ich bin mittlerweile sogar bereit Geld dafür zu zahlen. Das Thema macht mich einfach wahnsinnig. Bitte helft mir dabei.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Sub7evenHH“ ()

    Sub7evenHH schrieb:

    Ich krieg das nicht auf die Reihe
    Wie hast du es denn versucht?
    Ich kann es hier nicht testen, aber ich denke, das müsste feuern:
    Sub Client_StateChanged(sender As Object, e As ClientStateChangedEventArgs) Handles SkypeClient.StateChanged
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    @petaod

    Ich habe es wie folgt versucht:

    VB.NET-Quellcode

    1. Imports Microsoft.Lync.Model
    2. Imports Microsoft.Office.Uc
    3. Public Class Form1
    4. Public SkypeClient As Microsoft.Lync.Model.Client = Microsoft.Lync.Model.LyncClient.GetClient()
    5. Public Sub Client_StateChanged(sender As Object, e As ClientStateChangedEventArgs) Handles SkypeClient.StateChanged
    6. MsgBox("Status geändert")
    7. End Sub
    8. End Class


    Hier wird mir Handles SkypeClient.StateChanged markiert mit folgendem Hinweis:
    Die Handles-Klausel erfordert eine WithEvents-Variable, die im enthaltenden Typ oder einem seiner Basistypen definiert wird.


    Ich glaube aber auch ClientState ist hier falsch. Mit ContactAvailability kann man Statusänderungen sehen. Aber wie...

    Ich hoffe wirklich auf Eure Hilfe :)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Sub7evenHH“ ()

    Danke @exc-jdbi
    Nun bekomme ich eine Meldung wenn ich mich bei Skype einlogge.

    So sieht es aus:

    VB.NET-Quellcode

    1. ​Imports Microsoft.Lync.Model
    2. Imports Microsoft.Office.Uc
    3. Imports Microsoft.Lync
    4. Public Class Form1
    5. Public WithEvents SkypeClient As Microsoft.Lync.Model.Client = Microsoft.Lync.Model.LyncClient.GetClient()
    6. Public Sub Client_StateChanged(sender As Object, e As ClientStateChangedEventArgs) Handles SkypeClient.StateChanged
    7. sender = SkypeClient.State.ToString
    8. MsgBox(sender)
    9. End Sub
    10. End Class


    Wie kriege ich es nun noch hin, eine Meldung zu bekommen wenn ich einen Anruf bekomme oder sich mein Status ändert?
    Das hat irgendwas mit ContactAvailability zu tun glaube ich...

    IHR SEID DER HAMMER!
    Jetzt schon ein riesiges DANKE!
    Ich hab leider auch keine Möglichkeit es zu testen.

    Vielfach findest du schon hilfreiche Infos ein einem der beiden Parameter. Schon reingeschaut?
    Was bietet dir die Variable e alles an?

    Da gibt es doch ein New- und Oldstate und noch ein StatusCode. Eventuell kast damit schon was anfangen.

    Gruss exc-jdbi
    Schade.

    Kann ich irgendwas zur Verfügung stellen? Also Wenn was zum testen fehlt?

    Mit New und Oldstate bekomme ich aber glaube ich nur das hier
    docs.microsoft.com/en-us/dotne…entstate?view=lync-client
    Da sind nur die Stati vom Programm selbst (Login, Logout usw.)

    Wie ich mit e umgehe, weiß ich leider nicht :(

    VB.NET-Quellcode

    1. Public Sub Client_Status(sender As Object, e As ContactAvailability) Handles SkypeClient.??
    2. sender = ??
    3. MsgBox(sender)
    4. End Sub


    Ich weiß nicht weiter.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Sub7evenHH“ ()

    Jetzt wird es schwierig. Sich nur so an die Doks zu halten, führt meistens ins leere.

    Eventuell bringt das weiter

    VB.NET-Quellcode

    1. 'https://docs.microsoft.com/de-de/dotnet/api/microsoft.lync.model.clientstate?view=lync-client
    2. dim clientstate = SkypeClient.State


    VB.NET-Quellcode

    1. 'https://docs.microsoft.com/de-de/dotnet/api/microsoft.lync.model.contactmanager.getcontactbyuri?view=lync-client#Microsoft_Lync_Model_ContactManager_GetContactByUri_System_String_
    2. dim contact = SkypeClient.ContactManager.GetContactByUri(....)
    3. 'https://docs.microsoft.com/en-us/dotnet/api/microsoft.lync.model.contactinformationtype?view=lync-client
    4. dim id = contact.GetContactInformation("Availability")
    5. dim activity = contact.GetContactInformation("Activity")


    Mehr habe ich so auf die schnelle nicht herausgefunden. Vielleicht hilfts ja.

    Freundliche Grüsse

    exc-jdbi
    Bleib beim SkypeClient.StateChanged Event.
    Du kriegst in den ClientChangedEventArgs die Property NewState.
    Die ist vom Typ ClientState
    Damit hast du alle Informationen, die du brauchst.

    VB.NET-Quellcode

    1. ​Public WithEvents SkypeClient As Microsoft.Lync.Model.Client = Microsoft.Lync.Model.LyncClient.GetClient()
    2. Private Sub Client_StateChanged(sender As Object, e As ClientStateChangedEventArgs) Handles SkypeClient.StateChanged
    3. Debug.Print(e.NewState.ToString)
    4. End Sub
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Ok, wir kommen der Sache wirklich um einiges näher :)

    Ich kann nun über einen Button den Status meines Skype Clients abfragen. Leider kann ich noch nicht auf das Ereignis selbst reagieren. Also wenn sich mein Status ändert.

    Im Moment sieht es so aus:

    VB.NET-Quellcode

    1. Imports Microsoft.Lync.Model
    2. Imports Microsoft.Office.Uc
    3. Imports Microsoft.Lync
    4. Public Class Form1
    5. Public WithEvents SkypeClient As Microsoft.Lync.Model.Client = Microsoft.Lync.Model.LyncClient.GetClient()
    6. Public Sub Client_StateChanged(sender As Object, e As ClientStateChangedEventArgs) Handles SkypeClient.StateChanged
    7. Dim clientstate = SkypeClient.State
    8. Dim test = SkypeClient.ContactManager.GetContactByUri(SkypeClient.Uri.ToString)
    9. Dim activity = test.GetContactInformation(Model.ContactInformationType.Activity)
    10. MsgBox(activity.ToString)
    11. End Sub
    12. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    13. Dim clientstate = SkypeClient.State
    14. Dim test = SkypeClient.ContactManager.GetContactByUri(SkypeClient.Uri.ToString)
    15. Dim activity = test.GetContactInformation(Model.ContactInformationType.Activity)
    16. MsgBox(activity.ToString)
    17. End Sub
    18. End Class


    Die Anwendung reagiert nur, wenn ich mich ein/auslogge. Nicht wenn ich meinen Status ändere. Dann stürzt sich mit dem Code aber auch ab. Vielleicht muss doch daran noch was geändert werden?

    @petaod wenn ich das so übernehme

    VB.NET-Quellcode

    1. ​Private Sub Client_StateChanged(sender As Object, e As ClientStateChangedEventArgs) Handles SkypeClient.StateChanged
    2. Debug.Print(e.NewState.ToString)
    3. End Sub


    erhalte ich den Status "SignIn", "SignedIn" usw.

    wenn ich es mache wie @exc-jdbi gesagt hat, erhalte ich über einen Button tatsächlich meinen Status "Verfügbar", "Beschäftigt" usw. Jetzt muss ich nur noch die Events abfangen. Also einen Anruf bekommen, eine Nachricht bekommen oder wenn mein eigener Status sich ändert. Mit

    VB.NET-Quellcode

    1. ​Private Sub Client_StateChanged(sender As Object, e As ClientStateChangedEventArgs) Handles SkypeClient.StateChanged

    klappt das einfach nicht. Wenn ich es so versuche

    VB.NET-Quellcode

    1. ​Public Sub Client_StateChanged2(sender As Object, e As ContactInformationChangedEventArgs) Handles SkypeClient.StateChanged


    Markiert er mir StateChanged und sagt er kann es nicht behandeln weil die Signaturen inkompatibel sind.

    Hmmmm

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Sub7evenHH“ ()

    VB.NET-Quellcode

    1. Private WithEvents ClientContact As Contact
    2. ...
    3. ClientContact = SkypeClient.ContactManager.GetContactByUri(SkypeClient.Uri.ToString)
    4. Private Sub Contact_ContactInformationChanged(sender As Object, e As ContactInformationChangedEventArgs) Handles ClientContact.ContactInformationChanged
    5. Debug.Print (e.ChangedContactInformation(ContactInformationType.Activity).ToString)
    6. End Sub
    ungetestet, aber müsste grob passen.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „petaod“ ()

    @petaod Vielen Dank für den weiteren Tipp.

    Es funktioniert wenn ich meinen Status ändere. Ich erhalte dann sofort eine Info :)

    Sieht so jetzt aus:

    VB.NET-Quellcode

    1. Private Sub Contact_ContactInformationChanged(sender As Object, e As ContactInformationChangedEventArgs) Handles ClientContact.ContactInformationChanged
    2. MsgBox(ClientContact.GetContactInformation(Model.ContactInformationType.Activity))
    3. End Sub


    Das ist der absolute Hammer. Ihr habt mir so sehr geholfen, das glaubt ihr nicht! Danke an alle die bis jetzt schon mitgewirkt haben :)

    Nun möchte ich zum Schluss noch eine Sache. Ich würde gerne eine Nachricht bekommen, wenn ich einen Anruf bei Skype erhalte. WEnn ich angerufen werde und den Anruf annehme, bekomme ich ja nun den Status "Am Telefon" erfolgreich gemeldet. Nur wie muss man nun auf Anrufe reagieren?

    Vielleicht irgendwie auf die Art?

    VB.NET-Quellcode

    1. Public WithEvents SkypeClient As Microsoft.Lync.Model.Client = Microsoft.Lync.Model.LyncClient.GetClient()
    2. Public WithEvents TESTPHONE As Model.Phone = SkypeClient.Self.GetPhone(Model.ContactEndpointType.Lync)
    3. Public Sub Contact_Phone(sender As Object, e As Model.PhonesChangedEventArgs) Handles TESTPHONE.??
    4. ??
    5. End Sub


    Das haut aber alles nicht so hin wie gewollt :(

    @petaod oder @exc-jdbi Hast du noch eine Idee bezüglich des Telefonproblems?

    Ich komm einfach nicht weiter :(


    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Sub7evenHH“ ()

    Hi,

    ich habe folgendes zu diesem Thema auf
    stackoverflow.com/questions/92…-an-incoming-call-in-lync
    gefunden.
    Hier wird folgendes beschrieben:

    C#-Quellcode

    1. void ConversationManager_ConversationAdded(object sender, Microsoft.Lync.Model.Conversation.ConversationManagerEventArgs e)
    2. {
    3. e.Conversation.Modalities[ModalityTypes.InstantMessage].ModalityStateChanged += IMModalityStateChanged;
    4. e.Conversation.Modalities[ModalityTypes.AudioVideo].ModalityStateChanged += AVModalityStateChanged;
    5. }
    6. void IMModalityStateChanged(object sender, ModalityStateChangedEventArgs e)
    7. {
    8. if (e.NewState == ModalityState.Connected)
    9. MessageBox.Show("IM Modality Connected");
    10. }
    11. void AVModalityStateChanged(object sender, ModalityStateChangedEventArgs e)
    12. {
    13. if (e.NewState == ModalityState.Connected)
    14. MessageBox.Show("AV Modality Connected");
    15. }


    Ich weiß leider nicht wie ich das nun umsetzen kann..

    VB.NET-Quellcode

    1. Public WithEvents SkypeClient As Microsoft.Lync.Model.Client = Microsoft.Lync.Model.LyncClient.GetClient()
    2. Public WithEvents TestConv As Model.Conversation.ConversationManager = SkypeClient.ConversationManager.??



    VB.NET-Quellcode

    1. Private Sub EingehenderAnruf(sender As Object, e As Microsoft.Lync.Model.Conversation.ConversationManagerEventArgs) Handles SkypeClient.???
    2. MsgBox(e.Conversation.Modalities(ModalityTypes.ucModalityAudioVideo).State.???)
    3. End Sub


    sind meine Ansätze. Diese krieg ich aber nicht zum laufen :(

    @petaod oder @exc-jdbi wisst ihr oder doch jemand anderes noch weiter?

    EDIT:

    Ich habe nun folgendes gemacht:

    VB.NET-Quellcode

    1. Public WithEvents Meins As Model.Conversation.AudioVideo.AVModality = ???
    2. Private Sub EingehenderAnruf(sender As Object, e As Model.Conversation.ModalityStateChangedEventArgs) Handles Meins.ModalityStateChanged
    3. MsgBox("HALLO ")
    4. End Sub


    Hier passiert allerdings nichts... Aber vielleicht ist die Richtung ja besser?

    Ich habe auch noch folgendes gefunden:
    docs.microsoft.com/en-us/lync/…lync-conversation-samples



    Danke Euch :)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Sub7evenHH“ ()