Core Concepts of CVG

‘Voice-ify’ your Calls

With our user-friendly REST-based APIs you can handle your incoming and outgoing calls just as easy as web requests. You only need to implement a few web hooks to get informed about new calls and to receive utterances as text.

Use the programming language, NLU and NLP you love to build applications like voicebots and assistants. Send text back to us for a spoken answer. Use SSML too make the answer sound more natural.

Cloud Platform

CVG is a Cloud Platform, fully operated in a carrier-grade datacenter on our own hardware in Frankfurt, Germany. For our international customers we can make CVG available in our datacenters in Atlanta, Georgia, USA, and Singapore.

Project

A CVG project is the link between the caller and the text-based bot of the customer:

  • One CVG project is required per bot and per language.

  • A telephone number assigned to the project can be used to call the bot.

  • A project can be identified by a generated project token.

  • A project is assigned to one CVG account (of one CVG customer).

Dialog and Bot

Each call linked with a CVG project is considered as a dialog.

A dialog starts with the beginning of the phone call and ends with the end of the call. It includes the complete conversation in this phone call between the caller and a bot.

CVG generates permanent, unique dialog identifiers (dialogId) that remain valid for the duration of a call. It notifies the bot about each new call and passes the dialog identifier along.

The following image shows a general sequence diagram of such a dialog. “Bot” (also known as “Virtual Agent”) in this picture summarizes

  • the integration service (provided by CVG ord 3rd party) plus

  • the 3rd party conversational AI (e.g. Boost.ai, Cognigy, Dialogflow, Jovo, Parlamind, Ubitec) plus

  • the specific bot implementation (such as intent recognition and answer generation).

        sequenceDiagram;
Caller->>CVG: Phone Call
CVG->>Bot: POST /session
loop dialog between Caller and Bot
Bot->>CVG: POST /call/say
note left of Bot: text
CVG->>Caller: audio announcement
note right of Caller: speech
alt something is said
Caller->>CVG: some utterance
note right of Caller: speech
CVG->>Bot: POST /message
note left of Bot: text
else nothing is said
note right of Bot: inactivityTimeout<br/>defined in CVG project<br/>
CVG->>Bot: POST /inactivity
end
end
Bot->>CVG: POST /call/say
note right of Bot: final words of Bot<br/>in this dialog
Bot->>CVG: POST /call/drop
CVG->>Caller: Phone Call on CVG dropped
    

Organizational Units

CVG has four organizational units, with a 1:n relation from each unit to the next:

  1. Resellers

  2. Customers

  3. Accounts

  4. Projects

Resellers

Resellers are service providers. A reseller forms the root of the organizational structure. Everything else on the platform, except for certain globally shared resources (speech cloud profiles, platform numbers), is linked to a reseller.

Customers & Accounts

Each reseller can have an arbitrary number of customers, which would represent its own direct customers (customer = company = legal entity). Each customer can have an arbitrary number of accounts below it, representing a level of customer-specific organizational separation (account = business unit).

Projects

Accounts, and only accounts, can have an arbitrary number of projects. A project represents a single voice bot, with all the necessary configuration to make it work (languages, speech vendors, voice options, bot configuration, …).

Hierarchical Settings

Some settings can be configured on each level of the hierarchy (reseller, customer, account and project). These settings act as constraints for the child units:

  • call recordings can only be allowed if all parents allow them

  • the maximum allowed recording retention time is limited to the parent’s maximum retention time

  • phone number anonymization can’t be disabled if it’s enabled for the parent

  • the maximum allowed dialog data retention time is limited to the parent’s maximum retention time

Here’s an example hierarchy where phone number anonymization is enabled for Customer2. This means that phone number anonymization will be used for all projects within Customer2 (and can’t be disabled on account or project level because it’s required by the organization / customer):

        stateDiagram-v2
  Reseller
  Reseller --> Customer1
  Reseller --> Customer2
  Customer1 --> Account1
  Customer1 --> Account2
  note left of Customer2 : Activated Phone number anonymization
  state Customer2 {
      [*] --> Account3 : Forces Anonymization
      [*] --> Account4 : Forces Anonymization
      state Account3 {
          [*] --> Project1 : Forces Anonymization
          [*] --> Project2 : Forces Anonymization
      }
      state Account4 {
          [*] --> Project3 : Forces Anonymization
          [*] --> Project4 : Forces Anonymization
      }
  }
    

Users and Owners

Users

Users are persons that are given credentials to access the CVG Console for management and configuration tasks. Each user may have one of four roles:

  1. Reseller Admin

  2. Customer Admin

  3. Account Admin

  4. Project Admin

An admin of a certain organizational unit can see all other units below it.

Owners

CVG has, in certain places the concept of an owner. Ownership is modelled on an organizational unit level, not on users. If something is owned (e.g. a speech cloud profile or a platform number block), it is owned by a reseller, customer or a project, but not by a user. Users would be considered owners, if the user has the owning organizational unit directly assigned and only that unit.

Example

A speech cloud profile that is owned by a customer can not be edited by a user that only has a reseller assigned, even though that user can see the profile. Also, a user assigned directly to a project would not be able to edit the profile, even though he can use it. Only a Customer Admin with that specific customer ID would be able to edit it.