Configurar el lector de pantalla de JAWS para Unified Service Desk

JAWS (Acceso de trabajo con voz) es un programa lector de pantalla del equipo para Microsoft Windows que permite que los usuarios ciegos y con deficiencias visuales lean la pantalla con salida de texto a voz o con una pantalla actualizable de Braille.

Unified Service Desk es compatible con la versión 18 de JAWS para el lector de pantalla de Windows para salida de voz en el cliente de Unified Service Desk. Todos los controles de Unified Service Desk y controles personalizados que forman parte del paquete del cliente web son JAWS. Para los controles personalizados que se desarrollan como parte del paquete de solución, debe definir las propiedades necesarias para crear controles compatibles con JAWS.

JAWS soporte para controles enfocables (controles interactivos)

Puede configurar el soporte de lector de pantalla JAWS para controles que son enfocables (los controles interactivos), como los botones, cuadro de lista, menú, botón de radio, y casilla de verificación.

Para que el lector de pantalla JAWS lea un control enfocable, debe especificar un valor para la Propiedad adjunta AutomationProperties.Name.

Por ejemplo:

<Button Width="30" Height="30" Name="Save" ToolTip="Click to save the doc." AutomationProperties.Name="Save" Focusable="True" IsTabStop="True">

Soporte JAWS para información sobre herramientas

De forma predeterminada, el lector de pantalla JAWS no admite la lectura del texto de información sobre herramientas del botón de la barra de herramientas. Sin embargo, puede crear scripts personalizados de JAWS para habilitar el lector de pantalla JAWS para que lea el texto de la información sobre herramientas.

He aquí un script de ejemplo para comprobar el nombre de botón y el texto de información sobre herramientas (texto de ayuda). En Unified Service Desk, si no configura el texto de información sobre herramientas explícitamente, el sistema aplica el nombre de botón al texto de información sobre herramientas. En este caso, JAWS lee el nombre de botón y el texto de información sobre herramientas. Para evitar leer el nombre de botón y el texto de información sobre herramientas, puede crear un script personalizado para comprobar si el nombre del botón y el texto de información sobre herramientas son iguales.

En el script de ejemplo, si el texto de la ayuda no es lo mismo que el nombre del botón, el lector de pantalla JAWS lee la información sobre herramientas (texto de ayuda).

include "hjConst.jsh"
void function SayObjectTypeAndText(int nLevel)
SayObjectTypeAndText(nLevel)
if nLevel == 0
   var string sHelp = GetObjectHelp()
   var string objName = GetObjectName()
   if sHelp && sHelp != objName // If help text is not equal to the object name, the JAWS screen reads the help text
      Say(sHelp,ot_help)
   endIf
endIf
EndFunction

En la imagen de ejemplo, el nombre del botón y el texto de información sobre herramientas es el mismo: RECORDATORIO. En este escenario, el script comprueba el nombre del botón y el texto de información sobre herramientas, que es diferente y por lo tanto, JAWS no lee el texto de información sobre herramientas.

Botón de Unified Service Desk con la misma información sobre herramientas.

En la imagen de ejemplo, el nombre del botón RECORDATORIO es distinto que el texto de información sobre herramientas: ESTABLECER RECORDATORIO. En este escenario, la pantalla JAWS lee el texto de información sobre herramientas.

Botón de Unified Service Desk con otra información sobre herramientas.

Puede escribir el script para su aplicación en JAWS. Para obtener más información sobre escritura de scripts, consulte Manual de conceptos básicos de script.

Después de que escriba el script, llame al archivo como el nombre del producto (ejemplo: UnifiedServiceDesk.jss). Se denomina archivo de aplicación de script, y se debe guardar en la carpeta compartida JAWS o configuración de usuario para que se cargue con la aplicación en tiempo de ejecución. Más información: Scripts y archivos de scripts JAWS.

JAWS soporte para controles no enfocables (controles no interactivos)

Por diseño del producto, la ubicación de la pestaña no se centra en los controles no enfocables (controles no interactivos). Por lo tanto, el lector de pantalla JAWS no lee controles que no enfocables, como el bloque de texto, imagen, y las etiquetas.

Solución alternativa

Una de las formas de habilitar el lector de pantalla JAWS para que lea los controles no enfocables es ajustar el control no enfocable mediante el elemento UserControl, lo que permite que JAWS lea los controles no enfocables.

Nota

Este método de habilitar el soporte de lector de pantalla JAWS para controles no enfocables sólo es una solución alternativa, y no la forma oficialmente recomendada.

Cuando lector JAWS aterriza en el primer control enfocable, lee los controles no enfocables y después lee los controles enfocables.

Ejemplo de XAML para el control de información general de sesión le muestra la cuadrícula de UserControl.

<TabControl xmlns:controlStyles="clr-namespace:Microsoft.Crm.UnifiedServiceDesk.Dynamics.Controls.Styles;assembly=Microsoft.Crm.UnifiedServiceDesk.Dynamics">
    <controlStyles:USDTab Header="General">
<UserControl>
        <Grid Margin="0"
          xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"
          xmlns:CCA="clr-namespace:Microsoft.Crm.UnifiedServiceDesk.Dynamics;assembly=Microsoft.Crm.UnifiedServiceDesk.Dynamics">
<Grid.Resources>
<CCA:CRMImageConverter x:Key="CRMImageLoader" />
<Style x:Key="ImageLogo" TargetType="{x:Type Image}">
<Setter Property="Width" Value="16" /> 
<Setter Property="Height" Value="16" /> 
<!--<Setter Property="Margin" Value="5" /> -->
</Style>
    </Grid.Resources>            
<Grid.RowDefinitions>
                <RowDefinition Height="auto" />
                <RowDefinition Height="auto" />
                <RowDefinition Height="auto" />
                <RowDefinition Height="auto" />
                <RowDefinition Height="auto" />
                <RowDefinition Height="auto" />
            </Grid.RowDefinitions>
         <TextBlock Margin="5,6,0,0" Grid.Row="0" TextWrapping="Wrap" Padding="5,0,0,5"  FontFamily="Tohoma" FontSize="12" Text="Account Name: [[account.name]x]"   Foreground="#262626"/>
<TextBlock Margin="5,0,0,0" Grid.Row="4" TextWrapping="Wrap" Padding="3,0,0,3" FontFamily="Tohoma" FontSize="12" Style="{DynamicResource AutoCollapse}" Text="[[$Context.RevenuePotential]+]" />
<!--<TextBlock Margin="5,0,0,0" Grid.Row="1" TextWrapping="Wrap" Padding="3,0,0,3" Grid.ColumnSpan="3" FontFamily="Tohoma" FontSize="12" Style="{DynamicResource AutoCollapse}" Text="Phone: [[account.telephone1]x]"/>-->
<StackPanel  Orientation="Horizontal"  Grid.Row="2" Margin="5,0,0,0">
<Image Style="{DynamicResource ImageLogo}" Source="{Binding Source=msdyusd_Phone16, Converter={StaticResource CRMImageLoader}}" />
     <TextBlock  TextWrapping="Wrap" Padding="5,0,0,5" Text="Phone: " VerticalAlignment="Center"   Foreground="#262626" />
     <TextBlock  Padding="5,0,0,5" VerticalAlignment="Center">
     <Hyperlink Command="CCA:ActionCommands.DoActionCommand" CommandParameter="https://uii/CRM Global Manager/LaunchURL?callto:tel:[[account.telephone1]u+]" FontFamily="Tohoma" FontSize="12">[[account.telephone1]+]</Hyperlink>
       </TextBlock>
   </StackPanel >
<StackPanel  Orientation="Horizontal"  Grid.Row="1" Margin="5,0,0,0">
<Image Style="{DynamicResource ImageLogo}" Source="{Binding Source=msdyusd_Email16, Converter={StaticResource CRMImageLoader}}" />
<Label >
<TextBlock  TextWrapping="Wrap" Padding="3,0,0,3" Text="Email: [[Current Account.emailaddress1]+x]"   Foreground="#262626" />
</Label>
</StackPanel>
<TextBlock Margin="5,0,0,0" Grid.Row="3" TextWrapping="Wrap" Padding="5,0,0,5" Grid.ColumnSpan="3" FontFamily="Tohoma" FontSize="12" Style="{DynamicResource AutoCollapse}" Text="Primary Contact: [[account.primarycontactid.name]x]"   Foreground="#262626" />
</Grid>
</UserControl>
</controlStyles:USDTab>
<controlStyles:USDTab Header="Social Info">
    <Grid Margin="1"
       xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"
       xmlns:CCA="clr-namespace:Microsoft.Crm.UnifiedServiceDesk.Dynamics;assembly=Microsoft.Crm.UnifiedServiceDesk.Dynamics">
     <Grid.RowDefinitions>
        <RowDefinition Height="auto" />
        <RowDefinition Height="auto" />
        <RowDefinition Height="auto" />
     </Grid.RowDefinitions>
      <TextBlock Margin="5,6,0,0" FontSize="12" Height="20" Grid.Row="0" Text="Twitter:     "   Foreground="#262626" >
       <Hyperlink Command="CCA:ActionCommands.DoActionCommand" CommandParameter="https://uii/Twitter/Navigate?about:blank">
               [[Account.msdyusd_twitter]x+]
       </Hyperlink>
     </TextBlock>
     <TextBlock Margin="5,0,0,0" FontSize="12" Height="50" Grid.Row="2"  Text="Facebook: "   Foreground="#262626">
        <Hyperlink Command="CCA:ActionCommands.DoActionCommand" CommandParameter="https://uii/Facebook/Navigate?about:blank">
                    [[Account.msdyusd_facebook]x+]
        </Hyperlink>
       </TextBlock>
        </Grid>
    </controlStyles:USDTab>
</TabControl>