SAP Knowledge Base Article - Public

3371582 - CTI Widget Content Blocked

Symptom

  • You have configured the CTI for telephony and you experience the following error on the CTI widget:
  • This content is blocked. Contact the site owner to fix the issue.
  • Browser's DevTool Console logs will display the error:
    • "Refused to frame 'xyz****' because it violates the following...Content Security Policy directive: "frame-src data:" or
    • "Refused to frame 'xyz****' because an ancestor violates the following Content Security Policy directive: "frame-ancestors 'none'"."

Environment

  • SAP Service Cloud Version 2 1.0
  • SAP Sales Cloud Version 2 1.0

Reproducing the Issue

  1. Add the business service ctiService to the business role to enable CTI.
  2. Enable the application sap.crm.ctiservice.uiapp.ctiAdmin to enable administrators to access the CTI configuration settings.
  3. Enable the application sap.crm.ctiservice.uiapp.cti to enable access to the CTI login and interaction screens.
  4. User then get the following error on the CTI widget, when configured CTI for telephony: This content is blocked. Contact the site owner to fix the issue.

Cause

This problem occurs since the provider's domain was not included as stated in the Content Security Policy Settings as a script source.

Resolution

  1. Identify the CTI URL Provider used (**to ilustrate the next step, let's imagine the URL is https://login-xyz-c2.cc.example.com/demo/v1/widget.html)
    1. Navigate to your User Menu > Settings>  All Settings >  CTI >  CTI Configuration.
    2. Enter the name of the provider, provider ID, and the provider URL (make sure you are using a valid provider URL)
    3. If the above is not maintained, please do so and save your changes.
  2. Modify or create a new Content Security Policy
    1. Navigate to your User
    2. Click on Menu > Settings > All Settings > General > Content Security Policy Settings.
    3. Click the '+' button and add the provider domain to the following as a sub-domain (as per the above illustration):
      • Script Source: (Based on the above example, the URL should be *.cc.example.com)
      • Frame Source: (Based on the above example, the URL should be *.cc.example.com)
      • If the domain has a specific port, like 8080 or 8443 then this also needs to be added like *.cc.example.com:8080
  3. If the error is "Refused to frame 'xyz****' because an ancestor violates the following Content Security Policy directive: "frame-ancestors 'none'"."
    • This means that the webapp/site being loaded in the Iframe does not allow the site to be loaded
    • In these cases, the widget provider needs to allow "frame-ancestors". For example, using "Content-Security-Policy: frame-ancestors 'self';"

      Key Points:

      • 'frame-ancestors': Controls what domains can embed the page.
      • 'none': Means no domain is allowed to embed the page.
      • 'self': Allows the site itself to embed its own content.

See Also

  • CTI stands for Computer Telephony Integration;
  • This integration enables the system to handle incoming calls, extract information from databases based on phone numbers, and, in certain scenarios, intelligently route calls to specific individuals.
  • It's important to note that, at present, only outbound call are supported.

Keywords

CTI;content; Widget; CNS; SCV2, blocked, widget, telephony, Sinch, Avaya, CMC, Genesys , KBA , CEC-CRM-INT , Integration for SAP Sales/Service Cloud , CEC-CRM-CTI , CTI for SAP Sales/Service Cloud , How To

Product

SAP Service Cloud Version 2 all versions