[Index]

Model: relation/PRSSwitchREL

VOSS Phone Server

To access the latest documentation, go to Documentation and Resources at: https://voss.portalshape.com

The VOSS phone server provides a method of hosting SIP compliant devices such as phones and softclients where it is not possible or desirable to connect these devices into other vendor platforms.

In an HCS environment, full integration management is provided where all trunk and dialplan related configuration is automatically applied. Other CUCM dialplan designs may be utilised through the VOSS4UC dialplan additions templating feature.

The VOSS Phone Server provides three functions:

  1. A SIP registrar allows the use of SIP devices from any compliant vendor, thereby allowing for a wide choice of phones with various feature sets, including the re-use of existing devices from systems such as Cisco Unified CM and others. Since the registrar requires only account definition per line, there is no phone concept in the Phone Server itself. Phones are represented in VOSS-4-UC and are a local construct only.

  2. A SIP Switch handling SIP call traffic. Calls between phones hosted on the VOSS Phone Server are handled locally and calls to other extensions or PSTN destinations are offloaded over a SIP Trunk

  3. Configuration File Management (Optional). Phone configuration files may be created and hosted in the VOSS Phone Server's tftp server. This allows unconfigured phones (i.e. new unused phones, or factory defaulted old phone stock) to obtain their configuration automatically when connected to the network.

    Sample configuration files for phones from SNOM, Grandstream and Cisco are included.

VOSS-4-UC utilities include:

  1. System setup and Country dialplan management
  2. Evaluation of the number of re-usable Cisco CUM hosted phones
  3. Conversion of Cisco configuration to phone server configuration

The VOSS Phone Server is deployed as an OVA, typically alongside CUCM Virtual Machines in an HCS/CUCM environment. Redundancy is an option, providing data replication between servers.

Managing VOSS Phone Servers

Adding phones requires three areas of configuration. These are all automated by VOSS-4-UC during the phone addition:

Set up call routing

In HCS mode, the CUCM dial plan is created to provide call routing of the chosen numbers towards VOSS Phone Server. This allows incoming call routing. Outbound calling Class of Service and routing are also configured to allow internal extension and E164 call routing. Number inventory and CLI management through transformation patterns are maintained.

  1. Set up the VOSS Phone Server

    VOSS Phone Servers are managed on the customer hierarchy - verify that you are at the customer hierarchy.

  2. Add country support.

    Country support must be added in HCS mode in order to integrate with the HCS dialplan. A template is required for each supported country. GBR and USA are provided by default, and other countries may be created or provided by VOSS as required.

    To add HCS country support, use the "phone server countries" menu item and select the template for the required country. There are no user parameters required.

  3. Configure the physical phone

    In HCS mode, sites must be created with site dialplan and number inventory in the same way as when using Cisco Phones registered directly to CUCM. It is possible to host both CUCM and Phone Server phones at the same site.

    The phone itself requires configuration in order to register and handle calls.

    Soft clients will likely be manually configured locally on the hosting PC, and a "generic soft client" device type allows for locally configured devices.

    Other hardware devices such as phones from SNOM, Cisco and Grandstream may be configured using configuration files hosted on the VOSS Phone Server and downloaded at start up by the phone. TFTP is used to download these files. VOSS Phone Server hosts such files for fully automated configuration of the device.

    See:

Model Details: relation/PRSSwitchREL

Title Description Details
Server Name *
  • Field Name: name
  • Type: String
  • MaxLength: 64
Description *
  • Field Name: description
  • Type: String
  • MaxLength: 128
Version *
  • Field Name: version
  • Type: String
  • MaxLength: 128
  • Choices: ["1.0.0"]
Deployment Mode *
  • Field Name: typeDeploymentMode
  • Type: String
  • MaxLength: 1024
  • Choices: ["HCS", "Standalone"]
HCS CUCM
  • Field Name: cucm.[n]
  • Type: Array
  • Cardinality: [0..16]
CUCM
  • Field Name: cucm.[n].hcsCucm
  • Type: String
Virtual Machine
  • Field Name: virtualMachine
  • Type: String
  • MaxLength: 1024
NTP Server for phones *
  • Field Name: ntpServer
  • Type: String
  • MaxLength: 1024
Application Space
  • Field Name: application_space
  • Type: String
  • MaxLength: 1024
Backup Application Space
  • Field Name: backup_application_space
  • Type: String
  • MaxLength: 1024
Credentials
  • Field Name: credentials.[n]
  • Type: Array
Description
  • Field Name: credentials.[n].description
  • Type: String
  • MaxLength: 128
Type Credential *
  • Field Name: credentials.[n].typeCredential
  • Type: String
  • MaxLength: 1024
  • Choices: ["API", "CLI"]
User ID
  • Field Name: credentials.[n].userID
  • Type: String
  • MaxLength: 256
Password
  • Field Name: credentials.[n].password
  • Type: String
  • Is Password: True
  • Store Encrypted: True
  • MaxLength: 512
Network Addresses
  • Field Name: networkAddresses.[n]
  • Type: Array
Type Address Space *
  • Field Name: networkAddresses.[n].typeAddressSpace
  • Type: String
  • MaxLength: 1024
  • Choices: ["APPLICATION_SPACE", "SERVICE_PROVIDER_SPACE", "CUSTOMER_SPACE", "BACKUP_APPLICATION_SPACE"]
Description
  • Field Name: networkAddresses.[n].description
  • Type: String
  • MaxLength: 128
IP Addr V4
  • Field Name: networkAddresses.[n].iPAddrV4
  • Type: String
  • MaxLength: 64
Conn Parms
  • Field Name: connParms
  • Type: Object
Name * Name for this instance of generic driver connection details.
  • Field Name: connParms.name
  • Type: String
Description * Description for this instance of generic driver connection details.
  • Field Name: connParms.description
  • Type: String
Version * Version of models to use.
  • Field Name: connParms.version
  • Type: String
  • Pattern: ^[0-9]+?(\.[0-9]+?)+?$
Authentication Method * Type of authentication to use when interfacing to the external service.
  • Field Name: connParms.auth_method
  • Type: String
  • Choices: ["HTTP Basic Authentication", "OAuth(OApen Authorization)", "Session Based Authentication", "Broadsoft OCIP socket based authentication protocol"]
Username Username to use with specified authentication method.
  • Field Name: connParms.username
  • Type: String
Password Password to use with specified authentication method.
  • Field Name: connParms.password
  • Type: String
  • Is Password: True
  • Store Encrypted: True
Token Token to use with specified authentication method.
  • Field Name: connParms.token
  • Type: String
  • Is Password: True
  • Store Encrypted: True
Test Connection URI URI to use when testing connection to external service, e.g. https://service.domain/api/health, {{ driver_parameters.host_base }}/status
  • Field Name: connParms.test_connection_uri
  • Type: String
Secure Driver Parameters Additional secure parameters for the driver
  • Field Name: secure_driver_parameters.[n]
  • Type: Array
Name * Name of additional secure driver parameter.
  • Field Name: connParms.secure_driver_parameters.[n].name
  • Type: String
Value * Value of additional secure driver parameter.
  • Field Name: connParms.secure_driver_parameters.[n].value
  • Type: String
  • Is Password: True
  • Store Encrypted: True
Driver Parameters Additional parameters for the driver
  • Field Name: driver_parameters.[n]
  • Type: Array
Name * Name of additional driver parameter.
  • Field Name: connParms.driver_parameters.[n].name
  • Type: String
Value * Value of additional driver parameter.
  • Field Name: connParms.driver_parameters.[n].value
  • Type: String
Default Request Headers Default HTTP request headers to send with all device model API operation requests. Defaults specified here will be overriden by request headers specified on individual device model API operation definitions.
  • Field Name: default_request_headers.[n]
  • Type: Array
Name * Name of HTTP request header, e.g. Accept.
  • Field Name: connParms.default_request_headers.[n].name
  • Type: String
Value * Value of HTTP request header, e.g. text/plain.
  • Field Name: connParms.default_request_headers.[n].value
  • Type: String
Default Response Handlers Default handlers to execute on all API operation responses. Only those response handlers' which condition evaluates to True are executed.
  • Field Name: default_response_handlers.[n]
  • Type: Array
Condition * Jinja template which if evaluation results in a value of True will cause the specified handler type to be executed, e.g. {{ status_code == 429 }}.
  • Field Name: connParms.default_response_handlers.[n].condition
  • Type: String
Type * Response handler type to execute if specified condition evaluates to True, e.g. Backoff & Retry.
  • Field Name: connParms.default_response_handlers.[n].type
  • Type: String
  • Choices: ["Backoff & Retry", "Failure - Duplicate", "Invalid Session"]
Session Based Auth Request Describes the API request required to obtain a valid auth token.
  • Field Name: session_based_auth_request
  • Type: Object
Login URI URI for the initial Login request. This is a jinja template with custom functions and driver parameter context available.
  • Field Name: connParms.session_based_auth_request.login_uri
  • Type: String
Login HTTP Method HTTP method for initial login request. Default: POST
  • Field Name: connParms.session_based_auth_request.login_http_method
  • Type: String
  • Default: POST
  • Choices: ["GET", "POST"]
Login Request Headers Request headers for the initial login request.
  • Field Name: login_request_headers.[n]
  • Type: Array
Header Name Name of session request header, e.g. Cookie.
  • Field Name: connParms.session_based_auth_request.login_request_headers.[n].session_header_name
  • Type: String
Header Value Value of session request header, e.g. session=12345. This is a jinja template with custom functions and driver parameter context available.
  • Field Name: connParms.session_based_auth_request.login_request_headers.[n].session_header_value
  • Type: String
Login Request Body Template (POST) Request body for the initial login request if the method is POST. This is a jinja template with custom functions and driver parameter context available.
  • Field Name: connParms.session_based_auth_request.request_template
  • Type: String
Session Expire Time (min) The amount of time a session is valid specified in minutes.
  • Field Name: connParms.session_based_auth_request.session_expire_minutes
  • Type: Integer
Headers To Cache Session headers to capture from the login response and include for requests after the initial login.
  • Field Name: session_headers.[n]
  • Type: Array
Header Name Name of session request header, e.g. Cookie.
  • Field Name: connParms.session_based_auth_request.session_headers.[n].session_header_name
  • Type: String
Header Value Value of session request header, e.g. session=12345. This is a jinja template with custom functions and response body, header & cookie context available.
  • Field Name: connParms.session_based_auth_request.session_headers.[n].session_header_value
  • Type: String
Common Actions Actions used identically by many device models
  • Field Name: common_actions.[n]
  • Type: Array
Action * Name of the device model operation for e.g. add
  • Field Name: connParms.common_actions.[n].action
  • Type: String
URI URI for the API request
  • Field Name: connParms.common_actions.[n].uri
  • Type: String
Target Target of this operation Default: HTTP
  • Field Name: connParms.common_actions.[n].target
  • Type: String
  • Default: HTTP
  • Choices: ["HTTP", "Browser", "SOAP", "Socket", "winrm"]
Request Format Request format Default: JSON
  • Field Name: connParms.common_actions.[n].request_format
  • Type: String
  • Default: JSON
  • Choices: ["JSON", "XML", "string"]
Response Format Response format Default: JSON
  • Field Name: connParms.common_actions.[n].response_format
  • Type: String
  • Default: JSON
  • Choices: ["JSON", "XML"]
HTTP Method HTTP method for API request Default: get
  • Field Name: connParms.common_actions.[n].http_method
  • Type: String
  • Default: get
  • Choices: ["GET", "POST", "PATCH", "PUT", "DELETE"]
Response Code Template Jinja template for mapping API endpoint specific error/status response
  • Field Name: connParms.common_actions.[n].response_code_template
  • Type: String
Request Headers HTTP request headers to send with API operation request. Takes precedence over default request headers specified on related Connection Parameters Type instance.
  • Field Name: request_headers.[n]
  • Type: Array
Name * Name of HTTP request header, e.g. Accept.
  • Field Name: connParms.common_actions.[n].request_headers.[n].name
  • Type: String
Value * Value of HTTP request header, e.g. text/plain.
  • Field Name: connParms.common_actions.[n].request_headers.[n].value
  • Type: String
Response Handlers Handlers to execute on API responses. Only those response handlers' which condition evaluate to True are executed.
  • Field Name: response_handlers.[n]
  • Type: Array
Condition * Jinja template which if evaluation results in a value of True will cause the specified handler type to be executed, e.g. {{ status_code == 429 }}.
  • Field Name: connParms.common_actions.[n].response_handlers.[n].condition
  • Type: String
Type * Response handler type to execute if specified condition evaluates to True, e.g. Backoff & Retry.
  • Field Name: connParms.common_actions.[n].response_handlers.[n].type
  • Type: String
  • Choices: ["Backoff & Retry", "Failure - Duplicate"]
Variables List of context variables availble to template rendering (supports Macros)
  • Field Name: variables.[n]
  • Type: Array
Name Context variable name. This will appear in the context as 'variables.<name>'
  • Field Name: connParms.common_actions.[n].variables.[n].name
  • Type: String
Value Value of this variable. This field supports Macros
  • Field Name: connParms.common_actions.[n].variables.[n].value
  • Type: String
Pre-request Calls List of API calls to make before making this request
  • Field Name: pre_request_calls.[n]
  • Type: Array
Post-request Calls List of API calls to make after making this request
  • Field Name: post_request_calls.[n]
  • Type: Array
Request Template Jinja template for API request. Maps system schema to external application schema.
  • Field Name: connParms.common_actions.[n].request_template
  • Type: String
Response Template Jinja template for API response. Maps external application schema to system schema.
  • Field Name: connParms.common_actions.[n].response_template
  • Type: String