Skip to content

Latest commit

 

History

History
79 lines (69 loc) · 2.49 KB

README.md

File metadata and controls

79 lines (69 loc) · 2.49 KB

Alexa.NET.ProactiveEvents

Small library to help with the Alexa ProactiveEvents API

Setup your skill to allow proactive events

You have to onboard your skill with the proactive events API

This is a specific process and so the best documentation is the Amazon docs on the subject

Getting a token for Proactive Events

With the client ID and secret from your Amazon developer console

var messaging = new AccessTokenClient(AccessTokenClient.ApiDomainBaseAddress);
var details = await messaging.Send("clientId","clientSecret");
var token = details.Token;

Creating a new Event

There are several event types, each in their own namespace, the simplest example is one of a Weather Alert

using Alexa.NET.ProactiveEvents.WeatherAlerts;
...
var eventToSend = new WeatherAlert(WeatherAlertType.Snowstorm);

Localised Attributes

Some alerts have required fields which must be created with a string per locale for each you support. These are created as LocaleAttributes.

var localeAttribute = new LocaleAttributes();
localeAttribute.Add("en-GB","GBLocale");
localeAttribute.Add("en-US","USLocale");

or if you're only in one locale

var localeAttribute = new LocaleAttributes("en-GB","GBLocale");
var eventToSend = new WeatherAlert(WeatherAlertType.Tornado,localeAttribute);

Creating a request to a single User ID

var request = new Alexa.NET.ProactiveEvents.UserEventRequest("userId",eventToSend)
{
    ExpiryTime = DateTimeOffset.Now.AddMinutes(10),
    ReferenceId = Guid.NewGuid().ToString("N"),
    TimeStamp = DateTimeOffset.Now,
};

Creating a request to all subscribed users

var request = new BroadcastEventRequest(eventToSend)
{
    ExpiryTime = DateTimeOffset.Now.AddMinutes(10),
    ReferenceId = Guid.NewGuid().ToString("N"),
    TimeStamp = DateTimeOffset.Now,
};

Sending a request

var client = new ProactiveEventsClient(
ProactiveEventsClient.EuropeEndpoint, token ,true); 
// Change true to false for a live environment
await client.Send(request);

Receiving events when a user changes their subscriptions

In the constructor of the function/API setup place the following code

new ProactiveSubscriptionChangedRequestHandler().AddToRequestHandler();

and then you can check your request type

if (input.Request is ProactiveSubscriptionChangedRequest request)
{
    var remainingEventTypes = request.Subscriptions;
}