Computer Telephony Integration

  • Release version: Zurich
  • Updated July 31, 2025
  • 2 minutes to read
  • Summarize
    Summarized using AI
    This content was generated using new OpenAI-powered functionality. Results are provided on an as is basis and are not guaranteed to be accurate or complete.

    Summary of Computer Telephony Integration

    Computer Telephony Integration (CTI) in ServiceNow enables the CTI client on a user's machine to send a URL to the ServiceNow instance to trigger call-related workflows. This URL contains parameters that help identify the caller, link to existing incidents, and customize the incident form view. CTI functionality is secured and accessible only to authenticated users.

    Show full answer Show less

    Key Features

    • URL Structure and Parameters: The CTI URL includes the instance base URL and parameters such as sysparmcallername (user name), sysparmcallerphone (user phone number), sysparmtaskid (existing incident ID), sysparmview (view name), and custom field parameters like sysparmpriority. These parameters enable precise identification and data pre-population on incident forms.
    • Custom CTI Processing Scripts: You can specify a custom function for CTI processing using the sysparmctirule parameter. The custom function must be client-callable and defined in a sysscript record. However, any database write operations (insert, update, delete) must be handled by a non-client-callable server-side function.
    • Client-Callable Script Configuration: To make a script client-callable, enable the "client-callable" checkbox on the script record form. This checkbox may require form customization to become visible.
    • Parameter Access in Business Rules: URL parameters are exposed as global variables within business rules, enabling dynamic behavior based on caller information.
    • Default CTI Processing Behavior: If no custom processing rule is specified, the default CTI script attempts to identify the user by name or phone number. If the user has open incidents, the popup displays those incidents; otherwise, it shows a new incident form pre-populated with provided data. Handling for existing task IDs is commented out and requires customization.

    Practical Implications for ServiceNow Customers

    • Use CTI URLs to integrate telephony systems directly with ServiceNow, streamlining incident creation and caller identification.
    • Customize CTI processing scripts to tailor call handling logic while adhering to client-callable and server-side execution requirements.
    • Ensure authenticated user access to CTI URLs to maintain security and control over call data and incident management.
    • Modify the default CTI Processing script if you need to handle task-specific popups or complex call workflows beyond the out-of-the-box functionality.
    • Leverage global URL parameters in business rules to create dynamic and context-aware CTI experiences for your agents.

    Computer Telephony Integration (CTI) is accomplished by the CTI client on the user machine sending a URL to the instance.

    The URL must have the following components:
    1. The base URL. For example: https://<instance name>.service-now.com/cti.do? would get to the instance and ask for CTI processing. The URL is accessible to authenticated users only.
    2. Parameters identify what parts of the incident form to display.
      • sysparm_caller_name=name where 'name' is the name for a user.
      • sysparm_caller_phone=phone where 'phone' is the user's phone number. Either a name or phone should be provided if you want to identify the user on the call. Other parameters may be supplied to identify the user as discussed later.
      • sysparm_task_id=taskID where 'taskID' identifies an existing issue that the caller is calling about.
      • sysparm_view=view where 'view' is the name of the view to be used to display the data.
      • sysparm_xxxx=value where 'xxxx' is the name of a field within the 'incident' record that should be populated with the specified 'value'. For example sysparm_priority=1 would result in the priority field set to value of 1 when the new incident screen is shown.
      • sysparm_cti_rule=name where 'name' is the name of a function to be invoked for CTI processing rather than using the default script. The function must be defined in a sys_script entry marked client callable. If the function needs to insert, update, or delete any GlideRecord(s), it must call a separate non-client callable function to perform the update(s).
        Note:
        While the CTI Processing script has been changed to be client callable, the code implementing the task view has been commented out. You must implement a new non-client-callable function for the code that performs the task.update().

        To make a script client-callable you must check the client-callable checkbox on the form that displays when the sys_script entry is displayed. The client-callable checkbox might not show by default. To show the client-callable checkbox, you may need to modify the fields that show on the form using the gear icon and slushbucket mechanism.

        Parameters on the URL are available to the business rule as global values. For example:
        var name = sysparm_caller_name;
        The business rule you specify must return the URL for the pop-up screen, and set the 'answer' global variable.
    An example URL to bring up a screen shot for user Don Goodliffe would look like the following. https://<instance name>.service-now.com/cti.do?sysparm_caller_name=Don%20Goodliffe Multiple sysparm parameters can be used, separated by ampersands (&).

    CTI Processing script

    When the sysparm_cti_rule parameter is not specified, the system uses the CTI Processing script to provide the following functionality.

    The CTI Processing script does the following:
    1. Tries to identify the user by the sysparm_caller_name value if it was supplied.
    2. If no user has been found, the script tries to identify the user by the sysparm_caller_phone value if it was supplied.
    3. If a user has been identified then one of the following is done
      1. If the user has open incidents, the popup screen shows information about the current caller and all the user's open incidents.
      2. If the user does not have any open incidents, the popup screen shows a new incident with information provided in the URL shown.
    4. If a user was not identified and a taskID is given and the taskID exists, then nothing happens. The code to handle this case is commented out. If you want the popup screen to show the details for the task, you must modify the CTI Processing script to put the functionality in a separate non-client-callable function.