messages: DoorbellPress is sent with the empty context of its page
proactiveEvent() built every proactive event without a context, so doorbellPress() and
device.raise(DoorbellEventSource, "DoorbellPress") left out the "context": {} that the example of
alexa-doorbelleventsource.html has. The Event of Alexa.SimpleEventSource is printed without one, so
the event descriptor says which it is (emptyContext) and raise() passes it on to the builder.
A raised DoorbellPress is now { event, context: {} }, 13 bytes longer; the Event of a button is
unchanged. The tests compare the keys and the context of the built message with the fixture of the
page, for the builder, the descriptor and raise(). 267 tests pass.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
parent
3a07c861b1
commit
4a3dd81bcf
20 changed files with 86 additions and 18 deletions
11
dist/esm/messages/build.js
vendored
11
dist/esm/messages/build.js
vendored
|
|
@ -99,7 +99,11 @@ export function sceneEvent(fields) {
|
|||
context: {},
|
||||
};
|
||||
}
|
||||
/** An event a device raises by itself, of any interface. The header has no correlationToken: nobody asked. */
|
||||
/**
|
||||
* An event a device raises by itself, of any interface. The header has no correlationToken: nobody asked. The
|
||||
* pages differ on the context, so the caller says which it is: DoorbellPress is printed with an empty one
|
||||
* (alexa-doorbelleventsource.html), the Event of Alexa.SimpleEventSource without.
|
||||
*/
|
||||
export function proactiveEvent(fields) {
|
||||
const { namespace, name, instance, messageId, payloadVersion, payload } = fields;
|
||||
return {
|
||||
|
|
@ -108,13 +112,16 @@ export function proactiveEvent(fields) {
|
|||
endpoint: { endpointId: fields.endpointId },
|
||||
payload,
|
||||
},
|
||||
...(fields.emptyContext ? { context: {} } : {}),
|
||||
};
|
||||
}
|
||||
/** Somebody rang (alexa-doorbelleventsource.html). */
|
||||
export function doorbellPress(fields) {
|
||||
const { endpointId, messageId } = fields;
|
||||
const payload = { cause: { type: fields.cause ?? "PHYSICAL_INTERACTION" }, timestamp: isoTime(fields.timestamp) };
|
||||
return proactiveEvent({ endpointId, messageId, namespace: "Alexa.DoorbellEventSource", name: "DoorbellPress", payload });
|
||||
return proactiveEvent({
|
||||
endpointId, messageId, namespace: "Alexa.DoorbellEventSource", name: "DoorbellPress", payload, emptyContext: true,
|
||||
});
|
||||
}
|
||||
/** An event of a button or a sensor that routines start on (alexa-simpleeventsource.html). */
|
||||
export function simpleEvent(fields) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue