@ikatec/digisac-api-sdk 4.5.1 → 4.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -3
- package/dist/apis/answers/AnswersApi.cjs +38 -0
- package/dist/apis/answers/AnswersApi.cjs.map +1 -1
- package/dist/apis/answers/AnswersApi.d.ts +33 -2
- package/dist/apis/answers/AnswersApi.d.ts.map +1 -1
- package/dist/apis/answers/AnswersApi.mjs +38 -0
- package/dist/apis/answers/AnswersApi.mjs.map +1 -1
- package/dist/apis/answers/types.d.ts +64 -1
- package/dist/apis/answers/types.d.ts.map +1 -1
- package/dist/apis/botSimulators/BotSimulatorsApi.cjs +42 -0
- package/dist/apis/botSimulators/BotSimulatorsApi.cjs.map +1 -0
- package/dist/apis/botSimulators/BotSimulatorsApi.d.ts +31 -0
- package/dist/apis/botSimulators/BotSimulatorsApi.d.ts.map +1 -0
- package/dist/apis/botSimulators/BotSimulatorsApi.mjs +41 -0
- package/dist/apis/botSimulators/BotSimulatorsApi.mjs.map +1 -0
- package/dist/apis/botSimulators/index.cjs +4 -0
- package/dist/apis/botSimulators/index.d.ts +3 -0
- package/dist/apis/botSimulators/index.d.ts.map +1 -0
- package/dist/apis/botSimulators/index.mjs +3 -0
- package/dist/apis/botSimulators/types.cjs +0 -0
- package/dist/apis/botSimulators/types.d.ts +73 -0
- package/dist/apis/botSimulators/types.d.ts.map +1 -0
- package/dist/apis/botSimulators/types.mjs +0 -0
- package/dist/apis/botVersions/BotVersionsApi.cjs +25 -0
- package/dist/apis/botVersions/BotVersionsApi.cjs.map +1 -1
- package/dist/apis/botVersions/BotVersionsApi.d.ts +18 -0
- package/dist/apis/botVersions/BotVersionsApi.d.ts.map +1 -1
- package/dist/apis/botVersions/BotVersionsApi.mjs +25 -0
- package/dist/apis/botVersions/BotVersionsApi.mjs.map +1 -1
- package/dist/apis/botVersions/types.d.ts +4 -0
- package/dist/apis/botVersions/types.d.ts.map +1 -1
- package/dist/apis/bots/BotsApi.cjs +99 -4
- package/dist/apis/bots/BotsApi.cjs.map +1 -1
- package/dist/apis/bots/BotsApi.d.ts +78 -5
- package/dist/apis/bots/BotsApi.d.ts.map +1 -1
- package/dist/apis/bots/BotsApi.mjs +99 -4
- package/dist/apis/bots/BotsApi.mjs.map +1 -1
- package/dist/apis/bots/types.d.ts +266 -16
- package/dist/apis/bots/types.d.ts.map +1 -1
- package/dist/apis/index.cjs +3 -0
- package/dist/apis/index.d.ts +1 -0
- package/dist/apis/index.d.ts.map +1 -1
- package/dist/apis/index.mjs +3 -1
- package/dist/apis/questions/QuestionsApi.cjs +15 -0
- package/dist/apis/questions/QuestionsApi.cjs.map +1 -1
- package/dist/apis/questions/QuestionsApi.d.ts +15 -1
- package/dist/apis/questions/QuestionsApi.d.ts.map +1 -1
- package/dist/apis/questions/QuestionsApi.mjs +15 -0
- package/dist/apis/questions/QuestionsApi.mjs.map +1 -1
- package/dist/apis/questions/types.d.ts +25 -5
- package/dist/apis/questions/types.d.ts.map +1 -1
- package/dist/apis/quickReplies/QuickRepliesApi.cjs +16 -0
- package/dist/apis/quickReplies/QuickRepliesApi.cjs.map +1 -1
- package/dist/apis/quickReplies/QuickRepliesApi.d.ts +15 -2
- package/dist/apis/quickReplies/QuickRepliesApi.d.ts.map +1 -1
- package/dist/apis/quickReplies/QuickRepliesApi.mjs +16 -0
- package/dist/apis/quickReplies/QuickRepliesApi.mjs.map +1 -1
- package/dist/apis/quickReplies/types.d.ts +30 -2
- package/dist/apis/quickReplies/types.d.ts.map +1 -1
- package/dist/apis/schedule/ScheduleApi.cjs +37 -2
- package/dist/apis/schedule/ScheduleApi.cjs.map +1 -1
- package/dist/apis/schedule/ScheduleApi.d.ts +30 -3
- package/dist/apis/schedule/ScheduleApi.d.ts.map +1 -1
- package/dist/apis/schedule/ScheduleApi.mjs +37 -2
- package/dist/apis/schedule/ScheduleApi.mjs.map +1 -1
- package/dist/apis/schedule/types.d.ts +58 -11
- package/dist/apis/schedule/types.d.ts.map +1 -1
- package/dist/apis/ticketTopics/TicketTopicsApi.cjs +25 -2
- package/dist/apis/ticketTopics/TicketTopicsApi.cjs.map +1 -1
- package/dist/apis/ticketTopics/TicketTopicsApi.d.ts +18 -4
- package/dist/apis/ticketTopics/TicketTopicsApi.d.ts.map +1 -1
- package/dist/apis/ticketTopics/TicketTopicsApi.mjs +25 -2
- package/dist/apis/ticketTopics/TicketTopicsApi.mjs.map +1 -1
- package/dist/apis/ticketTopics/types.d.ts +22 -1
- package/dist/apis/ticketTopics/types.d.ts.map +1 -1
- package/dist/core/BaseCrudApi.cjs +5 -2
- package/dist/core/BaseCrudApi.cjs.map +1 -1
- package/dist/core/BaseCrudApi.d.ts +7 -4
- package/dist/core/BaseCrudApi.d.ts.map +1 -1
- package/dist/core/BaseCrudApi.mjs +5 -2
- package/dist/core/BaseCrudApi.mjs.map +1 -1
- package/dist/core/types.d.ts +1 -1
- package/dist/core/types.d.ts.map +1 -1
- package/dist/incommingWebhooks/index.d.ts +7 -7
- package/dist/incommingWebhooks/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/apis/answers/AnswersApi.test.ts +67 -0
- package/src/apis/answers/AnswersApi.ts +66 -2
- package/src/apis/answers/types.ts +64 -2
- package/src/apis/botSimulators/BotSimulatorsApi.test.ts +58 -0
- package/src/apis/botSimulators/BotSimulatorsApi.ts +57 -0
- package/src/apis/botSimulators/index.ts +2 -0
- package/src/apis/botSimulators/types.ts +72 -0
- package/src/apis/botVersions/BotVersionsApi.test.ts +51 -0
- package/src/apis/botVersions/BotVersionsApi.ts +41 -0
- package/src/apis/botVersions/types.ts +4 -0
- package/src/apis/bots/BotsApi.test.ts +177 -0
- package/src/apis/bots/BotsApi.ts +162 -6
- package/src/apis/bots/types.ts +267 -15
- package/src/apis/index.ts +1 -0
- package/src/apis/payloads.test-d.ts +148 -0
- package/src/apis/questions/QuestionsApi.test.ts +49 -0
- package/src/apis/questions/QuestionsApi.ts +20 -1
- package/src/apis/questions/types.ts +25 -6
- package/src/apis/quickReplies/QuickRepliesApi.test.ts +69 -0
- package/src/apis/quickReplies/QuickRepliesApi.ts +35 -2
- package/src/apis/quickReplies/types.ts +34 -2
- package/src/apis/schedule/ScheduleApi.test.ts +80 -0
- package/src/apis/schedule/ScheduleApi.ts +59 -6
- package/src/apis/schedule/types.ts +66 -11
- package/src/apis/ticketTopics/TicketTopicsApi.test.ts +40 -0
- package/src/apis/ticketTopics/TicketTopicsApi.ts +35 -4
- package/src/apis/ticketTopics/types.ts +26 -1
- package/src/core/BaseCrudApi.ts +9 -5
- package/src/core/types.ts +2 -1
- package/src/incommingWebhooks/index.test-d.ts +9 -0
- package/src/incommingWebhooks/index.ts +7 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/apis/ticketTopics/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG;IACxB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/apis/ticketTopics/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAEtD,MAAM,MAAM,WAAW,GAAG;IACxB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IAExB,uGAAuG;IACvG,WAAW,CAAC,EAAE,UAAU,EAAE,CAAA;CAC3B,CAAA;AAED,MAAM,MAAM,wBAAwB,GAAG,aAAa,CAAA;AAEpD;;;GAGG;AACH,MAAM,MAAM,oBAAoB,GAAG,SAAS,CAAC,WAAW,CAAC,GAAG;IAC1D,iDAAiD;IACjD,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IACjC,sGAAsG;IACtG,mBAAmB,CAAC,EAAE,OAAO,CAAA;CAC9B,CAAA;AAED,MAAM,MAAM,wBAAwB,GAAG;IACrC,uFAAuF;IACvF,IAAI,EAAE,MAAM,CAAA;IACZ,6GAA6G;IAC7G,WAAW,EAAE,MAAM,EAAE,CAAA;CACtB,CAAA;AAED,MAAM,MAAM,wBAAwB,GAAG;IACrC,8BAA8B;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,sEAAsE;IACtE,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;CACvB,CAAA"}
|
|
@@ -2,7 +2,10 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
|
2
2
|
const require_core_BaseReadApi = require('./BaseReadApi.cjs');
|
|
3
3
|
|
|
4
4
|
//#region src/core/BaseCrudApi.ts
|
|
5
|
-
/**
|
|
5
|
+
/**
|
|
6
|
+
* Generic CRUD resource: the reads of `BaseReadApi` plus `create`, `updateById` and `deleteById`.
|
|
7
|
+
* `TDeleteResponse` is what `deleteById` resolves to (most routes answer the text `'OK'`).
|
|
8
|
+
*/
|
|
6
9
|
var BaseCrudApi = class extends require_core_BaseReadApi.BaseReadApi {
|
|
7
10
|
/**
|
|
8
11
|
* Creates a new resource.
|
|
@@ -20,7 +23,7 @@ var BaseCrudApi = class extends require_core_BaseReadApi.BaseReadApi {
|
|
|
20
23
|
}
|
|
21
24
|
/**
|
|
22
25
|
* Deletes a resource by ID.
|
|
23
|
-
* @permissions $resourceName.
|
|
26
|
+
* @permissions $resourceName.destroy
|
|
24
27
|
*/
|
|
25
28
|
deleteById(id, headers) {
|
|
26
29
|
return this.client.delete(`${this.basePath}/${id}`, headers);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseCrudApi.cjs","names":["BaseReadApi"],"sources":["../../src/core/BaseCrudApi.ts"],"sourcesContent":["import { BaseReadApi } from './BaseReadApi'\nimport type { CrudApi, ListQuery } from './types'\nexport type {\n WhereClause,\n IncludeItem,\n ListQuery,\n GetByIdQuery,\n Paginated,\n HasGetMany,\n HasGetById,\n HasCreate,\n HasUpdateById,\n HasDeleteById,\n CrudApi,\n} from './types'\n\n
|
|
1
|
+
{"version":3,"file":"BaseCrudApi.cjs","names":["BaseReadApi"],"sources":["../../src/core/BaseCrudApi.ts"],"sourcesContent":["import { BaseReadApi } from './BaseReadApi'\nimport type { CrudApi, ListQuery } from './types'\nexport type {\n WhereClause,\n IncludeItem,\n ListQuery,\n GetByIdQuery,\n Paginated,\n HasGetMany,\n HasGetById,\n HasCreate,\n HasUpdateById,\n HasDeleteById,\n CrudApi,\n} from './types'\n\n/**\n * Generic CRUD resource: the reads of `BaseReadApi` plus `create`, `updateById` and `deleteById`.\n * `TDeleteResponse` is what `deleteById` resolves to (most routes answer the text `'OK'`).\n */\nexport class BaseCrudApi<\n TResponse,\n TCreate,\n TUpdate = TCreate,\n TQuery extends ListQuery<TResponse> = ListQuery<TResponse>,\n TDeleteResponse = TResponse,\n>\n extends BaseReadApi<TResponse, TQuery>\n implements CrudApi<TResponse, TCreate, TUpdate, TQuery, TDeleteResponse>\n{\n /**\n * Creates a new resource.\n * @permissions $resourceName.create\n */\n create(body: TCreate, headers?: Record<string, string>): Promise<TResponse> {\n return this.client.post<TResponse, TCreate>(this.basePath, body, headers)\n }\n\n /**\n * Updates an existing resource by ID.\n * @permissions $resourceName.update\n */\n updateById(id: string, body: TUpdate, headers?: Record<string, string>): Promise<TResponse> {\n return this.client.put<TResponse, TUpdate>(`${this.basePath}/${id}`, body, headers)\n }\n\n /**\n * Deletes a resource by ID.\n * @permissions $resourceName.destroy\n */\n deleteById(id: string, headers?: Record<string, string>): Promise<TDeleteResponse> {\n return this.client.delete<TDeleteResponse>(`${this.basePath}/${id}`, headers)\n }\n}\n"],"mappings":";;;;;;;;AAoBA,IAAa,cAAb,cAOUA,qCAEV;;;;;CAKE,OAAO,MAAe,SAAsD;AAC1E,SAAO,KAAK,OAAO,KAAyB,KAAK,UAAU,MAAM,QAAQ;;;;;;CAO3E,WAAW,IAAY,MAAe,SAAsD;AAC1F,SAAO,KAAK,OAAO,IAAwB,GAAG,KAAK,SAAS,GAAG,MAAM,MAAM,QAAQ;;;;;;CAOrF,WAAW,IAAY,SAA4D;AACjF,SAAO,KAAK,OAAO,OAAwB,GAAG,KAAK,SAAS,GAAG,MAAM,QAAQ"}
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import { BaseReadApi } from './BaseReadApi';
|
|
2
2
|
import type { CrudApi, ListQuery } from './types';
|
|
3
3
|
export type { WhereClause, IncludeItem, ListQuery, GetByIdQuery, Paginated, HasGetMany, HasGetById, HasCreate, HasUpdateById, HasDeleteById, CrudApi, } from './types';
|
|
4
|
-
/**
|
|
5
|
-
|
|
4
|
+
/**
|
|
5
|
+
* Generic CRUD resource: the reads of `BaseReadApi` plus `create`, `updateById` and `deleteById`.
|
|
6
|
+
* `TDeleteResponse` is what `deleteById` resolves to (most routes answer the text `'OK'`).
|
|
7
|
+
*/
|
|
8
|
+
export declare class BaseCrudApi<TResponse, TCreate, TUpdate = TCreate, TQuery extends ListQuery<TResponse> = ListQuery<TResponse>, TDeleteResponse = TResponse> extends BaseReadApi<TResponse, TQuery> implements CrudApi<TResponse, TCreate, TUpdate, TQuery, TDeleteResponse> {
|
|
6
9
|
/**
|
|
7
10
|
* Creates a new resource.
|
|
8
11
|
* @permissions $resourceName.create
|
|
@@ -15,8 +18,8 @@ export declare class BaseCrudApi<TResponse, TCreate, TUpdate = TCreate, TQuery e
|
|
|
15
18
|
updateById(id: string, body: TUpdate, headers?: Record<string, string>): Promise<TResponse>;
|
|
16
19
|
/**
|
|
17
20
|
* Deletes a resource by ID.
|
|
18
|
-
* @permissions $resourceName.
|
|
21
|
+
* @permissions $resourceName.destroy
|
|
19
22
|
*/
|
|
20
|
-
deleteById(id: string, headers?: Record<string, string>): Promise<
|
|
23
|
+
deleteById(id: string, headers?: Record<string, string>): Promise<TDeleteResponse>;
|
|
21
24
|
}
|
|
22
25
|
//# sourceMappingURL=BaseCrudApi.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseCrudApi.d.ts","sourceRoot":"","sources":["../../src/core/BaseCrudApi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AACjD,YAAY,EACV,WAAW,EACX,WAAW,EACX,SAAS,EACT,YAAY,EACZ,SAAS,EACT,UAAU,EACV,UAAU,EACV,SAAS,EACT,aAAa,EACb,aAAa,EACb,OAAO,GACR,MAAM,SAAS,CAAA;AAEhB
|
|
1
|
+
{"version":3,"file":"BaseCrudApi.d.ts","sourceRoot":"","sources":["../../src/core/BaseCrudApi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AACjD,YAAY,EACV,WAAW,EACX,WAAW,EACX,SAAS,EACT,YAAY,EACZ,SAAS,EACT,UAAU,EACV,UAAU,EACV,SAAS,EACT,aAAa,EACb,aAAa,EACb,OAAO,GACR,MAAM,SAAS,CAAA;AAEhB;;;GAGG;AACH,qBAAa,WAAW,CACtB,SAAS,EACT,OAAO,EACP,OAAO,GAAG,OAAO,EACjB,MAAM,SAAS,SAAS,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,EAC1D,eAAe,GAAG,SAAS,CAE3B,SAAQ,WAAW,CAAC,SAAS,EAAE,MAAM,CACrC,YAAW,OAAO,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,eAAe,CAAC;IAExE;;;OAGG;IACH,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;IAI3E;;;OAGG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;IAI3F;;;OAGG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC;CAGnF"}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import { BaseReadApi } from "./BaseReadApi.mjs";
|
|
2
2
|
|
|
3
3
|
//#region src/core/BaseCrudApi.ts
|
|
4
|
-
/**
|
|
4
|
+
/**
|
|
5
|
+
* Generic CRUD resource: the reads of `BaseReadApi` plus `create`, `updateById` and `deleteById`.
|
|
6
|
+
* `TDeleteResponse` is what `deleteById` resolves to (most routes answer the text `'OK'`).
|
|
7
|
+
*/
|
|
5
8
|
var BaseCrudApi = class extends BaseReadApi {
|
|
6
9
|
/**
|
|
7
10
|
* Creates a new resource.
|
|
@@ -19,7 +22,7 @@ var BaseCrudApi = class extends BaseReadApi {
|
|
|
19
22
|
}
|
|
20
23
|
/**
|
|
21
24
|
* Deletes a resource by ID.
|
|
22
|
-
* @permissions $resourceName.
|
|
25
|
+
* @permissions $resourceName.destroy
|
|
23
26
|
*/
|
|
24
27
|
deleteById(id, headers) {
|
|
25
28
|
return this.client.delete(`${this.basePath}/${id}`, headers);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseCrudApi.mjs","names":[],"sources":["../../src/core/BaseCrudApi.ts"],"sourcesContent":["import { BaseReadApi } from './BaseReadApi'\nimport type { CrudApi, ListQuery } from './types'\nexport type {\n WhereClause,\n IncludeItem,\n ListQuery,\n GetByIdQuery,\n Paginated,\n HasGetMany,\n HasGetById,\n HasCreate,\n HasUpdateById,\n HasDeleteById,\n CrudApi,\n} from './types'\n\n
|
|
1
|
+
{"version":3,"file":"BaseCrudApi.mjs","names":[],"sources":["../../src/core/BaseCrudApi.ts"],"sourcesContent":["import { BaseReadApi } from './BaseReadApi'\nimport type { CrudApi, ListQuery } from './types'\nexport type {\n WhereClause,\n IncludeItem,\n ListQuery,\n GetByIdQuery,\n Paginated,\n HasGetMany,\n HasGetById,\n HasCreate,\n HasUpdateById,\n HasDeleteById,\n CrudApi,\n} from './types'\n\n/**\n * Generic CRUD resource: the reads of `BaseReadApi` plus `create`, `updateById` and `deleteById`.\n * `TDeleteResponse` is what `deleteById` resolves to (most routes answer the text `'OK'`).\n */\nexport class BaseCrudApi<\n TResponse,\n TCreate,\n TUpdate = TCreate,\n TQuery extends ListQuery<TResponse> = ListQuery<TResponse>,\n TDeleteResponse = TResponse,\n>\n extends BaseReadApi<TResponse, TQuery>\n implements CrudApi<TResponse, TCreate, TUpdate, TQuery, TDeleteResponse>\n{\n /**\n * Creates a new resource.\n * @permissions $resourceName.create\n */\n create(body: TCreate, headers?: Record<string, string>): Promise<TResponse> {\n return this.client.post<TResponse, TCreate>(this.basePath, body, headers)\n }\n\n /**\n * Updates an existing resource by ID.\n * @permissions $resourceName.update\n */\n updateById(id: string, body: TUpdate, headers?: Record<string, string>): Promise<TResponse> {\n return this.client.put<TResponse, TUpdate>(`${this.basePath}/${id}`, body, headers)\n }\n\n /**\n * Deletes a resource by ID.\n * @permissions $resourceName.destroy\n */\n deleteById(id: string, headers?: Record<string, string>): Promise<TDeleteResponse> {\n return this.client.delete<TDeleteResponse>(`${this.basePath}/${id}`, headers)\n }\n}\n"],"mappings":";;;;;;;AAoBA,IAAa,cAAb,cAOU,YAEV;;;;;CAKE,OAAO,MAAe,SAAsD;AAC1E,SAAO,KAAK,OAAO,KAAyB,KAAK,UAAU,MAAM,QAAQ;;;;;;CAO3E,WAAW,IAAY,MAAe,SAAsD;AAC1F,SAAO,KAAK,OAAO,IAAwB,GAAG,KAAK,SAAS,GAAG,MAAM,MAAM,QAAQ;;;;;;CAOrF,WAAW,IAAY,SAA4D;AACjF,SAAO,KAAK,OAAO,OAAwB,GAAG,KAAK,SAAS,GAAG,MAAM,QAAQ"}
|
package/dist/core/types.d.ts
CHANGED
|
@@ -107,6 +107,6 @@ export interface HasUpdateById<TResponse, TUpdate> {
|
|
|
107
107
|
export interface HasDeleteById<TResponse> {
|
|
108
108
|
deleteById(id: string, headers?: Record<string, string>): Promise<TResponse>;
|
|
109
109
|
}
|
|
110
|
-
export type CrudApi<TResponse, TCreate, TUpdate = TCreate, TQuery extends ListQuery<TResponse> = ListQuery<TResponse
|
|
110
|
+
export type CrudApi<TResponse, TCreate, TUpdate = TCreate, TQuery extends ListQuery<TResponse> = ListQuery<TResponse>, TDeleteResponse = TResponse> = HasGetMany<TResponse, TQuery> & HasGetById<TResponse> & HasCreate<TResponse, TCreate> & HasUpdateById<TResponse, TUpdate> & HasDeleteById<TDeleteResponse>;
|
|
111
111
|
export {};
|
|
112
112
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/core/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { BotApiSignalData, BotRecord } from '../apis/bots';
|
|
2
2
|
import type { Campaign, CampaignRelationships } from '../apis/campaigns';
|
|
3
3
|
import type { Contact, ContactRelationships } from '../apis/contacts';
|
|
4
4
|
import type { Department, DepartmentRelationships } from '../apis/departments';
|
|
@@ -50,13 +50,13 @@ export interface WebhookEventPayloadMap {
|
|
|
50
50
|
'role.created': Omit<Role, RoleRelationships>;
|
|
51
51
|
'role.updated': Omit<Role, RoleRelationships>;
|
|
52
52
|
'role.destroyed': Omit<Role, RoleRelationships>;
|
|
53
|
-
'bot.created':
|
|
54
|
-
'bot.updated':
|
|
55
|
-
'bot.destroyed':
|
|
53
|
+
'bot.created': BotRecord;
|
|
54
|
+
'bot.updated': BotRecord;
|
|
55
|
+
'bot.destroyed': BotRecord;
|
|
56
56
|
'bot.command': BotCommandData;
|
|
57
|
-
'bot.enter-context':
|
|
58
|
-
'bot.leave-context':
|
|
59
|
-
'bot.api-signal':
|
|
57
|
+
'bot.enter-context': BotRecord;
|
|
58
|
+
'bot.leave-context': BotRecord;
|
|
59
|
+
'bot.api-signal': BotApiSignalData;
|
|
60
60
|
'quickReplies.created': Omit<QuickReply, QuickReplyRelationships>;
|
|
61
61
|
'quickReplies.updated': Omit<QuickReply, QuickReplyRelationships>;
|
|
62
62
|
'quickReplies.destroyed': Omit<QuickReply, QuickReplyRelationships>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/incommingWebhooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/incommingWebhooks/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { beforeEach, describe, expect, it, vi } from 'vitest'
|
|
2
|
+
import type { ApiClient } from '../../core/ApiClient'
|
|
3
|
+
import { AnswersApi } from './AnswersApi'
|
|
4
|
+
|
|
5
|
+
// ── Mock client factory ──────────────────────────────────────────────
|
|
6
|
+
|
|
7
|
+
function createMockClient(): ApiClient {
|
|
8
|
+
return {
|
|
9
|
+
setAccessToken: vi.fn().mockReturnThis(),
|
|
10
|
+
request: vi.fn(),
|
|
11
|
+
get: vi.fn(),
|
|
12
|
+
post: vi.fn(),
|
|
13
|
+
put: vi.fn(),
|
|
14
|
+
patch: vi.fn(),
|
|
15
|
+
delete: vi.fn(),
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
const headers = { 'X-Custom': 'value' }
|
|
20
|
+
const query = {
|
|
21
|
+
type: 'nps',
|
|
22
|
+
periodType: 'closeDate',
|
|
23
|
+
from: '2026-10-01',
|
|
24
|
+
to: '2026-10-02',
|
|
25
|
+
} as const
|
|
26
|
+
const encoded = `?query=${encodeURIComponent(JSON.stringify(query))}`
|
|
27
|
+
|
|
28
|
+
// ── Tests ────────────────────────────────────────────────────────────
|
|
29
|
+
|
|
30
|
+
describe('AnswersApi', () => {
|
|
31
|
+
let client: ReturnType<typeof createMockClient>
|
|
32
|
+
let api: AnswersApi
|
|
33
|
+
|
|
34
|
+
beforeEach(() => {
|
|
35
|
+
client = createMockClient()
|
|
36
|
+
api = new AnswersApi(client)
|
|
37
|
+
})
|
|
38
|
+
|
|
39
|
+
it('overview calls client.get with /answers/overview and the filters', async () => {
|
|
40
|
+
const overview = { total: { nps: 0, csat: 0 }, data: { nps: [], csat: {} } }
|
|
41
|
+
vi.mocked(client.get).mockResolvedValue(overview)
|
|
42
|
+
expect(await api.overview(query, headers)).toEqual(overview)
|
|
43
|
+
expect(client.get).toHaveBeenCalledWith(`/answers/overview${encoded}`, headers)
|
|
44
|
+
})
|
|
45
|
+
|
|
46
|
+
it('overview sends no query string without filters', async () => {
|
|
47
|
+
await api.overview()
|
|
48
|
+
expect(client.get).toHaveBeenCalledWith('/answers/overview', undefined)
|
|
49
|
+
})
|
|
50
|
+
|
|
51
|
+
it('exportCsv calls client.get with /answers/exportation-csv', async () => {
|
|
52
|
+
vi.mocked(client.get).mockResolvedValue('Número do protocolo,Contato\n')
|
|
53
|
+
expect(await api.exportCsv(query)).toBe('Número do protocolo,Contato\n')
|
|
54
|
+
expect(client.get).toHaveBeenCalledWith(`/answers/exportation-csv${encoded}`, undefined)
|
|
55
|
+
})
|
|
56
|
+
|
|
57
|
+
it('exportTxt calls client.get with /answers/exportation-txt', async () => {
|
|
58
|
+
await api.exportTxt(query, headers)
|
|
59
|
+
expect(client.get).toHaveBeenCalledWith(`/answers/exportation-txt${encoded}`, headers)
|
|
60
|
+
})
|
|
61
|
+
|
|
62
|
+
it('deleteById resolves to the OK of the route', async () => {
|
|
63
|
+
vi.mocked(client.delete).mockResolvedValue('OK')
|
|
64
|
+
expect(await api.deleteById('a1', headers)).toBe('OK')
|
|
65
|
+
expect(client.delete).toHaveBeenCalledWith('/answers/a1', headers)
|
|
66
|
+
})
|
|
67
|
+
})
|
|
@@ -1,9 +1,73 @@
|
|
|
1
1
|
import type { ApiClient } from '../../core/ApiClient'
|
|
2
2
|
import { BaseCrudApi } from '../../core/BaseCrudApi'
|
|
3
|
-
import type {
|
|
3
|
+
import type { ListQuery } from '../../core/types'
|
|
4
|
+
import type {
|
|
5
|
+
Answer,
|
|
6
|
+
AnswersOverview,
|
|
7
|
+
AnswersReportQuery,
|
|
8
|
+
CreateAnswerPayload,
|
|
9
|
+
UpdateAnswerPayload,
|
|
10
|
+
} from './types'
|
|
4
11
|
|
|
5
|
-
|
|
12
|
+
/**
|
|
13
|
+
* Answers of the evaluation questions. They are written by the bot flow (`SEND_QUESTION`); the
|
|
14
|
+
* CRUD routes exist but validate nothing.
|
|
15
|
+
*
|
|
16
|
+
* Permissions: `evaluation.view` to read, `evaluation.create`/`update`/`destroy` to write.
|
|
17
|
+
*/
|
|
18
|
+
export class AnswersApi extends BaseCrudApi<
|
|
19
|
+
Answer,
|
|
20
|
+
CreateAnswerPayload,
|
|
21
|
+
UpdateAnswerPayload,
|
|
22
|
+
ListQuery<Answer>,
|
|
23
|
+
'OK'
|
|
24
|
+
> {
|
|
6
25
|
constructor(client: ApiClient) {
|
|
7
26
|
super(client, '/answers')
|
|
8
27
|
}
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Deletes an answer (soft delete). Resolves to `'OK'`.
|
|
31
|
+
* @permissions evaluation.destroy
|
|
32
|
+
*/
|
|
33
|
+
override deleteById(id: string, headers?: Record<string, string>): Promise<'OK'> {
|
|
34
|
+
return super.deleteById(id, headers)
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Counts the NPS and CSAT answers of closed tickets. An error answers 500 with a string body.
|
|
39
|
+
* @permissions overview.evaluation.view
|
|
40
|
+
*/
|
|
41
|
+
overview(query?: AnswersReportQuery, headers?: Record<string, string>): Promise<AnswersOverview> {
|
|
42
|
+
return this.client.get<AnswersOverview>(
|
|
43
|
+
`${this.basePath}/overview${this.toQueryString(query)}`,
|
|
44
|
+
headers,
|
|
45
|
+
)
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Exports the answers as CSV (`,`, header in the language of the user, dates in the timezone of
|
|
50
|
+
* the account), sent as the attachment `evaluation-reports.csv`. An unknown `type` answers 400
|
|
51
|
+
* `{ error: 'Tipo de consulta inválido' }`.
|
|
52
|
+
* @permissions overview.evaluation.view
|
|
53
|
+
*/
|
|
54
|
+
exportCsv(query?: AnswersReportQuery, headers?: Record<string, string>): Promise<string> {
|
|
55
|
+
return this.client.get<string>(
|
|
56
|
+
`${this.basePath}/exportation-csv${this.toQueryString(query)}`,
|
|
57
|
+
headers,
|
|
58
|
+
)
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Exports the answers as text, one block per answer and the count of unanswered ones at the
|
|
63
|
+
* end, sent as the attachment `evaluation-reports.txt` (Content-Type `plain/text`). An unknown
|
|
64
|
+
* `type` answers 400 `{ error: 'Tipo de consulta inválido' }`.
|
|
65
|
+
* @permissions overview.evaluation.view
|
|
66
|
+
*/
|
|
67
|
+
exportTxt(query?: AnswersReportQuery, headers?: Record<string, string>): Promise<string> {
|
|
68
|
+
return this.client.get<string>(
|
|
69
|
+
`${this.basePath}/exportation-txt${this.toQueryString(query)}`,
|
|
70
|
+
headers,
|
|
71
|
+
)
|
|
72
|
+
}
|
|
9
73
|
}
|
|
@@ -3,7 +3,11 @@ import type { Ticket } from '../tickets/types'
|
|
|
3
3
|
|
|
4
4
|
export type Answer = {
|
|
5
5
|
id: string
|
|
6
|
-
|
|
6
|
+
/**
|
|
7
|
+
* The score (NPS 0–10, CSAT 1–5) or one of the values the system writes: `'nv'` (sent, not
|
|
8
|
+
* answered), `'-1'` (expired or out of tries), `'no credits'` (AI CSAT without credits).
|
|
9
|
+
*/
|
|
10
|
+
text: string | null
|
|
7
11
|
reason: string | null
|
|
8
12
|
aiGenerated: boolean
|
|
9
13
|
aiText: string | null
|
|
@@ -12,13 +16,19 @@ export type Answer = {
|
|
|
12
16
|
createdAt: string
|
|
13
17
|
updatedAt: string
|
|
14
18
|
deletedAt: string | null
|
|
15
|
-
|
|
19
|
+
/** @deprecated Never comes: the route drops every `include` (empty whitelist). */
|
|
16
20
|
question?: Question
|
|
21
|
+
/** @deprecated Never comes: the route drops every `include` (empty whitelist). */
|
|
17
22
|
ticket?: Ticket
|
|
18
23
|
}
|
|
19
24
|
|
|
25
|
+
/** @deprecated The route drops every `include` (empty whitelist). */
|
|
20
26
|
export type AnswerRelationships = 'question' | 'ticket'
|
|
21
27
|
|
|
28
|
+
/**
|
|
29
|
+
* The route validates nothing: not the question, the ticket nor their account, and the answer is
|
|
30
|
+
* saved even for an open ticket.
|
|
31
|
+
*/
|
|
22
32
|
export type CreateAnswerPayload = {
|
|
23
33
|
text: string
|
|
24
34
|
questionId: string
|
|
@@ -30,3 +40,55 @@ export type UpdateAnswerPayload = {
|
|
|
30
40
|
text?: string
|
|
31
41
|
reason?: string
|
|
32
42
|
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Filters of the overview and of the exports. Only answers of CLOSED tickets of the account
|
|
46
|
+
* count, and the period is the one of the ticket, not the answer date.
|
|
47
|
+
*/
|
|
48
|
+
export type AnswersReportQuery = {
|
|
49
|
+
/** `ia-csat` is the CSAT scored by AI. Another value answers 400 in the exports and 500 in the overview. */
|
|
50
|
+
type?: 'nps' | 'csat' | 'ia-csat'
|
|
51
|
+
/** Without it, `from`/`to` are ignored. `openDate` = ticket start, `closeDate` = ticket end, `all` = either. */
|
|
52
|
+
periodType?: 'all' | 'openDate' | 'closeDate'
|
|
53
|
+
/** ISO date. */
|
|
54
|
+
from?: string
|
|
55
|
+
/** ISO date. */
|
|
56
|
+
to?: string
|
|
57
|
+
/** Attendant of the ticket. */
|
|
58
|
+
userId?: string
|
|
59
|
+
/** Department of the ticket. */
|
|
60
|
+
departmentId?: string
|
|
61
|
+
/** Connection of the contact. */
|
|
62
|
+
serviceId?: string
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
export type AnswersCsatOverview = {
|
|
66
|
+
fullySatisfied: number
|
|
67
|
+
satisfied: number
|
|
68
|
+
neutral: number
|
|
69
|
+
unsatisfied: number
|
|
70
|
+
fullyUnsatisfied: number
|
|
71
|
+
noCredits: number
|
|
72
|
+
invalid: number
|
|
73
|
+
/**
|
|
74
|
+
* Answers scored by AI. Without the `enable-smart-csat-score` flag they are counted here; with
|
|
75
|
+
* it they leave `csat` (this stays 0) and go to `aiCsat`.
|
|
76
|
+
*/
|
|
77
|
+
ai: number
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/** `[promoters, neutral, detractors, invalid, ai]` — positional, empty when there is no NPS answer. */
|
|
81
|
+
export type AnswersNpsOverview = [number, number, number, number, number] | []
|
|
82
|
+
|
|
83
|
+
export type AnswersOverview = {
|
|
84
|
+
total: { nps: number; csat: number; aiCsat?: number }
|
|
85
|
+
data: {
|
|
86
|
+
nps: AnswersNpsOverview
|
|
87
|
+
/** `{}` when no answer matches. */
|
|
88
|
+
csat: AnswersCsatOverview | Record<string, never>
|
|
89
|
+
/** Absent when no answer matches or the account does not have the flag. */
|
|
90
|
+
isSmartCsatScoreEnabled?: boolean
|
|
91
|
+
/** Only with the `enable-smart-csat-score` flag of the account. */
|
|
92
|
+
aiCsat?: AnswersCsatOverview | Record<string, never>
|
|
93
|
+
}
|
|
94
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { beforeEach, describe, expect, it, vi } from 'vitest'
|
|
2
|
+
import type { ApiClient } from '../../core/ApiClient'
|
|
3
|
+
import { BotSimulatorsApi } from './BotSimulatorsApi'
|
|
4
|
+
|
|
5
|
+
// ── Mock client factory ──────────────────────────────────────────────
|
|
6
|
+
|
|
7
|
+
function createMockClient(): ApiClient {
|
|
8
|
+
return {
|
|
9
|
+
setAccessToken: vi.fn().mockReturnThis(),
|
|
10
|
+
request: vi.fn(),
|
|
11
|
+
get: vi.fn(),
|
|
12
|
+
post: vi.fn(),
|
|
13
|
+
put: vi.fn(),
|
|
14
|
+
patch: vi.fn(),
|
|
15
|
+
delete: vi.fn(),
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
const headers = { 'X-Custom': 'value' }
|
|
20
|
+
|
|
21
|
+
// ── Tests ────────────────────────────────────────────────────────────
|
|
22
|
+
|
|
23
|
+
describe('BotSimulatorsApi', () => {
|
|
24
|
+
let client: ReturnType<typeof createMockClient>
|
|
25
|
+
let api: BotSimulatorsApi
|
|
26
|
+
|
|
27
|
+
beforeEach(() => {
|
|
28
|
+
client = createMockClient()
|
|
29
|
+
api = new BotSimulatorsApi(client)
|
|
30
|
+
})
|
|
31
|
+
|
|
32
|
+
it('getContactMessages calls client.get with /bot-simulators/contact-messages/:botId', async () => {
|
|
33
|
+
const state = { contact: { id: 'c1', name: 'QA', createdAt: 'x', session: '' }, messages: [] }
|
|
34
|
+
vi.mocked(client.get).mockResolvedValue(state)
|
|
35
|
+
expect(await api.getContactMessages('b1', headers)).toEqual(state)
|
|
36
|
+
expect(client.get).toHaveBeenCalledWith('/bot-simulators/contact-messages/b1', headers)
|
|
37
|
+
})
|
|
38
|
+
|
|
39
|
+
it('sendEvent posts the event to /bot-simulators/send-event/:botId', async () => {
|
|
40
|
+
vi.mocked(client.post).mockResolvedValue('OK')
|
|
41
|
+
const body = { type: 'select_trigger', id: 'm1', selectedValue: 'TICKET_OPENED' } as const
|
|
42
|
+
expect(await api.sendEvent('b1', body)).toBe('OK')
|
|
43
|
+
expect(client.post).toHaveBeenCalledWith('/bot-simulators/send-event/b1', body, undefined)
|
|
44
|
+
})
|
|
45
|
+
|
|
46
|
+
it('sendEvent resolves false when the simulator refuses the event', async () => {
|
|
47
|
+
vi.mocked(client.post).mockResolvedValue(false)
|
|
48
|
+
const body = { type: 'select_condition', id: 'm1', selectedValue: true } as const
|
|
49
|
+
expect(await api.sendEvent('b1', body, headers)).toBe(false)
|
|
50
|
+
expect(client.post).toHaveBeenCalledWith('/bot-simulators/send-event/b1', body, headers)
|
|
51
|
+
})
|
|
52
|
+
|
|
53
|
+
it('restart posts an empty body to /bot-simulators/restart-simulator/:botId', async () => {
|
|
54
|
+
vi.mocked(client.post).mockResolvedValue({ restartDate: '2026-10-01T00:00:00.000Z' })
|
|
55
|
+
expect(await api.restart('b1')).toEqual({ restartDate: '2026-10-01T00:00:00.000Z' })
|
|
56
|
+
expect(client.post).toHaveBeenCalledWith('/bot-simulators/restart-simulator/b1', {}, undefined)
|
|
57
|
+
})
|
|
58
|
+
})
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { BaseApi } from '../../core/BaseApi'
|
|
2
|
+
import type {
|
|
3
|
+
BotSimulatorEventPayload,
|
|
4
|
+
BotSimulatorEventResult,
|
|
5
|
+
BotSimulatorRestartResult,
|
|
6
|
+
BotSimulatorState,
|
|
7
|
+
} from './types'
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* The bot simulator of the bot builder. It runs the latest version of the bot (draft or
|
|
11
|
+
* published) against a virtual contact kept in the cache, one per user and bot — no contact,
|
|
12
|
+
* connection or ticket is created. The bot answers asynchronously (~0.5–1 s per bot message plus
|
|
13
|
+
* the queue): poll `getContactMessages` for the answers. A bot saved without `flowJson.edges`
|
|
14
|
+
* never answers (SD-2323).
|
|
15
|
+
*/
|
|
16
|
+
export class BotSimulatorsApi extends BaseApi {
|
|
17
|
+
public readonly basePath = '/bot-simulators'
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Returns the virtual contact and its messages. The first call starts the simulator: it creates
|
|
21
|
+
* the contact and pushes the `select_trigger_bot` message with the `@INIT` triggers.
|
|
22
|
+
* @permissions bots.update
|
|
23
|
+
*/
|
|
24
|
+
getContactMessages(botId: string, headers?: Record<string, string>): Promise<BotSimulatorState> {
|
|
25
|
+
return this.client.get<BotSimulatorState>(`${this.basePath}/contact-messages/${botId}`, headers)
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Sends an event to the simulator: a message of the contact, or the pick of a trigger or of a
|
|
30
|
+
* condition result.
|
|
31
|
+
* @permissions bots.update
|
|
32
|
+
*/
|
|
33
|
+
sendEvent(
|
|
34
|
+
botId: string,
|
|
35
|
+
body: BotSimulatorEventPayload,
|
|
36
|
+
headers?: Record<string, string>,
|
|
37
|
+
): Promise<BotSimulatorEventResult> {
|
|
38
|
+
return this.client.post<BotSimulatorEventResult, BotSimulatorEventPayload>(
|
|
39
|
+
`${this.basePath}/send-event/${botId}`,
|
|
40
|
+
body,
|
|
41
|
+
headers,
|
|
42
|
+
)
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Clears the messages and starts over with a new virtual contact (new id, empty session) and a
|
|
47
|
+
* new `select_trigger_bot` message. Runs already queued in the worker are not cancelled.
|
|
48
|
+
* @permissions bots.update
|
|
49
|
+
*/
|
|
50
|
+
restart(botId: string, headers?: Record<string, string>): Promise<BotSimulatorRestartResult> {
|
|
51
|
+
return this.client.post<BotSimulatorRestartResult>(
|
|
52
|
+
`${this.basePath}/restart-simulator/${botId}`,
|
|
53
|
+
{},
|
|
54
|
+
headers,
|
|
55
|
+
)
|
|
56
|
+
}
|
|
57
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import type { BotEvent } from '../bots/types'
|
|
2
|
+
|
|
3
|
+
export type BotSimulatorMessageType =
|
|
4
|
+
| 'text_bot'
|
|
5
|
+
| 'text_interactive_bot'
|
|
6
|
+
| 'select_trigger_bot'
|
|
7
|
+
| 'select_condition_bot'
|
|
8
|
+
| 'text_contact'
|
|
9
|
+
| 'chat_event'
|
|
10
|
+
|
|
11
|
+
export type BotSimulatorMessage = {
|
|
12
|
+
id: string
|
|
13
|
+
type: BotSimulatorMessageType
|
|
14
|
+
/** Empty for the selection messages. `chat_event` carries the block name (e.g. `ADD_TAG_NODE`). */
|
|
15
|
+
text: string
|
|
16
|
+
data: {
|
|
17
|
+
/** In `select_trigger_bot`: the triggers of `@INIT` to pick from. */
|
|
18
|
+
trigger?: { events: BotEvent[] }
|
|
19
|
+
/** In `select_condition_bot`. */
|
|
20
|
+
conditionNodeId?: string
|
|
21
|
+
/** What `sendEvent` picked for this selection message. */
|
|
22
|
+
selectedValue?: string | boolean
|
|
23
|
+
interactive?: unknown
|
|
24
|
+
customFieldData?: { type: string; name: string; id: string; settings: unknown }
|
|
25
|
+
}
|
|
26
|
+
createdAt: string
|
|
27
|
+
file?: { id: string; url: string; publicFilename: string }
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/** The virtual contact of the simulator: it lives in the cache, one per user and bot. */
|
|
31
|
+
export type BotSimulatorContact = {
|
|
32
|
+
id: string
|
|
33
|
+
/** The name of the user running the simulator. */
|
|
34
|
+
name: string
|
|
35
|
+
createdAt: string
|
|
36
|
+
/** `null` in the call that starts the simulator, `''` after it, until the bot runs. */
|
|
37
|
+
session: { store: { context?: string; contextPassCount?: number } } | '' | null
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export type BotSimulatorState = {
|
|
41
|
+
contact: BotSimulatorContact
|
|
42
|
+
/** Sorted by `createdAt`. */
|
|
43
|
+
messages: BotSimulatorMessage[]
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export type BotSimulatorEventPayload =
|
|
47
|
+
| {
|
|
48
|
+
/** A message of the contact: pushed at once, the bot answers asynchronously. */
|
|
49
|
+
type: 'text_contact'
|
|
50
|
+
text: string
|
|
51
|
+
}
|
|
52
|
+
| {
|
|
53
|
+
/** Picks the trigger of a `select_trigger_bot` message. Only while the contact is in `@INIT`. */
|
|
54
|
+
type: 'select_trigger'
|
|
55
|
+
/** The id of the `select_trigger_bot` message. */
|
|
56
|
+
id: string
|
|
57
|
+
selectedValue: BotEvent
|
|
58
|
+
}
|
|
59
|
+
| {
|
|
60
|
+
/** Forces the result of a condition block. Only while the contact is in a `CONDITION_NODE_*` context. */
|
|
61
|
+
type: 'select_condition'
|
|
62
|
+
/** The id of the `select_condition_bot` message. */
|
|
63
|
+
id: string
|
|
64
|
+
selectedValue: boolean
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/** `'OK'` when the event was taken; `false` when refused (wrong context, missing id). */
|
|
68
|
+
export type BotSimulatorEventResult = 'OK' | false
|
|
69
|
+
|
|
70
|
+
export type BotSimulatorRestartResult = {
|
|
71
|
+
restartDate: string
|
|
72
|
+
}
|