UNPKG

@xapp/chat-widget

Version:
108 lines (107 loc) 3.8 kB
import 'rollup-plugin-inject-process-env'; import { Request, Response } from "stentor-models"; import { ActionType } from "../store/ChatAction"; import { ChatServer, ChatServerOptions, OfflineMessage, VisitorInfoMessage } from "./ChatServer"; import { ChatMessageRequest, ChatServerMessage } from "./ChatServerMessage"; export interface StentorRouterChatConfig { readonly url: string; } export interface FailureData { readonly type: "BOT"; readonly tries: number; readonly delay: number; readonly error: string; } export type MessageData = Request | Response | ConnectionStatus | FailureData | undefined; export interface ConnectionStatus { sessionCreated: boolean; errorMessage?: string; } export type EventType = "account status" | "connection update" | "new message" | "user joined" | "user left" | "typing" | "stop typing" | "disconnect" | "reconnect" | "reconnect failed" | "reconnect error" | "barge in" | "barge out" | "failure"; export interface RouterMessage { event: EventType; data: MessageData; sender: VisitorInfo; sessionId: string; timeMs: number; } export interface VisitorInfo { deviceId: "Widget" | "Bot" | "Router"; userId: string; isAdmin: boolean; avatarPath?: string; displayName?: string; email?: string; urlAttributes: { path?: string[]; query?: { [name: string]: string; }; }; } export type HandlerStore = { [event in EventType]: (data: MessageData, sender: VisitorInfo, ts: number) => void; }; export declare const ROUTER_USER = "router"; export declare class StentorRouterChat implements ChatServer { private dispatch; private isDisposed; private _userId; private _sessionId; private visitorInfo; private accessToken; private attributes; private isNewSession; private isAdmin; private urlAttributes; private readonly config; private readonly options; private readonly configurableMessages; private serverUrl; private ws; private handlers; private sessionCreated; private appId; private noOfServerErrors; constructor(config: StentorRouterChatConfig, options?: ChatServerOptions); init(dispatch: (action: ActionType) => void): void; private autoReconnect; private wsClose; private wsCreate; private checkConnection; private emit; private setAccountStatus; private setConnectionStatus; sendOfflineMsg(_: OfflineMessage, cb: (error?: Error) => void): void; sendChatMsg(message: ChatServerMessage, cb: (err?: Error) => void): Promise<void>; private sendFailureMessage; private sendDisconnectMessage; private checkSession; sendChatMsgRequest(serviceRequest: ChatMessageRequest, cb: (err?: Error) => void): Promise<void>; sendTyping(_isTyping: boolean): void; setVisitorInfo(visitorInfoMessage: VisitorInfoMessage, sessionId: string, cb: (error?: Error) => void): void; sendChatRating(): void; sendFile(_: File, cb: (err?: Error) => void): void; markAsRead(): void; flush(): void; dispose(): void; sleep(): void; wakeup(): void; bargeOut(_cb: (err?: Error) => void): Promise<void>; bargeIn(agentName: string, _cb: (err?: Error) => void): Promise<void>; private postVisitorInfo; private postMessage; private startSession; } /** * * @param check Function that return true/false if the resource is available * @param stepMs check period in ms * @param timeoutMs max wait in ms * @param resource optional resource name. you will see a log message for every check (step) * * @returns the elapsed time in ms (both resolve/reject) */ export declare function waitFor(check: { (): boolean; }, stepMs: number, timeoutMs: number, resource?: string): Promise<unknown>;