UNPKG

1.49 kBJavaScriptView Raw
1// @flow
2
3export type Config = {|
4 +mainframe_secret: string,
5 +mainframe_url: string,
6 +port: number,
7|}
8
9export type ClientContext = {|
10 +user: {
11 +id: string,
12 +username: string,
13 +name: string,
14 },
15 +conversation?: {
16 +id: string,
17 +subject: ?string,
18 +type: 'bot' | 'direct' | 'default' | 'space',
19 },
20 +organization?: {
21 +id: string,
22 +username: string,
23 +name: string,
24 },
25 +subscription_token?: string,
26|}
27
28export type PostPayload = {|
29 +user_id: string,
30 +data: Object,
31 +context: ClientContext,
32|}
33
34export type BotContext = {|
35 +config: Config,
36 +callMainframe: (endpoint: string, data?: Object) => Promise<void | Object>,
37 +sendMessage: (payload: {
38 conversation_id: string,
39 message?: string,
40 data?: Object,
41 }) => Promise<void>,
42|}
43
44export type BotResponse = {|
45 success: boolean,
46 message?: string,
47 data?: Object,
48|}
49
50export type Handlers = {|
51 enable?: (payload: { user_id: string }) => void,
52 disable?: (payload: { user_id: string }) => void,
53 conversation_added?: (payload: {
54 user_id: string,
55 conversation_id: string,
56 }) => void,
57 conversation_removed?: (payload: {
58 user_id: string,
59 conversation_id: string,
60 }) => void,
61 edit_subscription?: (payload: {
62 user_id: string,
63 conversation_id: string,
64 subscription_id: string,
65 }) => void,
66 delete_subscription?: (payload: { subscription_id: string }) => void,
67 post?: (payload: PostRequest) => BotResponse | Promise<BotResponse>,
68|}