Table of Contents |
---|
Account Prerequisites for Cloud Video
test_mate Webex Calling requires a Webex integration account, a Webex end-user account.
Call routing between the CUCM hosting the JTAPI remote and the webex calling MT organsiation organisation must exist
Only the primary device for users can be tests if a use has phones - the XSI api that test_mate uses only allows testing of primary device
Web based webex client is not supportedThe following webex clients are not supported
Web based
Mobile
Tablet
To test Webex desktop client the user under test must only have the Desktop webex application enabled, Web Mobile and Tablet must not be checked
...
Webex Integration Account
...
Create a new Webex integration app at the Webex developer portal https://developer.webex.com/my-apps
Select No to Mobile SDK
Provide an integration name, logo
add the redirect URL from the test_mate Webex interface
Set the permissions to the following
Info |
---|
Please note the Client secret, as it won't be shown again. |
Note |
---|
The scope spark-admin:xsi for administrator access to Xsi is required for test_mate webex calling MT. In order to request the appropriate scopes, an email is sent to webex_calling_xsi_access@cisco.com with the request for the scopes to be granted for each organisation, when sending the email include the orgId. |
Permissions in test_mate Webex API v2.5.17 - Note that new scopes may be added by Cisco
...
Webex Permission enabled
...
Scope
...
☑
...
meeting:schedules_read
...
☑
...
meeting:schedules_write
...
☑
...
meeting:recordings_read
...
☑
...
meeting:recordings_write
...
meeting:preferences_read
...
meeting:preferences_write
...
☑
...
meeting:controls_read
...
☑
...
meeting:controls_write
...
☑
...
meeting:participants_read
...
☑
...
meeting:participants_write
...
☑
...
meeting:admin_participants_read
...
spark-admin:telephony_config_read
...
spark-admin:telephony_config_write
...
☑
...
meeting:admin_schedule_read
...
☑
...
meeting:admin_schedule_write
...
meeting:admin_recordings_read
...
meeting:admin_recordings_write
...
☑
...
meeting:admin_transcripts_read
...
meeting:admin_preferences_write
...
meeting:admin_preferences_read
...
spark-compliance:meetings_read
...
☑
...
meeting:transcripts_read
...
spark-compliance:meetings_write
...
☑
...
spark-admin:workspace_locations_read
...
spark-admin:workspace_locations_write
...
spark-admin:workspace_metrics_read
...
spark-admin:broadworks_billing_reports_read
...
spark-admin:broadworks_billing_reports_write
...
spark:allFull
...
☑
...
spark:calls_read
...
☑
...
spark:devices_read
...
spark:devices_write
...
spark:memberships_read
...
spark:memberships_write
...
spark:messages_read
...
spark:messages_write
...
☑
...
spark:organizations_read
...
☑
...
spark:people_read
...
spark:people_write
...
☑
...
spark:places_read
...
spark:places_write
...
☑
...
spark:rooms_read
...
spark:rooms_write
...
spark:team_memberships_read
...
spark:team_memberships_write
...
spark:teams_read
...
spark:teams_write
...
☑
...
spark:xapi_statuses
...
☑
...
spark:xapi_commands
...
☑
...
spark:xsi
...
spark-admin:devices_read
...
spark-admin:devices_write
...
☑
...
spark-admin:licenses_read
...
☑
...
spark-admin:organizations_read
...
spark-admin:organizations_write
...
☑
...
spark-admin:people_read
...
spark-admin:people_write
...
☑
...
spark-admin:places_read
...
spark-admin:places_write
...
☑
...
spark-admin:resource_group_memberships_read
...
spark-admin:resource_group_memberships_write
...
☑
...
spark-admin:resource_groups_read
...
☑
...
spark-admin:roles_read
...
☑
...
spark-admin:call_qualities_read
...
☑
...
spark-admin:workspaces_read
...
spark-admin:workspaces_write
...
☑
...
spark-admin:xsi
...
☑
...
spark-compliance:events_read
...
☑
...
spark-compliance:memberships_read
...
spark-compliance:memberships_write
...
☑
...
spark-compliance:messages_read
...
spark-compliance:messages_write
...
☑
...
spark-compliance:rooms_read
...
spark-compliance:rooms_write
...
☑
...
spark-compliance:team_memberships_read
...
spark-compliance:team_memberships_write
...
☑
...
spark-compliance:teams_read
...
☑
...
spark-admin:broadworks_enterprises_read
...
☑
...
identity:placeonetimepassword_create
...
☑
...
Identity:one_time_password
...
spark-compliance:webhooks_write
...
☑
...
spark-compliance:webhooks_read
...
spark:calls_write
...
☑
...
spark-admin:wholesale_billing_reports_read
...
☑
...
spark-admin:hybrid_clusters_read
...
spark-admin:wholesale_billing_reports_write
...
☑
...
spark-admin:hybrid_connectors_read
...
☑
...
spark-admin:broadworks_subscribers_read
...
spark-admin:broadworks_subscribers_write
...
☑
...
analytics:read_all
...
☑
...
audit:events_read
...
spark-admin:wholesale_customers_write
...
spark-admin:wholesale_customers_read
...
spark-admin:wholesale_subscribers_write
...
spark-admin:wholesale_subscribers_read
...
identity:tokens_read
...
identity:tokens_write
...
spark-admin:broadworks_enterprises_write
Webex interface setup
using yarnlab webex Integration
To get up and running use the yarnlab webex integration, this already has the XSI feature enabled, with the correct permissions set.
You authorise the integration with your own webex admin credentials that has access to control phones.
Add Webex Interface
Each webex organisation will require a dedicated interface at this time although the same Webex XSI oAuth Integration can be used
Log in to Yarnman, open Administration App-> Interfaces.
...
To configure the proxy, toggle the Enable Proxy to ON, and provide the HTTP Proxy details, which will be used for both HTTP/S.
Request Webex XSI intergration
Warning |
---|
Contact Yarnlab support to get an integration created https://support.yarnlab.io/ or support@yarnlab.ioProvide Yarnlab with the redirect URL provided on the interface page as per below, This will be unique per interface added and if multiple organisations/interfaces are being tested multiple redirect URLs will need to be provided |
...
Arm Bindings and Webex Credentials
Firefox is required to perform the OAuth part of the Webex credentials. for Yarnman version 2.5.24 and lower
Select Node to bind the interface and click Bind to Arm
Info |
---|
Note the Redirect URL; This will be needed in the credentials settings and the Webex integration portal.For Yarnman V 2.6.3 and higher select test_mate-WxC as the role before continuing, refer to https://yarnlab.atlassian.net/wiki/spaces/YSP/pages/2918973483/Yarnman+Photon+Interfaces for more information |
Click Update / Set Credentials to enter the Webex details.
Enter in the Application name of yarnlab-integration , Client ID as Provided by Yarnlab and the Redirect URL from the Arm Binding page and click Submit
you will be presented with the Webex OAuth login flow; provide the Webex user details that will be used for test_mate
Note |
---|
Yarnlab do NOT need to know the webex credentials |
...
Info |
---|
The test_mate Webex user will be used to schedule and admit participants into meetings and should be the same user as the Microsoft graph interface. |
If prompted, accept the Webex permissions to be granted.
You will be redirected back to test_mate to re-authenticate, login as the yarnman administrator.
Finally, add the Client Secret provided with the Webex app setup yarnlab and click submit.
...
The interface page will refresh and the Access Token Expires and Refresh Token will be populated with expiry dates.
Test Webex connection
Click the Test Connection button. This will return the Webex user details that granted the Webex integration.
...
Webex Calling (WbC-MT) Test Plan
...
Test plan settings
Setting | Description |
---|---|
Name | Name of the test plan. |
Webex Account / Interface | name of the webex interface used for testing |
Webex Organization | organisation that is use including xsi url |
Endpoints | List of webex calling endpoints |
Webex Request Pause After Error (secs) | Time to wait after a backoff error during a Webex request (i.e. status, join or mute). |
Webex Request Retries After Error | How many times to retry before raising an error, related to the pause above. |
...
Test Runs Results
...
Troubleshooting
...
Suggested course of action:
...
Try using an alternate browser such as Firefox .in a private window/tab
Info |
---|
Webex requires the request permission from test_mate to match the configured permissions in Webex. Else the integration will fail. |
...
Ensure the Redirect URL is the same as displayed within the test_mate interface.Remove any spaces from the URL's beginning and/or end when using copy/paste to Webex.
Ensure this URL has been provided to yarnlab, as yarnlab need to add this to the integration
Info |
---|
Deleting and re-adding an interface will create a new unique redirect URL |
...
Problem: DNS access and/or internet access are unavailable
...
Direct internet access will need to be able to resolve the webexapi url
Below shows the yarnman server not able to resolve DNS
Code Block |
---|
yarnman@yarnman:/opt/yarnlab/yarnman/scripts$ curl "https://webexapis.com" -I
curl: (6) Could not resolve host: webexapi.com
yarnman@yarnman:/opt/yarnlab/yarnman/scripts$ |
Set the DNS server via systemd
Code Block |
---|
sudo systemd-resolve --interface=ens33 --set-dns=8.8.8.8
yarnman@yarnman:/opt/yarnlab/yarnman/scripts$ curl "https://webexapis.com" -I
HTTP/2 401
x-content-type-options: nosniff
trackingid: ROUTERGW_xxxxxx
vary: accept-encoding
content-type: application/json
date:
server: istio-envoy
x-envoy-upstream-service-time: 2 |
Below shows successful connection via a proxy
Code Block |
---|
yarnman@yarnman:/opt/yarnlab/yarnman/scripts$ curl --proxy "http://10.101.10.87:3130" "https://webexapis.com/" -I
HTTP/1.1 200 Connection established
HTTP/2 401
x-content-type-options: nosniff
trackingid: ROUTERGW_xxxxxx
vary: accept-encoding
content-type: application/json
date:
server: istio-envoy
x-envoy-upstream-service-time: 2 |
Below shows proxy requiring authentication
Code Block |
---|
yarnman@yarnman:/opt/yarnlab/yarnman/scripts$ curl --proxy "http://10.101.10.87:3129" "https://webexapis.com/" -I
HTTP/1.1 407 Proxy Authentication Required
Server: squid/4.13
Mime-Version: 1.0
Date:
Content-Type: text/html;charset=utf-8
Content-Length: 3516
X-Squid-Error: ERR_CACHE_ACCESS_DENIED 0
Vary: Accept-Language
Content-Language: en
Proxy-Authenticate: Digest realm="web-proxy", nonce="", qop="auth", stale=false
X-Cache: MISS from 18a6e4fa9a26
X-Cache-Lookup: NONE from 18a6e4fa9a26:3128
Via: 1.1 18a6e4fa9a26 (squid/4.13)
Connection: keep-alive
curl: (56) Received HTTP code 407 from proxy after CONNECT |