Habilitar las acciones de comunicación para los contactos

Las anotaciones de contacto describen las acciones de comunicación que admite una aplicación para un contacto, como ver un perfil, enviar mensajes o llamar. En este artículo se muestra cómo declarar esas funcionalidades y cómo Windows abre el contacto pertinente en tu aplicación.

Antes de empezar, agregue sus contactos a Windows.

Declarar operaciones de comunicación admitidas

Las aplicaciones pueden declarar las funcionalidades de comunicación admitidas para un contacto mediante la propiedad SupportedOperations en ContactAnnotation.

La SupportedOperations propiedad especifica los tipos de acciones de comunicación que admite la aplicación para interactuar con un contacto. Estas operaciones se definen mediante la enumeración ContactAnnotationOperations .

Dado que ContactAnnotationOperations es una enumeración de marcas, se pueden combinar varias operaciones mediante el operador OR binario (|). Esto permite a las aplicaciones indicar todas las funcionalidades de comunicación admitidas para un contacto en una sola anotación. Para obtener más información sobre esta propiedad, consulte la referencia de API para ContactAnnotation.SupportedOperations.

En el ejemplo siguiente se muestra cómo declarar las operaciones de comunicación admitidas para un contacto.

var annotation = new ContactAnnotation
{
    ContactId = contact.Id,
    RemoteId = contact.RemoteId,
    SupportedOperations =
        ContactAnnotationOperations.ContactProfile |
        ContactAnnotationOperations.Message |
        ContactAnnotationOperations.AudioCall |
        ContactAnnotationOperations.VideoCall |
        ContactAnnotationOperations.SocialFeeds
};

await this.contactAnnotationList.TrySaveAnnotationAsync(annotation);

En este ejemplo, la anotación declara en Windows que la aplicación admite la visualización del perfil de contacto, el envío de mensajes, la realización de llamadas de audio o vídeo y el acceso a actualizaciones del feed social para el contacto especificado.

Las aplicaciones deben establecer las operaciones admitidas para representar con precisión las funcionalidades de interacción y comunicación disponibles para ese contacto dentro de la aplicación.

Gestionar la activación de la comunicación

Cuando los usuarios seleccionan una acción de comunicación de una superficie de Windows, Windows inicia la aplicación mediante un protocolo URI registrado y pasa el RemoteId del contacto a la aplicación.

Los siguientes esquemas de URI corresponden a los valores ContactAnnotationOperations.

Operation Esquema de URI marca SupportedOperations
Call ms-voip-call: AudioCall
Video ms-voip-video: VideoCall
Message ms-ipmessaging: Message
Perfil ms-contact-profile: ContactProfile

Por ejemplo, si una aplicación declara AudioCall | VideoCall, Windows puede activar la aplicación con un URI como:

ms-voip-video:<RemoteId>

<RemoteId> es el mismo RemoteId valor que ha almacenado en la ContactAnnotation. Úselo para buscar el usuario o la conversación correspondientes en la aplicación e iniciar la experiencia solicitada.

Registrar esquemas de URI solo para las operaciones que admite la aplicación. Windows pone a disposición una acción de comunicación solo cuando el registro de protocolo coincidente está disponible.

Registre los esquemas URI

Declare cada esquema de URI en el manifiesto del paquete como una extensión windows.protocol. En el ejemplo siguiente se registran protocolos para ver perfiles, mensajería, llamadas de audio y videollamadas.

<Extensions>
  <uap:Extension Category="windows.protocol">
    <uap:Protocol Name="ms-contact-profile">
      <uap:DisplayName>TestProfileApp</uap:DisplayName>
    </uap:Protocol>
  </uap:Extension>

  <uap:Extension Category="windows.protocol">
    <uap:Protocol Name="ms-ipmessaging">
      <uap:DisplayName>TestMsgApp</uap:DisplayName>
    </uap:Protocol>
  </uap:Extension>

  <uap:Extension Category="windows.protocol">
    <uap:Protocol Name="ms-voip-video">
      <uap:DisplayName>TestVideoApp</uap:DisplayName>
    </uap:Protocol>
  </uap:Extension>

  <uap:Extension Category="windows.protocol">
    <uap:Protocol Name="ms-voip-call">
      <uap:DisplayName>TestCallApp</uap:DisplayName>
    </uap:Protocol>
  </uap:Extension>
</Extensions>