UNPKG

@salutejs/client

Version:

Модуль взаимодействия с виртуальным ассистентом

516 lines 17.4 kB
import Long from 'long'; import { Action, ActionCommand, BubbleCommand, CardCommand, Suggestions, Hints, AppInfo, Character, UUID, Meta as ScenarioMeta, SystemMessagePayload, VpsMessageReasonModel } from '@salutejs/scenario'; import { IDevice, ILegacyDevice, IMessage, ISettings, IGetHistoryRequest, IHistoryMessages, IOffset, IStatus, IText, IBytes, IInitialSettings, IVoice } from './proto'; export { IMessage, IDevice, ILegacyDevice, ISettings, InitialSettings, IBytes, IStatus, IText, IVoice } from './proto'; export { Suggestions, TextAction, DeepLinkAction, Action, ActionCommand, AppInfo, UUID, Bubble, Card, PermissionType, PermissionStatus, Character, Hints, ServerAction, VpsMessageReasonModel as SourceMeta, } from '@salutejs/scenario'; export declare type CharacterId = 'sber' | 'eva' | 'joy'; export declare type Surface = 'SBERBOX' | 'STARGATE' | 'SATELLITE' | 'COMPANION' | 'SBOL' | 'TV' | 'TV_HUAWEI' | 'TIME'; export declare type ThemeColorName = 'dark' | 'light'; export declare type Theme = { name: ThemeColorName; }; export declare enum VpsVersion { '1.0' = 1, '2.0' = 2, '3.0' = 3, '4.0' = 4, '5.0' = 5 } export declare const MessageNames: { ANSWER_TO_USER: string; STT: string; MTT: string; DO_NOTHING: string; }; export interface DPMessage extends IMessage { sessionId: string; uuid: UUID; } export interface AssistantAppStateBase<T> { [key: string]: unknown; item_selector?: { ignored_words?: string[]; items: AssistantViewItemBase<T>[]; }; } export declare type AssistantAppState = AssistantAppStateBase<Action>; export interface AssistantViewItemBase<T> { number?: number; id?: string; title?: string; aliases?: string[]; server_action?: AssistantServerAction; action?: T; [key: string]: unknown; } export declare type AssistantViewItem = AssistantViewItemBase<Action>; export interface AssistantEvents<A extends AssistantSmartAppData> { start: () => void; data: (command: AssistantClientCustomizedCommand<A>) => void; command: <T extends AssistantSmartAppCommand['smart_app_data'] = AssistantSmartAppCommand['smart_app_data']>(data: T) => void; error: <T extends AssistantSmartAppError['smart_app_error'] = AssistantSmartAppError['smart_app_error']>(error: T) => void; tts: (state: Pick<AssistantTtsStateUpdate, 'state' | 'owner'>) => void; } export interface SendDataParams { action: AssistantServerAction; name?: string; requestId?: string; /** * опциональное поле, считаем "foreground" по умолчанию */ mode?: AssistantServerActionMode; } export declare type AssistantClientCommandEvents<C extends AssistantClientCommand = AssistantClientCommand> = { [event in C['type']]: (command: C) => void; }; export interface Assistant<A extends AssistantSmartAppData = AssistantSmartAppData> { cancelTts: (() => void) | undefined; close: () => void; getInitialData: () => AssistantClientCommand[]; findInInitialData: <T>(args: { type?: string; command?: string; }) => T | undefined; getGeo: (() => void) | undefined; getRecoveryState: () => unknown; on: <K extends keyof AssistantEvents<A>>(event: K, cb: AssistantEvents<A>[K]) => () => void; sendAction: <D extends A['smart_app_data'], E extends AssistantSmartAppError['smart_app_error']>(action: SendDataParams['action'], onData?: (data: D) => void, onError?: (error: E) => void, params?: Omit<SendDataParams, 'action'>) => () => void; sendData: (params: SendDataParams, onData?: (data: A | AssistantSmartAppError) => void) => () => void; sendActionPromisified: (action: SendDataParams['action'], params?: Omit<SendDataParams, 'action'>) => Promise<A['smart_app_data'] | AssistantSmartAppError['smart_app_error']>; sendDataPromisified: (params: SendDataParams) => Promise<A | AssistantSmartAppError>; sendText: (message: string) => void; setHints: (hints: Hints) => void; setGetRecoveryState: (next: () => unknown) => void; setGetState: (next: () => AssistantAppState) => void; setHeaderButtons: (headerButtons: SystemMessageHeaderByttonsType) => void; setSuggests: (suggestions: Suggestions['buttons']) => void; subscribeToCommand: <K extends keyof AssistantClientCommandEvents>(event: K, cb: AssistantClientCommandEvents[K]) => () => void; ready: () => void; } export declare type AssistantDev<A extends AssistantSmartAppData> = Assistant<A> & { nativePanel: { show: () => void; hide: () => void; }; }; export interface AssistantServerActionAppInfo { projectId: string; applicationId?: string; appversionId?: string; } export declare type AssistantServerAction = { action_id: string; parameters?: any; } | { type: string; payload?: any; }; export declare type AssistantServerActionMode = 'background' | 'foreground'; export declare type AssistantCommands = ActionCommand | AssistantThemeCommand | AssistantCharacterCommand | AssistantCloseAppCommand | AssistantNavigationCommand | AssistantSmartAppCommand | AssistantVisibilityCommand | AssistantPlayerCommand | AssistantSystemCommand; export interface SdkMeta { mid?: string; requestId?: string; } export interface AssistantThemeCommand { type: 'theme'; theme: Theme; sdk_meta?: SdkMeta; } export interface AssistantCharacterCommand { type: 'character'; character: Character; sdk_meta: SdkMeta; } export interface Insets { left: number; top: number; right: number; bottom: number; } export interface AssistantInsetsCommand { type: 'insets' | 'dynamic_insets' | 'minimum_static_insets' | 'maximum_static_insets'; insets: Insets; sdk_meta: SdkMeta; } export interface AssistantCloseAppCommand { type: 'close_app'; } export interface AssistantNavigationCommand { type: 'navigation'; navigation: { command: 'UP' | 'DOWN' | 'LEFT' | 'RIGHT' | 'FORWARD'; }; sdk_meta?: SdkMeta; } export interface AssistantActionCommand { type: 'action'; action: { type: string; [key: string]: unknown; }; } export interface AssistantSmartAppData<P = any> { type: 'smart_app_data'; smart_app_data: P; sdk_meta?: SdkMeta; } export interface AssistantSmartAppError { type: 'smart_app_error'; smart_app_error: { code: number; description: string; }; sdk_meta?: SdkMeta; } export interface AssistantSmartAppCommand<T = string, P = any> extends AssistantSmartAppData { smart_app_data: { type: T; payload?: P; }; sdk_meta?: SdkMeta; } export interface AssistantStartSmartSearch { type: 'start_smart_search'; start_smart_search: { query: string; timeoutMS: string; }; sdk_meta?: SdkMeta; } export interface AssistantGeoLocationCommand { type: 'geo_location'; geo: { /** разрешение клиента на передачу данных */ geo_permission: 'granted' | 'denied_once' | 'denied_permanently'; /** признак работы служб геолокации на устройстве, передается только для Android */ is_geo_available?: boolean; locations: Array<{ /** тип подключения для передачи данных */ source: string; /** широта десятичной дробью */ lat: string; /** долгота десятичной дробью */ lon: string; /** точность в метрах */ accuracy: string; /** время получения координат в миллисекундах (UTC) */ timestamp: string; /** скорость движения в м/с */ speed?: string; /** высота в метрах */ altitude?: string; }>; }; } export interface AppContext { app_info: AppInfo; device_id: string; user_id: string; platform: string; sdk_version: string; surface: Surface | string; surface_version: string; stand: string; locale: 'ru_RU' | string; features: { [key: string]: unknown; }; } export interface AssistantAppContext { type: 'app_context'; app_context: AppContext; sdk_meta?: SdkMeta; } export interface AssistantPlayerCommand { type: 'player_command'; player_command: { [key: string]: unknown; }; } export interface AssistantVisibilityCommand { type: 'visibility'; visibility: 'visible' | 'hidden'; sdk_meta?: SdkMeta; } export interface AssistantSystemCommand { type: 'system'; system: { command: string; [key: string]: unknown; }; } export interface AssistantTtsStateUpdate { type: 'tts_state_update'; state: 'start' | 'stop'; owner: boolean; } export interface AssistantFeatureLauncherCommand { type: 'feature_launcher'; feature_launcher: Record<string, unknown>; } export declare type AssistantClientCustomizedCommand<T extends AssistantSmartAppData> = AssistantAppContext | AssistantThemeCommand | AssistantCharacterCommand | AssistantNavigationCommand | AssistantVisibilityCommand | AssistantInsetsCommand | AssistantSmartAppError | AssistantTtsStateUpdate | AssistantGeoLocationCommand | AssistantFeatureLauncherCommand | T; export declare type AssistantClientCommand = AssistantClientCustomizedCommand<AssistantSmartAppCommand>; export interface AssistantClient { onStart?: () => void; onRequestState?: () => Record<string, unknown>; onRequestRecoveryState?: () => unknown; onData?: (command: AssistantClientCommand) => void; } export interface AssistantHost { cancelTts?: (options: string) => void; close: () => void; getGeo?: () => void; ready: () => void; sendData: (action: string, message: string | null) => void; sendDataContainer: (container: string) => void; sendText: (message: string) => void; setSuggests: (suggest: string) => void; setHints: (hints: string) => void; setHeaderButtons?: (headerButtons: string) => void; } export interface AssistantWindow { AssistantHost: AssistantHost; AssistantClient?: AssistantClient; appInitialData: Array<AssistantClientCommand>; appRecoveryState: unknown; __dangerouslySendDataMessage?: (data: {}, name: string) => void; __dangerouslySendVoiceMessage?: (message: string) => void; __dangerouslyGetAssistantAppState?: () => AssistantAppState; __dangerouslySendTextMessage?: (text: string) => void; __ASSISTANT_CLIENT__: { version: string; firstSmartAppDataMid?: string; }; } export interface AssistantBackgroundApp { appInfo: AppInfo; getState?: () => Promise<Record<string, unknown>>; } export declare type EventsType = { connecting: () => void; ready: () => void; close: () => void; message: (message: OriginalMessageType) => void; systemMessage: (systemMessageData: SystemMessageDataType, originalMessage: OriginalMessageType) => void; outcoming: (message: OriginalMessageType) => void; connectionError: (error: Event) => void; }; export declare type ItemType = Partial<BubbleCommand> & Partial<CardCommand> & Partial<ActionCommand> & { command?: AssistantCommand; }; export declare type AssistantCommand = Omit<AssistantSmartAppData, 'sdk_meta'> | Omit<AssistantStartSmartSearch, 'sdk_meta'> | Omit<AssistantSystemCommand, 'sdk_meta'> | Omit<AssistantNavigationCommand, 'sdk_meta'> | { type: string; [k: string]: unknown; }; export declare type EmotionId = 'bespokoistvo' | 'idle' | 'igrivost' | 'laugh' | 'listen' | 'load' | 'neznayu' | 'ok_prinyato' | 'oups' | 'podavleniye_gneva' | 'predvkusheniye' | 'simpatiya' | 'smushchennaya_ulibka' | 'talk' | 'udovolstvie' | 'vinovatiy' | 'zadumalsa' | 'zhdu_otvet'; export interface AssistantMeta { theme: ThemeColorName; [key: string]: unknown; } export interface AssistantBackgroundAppInfo { app_info: AppInfo; state: Record<string, unknown>; } export interface Meta extends ScenarioMeta, AssistantMeta { source?: VpsMessageReasonModel; [key: string]: unknown; } export interface AdditionalMeta extends Pick<Meta, 'source'> { [key: string]: unknown; } export declare type SystemMessageHeaderByttonsType = SystemMessagePayload['header_buttons']; export declare type SystemMessageDataType = { activate_app_info?: boolean; app_info?: AppInfo; auto_listening: boolean; answerId?: number; items?: Array<ItemType>; suggestions?: Suggestions; hints?: Hints; character?: Character; emotion?: { emotionId: EmotionId; }; feature_launcher?: Record<string, unknown>; server_action?: AssistantServerAction; sdk_meta?: SdkMeta; header_buttons?: SystemMessageHeaderByttonsType; }; export interface OriginalMessageType { messageId: Mid; last: number; messageName: string; token?: string | null; userId?: string | null; vpsToken?: string | null; version?: number; bytes?: IBytes | null; voice?: IVoice | null; text?: IText | null; status?: IStatus | null; initialSettings?: IInitialSettings | null; cancel?: {} | null; device?: IDevice | null; legacyDevice?: ILegacyDevice | null; settings?: ISettings | null; systemMessage?: { data?: string | null; } | null; timestamp?: number | Long | null; meta?: { [k: string]: string; } | null; } export declare type NonNullableProperties<T> = { [P in keyof T]: NonNullable<T[P]>; }; export declare type Status = Required<NonNullableProperties<IStatus>>; export interface WSCreator { (url: string): WebSocket; } export interface FakeVpsParams { createFakeWS: WSCreator; } export declare type VpsConfiguration = { url: string; userId: string; userChannel: string; locale?: string; device?: IDevice; settings: ISettings; fakeVps?: FakeVpsParams; legacyDevice?: ILegacyDevice; version: VpsVersion; messageName?: string; vpsToken?: string; logger?: ClientLogger; getToken?: () => Promise<string>; }; export interface IncomingMessage { type: 'incoming'; text?: { data?: string | null; }; message?: { data: SystemMessageDataType; name: string; sdk_meta?: SdkMeta; }; } export interface OutcomingMessage { type: 'outcoming'; text?: { data?: string | null; }; message?: { data: { server_action?: any; [key: string]: any; }; name: string; sdk_meta?: SdkMeta; }; } export declare type ClientLoggerInitEntryData = Omit<VpsConfiguration, 'getToken' | 'logger'> & { token: string; }; export declare type ClientLoggerInitEntry = { type: 'init'; params: ClientLoggerInitEntryData; }; export declare type ClientLoggerIncomingEntry = { type: 'incoming'; message: IMessage; }; export declare type ClientLoggerOutcomingEntry = { type: 'outcoming'; message: IMessage; }; export declare type ClientLoggerEntry = ClientLoggerInitEntry | ClientLoggerIncomingEntry | ClientLoggerOutcomingEntry; export interface ClientLogger { (entry: ClientLoggerEntry): void; } export interface AssistantRecord { parameters?: ClientLoggerInitEntryData; entries: Array<IncomingMessage | OutcomingMessage>; version: string; } export interface RecordSaver { save: (record: object) => void; } export interface AssistantSettings { dubbing?: boolean; echo?: number | null; ttsEngine?: string | null; asrEngine?: string | null; asrAutoStop?: number | null; devMode?: number | null; authConnector?: string | null; surface?: string | null; } export declare type AssistantPostMessage = { type: 'sendDataContainer'; payload: string; } | { type: 'close'; } | { type: 'sendData'; payload: string; } | { type: 'setSuggests'; payload: string; } | { type: 'setHints'; payload: string; } | { type: 'sendText'; payload: string; } | { type: 'ready'; } | { type: 'onStart'; } | { type: 'onData'; payload: AssistantClientCommand; } | { type: 'onRequestState'; requestId: string; } | { type: 'onRequestRecoveryState'; } | { type: 'state'; payload: Record<string, unknown> | undefined; requestId: string; } | { type: 'recoveryState'; payload: unknown; } | { type: 'onBack'; } | { type: 'setHeaderButtons'; payload: string; }; export declare type GetHistoryRequestProto = IGetHistoryRequest; export declare type GetHistoryRequestClient = Omit<IGetHistoryRequest, 'app' | 'offset'> & { app?: Partial<Pick<AppInfo, 'systemName' | 'projectId'> & { type: AppInfo['frontendType']; }> | null; offset?: IOffset & { limit?: number; contentId?: string; }; }; export declare type HistoryMessages = Omit<IHistoryMessages, 'content'> & { content: { additional_info: string; messageId: number; type: string; system: { app_info?: AppInfo; items: ItemType[]; time: Meta['time']; }; }; }; export declare type Mid = number | Long; //# sourceMappingURL=typings.d.ts.map