3

We are trying to figure out whether the latest UCWA or UCMA supports Skype for Business Online. After a long search, I saw someone posted in March/April 2015 and said that UCMA/UCWA did not yet support it. But then, I could not find anything about this.

  1. Is the latest version able to support it?
  2. Where can I find any information about this?
skeletank
  • 2,880
  • 5
  • 43
  • 75
urlreader
  • 6,319
  • 7
  • 57
  • 91

3 Answers3

3

UCWA is now available for Skype for Business Online. The steps to get your UCWA application registered and authenticated are quite different to using UCWA for Skype for Business Server, but once you're signed in, the actual API is almost identical. Right now, the Skype for Business Online version of UCWA has slightly fewer capabilities than the Skype for Business Server version - for example, messages can be sent but not received - though this should change soon.

UCMA is not available for Skype for Business Online for the reasons explained in this question and answer.

Community
  • 1
  • 1
  • thanks. but for UCWA, since need Azure AD authentication, and the procedure includes redirecting to login page, etc. does it mean we can only use it in Web Application? Is there a way to use this in desktop application, i.e. console program? – urlreader May 16 '16 at 21:30
  • Right now, you do need to redirect to the login page. This can be done be desktop apps as well, launching an embedded browser. The [ADAL library](https://msdn.microsoft.com/en-us/library/azure/mt417579.aspx) may help you with this. – Richard Taylor - Microsoft May 18 '16 at 00:45
  • @RichardTaylor-Microsoft The #OfficeDev page documenting the available API's for skype for business should be updated, it currently states UCWA2 is not available online and doesn't say anything about UCMA5 availability online https://dev.office.com/Skype/sdks#UCWA – baywet Feb 28 '17 at 15:13
  • The UCWA documentation also currently states that's it's only available for on prem deployments https://ucwa.skype.com/about-ucwa – baywet Feb 28 '17 at 15:17
1

Skype for Business Online uses Azure AD for authentication, which you can authenticate against using username and password with the ADAL.net library.

http://www.cloudidentity.com/blog/2014/07/08/using-adal-net-to-authenticate-users-via-usernamepassword/

I've created a sample .NET console app that signs into Skype for Business Online using UCWA and username and password authentication. It works in many simple scenarios.

Tam Huynh
  • 177
  • 7
1

Before starting the following steps, user must register an application in Azure AD and give all the access to the necessary API and collect

  • Client ID
  • Client Secert

From PostMan extension: One can follow the following steps a meeting using UCWA on Skype For Business(SFB) online:

Step1 >Get the token for user

1) request in Only IE browser
    https://login.microsoftonline.com/88****-da69-4e7d-a5dc-b3a*****1d/oauth2/authorize?
    response_type=code
    &client_id=6e****44-2**3-4**2-8**c-e*******e72
    &client_secret=bdjmKq**************************nQMtbzA=
    &resource=https://webdirin1.online.lync.com (This url should be used for user)

2) Post request token with code
    https://login.windows.net/88****-da69-4e7d-a5dc-b3a*****1d/oauth2/token
    grant_type=authorization_code
    &client_id=6e****44-2**3-4**2-8**c-e*******e72
    &code=AQABAAIAAABnfiG-mA6NTae7CdWW7Qfda84eiCww0aSunFfvkaLq3OJZBDzX6*****97HQl****dsK53_7iM8Bq_qXWuH6M8TqPu5Py51eSB2QuhQyYcZv_28I36FC7ODudIp9_8zsxUmOKJbZXvDiEk0YjDkfacW2homgolt4mZ-E05_D4j77Gp3b1K0f7yuZbHPFjkvloIvOhPWYT953uIrJvj6Tm8zmTPpcAJeusuilXJAJS3Pl19o7zBwFBJ4EtkK06HsA_uGAZnrD2-0vxWadcUWv-fzijVCtEE9yZGGj6a0SQwu6XKdhunS7waAsKFAjDhJ6fP431pkWoD5mDRtXvz6riYMTLYRNjTS6UWyX2oBNO0DhoNXHG95YAoGDgftBvaUpI9*****ZIFPDUTPcYSRiYcMKF21ILCy1I_scXGmL1QtE1MSQjsu6c1lGZhVqzMEWHX57wcRiEHCTAlao-3fJm-KvYQn1DqiX3tJDkx0cmAEwr6iCeM37QEBKD-PZ0CAUrIY9uwXenaxkunoD_XG5YDuE2in4BcJiDwEccaFh0BdmQXEqln-pd9QgAA&session_state=0b92ca54-cd08-4a28-9f20-216245e289f0
    &redirectUri=http://localhost/TServ
    &resource=https://webdirin1.online.lync.com
    &client_secret=bdjmKq**************************nQMtbzA=

Step 2>Get Application URL:

Request:
URL:https://webdirin1.online.lync.com/Autodiscover/AutodiscoverService.svc/root/oauth/user
    Authorization: Bearer <Previous access code>

Response:

    {
      "_links": {
        "self": {
          "href": "https://webpoolmaain***.infra.lync.com/Autodiscover/AutodiscoverService.svc/root/oauth/user"
        },
        "applications": {
          "href": "https://webpoolmaain***.infra.lync.com/ucwa/oauth/v1/applications",
          "revision": "2"
        },
        "xframe": {
          "href": "https://webpoolmaain***.infra.lync.com/Autodiscover/XFrame/XFrame.html"
        }
      }
    }

Step 3>Get the token for application

1) request in Only IE browser
    https://login.microsoftonline.com/88****-da69-4e7d-a5dc-b3a*****1d/oauth2/authorize?
    response_type=code
    &client_id=6e****44-2**3-4**2-8**c-e*******e72
    &client_secret=bdjmKq**************************nQMtbzA=
    &resource=https://webpoolmaain***.infra.lync.com (this resource url is the application url got it from Step 2)

    response        http://localhost/TServ/?code=AQABAAIAAABnfiG-mA6NTae7CdWW7QfdAe8KrUbxREZpqyau_gGtw4QSTzq5MHmALQQa_n_AvVeK0iMRaESOZMkuGJ1a3bvWEYpMTHOyGfT2r9T8WbeSW7vJR-6Upnv6qI-nrT3kM8jXRni2V9S_y6xibRwDAE160XYeu9aJkbAE9Wq4HquYSUkC1bcNZSqmpubv2MiixMcjwL00YP8c53bRu44yWXr1FWr5Rgnc8VbnoZyxJF7CgfbTOrfDusXeLHj7OGGevyh8ZsKXYxJh9CrZ0u1NyGJgeGPFxDJbUxfkli49MW1x-Lbf2qhdPCN10b_nq3s5YD92Pk_S6mAtfmrVpTalEeHfSBTMqxAVtf3nc6f4QbQvTZx988HoQ_gHLLt_4J9trYTPA-OEmLUvmgu9DQHTpCAg_ACEPvi7bmMkBxtLo7tQp6fSXBUZ5p6buBqNYzPFs8b_BGodkRKU_hDqWbFc-nmHfx7qYmW1gVNB1G9LvfHGVqiNUg3KJBjcmonwKcu-JoYNIucd9xop15OtsBuusLEY8sEVstq9bIYyIw8__xH56MKh7wJTV_cm52qSq4E_d4ogAA&session_state=abe98e32-ffc7-4ed5-94d1-e894ed53d52d

2) post request token with code
    https://login.windows.net/88****-da69-4e7d-a5dc-b3a*****1d/oauth2/token
    grant_type=authorization_code
    &client_id=6e****44-2**3-4**2-8**c-e*******e72      &code=AQABAAIAAABnfiG-mA6**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************37QEBKD-PZ0CAUrIY9uwXenaxkunoD_XG5YDuE2in4BcJiDwEccaFh0BdmQXEqln-pd9QgAA&session_state=0b92ca54-cd08-4a28-9f20-216245e289f0
    &redirectUri=http://localhost/TServ
    &resource=https://webpoolmaain***.infra.lync.com
    &client_secret=bdjmKq**************************nQMtbzA=

    response
    {
      "token_type": "Bearer",
      "scope": "Contacts.ReadWrite Conversations.Initiate Conversations.Receive Meetings.ReadWrite User.ReadWrite",
      "expires_in": "3599",
      "ext_expires_in": "0",
      "expires_on": "1493981291",
      "not_before": "1493977391",
      "resource": "https://webpoolmaain***.infra.lync.com",
      "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6InowMzl6ZHNGdWl6cEJmQlZLMVRuMjVRSFlPMCIsImtpZCI6InowMzl6ZHNGdWl6cEJmQlZLMVRuMjVRSFlPMCJ9.eyJhdWQiOiJodHRwczovL3dlYnBvb2xtYWFpbjEwMi5pbmZyYS5seW5jLmNvbSIsImlzcyI6Imh0dHBzOi8vc3RzLndpbmRvd3MubmV0Lzg4MzU2ZGFjLWRhNjktNGU3ZC1hNWRjLWIzYWM1MzM0MWUxZC8iLCJpYXQiOjE0OTM5NzczOTEsIm5iZiI6MTQ5Mzk3NzM5MSwiZXhwIjoxNDkzOTgxMjkxLCJhY3IiOiIxIiwiYWlvIjoiWTJaZ1lEQXFTWGsrNGVEV3RiRmYyR01ZQmU4ZEZJN1A3UkpQWlRxVjdmRmNPZVRCdFJZQSIsImFtciI6WyJwd2QiXSwiYXBwaWQiOiI2ZTcxZGI0NC0yYjgzLTQ1YTItODcxYy1lY****************************************************************************************************************************************************************************************************************************************************************************************************************************************5ncy5SZWFkV3JpdGUgVXNlci5SZWFkV3JpdGUiLCJzdWIiOiJyZEF3Ql9XTjNQZlRaTEJaMmNfSmlEQ0QwVVFCNWZ0R0Y0Sk5JR25qZjRzIiwidGlkIjoiODgzNTZkYWMtZGE2OS00ZTdkLWE1ZGMtYjNhYzUzMzQxZTFkIiwidW5pcXVlX25hbWUiOiJnb3BhbHJlZGR5QHRlbHBzZ2Nsb3VkLm9ubWljcm9zb2Z0LmNvbSIsInVwbiI6ImdvcGFscmVkZHlAdGVscHNnY2xvdWQub25taWNyb3NvZnQuY29tIiwidmVyIjoiMS4wIn0.BpPYsoUFp4zJQo9Iwllq8bOskKxHom2m9Fw4PXgwZraAfF-LopT54AyNLzfVhjdODbLETl4FnJn140M0pasUI5rMEXYFN2byzusNW3OHojlWbJ5-WpHj8NlQPE02oCwZ81MDqhV1eKjs34rp42F_tQZFXevBJYSMZRATtz4chtQnkzLhJ_c5p4MNmAcA7sdho9kaPUF45tj8bWF9n7ktrD8w2-r0DddKyUW5YXa_pOJzQp4GucoCKBOkIYS85OaAuFe4_kiQOG_dfm1s_HPat4BMyZxMFNuocD0ai-6t7ug7KZ-CK63aqLE9mK9sQSKx9uDo5TOO0-5-FDIIP9eNLA",
      "refresh_token": "AQABAAAAAABnfiG-mA6NTae7CdWW7Qfd2CWLGkoBoN9_yp-MKWaBRNCnAjH_YPC3YvbLUuGyKI4dzd4Y3W7y7-q7529kXaVLYIKDOISVtEKX-oHbNGjB4i2HdBXJpdWoiQsZiA2L7ZszaNevz06qUl5lqZjgzx3Lp5imPOyd0Ib_6****************************************************************************************************************************************************************************************************************************************************************************************************************************************Dpj4JIEjcWW8dDm-iplSLM4XpZJWvQ0hJDijkCOKxlg6Pab88I4YBwcrn1D5e1cS2tX3kVpGMBCN5YfRFHrET98293hd9Y88EmI1AFak3xoMOGPLePwH2C_gp2G-IiLLicNehvBdIAA",
      "id_token": "eyJ0eXAiOiJ****************************************************************************************************************************************************************************************************************************************************************************************************************************************eXRTQ0pJRlNNcWxIRWs3Q3RSODBwTW5XMk1rIiwidGlkIjoiODgzNTZkYWMtZGE2OS00ZTdkLWE1ZGMtYjNhYzUzMzQxZTFkIiwidW5pcXVlX25hbWUiOiJnb3BhbHJlZGR5QHRlbHBzZ2Nsb3VkLm9ubWljcm9zb2Z0LmNvbSIsInVwbiI6ImdvcGFscmVkZHlAdGVscHNnY2xvdWQub25taWNyb3NvZnQuY29tIiwidmVyIjoiMS4wIn0."
    }

Step 4>Get the application resource urls:

    Request Type: Post
    URL :https://webpoolmaain***.infra.lync.com/ucwa/oauth/v1/applications
    Headers:
    Authorization: Bearer <access code from Step 3.2>
    Accept: application/json
    Content-Type: application/json
    Body:
    {
     "UserAgent":"UCWASamples",
     "EndpointId":"88356dac-da69-4e7d-a5dc-b3ac53341e1d",
     "Culture":"en-US"
    }

    Response:
    {
      "culture": "en-US",
      "userAgent": "UCWASamples",
      "type": "Browser",
      "endpointId": "88356dac-da69-4e7d-a5dc-b3ac53341e1d",
      "instanceId": "default",
      "id": "10666478063",
      "_links": {
        "self": {
          "href": "/ucwa/oauth/v1/applications/10666478063"
        },
        "policies": {
          "href": "/ucwa/oauth/v1/applications/10666478063/policies"
        },
        "batch": {
          "href": "/ucwa/oauth/v1/applications/10666478063/batch"
        },
        "events": {
          "href": "/ucwa/oauth/v1/applications/10666478063/events?ack=1&key=c2lwOmdvcGFscmVkZHlAdGVscHNnY2xvdWQub25taWNyb3NvZnQuY29t-10666478063-ZGVmYXVsdA%3D%3D"
        }
      },
      "_embedded": {
        "me": {
          "uri": "sip:g*******y@t*******d.onmicrosoft.com",
          "name": "G**********y",
          "emailAddresses": [
            "g*******y@t*******d.onmicrosoft.com"
          ],
          "_links": {
            "self": {
              "href": "/ucwa/oauth/v1/applications/10666478063/me"
            },
            "makeMeAvailable": {
              "href": "/ucwa/oauth/v1/applications/10666478063/me/makeMeAvailable",
              "revision": "2"
            },
            "photo": {
              "href": "/ucwa/oauth/v1/applications/10666478063/photos/g*******y@t*******d.onmicrosoft.com"
            }
          },
          "rel": "me"
        },
        "people": {
          "_links": {
            "self": {
              "href": "/ucwa/oauth/v1/applications/10666478063/people"
            },
            "presenceSubscriptions": {
              "href": "/ucwa/oauth/v1/applications/10666478063/people/presenceSubscriptions"
            },
            "subscribedContacts": {
              "href": "/ucwa/oauth/v1/applications/10666478063/people/subscribedContacts"
            },
            "presenceSubscriptionMemberships": {
              "href": "/ucwa/oauth/v1/applications/10666478063/people/presenceSubscriptionMemberships"
            },
            "myGroups": {
              "href": "/ucwa/oauth/v1/applications/10666478063/people/groups",
              "revision": "2"
            },
            "myGroupMemberships": {
              "href": "/ucwa/oauth/v1/applications/10666478063/people/groupMemberships",
              "revision": "2"
            },
            "myContacts": {
              "href": "/ucwa/oauth/v1/applications/10666478063/people/contacts"
            },
            "myPrivacyRelationships": {
              "href": "/ucwa/oauth/v1/applications/10666478063/people/privacyRelationships"
            },
            "myContactsAndGroupsSubscription": {
              "href": "/ucwa/oauth/v1/applications/10666478063/people/contactsAndGroupsSubscription"
            },
            "search": {
              "href": "/ucwa/oauth/v1/applications/10666478063/people/search",
              "revision": "2"
            }
          },
          "rel": "people"
        },
        "onlineMeetings": {
          "_links": {
            "self": {
              "href": "/ucwa/oauth/v1/applications/10666478063/onlineMeetings"
            },
            "myOnlineMeetings": {
              "href": "/ucwa/oauth/v1/applications/10666478063/onlineMeetings/myOnlineMeetings"
            },
            "onlineMeetingDefaultValues": {
              "href": "/ucwa/oauth/v1/applications/10666478063/onlineMeetings/defaultValues"
            },
            "onlineMeetingEligibleValues": {
              "href": "/ucwa/oauth/v1/applications/10666478063/onlineMeetings/eligibleValues"
            },
            "onlineMeetingInvitationCustomization": {
              "href": "/ucwa/oauth/v1/applications/10666478063/onlineMeetings/customInvitation"
            },
            "onlineMeetingPolicies": {
              "href": "/ucwa/oauth/v1/applications/10666478063/onlineMeetings/policies"
            },
            "phoneDialInInformation": {
              "href": "/ucwa/oauth/v1/applications/10666478063/onlineMeetings/phoneDialInInformation"
            }
          },
          "rel": "onlineMeetings"
        },
        "communication": {
          "videoBasedScreenSharing": "Enabled",
          "6845cfcf-c21f-4187-8d43-5***e57811a5": "please pass this in a PUT request",
          "supportedModalities": [],
          "supportedMessageFormats": [
            "Plain"
          ],
          "audioPreference": "PhoneAudio",
          "publishEndpointLocation": true,
          "_links": {
            "self": {
              "href": "/ucwa/oauth/v1/applications/10666478063/communication"
            },
            "mediaRelayAccessToken": {
              "href": "/ucwa/oauth/v1/applications/10666478063/communication/mediaRelayAccessToken"
            },
            "mediaPolicies": {
              "href": "/ucwa/oauth/v1/applications/10666478063/mediaPolicies"
            },
            "conversations": {
              "href": "/ucwa/oauth/v1/applications/10666478063/communication/conversations?filter=active"
            },
            "startMessaging": {
              "href": "/ucwa/oauth/v1/applications/10666478063/communication/messagingInvitations",
              "revision": "2"
            },
            "startAudioVideo": {
              "href": "/ucwa/oauth/v1/applications/10666478063/communication/audioVideoInvitations",
              "revision": "2"
            },
            "startOnlineMeeting": {
              "href": "/ucwa/oauth/v1/applications/10666478063/communication/onlineMeetingInvitations?onlineMeetingUri=adhoc"
            },
            "joinOnlineMeeting": {
              "href": "/ucwa/oauth/v1/applications/10666478063/communication/onlineMeetingInvitations"
            },
            "missedItems": {
              "href": "/ucwa/oauth/v1/applications/10666478063/communication/missedItems"
            }
          },
          "rel": "communication",
          "etag": "11133050"
        }
      },
      "rel": "application",
      "etag": "3184910031",
      "expires": "/Date(1494266184733)/"
    }

Step 5>Create Online Meeting:

    Request Type: Post
    URL :https://webpoolmaain***.infra.lync.com/ucwa/oauth/v1/applications/10666478063/onlineMeetings/myOnlineMeetings  
    Headers:
    Authorization: Bearer <access code from Step 3.2>
    Content-Type: application/json      
    Body:
    {
        "accessLevel" : "Everyone",
         "attendanceAnnouncementsStatus":"Disabled",
         "description":"hey guys let's do a musical!",
         "subject":"Party Time",
         "attendees": ["sip:vetrivels@t*******d.onmicrosoft.com","sip:g*******y@t*******d.co.in"],
         "leaders": []
     }

     Response:
     {
          "accessLevel": "Everyone",
          "entryExitAnnouncement": "Disabled",
          "attendees": [
            "sip:vetrivels@t*******d.onmicrosoft.com",
            "sip:g*******y@t*******d.co.in"
          ],
          "automaticLeaderAssignment": "Disabled",
          "description": "hey guys let's do a musical!",
          "leaders": [],
          "onlineMeetingId": "JEHFP54F",
          "onlineMeetingUri": "sip:g*******y@t*******d.onmicrosoft.com;gruu;opaque=app:conf:focus:id:JEHFP54F",
          "legacyOnlineMeetingUri": "conf:sip:g*******y@t*******d.onmicrosoft.com;gruu;opaque=app:conf:focus:id:JEHFP54F?conversation-id=JEHFP54F",
          "onlineMeetingRel": "myOnlineMeetings",
          "organizerUri": "sip:g*******y@t*******d.onmicrosoft.com",
          "phoneUserAdmission": "Disabled",
          "lobbyBypassForPhoneUsers": "Disabled",
          "subject": "Party Time",
          "joinUrl": "https://meet.lync.com/t*******d/g*******y/JEHFP54F",
          "6845cfcf-c21f-4187-8d43-5***e57811a5": "please pass this in a PUT request",
          "_links": {
            "self": {
              "href": "/ucwa/oauth/v1/applications/10666478063/onlineMeetings/myOnlineMeetings/JEHFP54F"
            },
            "onlineMeetingExtensions": {
              "href": "/ucwa/oauth/v1/applications/10666478063/onlineMeetings/myOnlineMeetings/JEHFP54F/extensions"
            }
          },
          "rel": "myOnlineMeeting",
          "etag": "3135154093"
    }

You have the following scope:

  • Contacts.ReadWrite
  • Conversations.Initiate
  • Conversations.Receive
  • Meetings.ReadWrite (Step 5 explains about creation of meeting)
  • User.ReadWrite

Refer: https://msdn.microsoft.com/en-us/skype/ucwa/skypeforbusinessonlinescopepermissions?f=255&MSPPError=-2147217396

A. Gopal Reddy
  • 370
  • 1
  • 3
  • 16
  • Sir.. Please answer my question, https://stackoverflow.com/questions/57170656/skype-for-business-receive-im-not-working-with-the-below-steps .. I am not able to receive im, in skype for business UCWA api. As you have already worked on this, I am not able to receive any IM in UCWA. Please guide me sir. – curious_one Jul 27 '19 at 11:39