docs/about_VoiceConfiguration.help.txt

TOPIC
    about_voiceconfiguration
 
SHORT DESCRIPTION
    All things needed to configure Users for Direct Routing or Calling Plans
 
LONG DESCRIPTION
    Ascertaining accurate information about the Tenant and an individual user
    account (or resource account) is the cornerstone of these CmdLets.
    `Get-TeamsUserVoiceConfig` therefore carefully selects parameters from the
    `CsOnlineUser`-Object and, with the `DiagnosticLevel`-switch taps further
    and further into parameters that may be relevant for troubleshooting issues,
    finally also padding the object with keys from the `AzureAdUser`-Object.
    Applying the required elements to enable a User for Direct Routing or
    Calling Plans should make this easier, more reliable and faster for all
    admins
 
CmdLets
    | Function | Description
                                                                                 
                                     | | ------------------------------------: |
    -------------------------------------------------------------------------------------------------------------------------------------------------
    | |
    `Assert-TeamsUserVoiceConfig`
    | Validates an Object for proper application of its Voice Configuration and
    returns Objects that are only partially or not correctly configured. | |
    `Enable-TeamsUserForEnterpriseVoice`
    | |
    `Find-TeamsUserVoiceRoute`
    | |
    `Find-TeamsUserVoiceConfig`
    | Queries Voice Configuration parameters against all Users on the tenant.
    Finding assignments of a number, usage of a specific OVP or TDP, etc. |
    |
    `Get-TeamsTenantVoiceConfig`
    | Queries Voice Configuration present on the Tenant. Switches are available
    for better at-a-glance visibility | |
    `Get-TeamsUserVoiceConfig`
    | Queries Voice Configuration assigned to a User and displays visual output.
    At-a-glance concise output, extensible through `-DiagnosticLevel` | |
    `Remove-TeamsUserVoiceConfig`
    | Removes a Voice Configuration set from the provided Identity. User will
    become "un-configured" for Voice in order to apply a new Voice Config set |
    |
    `Set-TeamsUserVoiceConfig`
    to the provided Identity | |
    `Test-TeamsUserVoiceConfig`
    | Tests an individual VoiceConfig Package against the provided Identity
                                                                           |
 
    SUPPORT CMDLETS
    Diving more into Voice Configuration for the Tenant and defining Direct
    Routing breakouts, though the provided CmdLets are solid since its Lync
    days, getting information fast and without the hassle of piping, filtering
    and selecting was the goal behind creating the below shortcuts.
    | Function | Description
                                 | | -----------------: |
    -----------------------------------------------------------------------------------
    | |
    `Get-TeamsTenant`
    | Get-CsTenant gives too much output? This can help.
             | |
    `Get-TeamsCP`
    | Get-CsTeamsCallingPolicy is too long to type? Here is a shorter one.
     | |
    `Get-TeamsECP`
    | Get-CsTeamsEmergencyCallingPolicy is too long to type? Here is a shorter
    one. | |
    `Get-TeamsECRP`
    | Get-CsTeamsEmergencyCallRoutingPolicy is too long to type? Here is a
    shorter one. | |
    `Get-TeamsIPP`
    | Get-CsTeamsIpPhonePolicy is too long to type? Here is a shorter one.
     | |
    `Get-TeamsOVP`
    | Get-CsOnlineVoiceRoutingPolicy is too long to type? Here is a shorter one.
           | |
    `Get-TeamsOPU`
    | Get-CsOnlinePstnUsage is too clunky. Here is a shorter one, with a search
    function! | |
    `Get-TeamsOVR`
    | Get-CsOnlineVoiceRoute, just more concise
                                | |
    `Get-TeamsMGW`
    | Get-CsOnlinePstnGateway, but a bit nicer
                              | |
    `Get-TeamsTDP`
    | Get-TeamsTenantDialPlan is too long to type. Also, we only want the
    names... | |
    `Get-TeamsVNR`
    for a given Dial Plan |
 
    LEGACY SUPPORT CMDLETS
    These are the last remnants of the old SkypeFunctions module. Their
    functionality has been barely touched. | Function
         | Description
                       | | ---------------------------------------: |
    ----------------------------------------------------------------------------------------
    | |
    `Get-SkypeOnlineConferenceDialInNumbers`
    | Gathers Dial-In Conferencing Numbers for a specific Domain
                  | |
    `Remove-TenantDialPlanNormalizationRule`
    | Displays all Normalisation Rules of a provided Tenant Dial Plan and asks
    which to remove |
    >[!NOTE] These commands are being evaluated for revival and re-integration.
 
EXAMPLES
    EXAMPLE 1 - TEAMS USER VOICE ROUTE
    `powershell
    Find-TeamsUserVoiceRoute -Identity John@domain.com -DialedNumber +15551234567
 
    `
    Evaluating the Voice Routing for one user based on the Number being dialed
 
    # Example 1 - Output
    TBC
 
    EXAMPLE 2 - FINDING OBJECTS WITH FIND-TEAMSUSERVOICECONFIG
    `powershell
    # The following are some examples for the Voice Config CmdLets
    Find-TeamsUserVoiceConfig [-PhoneNumber] "555-1234 567"
    # Finds Objects with the normalised number '*5551234567*' (removing special characters)
     
    Find-TeamsUserVoiceConfig -Extension "12-345"
    # Finds Objects which have any Extension starting with 12345 assigned (removing special characters)
    # NOTE: The CmdLet is searching explicitely for '*;ext=12345*'
     
    Find-TeamsUserVoiceConfig -ConfigurationType CallingPlans
    Find-TeamsUserVoiceConfig -VoicePolicy BusinessVoice
    # Finds all Objects configured for CallingPlans with two different metrics.
     
    Find-TeamsUserVoiceConfig -Identity John@domain.com
    Get-TeamsUserVoiceConfig [-Identity] John@domain.com
    # FIND will return either a list of UserPrincipalNames found, or
    # if limited results are found, executes GET to display the output.
 
    `
    Find can look for User Objects (Users, Common Area Phones or Resource
    Accounts) returning output based on number of objects returned.
    Get-TeamsUserVoiceConfig and Find-TeamsUserVoiceConfig return the same base
    output, however the Get-Command does have the option to expand on the output
    object and drill deeper.
    - Get-TeamsUserVoiceConfig targets an Identity (UserPrincipalName)
    - Find-TeamsUserVoiceConfig can search for PhoneNumbers, Extensions, ID or
    commonalities like OVP or TDPs
    - Pipeline is available for both CmdLets
 
    EXAMPLE 3 - VOICE CONFIGURATION OBJECT WITH GET-TEAMSUSERVOICECONFIG
    `powershell
    # Example 2 - Output shows a Direct Routing user correctly provisioned but not yet moved to Teams
    UserPrincipalName : John@domain.com
    SipAddress : sip:John@domain.com
    DisplayName : John Doe
    ObjectId : d13e9d53-5dd4-7392-b123-de45b16a7cb4
    Identity : CN=d13e9d53-5dd4-7392-b123-de45b16a7cb4,OU=d23afe19-5a33-893a
                                 -caf1-70b6cd9a8f6e,OU=OCS Tenants,DC=lync0e001,DC=local
    HostingProvider : SRV:
    ObjectType : User
    InterpretedUserType : HybridOnpremTeamsOnlyUser
    InterpretedVoiceConfigType : DirectRouting
    TeamsUpgradeEffectiveMode : TeamsOnly
    VoicePolicy : HybridVoice
    UsageLocation : US
    LicensesAssigned : Office 365 E5
    CurrentCallingPlan :
    PhoneSystemStatus : Success
    PhoneSystem : True
    EnterpriseVoiceEnabled : True
    HostedVoiceMail : True
    TeamsUpgradePolicy :
    OnlineVoiceRoutingPolicy : OVP-EMEA
    TenantDialPlan : DP-US
    TelephoneNumber :
    LineURI : tel:+15551234567;ext=4567
    OnPremLineURI : tel:+15551234567;ext=4567
 
    `
 
NOTE
    Voice Config CmdLets started out just limiting the output of
    Get-CsOnlineUser to retain an overview and avoid unnecessary scrolling and
    find information faster and in a more consistent way.
    Now they are enriching administration in Teams and are a backbone to the
    Admin Experience.
 
Development Status
    CmdLets are completely fleshed out and tested. Minor tweaks may still need
    to be done to round things.
 
TROUBLESHOOTING NOTE
    Thoroughly tested, but Unit-tests for these CmdLets are not yet available.
    None needed. Edge-cases might still lurk that prevent
    Set-TeamsUserVoiceConfig to succeed. Please raise issues for them, happy to
    add more checks to validate specific scenarios.
 
SEE ALSO
    -
    about_TeamsLicensing
    -
    about_UserManagement
    -
    about_TeamsCallableEntity
    -
    about_Supporting_Functions
 
KEYWORDS
    - Direct Routing
    - Calling Plans
    - Licensing
    - PhoneSystem
    - EnterpriseVoice
    - Provisioning