@@ -841,6 +841,10 @@ class SkypeEndpoint(SkypeObj):
841
841
842
842
attrs = ("id" ,)
843
843
844
+ resources = ["/v1/users/ME/conversations/ALL/properties" ,
845
+ "/v1/users/ME/conversations/ALL/messages" ,
846
+ "/v1/threads/ALL" ]
847
+
844
848
def __init__ (self , conn , id ):
845
849
"""
846
850
Create a new instance based on a newly-created endpoint identifier.
@@ -853,6 +857,7 @@ def __init__(self, conn, id):
853
857
self .conn = conn
854
858
self .id = id
855
859
self .subscribed = False
860
+ self .subscribedPresence = False
856
861
857
862
def config (self , name = "skype" ):
858
863
"""
@@ -890,14 +895,29 @@ def subscribe(self):
890
895
"""
891
896
self .conn ("POST" , "{0}/users/ME/endpoints/{1}/subscriptions" .format (self .conn .msgsHost , self .id ),
892
897
auth = SkypeConnection .Auth .RegToken ,
893
- json = {"interestedResources" : ["/v1/threads/ALL" ,
894
- "/v1/users/ME/contacts/ALL" ,
895
- "/v1/users/ME/conversations/ALL/messages" ,
896
- "/v1/users/ME/conversations/ALL/properties" ],
897
- "template" : "raw" ,
898
- "channelType" : "httpLongPoll" })
898
+ json = {"interestedResources" : self .resources ,
899
+ "channelType" : "HttpLongPoll" ,
900
+ "conversationType" : 2047 })
899
901
self .subscribed = True
900
902
903
+ def subscribePresence (self , contacts ):
904
+ """
905
+ Enable presence subscriptions for the authenticated user's contacts.
906
+
907
+ Args:
908
+ contacts (.SkypeContacts): contact list to select user IDs
909
+ """
910
+ if not self .subscribed :
911
+ self .subscribe ()
912
+ resources = list (self .resources )
913
+ for contact in contacts :
914
+ resources .append ("/v1/users/ME/contacts/8:{}" .format (contact .id ))
915
+ self .conn ("PUT" , "{0}/users/ME/endpoints/{1}/subscriptions/0" .format (self .conn .msgsHost , self .id ),
916
+ auth = SkypeConnection .Auth .RegToken ,
917
+ params = {"name" : "interestedResources" },
918
+ json = {"interestedResources" : resources })
919
+ self .subscribedPresence = True
920
+
901
921
def getEvents (self ):
902
922
"""
903
923
Retrieve a list of events since the last poll. Multiple calls may be needed to retrieve all events.
0 commit comments