UNPKG

@firebolt-js/manage-sdk

Version:
972 lines (694 loc) 15.1 kB
--- title: Keyboard --- # Keyboard Module --- Version Keyboard 1.5.0 ## Table of Contents - [Table of Contents](#table-of-contents) - [Usage](#usage) - [Overview](#overview) - [Methods](#methods) - [provide](#provide) - [Private Methods](#private-methods)<details ontoggle="document.getElementById('private-methods-details').open=this.open"><summary>Show</summary> - [emailFocus](#emailfocus) - [emailResponse](#emailresponse) - [passwordError](#passworderror) - [passwordFocus](#passwordfocus) - [passwordResponse](#passwordresponse) - [standardError](#standarderror) - [standardFocus](#standardfocus) - [standardResponse](#standardresponse) </details> - [Private Events](#private-events)<details ontoggle="document.getElementById('private-events-details').open=this.open"><summary>Show</summary> - [onRequestPassword](#onrequestpassword) - [onRequestStandard](#onrequeststandard) </details> - [Provider Interfaces](#provider-interfaces) - [KeyboardInputProvider](#keyboardinputprovider) - [Types](#types) - [KeyboardParameters](#keyboardparameters) - [KeyboardProviderRequest](#keyboardproviderrequest) ## Usage To use the Keyboard module, you can import it into your project from the Firebolt SDK: ```javascript import { Keyboard } from '@firebolt-js/manage-sdk' ``` ## Overview Methods for prompting users to enter text with task-oriented UX ## Methods ### provide To provide a specific capability to the platform. See [Provider Interfaces](#provider-interfaces) for a list of interfaces available to provide in this module. ```typescript provide(capability: string, provider: any): void ``` Parameters: | Param | Type | Required | Summary | | ------------ | -------- | -------- | -------------------------------------------- | | `capability` | `string` | Yes | The capability that is being provided. | | `provider` | `any` | Yes | An implementation of the required interface. | See [Provider Interfaces](#provider-interfaces) for each capabilities interface definition. ## Private Methods <details id="private-methods-details"> <summary>View</summary> ### emailError _This is a private RPC method._ Internal API for Email Provider to send back error. Parameters: | Param | Type | Required | Description | | --------------- | -------- | -------- | ----------- | | `correlationId` | `string` | true | | | `error` | `object` | true | | Result: Capabilities: | Role | Capability | | -------- | -------------------------------------- | | provides | xrn:firebolt:capability:input:keyboard | #### Examples Example 1 JSON-RPC: Request: ```json { "jsonrpc": "2.0", "id": 1, "method": "Keyboard.emailError", "params": { "correlationId": "123", "error": { "code": 1, "message": "Error" } } } ``` Response: ```json { "jsonrpc": "2.0", "id": 1, "result": null } ``` --- ### emailFocus _This is a private RPC method._ Internal API for Email Provider to request focus for UX purposes. Result: Capabilities: | Role | Capability | | -------- | -------------------------------------- | | provides | xrn:firebolt:capability:input:keyboard | #### Examples Example JSON-RPC: Request: ```json { "jsonrpc": "2.0", "id": 1, "method": "Keyboard.emailFocus", "params": {} } ``` Response: ```json { "jsonrpc": "2.0", "id": 1, "result": null } ``` --- ### emailResponse _This is a private RPC method._ Internal API for Email Provider to send back response. Parameters: | Param | Type | Required | Description | | --------------- | -------- | -------- | ----------- | | `correlationId` | `string` | true | | | `result` | `string` | true | | Result: Capabilities: | Role | Capability | | -------- | -------------------------------------- | | provides | xrn:firebolt:capability:input:keyboard | #### Examples Example JSON-RPC: Request: ```json { "jsonrpc": "2.0", "id": 1, "method": "Keyboard.emailResponse", "params": { "correlationId": "123", "result": "email@address.com" } } ``` Response: ```json { "jsonrpc": "2.0", "id": 1, "result": null } ``` --- ### passwordError _This is a private RPC method._ Internal API for Password Provider to send back error. Parameters: | Param | Type | Required | Description | | --------------- | -------- | -------- | ----------- | | `correlationId` | `string` | true | | | `error` | `object` | true | | Result: Capabilities: | Role | Capability | | -------- | -------------------------------------- | | provides | xrn:firebolt:capability:input:keyboard | #### Examples Example 1 JSON-RPC: Request: ```json { "jsonrpc": "2.0", "id": 1, "method": "Keyboard.passwordError", "params": { "correlationId": "123", "error": { "code": 1, "message": "Error" } } } ``` Response: ```json { "jsonrpc": "2.0", "id": 1, "result": null } ``` --- ### passwordFocus _This is a private RPC method._ Internal API for Password Provider to request focus for UX purposes. Result: Capabilities: | Role | Capability | | -------- | -------------------------------------- | | provides | xrn:firebolt:capability:input:keyboard | #### Examples Example JSON-RPC: Request: ```json { "jsonrpc": "2.0", "id": 1, "method": "Keyboard.passwordFocus", "params": {} } ``` Response: ```json { "jsonrpc": "2.0", "id": 1, "result": null } ``` --- ### passwordResponse _This is a private RPC method._ Internal API for Password Provider to send back response. Parameters: | Param | Type | Required | Description | | --------------- | -------- | -------- | ----------- | | `correlationId` | `string` | true | | | `result` | `string` | true | | Result: Capabilities: | Role | Capability | | -------- | -------------------------------------- | | provides | xrn:firebolt:capability:input:keyboard | #### Examples Example JSON-RPC: Request: ```json { "jsonrpc": "2.0", "id": 1, "method": "Keyboard.passwordResponse", "params": { "correlationId": "123", "result": "password" } } ``` Response: ```json { "jsonrpc": "2.0", "id": 1, "result": null } ``` --- ### standardError _This is a private RPC method._ Internal API for Standard Provider to send back error. Parameters: | Param | Type | Required | Description | | --------------- | -------- | -------- | ----------- | | `correlationId` | `string` | true | | | `error` | `object` | true | | Result: Capabilities: | Role | Capability | | -------- | -------------------------------------- | | provides | xrn:firebolt:capability:input:keyboard | #### Examples Example 1 JSON-RPC: Request: ```json { "jsonrpc": "2.0", "id": 1, "method": "Keyboard.standardError", "params": { "correlationId": "123", "error": { "code": 1, "message": "Error" } } } ``` Response: ```json { "jsonrpc": "2.0", "id": 1, "result": null } ``` --- ### standardFocus _This is a private RPC method._ Internal API for Standard Provider to request focus for UX purposes. Result: Capabilities: | Role | Capability | | -------- | -------------------------------------- | | provides | xrn:firebolt:capability:input:keyboard | #### Examples Example JSON-RPC: Request: ```json { "jsonrpc": "2.0", "id": 1, "method": "Keyboard.standardFocus", "params": {} } ``` Response: ```json { "jsonrpc": "2.0", "id": 1, "result": null } ``` --- ### standardResponse _This is a private RPC method._ Internal API for Standard Provider to send back response. Parameters: | Param | Type | Required | Description | | --------------- | -------- | -------- | ----------- | | `correlationId` | `string` | true | | | `result` | `string` | true | | Result: Capabilities: | Role | Capability | | -------- | -------------------------------------- | | provides | xrn:firebolt:capability:input:keyboard | #### Examples Example JSON-RPC: Request: ```json { "jsonrpc": "2.0", "id": 1, "method": "Keyboard.standardResponse", "params": { "correlationId": "123", "result": "username" } } ``` Response: ```json { "jsonrpc": "2.0", "id": 1, "result": null } ``` --- </details> ## Private Events <details id="private-events-details"> <summary>View</summary> ### onRequestEmail _This is a private RPC method._ Registers as a provider for when the user should be shown a keyboard optimized for email address entry. Parameters: | Param | Type | Required | Description | | -------- | --------- | -------- | ----------- | | `listen` | `boolean` | true | | Result: [KeyboardProviderRequest](#keyboardproviderrequest) Capabilities: | Role | Capability | | -------- | -------------------------------------- | | provides | xrn:firebolt:capability:input:keyboard | #### Examples Default Example JSON-RPC: Request: ```json { "jsonrpc": "2.0", "id": 1, "method": "Keyboard.onRequestEmail", "params": { "listen": true } } ``` Response: ```json { "jsonrpc": "2.0", "id": 1, "result": { "correlationId": "abc", "parameters": { "message": "Enter your user name." } } } ``` --- ### onRequestPassword _This is a private RPC method._ Registers as a provider for when the user should be shown a password keyboard, with dots for each character entered. Parameters: | Param | Type | Required | Description | | -------- | --------- | -------- | ----------- | | `listen` | `boolean` | true | | Result: [KeyboardProviderRequest](#keyboardproviderrequest) Capabilities: | Role | Capability | | -------- | -------------------------------------- | | provides | xrn:firebolt:capability:input:keyboard | #### Examples Default Example JSON-RPC: Request: ```json { "jsonrpc": "2.0", "id": 1, "method": "Keyboard.onRequestPassword", "params": { "listen": true } } ``` Response: ```json { "jsonrpc": "2.0", "id": 1, "result": { "correlationId": "abc", "parameters": { "message": "Enter your user name." } } } ``` --- ### onRequestStandard _This is a private RPC method._ Registers as a provider for when the user should be shown a standard keyboard. Parameters: | Param | Type | Required | Description | | -------- | --------- | -------- | ----------- | | `listen` | `boolean` | true | | Result: [KeyboardProviderRequest](#keyboardproviderrequest) Capabilities: | Role | Capability | | -------- | -------------------------------------- | | provides | xrn:firebolt:capability:input:keyboard | #### Examples Default Example JSON-RPC: Request: ```json { "jsonrpc": "2.0", "id": 1, "method": "Keyboard.onRequestStandard", "params": { "listen": true } } ``` Response: ```json { "jsonrpc": "2.0", "id": 1, "result": { "correlationId": "abc", "parameters": { "message": "Enter your user name." } } } ``` --- </details> ## Provider Interfaces ### KeyboardInputProvider The provider interface for the `xrn:firebolt:capability:input:keyboard` capability. ```typescript ``` Usage: ```typescript Keyboard.provide('xrn:firebolt:capability:input:keyboard', provider: KeyboardInputProvider | object) ``` #### Examples **Register your app to provide the `xrn:firebolt:capability:input:keyboard` capability.** ```javascript import { Keyboard } from '@firebolt-js/manage-sdk' class MyKeyboardInputProvider { async standard(parameters, session) { return 'username' } async password(parameters, session) { return 'password' } async email(parameters, session) { return 'email@address.com' } } Keyboard.provide( 'xrn:firebolt:capability:input:keyboard', new MyKeyboardInputProvider(), ) ``` <details> <summary>JSON-RPC</summary> **Register to recieve each provider API** Request: ```json { "id": 1, "method": "Keyboard.onRequestStandard", "params": { "listen": true } } { "id": 2, "method": "Keyboard.onRequestPassword", "params": { "listen": true } } { "id": 3, "method": "Keyboard.onRequestEmail", "params": { "listen": true } } ``` Response: ```json { "id": 1, "result": { "listening": true, "event": "Keyboard.onRequestStandard" } } { "id": 2, "result": { "listening": true, "event": "Keyboard.onRequestPassword" } } { "id": 3, "result": { "listening": true, "event": "Keyboard.onRequestEmail" } } ``` **Asynchronous event to initiate standard()** Event Response: ```json { "id": 1, "result": { "correlationId": undefined, "parameters": { "message": "Enter your user name." } } } ``` **App initiated response to event** Request: ```json { "id": 4, "method": "Keyboard.standardResponse", "params": { "correlationId": undefined, "result": "username" } } ``` Response: ```json { "id": 4, "result": true } ``` **Asynchronous event to initiate password()** Event Response: ```json { "id": 2, "result": { "correlationId": undefined, "parameters": { "message": "Enter your user name." } } } ``` **App initiated response to event** Request: ```json { "id": 5, "method": "Keyboard.passwordResponse", "params": { "correlationId": undefined, "result": "password" } } ``` Response: ```json { "id": 5, "result": true } ``` **Asynchronous event to initiate email()** Event Response: ```json { "id": 3, "result": { "correlationId": undefined, "parameters": { "message": "Enter your user name." } } } ``` **App initiated response to event** Request: ```json { "id": 6, "method": "Keyboard.emailResponse", "params": { "correlationId": undefined, "result": "email@address.com" } } ``` Response: ```json { "id": 6, "result": true } ``` </details> ## Types ### KeyboardParameters ```typescript type KeyboardParameters = { message: string // The message to display to the user so the user knows what they are entering } ``` --- ### KeyboardProviderRequest ```typescript type KeyboardProviderRequest = { correlationId: string // An id to correlate the provider response with this request parameters: KeyboardParameters // The request to start a keyboard session } ``` See also: [KeyboardParameters](#keyboardparameters) ---