Callback registered with the App via App.onExecute to process requests to update device state.

To support local fulfillment, the local home platform must first establish a local fulfillment path. For more details, see the developer guide.

const executeHandler = (request: IntentFlow.ExecuteRequest):
  Promise<IntentFlow.ExecuteResponse> => {

    // Extract command(s) and device target(s) from request
    const command = request.inputs[0].payload.commands[0];
    const execution = command.execution[0];

    const response = new Execute.Response.Builder()
      .setRequestId(request.requestId);

    const result = command.devices.map((device) => {
      // Construct a local device command
      const deviceCommand = new DataFlow.TcpRequestData();
      // ...

      // Send command to the local device
      return localHomeApp.getDeviceManager()
        .send(deviceCommand)
        .then((result) => {
          response.setSuccessState(result.deviceId, state);
        })
        .catch((err: IntentFlow.HandlerError) => {
          err.errorCode = err.errorCode || "invalid_request";
          response.setErrorState(device.id, err.errorCode);
        });
    });

    // Respond once all commands complete
    return Promise.all(result)
      .then(() => response.build());
  };

Callable

  • __call(request: ExecuteRequest): Promise<ExecuteResponse> | ExecuteResponse
  • Callback registered with the App via App.onExecute to process requests to update device state.

    To support local fulfillment, the local home platform must first establish a local fulfillment path. For more details, see the developer guide.

    const executeHandler = (request: IntentFlow.ExecuteRequest):
      Promise<IntentFlow.ExecuteResponse> => {
    
        // Extract command(s) and device target(s) from request
        const command = request.inputs[0].payload.commands[0];
        const execution = command.execution[0];
    
        const response = new Execute.Response.Builder()
          .setRequestId(request.requestId);
    
        const result = command.devices.map((device) => {
          // Construct a local device command
          const deviceCommand = new DataFlow.TcpRequestData();
          // ...
    
          // Send command to the local device
          return localHomeApp.getDeviceManager()
            .send(deviceCommand)
            .then((result) => {
              response.setSuccessState(result.deviceId, state);
            })
            .catch((err: IntentFlow.HandlerError) => {
              err.errorCode = err.errorCode || "invalid_request";
              response.setErrorState(device.id, err.errorCode);
            });
        });
    
        // Respond once all commands complete
        return Promise.all(result)
          .then(() => response.build());
      };

    Parameters

    Returns Promise<ExecuteResponse> | ExecuteResponse