Zaznamenat aktivity kontaktu

Než začnete, přidejte své kontakty do Windows.

Aktivity kontaktů můžete zaznamenat tak, aby představovaly smysluplné interakce mezi uživatelem a kontaktem v rámci vaší aplikace. Aktivity kontaktů fungují jako odlehčené signály interakce, které pomáhají Windows pochopit, jak uživatelé komunikují s kontakty v různých prostředích souvisejících s lidmi, jako jsou People Widgets, Share Sheet a vyhledávací pole Windows, v plánovaných fázích.

Note

Referenční informace ContactAnnotationOperations aktuálně nevypisují verzi Windows ani sady SDK pro hodnotu Activity a tento článek neuvádí, která uživatelská prostředí dnes používají kontaktní aktivity. Historie verzí v referenčním seznamu uvádí Share (Windows 10 verze 1703, SDK 15063) jako nejnovější zdokumentovanou hodnotu. Než budete v aplikaci, která cílí na starší verze sady SDK, spoléhat na Activity, zkontrolujte referenční informace k rozhraní API, zda neobsahují aktualizace.

Každá aktivita zaznamenává tři klíčové údaje:

  • Kdo – kontakt zapojený do interakce
  • Co – typ interakce, ke které došlo
  • Kdy – čas, kdy došlo k interakci

Chcete-li zaznamenat aktivitu kontaktu, musí aplikace vytvořit ContactAnnotation přidruženou k kontaktu a nastavit SupportedOperations na hodnotu ContactAnnotationOperations.Activity. Windows interpretuje poznámky s tímto typem operace jako signály interakce spojené s kontaktem.

Každá aktivita představuje jednu událost interakce a měla by být zaznamenána samostatně. Při odesílání více kontaktních aktivit iterujte záznamy interakce a volejte TrySaveAnnotationAsync pro každou událost. Smyčka neposkytuje dávkové rozhraní API ani nesnižuje režijní náklady na synchronizaci.

Payload aktivity kontaktu

Pokud chcete zaznamenat aktivitu kontaktu, nastavte ProviderProperties["ActivityPayload"] na ContactAnnotation na řetězec JSON, který popisuje interakci.

Payload musí obsahovat následující atributy:

Property Description
ActivityType Určuje typ interakce.
ActivityTimestampUnix Čas, kdy došlo k interakci vyjádřené jako čas UTC Unix v sekundách.

Použijte klíč ActivityPayload a názvy vlastností datové části ActivityType a ActivityTimestampUnix přesně tak, jak je znázorněno. Tyto názvy tvoří řetězcovou specifikaci pro popis aktivity.

Podporované typy aktivit kontaktů

Pole ActivityType identifikuje interakci, ke které došlo mezi uživatelem a kontaktem. Windows aktuálně podporuje následující typy aktivit.

Typ aktivity Description
message Odeslání nebo přijetí zprávy s osobou
call Zahájení nebo přijetí hlasového hovoru nebo videohovoru
email Posílání nebo přijímání e-mailu.
meeting Připojení nebo naplánování schůzky s tímto kontaktem.
share Sdílení obsahu s vybraným kontaktem.
social Interakce s kontaktem prostřednictvím sociálních interakcí
profileInteraction Otevření profilu kontaktu nebo práce s ním.

Žádosti by měly vybrat typ aktivity, který nejlépe představuje interakci uživatele, ke které došlo v rámci aplikace.

Příklad záznamu aktivity kontaktu

Následující příklad ukazuje, jak zaznamenat interakci v rámci zpráv jako aktivitu kontaktu/osoby.

long nowUnix = DateTimeOffset.UtcNow.ToUnixTimeSeconds();

var payload = new
{
    ActivityType = "message",
    ActivityTimestampUnix = nowUnix
};

var annotation = new ContactAnnotation
{
    ContactId = contact.Id,
    RemoteId = contact.RemoteId,
    SupportedOperations = ContactAnnotationOperations.Activity
};

annotation.ProviderProperties["ActivityPayload"] =
    JsonSerializer.Serialize(payload);

bool saved = await this.contactAnnotationList.TrySaveAnnotationAsync(annotation);
if (!saved)
{
    // The annotation wasn't saved, so Windows didn't receive this activity.
    // Log the failure or retry later. Don't treat the interaction as recorded.
    System.Diagnostics.Debug.WriteLine(
        $"Failed to save contact activity for contact {contact.RemoteId}.");
}

TrySaveAnnotationAsync vrátí false, když poznámku neuloží, proto předtím, než budete předpokládat, že aktivita byla zaznamenána, zkontrolujte výsledek. true Takový výsledek znamená, že byla poznámka uložena. Nezoznačuje, jak Windows později aktivitu zpracuje.

Model přístupu k aktivitám kontaktu

Aktivity kontaktu jsou jen pro zápis z pohledu vaší aplikace. Aplikace může odesílat záznamy aktivit, ale Windows aktuálně nepodporuje načítání nebo explicitní odstranění dříve odeslaných záznamů aktivit. Čištění životního cyklu spravované systémem Windows je oddělené, jak je popsáno v další části.

Pokud vaše aplikace potřebuje zachovat nebo spravovat historii interakce, uchovávejte ji ve vlastním úložišti nebo backendové službě.

Životní cyklus kontaktních aktivit

Aktivity kontaktů jsou přidruženy ke kontaktům pomocí prvku poskytnutého aplikací RemoteId.

Pokud je kontakt odebraný nebo je přidružený RemoteId smazán, odeberou se automaticky aktivity kontaktu propojené s tímto kontaktem. Podobně když je aplikace odinstalována nebo je odebrán její přidružený UserDataAccount, Windows automaticky odebere kontakty a aktivity kontaktů zaznamenané touto aplikací.

Zpracování a uchovávání kontaktních aktivit

Dotykové akce zpracovává Windows jako signály interakce.

Doba uchovávání, vypršení platnosti (TTL), agregace a vyhodnocení kontaktních aktivit jsou interně spravovány systémem Windows. Aplikace neřídí, jak dlouho se aktivity ukládají nebo jak se zpracovávají po odeslání.

Kontaktní aktivity by měly představovat skutečné interakce uživatelů a neměly by být generovány záměrem ovlivnění hodnocení kontaktů nebo viditelnosti. Windows určuje, jak se tyto signály podílejí na funkcích souvisejících s uživateli pomocí interní logiky platformy.