diff options
Diffstat (limited to 'protocols/Teams/src/teams_server.cpp')
| -rw-r--r-- | protocols/Teams/src/teams_server.cpp | 28 |
1 files changed, 16 insertions, 12 deletions
diff --git a/protocols/Teams/src/teams_server.cpp b/protocols/Teams/src/teams_server.cpp index dc51e1ed67..472360eac7 100644 --- a/protocols/Teams/src/teams_server.cpp +++ b/protocols/Teams/src/teams_server.cpp @@ -155,22 +155,26 @@ void CTeamsProto::CreateSubscription() void CTeamsProto::CreateContactSubscription() { - OBJLIST<char> skypenames(1); + CMStringA szUrl = m_szTrouterSurl; + if (szUrl[szUrl.GetLength() - 1] != '/') + szUrl += "/"; + szUrl += "TeamsUnifiedPresenceService"; + + JSONNode listAdd(JSON_ARRAY); listAdd.set_name("subscriptionsToAdd"); for (auto &hContact : AccContacts()) - if (!isChatRoom(hContact)) - skypenames.insert(newStr(getId(hContact))); - - JSONNode contacts(JSON_ARRAY); contacts.set_name("contacts"); - for (auto &it : skypenames) { - JSONNode contact; - contact << CHAR_PARAM("id", it); - contacts << contact; - } + if (!isChatRoom(hContact)) { + JSONNode contact; + contact << CHAR_PARAM("mri", getId(hContact)); + listAdd << contact; + } + + JSONNode listRemove(JSON_ARRAY); listRemove.set_name("subscriptionsToRemove"); JSONNode node; - node << contacts; + node << CHAR_PARAM("trouterUri", szUrl) << BOOL_PARAM("shouldPurgePreviousSubscriptions", true) + << listAdd << listRemove; - auto *pReq = new AsyncHttpRequest(REQUEST_POST, HOST_DEFAULT, "/users/ME/contacts"); + auto *pReq = new AsyncHttpRequest(REQUEST_POST, HOST_PRESENCE, "/pubsub/subscriptions/" + m_szEndpoint); pReq->m_szParam = node.write().c_str(); PushRequest(pReq); } |
