Skip to content

Latest commit

 

History

History
138 lines (115 loc) · 6.13 KB

contactcallactivatedeventargs.md

File metadata and controls

138 lines (115 loc) · 6.13 KB
-api-id -api-type
T:Windows.ApplicationModel.Activation.ContactCallActivatedEventArgs
winrt class

Windows.ApplicationModel.Activation.ContactCallActivatedEventArgs

-description

Provides data when an app is activated to call a contact.

JavaScript This type appears as WebUIContactCallActivatedEventArgs.

-remarks

Windows 8.1 allows users to call their contacts from the Contact Card or Windows Search experience. By implementing the contact call activation contract, Windows can launch your app to make calls for the user.

To receive call activations, your app must register for the "windows.contact" extension category in its manifest. Under this extension, you must include a "LaunchAction" element with the "Verb" attribute equal to "call." You can then specify the "ServiceId" element to specify the type of calling you support. For example, if your app handles standard PSTN calls, you can specify a "ServiceId" of "telephone." If your app handles calling over a web based service, like Skype, you can specify the domain name of that service, for example "skype.com."

If multiple apps have registered for this contract, the user can choose one of them as their default for handling calls.

Note

To enable a user to set your app as their default calling app for PSTN numbers, your app must also support the “tel” URI scheme.

Here is an example for manifest registration.

<m2:Extension Category="windows.contact" xmlns:m2="http://schemas.microsoft.com/appx/2013/manifest">
  <m2:Contact>
    <m2:ContactLaunchActions>
      <m2:LaunchAction Verb="call" DesiredView="useLess">
        <m2:ServiceId>telephone</m2:ServiceId>
        <m2:ServiceId>skype.com</m2:ServiceId>
      </m2:LaunchAction>
    </m2:ContactLaunchActions>
  </m2:Contact>
</m2:Extension>

After you register in your manifest, your app can be activated for the contact call contract. When your app is activated, you can use the event information to identify the call activation and extract the parameters that help you complete the call for the user.

For info about how to handle app activation through contact actions, see Quickstart: Handling contact actions .

-examples

Here is an example of the code you need to handle contact call activations for PSTN numbers and Skype Ids.

protected override void OnActivated(IActivatedEventArgs args)
{
    if (args.Kind == ActivationKind.Contact)
    {
        var contactArgs = args as IContactActivatedEventArgs;
        if (contactArgs.Verb == Windows.ApplicationModel.Contacts.ContactLaunchActionVerbs.Call)
        {
            IContactCallActivatedEventArgs callArgs = contactArgs as IContactCallActivatedEventArgs;

            //get contact display info
            var contactName = callArgs.Contact.DisplayName;
            var contactThumbnail = callArgs.Contact.Thumbnail;

            if (callArgs.ServiceId == "telephone")
            {
                var phoneNumber = callArgs.ServiceUserId;
                //add calling logic for PSTN numbers
            }
            else if (callArgs.ServiceId == "skype.com")
            {
                var userId = callArgs.ServiceUserId;
                //add calling logic for Skype Ids
            }
        }
    }
}
void App::OnActivated(Windows::ApplicationModel::Activation::IActivatedEventArgs const& args)
{
    if (args.Kind() == Windows::ApplicationModel::Activation::ActivationKind::Contact)
    {
        auto contactArgs{ args.as<Windows::ApplicationModel::Activation::IContactActivatedEventArgs>() };
        if (contactArgs.Verb() == Windows::ApplicationModel::Contacts::ContactLaunchActionVerbs::Call())
        {
            auto callArgs{ contactArgs.as<Windows::ApplicationModel::Activation::ContactCallActivatedEventArgs>() };

            // Get contact display info.
            auto contactName{ callArgs.Contact().DisplayName() };
            auto contactThumbnail{ callArgs.Contact().Thumbnail() };

            if (callArgs.ServiceId() == L"telephone")
            {
                auto phoneNumber{ callArgs.ServiceUserId() };
                // Add calling logic for PSTN numbers.
            }
            else if (callArgs.ServiceId() == L"skype.com")
            {
                auto userId{ callArgs.ServiceUserId() };
                // Add calling logic for Skype Ids.
            }
        }
    }
}
void App::OnActivated(IActivatedEventArgs^ args)
{
    if (args->Kind == ActivationKind::Contact)
    {
        auto contactArgs = dynamic_cast<IContactActivatedEventArgs^>(args);
        if (contactArgs->Verb == Windows::ApplicationModel::Contacts::ContactLaunchActionVerbs::Call)
        {
            auto callArgs = dynamic_cast<ContactCallActivatedEventArgs^>(contactArgs);

            //get contact display info
            auto contactName = callArgs->Contact->DisplayName;
            auto contactThumbnail = callArgs->Contact->Thumbnail;

            if (callArgs->ServiceId == "telephone")
            {
                auto phoneNumber = callArgs->ServiceUserId;
                //add calling logic for PSTN numbers
            }
            else if (callArgs->ServiceId == "skype.com")
            {
                auto userId = callArgs->ServiceUserId;
                //add calling logic for Skype Ids
            }
        }
    }
}

-see-also

IContactCallActivatedEventArgs, IContactActivatedEventArgs, IActivatedEventArgs, Handling Contact Actions sample