@ctchealth/plato-sdk 0.0.7 → 0.0.8

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/package.json CHANGED
@@ -1,9 +1,10 @@
1
1
  {
2
2
  "name": "@ctchealth/plato-sdk",
3
- "version": "0.0.7",
3
+ "version": "0.0.8",
4
4
  "dependencies": {
5
5
  "tslib": "^2.3.0",
6
- "@vapi-ai/web": "2.1.8"
6
+ "@vapi-ai/web": "2.1.8",
7
+ "axios": "^1.7.9"
7
8
  },
8
9
  "type": "commonjs",
9
10
  "main": "./src/index.js",
@@ -11,5 +12,5 @@
11
12
  "publishConfig": {
12
13
  "access": "public"
13
14
  },
14
- "types": "./src/index.d.ts"
15
+ "types": "./../libs/plato-sdk/src/index.d.ts"
15
16
  }
@@ -1,3 +1,16 @@
1
+ /**
2
+ * Copyright (c) 2025 ctcHealth. All rights reserved.
3
+ *
4
+ * This file is part of the ctcHealth Plato Platform, a proprietary software system developed by ctcHealth.
5
+ *
6
+ * This source code and all related materials are confidential and proprietary to ctcHealth.
7
+ * Unauthorized access, use, copying, modification, distribution, or disclosure is strictly prohibited
8
+ * and may result in disciplinary action and civil and/or criminal penalties.
9
+ *
10
+ * This software is intended solely for authorized use within ctcHealth and its designated partners.
11
+ *
12
+ * For internal use only.
13
+ */
1
14
  export declare enum YearOfExperience {
2
15
  '1-5' = "1-5 years",
3
16
  '6-10' = "6-10 years",
@@ -28,8 +41,6 @@ export declare class PersonalityAndBehaviourDto {
28
41
  recognitionNeed: number;
29
42
  brandLoyalty: number;
30
43
  patientEmpathy: number;
31
- trainingDifficulty: number;
32
- friendliness: number;
33
44
  }
34
45
  export declare class ProfessionalProfileDto {
35
46
  practiceSettings: string;
@@ -48,18 +59,12 @@ export declare class CharacterCreateDto {
48
59
  segment: SegmentType;
49
60
  personalityAndBehaviour: PersonalityAndBehaviourDto;
50
61
  context: ContextDto;
51
- assistantGender: AssistantVoiceGender;
62
+ assistantGender?: AssistantVoiceGender;
52
63
  }
53
64
  export declare class ProductConfig {
54
65
  name: string;
55
66
  description: string;
56
67
  }
57
- export declare class TrainingConfigurationDto {
58
- readonly trainingDifficulty: number;
59
- readonly communicationFormality: number;
60
- readonly friendlinessLevel: number;
61
- readonly subjectMatterExpertise: number;
62
- }
63
68
  export declare class CreateSimulationDto {
64
69
  persona: CharacterCreateDto;
65
70
  product: ProductConfig;
@@ -67,7 +72,27 @@ export declare class CreateSimulationDto {
67
72
  scenario: string;
68
73
  objectives?: string[];
69
74
  anticipatedObjections?: string[];
70
- trainingConfiguration: TrainingConfigurationDto;
75
+ }
76
+ export type RecordingsLimit = 5 | 10 | 25;
77
+ export declare class SimulationRecordingsQueryDto {
78
+ limit?: RecordingsLimit;
79
+ page?: number;
80
+ sort?: SortOrder;
81
+ }
82
+ export declare enum SortOrder {
83
+ ASC = "asc",
84
+ DESC = "desc"
85
+ }
86
+ export declare enum RecordingStatus {
87
+ STARTED = "STARTED",
88
+ PROCESSING = "PROCESSING",
89
+ FINISHED = "FINISHED",
90
+ FAILED = "FAILED"
91
+ }
92
+ export declare class SimulationRecordingsDto {
93
+ _id: string;
94
+ createdAt: Date;
95
+ recordingStatus?: RecordingStatus;
71
96
  }
72
97
  export interface CallCreateDto {
73
98
  /**
@@ -116,6 +141,10 @@ export interface CallDTO {
116
141
  * call Recording URL
117
142
  */
118
143
  recordingUrl: string;
144
+ /**
145
+ * Status of recording processing (e.g., 'STARTED', 'PROCESSING', 'FINISHED', 'FAILED')
146
+ */
147
+ recordingStatus?: RecordingStatus;
119
148
  /**
120
149
  * Date and Time of the creation of the message
121
150
  */
@@ -1,6 +1,19 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CreationPhase = exports.CreationStatus = exports.CreateSimulationDto = exports.TrainingConfigurationDto = exports.ProductConfig = exports.CharacterCreateDto = exports.ContextDto = exports.ProfessionalProfileDto = exports.PersonalityAndBehaviourDto = exports.AssistantVoiceGender = exports.SegmentType = exports.PracticeType = exports.YearOfExperience = void 0;
3
+ exports.CreationPhase = exports.CreationStatus = exports.SimulationRecordingsDto = exports.RecordingStatus = exports.SortOrder = exports.SimulationRecordingsQueryDto = exports.CreateSimulationDto = exports.ProductConfig = exports.CharacterCreateDto = exports.ContextDto = exports.ProfessionalProfileDto = exports.PersonalityAndBehaviourDto = exports.AssistantVoiceGender = exports.SegmentType = exports.PracticeType = exports.YearOfExperience = void 0;
4
+ /**
5
+ * Copyright (c) 2025 ctcHealth. All rights reserved.
6
+ *
7
+ * This file is part of the ctcHealth Plato Platform, a proprietary software system developed by ctcHealth.
8
+ *
9
+ * This source code and all related materials are confidential and proprietary to ctcHealth.
10
+ * Unauthorized access, use, copying, modification, distribution, or disclosure is strictly prohibited
11
+ * and may result in disciplinary action and civil and/or criminal penalties.
12
+ *
13
+ * This software is intended solely for authorized use within ctcHealth and its designated partners.
14
+ *
15
+ * For internal use only.
16
+ */
4
17
  var YearOfExperience;
5
18
  (function (YearOfExperience) {
6
19
  YearOfExperience["1-5"] = "1-5 years";
@@ -35,8 +48,6 @@ class PersonalityAndBehaviourDto {
35
48
  recognitionNeed;
36
49
  brandLoyalty;
37
50
  patientEmpathy;
38
- trainingDifficulty;
39
- friendliness;
40
51
  }
41
52
  exports.PersonalityAndBehaviourDto = PersonalityAndBehaviourDto;
42
53
  class ProfessionalProfileDto {
@@ -66,13 +77,6 @@ class ProductConfig {
66
77
  description;
67
78
  }
68
79
  exports.ProductConfig = ProductConfig;
69
- class TrainingConfigurationDto {
70
- trainingDifficulty;
71
- communicationFormality;
72
- friendlinessLevel;
73
- subjectMatterExpertise;
74
- }
75
- exports.TrainingConfigurationDto = TrainingConfigurationDto;
76
80
  class CreateSimulationDto {
77
81
  persona;
78
82
  product;
@@ -80,9 +84,32 @@ class CreateSimulationDto {
80
84
  scenario;
81
85
  objectives;
82
86
  anticipatedObjections;
83
- trainingConfiguration;
84
87
  }
85
88
  exports.CreateSimulationDto = CreateSimulationDto;
89
+ class SimulationRecordingsQueryDto {
90
+ limit;
91
+ page;
92
+ sort;
93
+ }
94
+ exports.SimulationRecordingsQueryDto = SimulationRecordingsQueryDto;
95
+ var SortOrder;
96
+ (function (SortOrder) {
97
+ SortOrder["ASC"] = "asc";
98
+ SortOrder["DESC"] = "desc";
99
+ })(SortOrder || (exports.SortOrder = SortOrder = {}));
100
+ var RecordingStatus;
101
+ (function (RecordingStatus) {
102
+ RecordingStatus["STARTED"] = "STARTED";
103
+ RecordingStatus["PROCESSING"] = "PROCESSING";
104
+ RecordingStatus["FINISHED"] = "FINISHED";
105
+ RecordingStatus["FAILED"] = "FAILED";
106
+ })(RecordingStatus || (exports.RecordingStatus = RecordingStatus = {}));
107
+ class SimulationRecordingsDto {
108
+ _id;
109
+ createdAt;
110
+ recordingStatus;
111
+ }
112
+ exports.SimulationRecordingsDto = SimulationRecordingsDto;
86
113
  var CreationStatus;
87
114
  (function (CreationStatus) {
88
115
  CreationStatus["CREATING"] = "CREATING";
@@ -1 +1 @@
1
- {"version":3,"file":"plato-intefaces.js","sourceRoot":"","sources":["../../../../../libs/plato-sdk/src/lib/plato-intefaces.ts"],"names":[],"mappings":";;;AAAA,IAAY,gBAKX;AALD,WAAY,gBAAgB;IAC1B,qCAAmB,CAAA;IACnB,uCAAqB,CAAA;IACrB,yCAAuB,CAAA;IACvB,qCAAmB,CAAA;AACrB,CAAC,EALW,gBAAgB,gCAAhB,gBAAgB,QAK3B;AAGD,IAAY,YAKX;AALD,WAAY,YAAY;IACtB,4CAA4B,CAAA;IAC5B,qCAAqB,CAAA;IACrB,iEAAiD,CAAA;IACjD,iCAAiB,CAAA;AACnB,CAAC,EALW,YAAY,4BAAZ,YAAY,QAKvB;AACD,IAAY,WAOX;AAPD,WAAY,WAAW;IACrB,oDAAqC,CAAA;IACrC,0CAA2B,CAAA;IAC3B,0EAA2D,CAAA;IAC3D,gFAAiE,CAAA;IACjE,qDAAsC,CAAA;IACtC,wEAAyD,CAAA;AAC3D,CAAC,EAPW,WAAW,2BAAX,WAAW,QAOtB;AAED,IAAY,oBAGX;AAHD,WAAY,oBAAoB;IAC9B,qCAAa,CAAA;IACb,yCAAiB,CAAA;AACnB,CAAC,EAHW,oBAAoB,oCAApB,oBAAoB,QAG/B;AAED,MAAa,0BAA0B;IACrC,aAAa,CAAU;IACvB,mBAAmB,CAAU;IAC7B,eAAe,CAAU;IACzB,YAAY,CAAU;IACtB,cAAc,CAAU;IACxB,kBAAkB,CAAU;IAC5B,YAAY,CAAU;CACvB;AARD,gEAQC;AAED,MAAa,sBAAsB;IACjC,gBAAgB,CAAU;IAC1B,gBAAgB,CAAU;IAC1B,uBAAuB,CAAU;IACjC,QAAQ,CAAU;CACnB;AALD,wDAKC;AAED,MAAa,UAAU;IACrB,2BAA2B,CAAU;IACrC,iBAAiB,CAAU;IAC3B,kBAAkB,CAAU;CAC7B;AAJD,gCAIC;AAED,MAAa,kBAAkB;IAC7B,IAAI,CAAU;IACd,mBAAmB,CAA0B;IAC7C,OAAO,CAAgB;IACvB,uBAAuB,CAA8B;IACrD,OAAO,CAAc;IACrB,eAAe,CAAyB;CACzC;AAPD,gDAOC;AAED,MAAa,aAAa;IACxB,IAAI,CAAU;IACd,WAAW,CAAU;CACtB;AAHD,sCAGC;AAED,MAAa,wBAAwB;IAC1B,kBAAkB,CAAU;IAC5B,sBAAsB,CAAU;IAChC,iBAAiB,CAAU;IAC3B,sBAAsB,CAAU;CAC1C;AALD,4DAKC;AAED,MAAa,mBAAmB;IAC9B,OAAO,CAAsB;IAC7B,OAAO,CAAiB;IACxB,YAAY,CAAU;IACtB,QAAQ,CAAU;IAClB,UAAU,CAAY;IACtB,qBAAqB,CAAY;IACjC,qBAAqB,CAA4B;CAClD;AARD,kDAQC;AA2GD,IAAY,cAIX;AAJD,WAAY,cAAc;IACxB,uCAAqB,CAAA;IACrB,iCAAe,CAAA;IACf,iCAAe,CAAA;AACjB,CAAC,EAJW,cAAc,8BAAd,cAAc,QAIzB;AACD,IAAY,aASX;AATD,WAAY,aAAa;IACvB,sCAAqB,CAAA;IACrB,8BAAa,CAAA;IACb,0CAAyB,CAAA;IACzB,0DAAyC,CAAA;IACzC,kEAAiD,CAAA;IACjD,kCAAiB,CAAA;IACjB,sCAAqB,CAAA;IACrB,gCAAe,CAAA;AACjB,CAAC,EATW,aAAa,6BAAb,aAAa,QASxB"}
1
+ {"version":3,"file":"plato-intefaces.js","sourceRoot":"","sources":["../../../../../libs/plato-sdk/src/lib/plato-intefaces.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;GAYG;AACH,IAAY,gBAKX;AALD,WAAY,gBAAgB;IAC1B,qCAAmB,CAAA;IACnB,uCAAqB,CAAA;IACrB,yCAAuB,CAAA;IACvB,qCAAmB,CAAA;AACrB,CAAC,EALW,gBAAgB,gCAAhB,gBAAgB,QAK3B;AAED,IAAY,YAKX;AALD,WAAY,YAAY;IACtB,4CAA4B,CAAA;IAC5B,qCAAqB,CAAA;IACrB,iEAAiD,CAAA;IACjD,iCAAiB,CAAA;AACnB,CAAC,EALW,YAAY,4BAAZ,YAAY,QAKvB;AACD,IAAY,WAOX;AAPD,WAAY,WAAW;IACrB,oDAAqC,CAAA;IACrC,0CAA2B,CAAA;IAC3B,0EAA2D,CAAA;IAC3D,gFAAiE,CAAA;IACjE,qDAAsC,CAAA;IACtC,wEAAyD,CAAA;AAC3D,CAAC,EAPW,WAAW,2BAAX,WAAW,QAOtB;AAED,IAAY,oBAGX;AAHD,WAAY,oBAAoB;IAC9B,qCAAa,CAAA;IACb,yCAAiB,CAAA;AACnB,CAAC,EAHW,oBAAoB,oCAApB,oBAAoB,QAG/B;AAED,MAAa,0BAA0B;IACrC,aAAa,CAAU;IACvB,mBAAmB,CAAU;IAC7B,eAAe,CAAU;IACzB,YAAY,CAAU;IACtB,cAAc,CAAU;CACzB;AAND,gEAMC;AAED,MAAa,sBAAsB;IACjC,gBAAgB,CAAU;IAC1B,gBAAgB,CAAU;IAC1B,uBAAuB,CAAU;IACjC,QAAQ,CAAU;CACnB;AALD,wDAKC;AAED,MAAa,UAAU;IACrB,2BAA2B,CAAU;IACrC,iBAAiB,CAAU;IAC3B,kBAAkB,CAAU;CAC7B;AAJD,gCAIC;AAED,MAAa,kBAAkB;IAC7B,IAAI,CAAU;IACd,mBAAmB,CAA0B;IAC7C,OAAO,CAAe;IACtB,uBAAuB,CAA8B;IACrD,OAAO,CAAc;IACrB,eAAe,CAAwB;CACxC;AAPD,gDAOC;AAED,MAAa,aAAa;IACxB,IAAI,CAAU;IACd,WAAW,CAAU;CACtB;AAHD,sCAGC;AAED,MAAa,mBAAmB;IAC9B,OAAO,CAAsB;IAC7B,OAAO,CAAiB;IACxB,YAAY,CAAU;IACtB,QAAQ,CAAU;IAClB,UAAU,CAAY;IACtB,qBAAqB,CAAY;CAClC;AAPD,kDAOC;AAID,MAAa,4BAA4B;IACvC,KAAK,CAAmB;IACxB,IAAI,CAAU;IACd,IAAI,CAAa;CAClB;AAJD,oEAIC;AAED,IAAY,SAGX;AAHD,WAAY,SAAS;IACnB,wBAAW,CAAA;IACX,0BAAa,CAAA;AACf,CAAC,EAHW,SAAS,yBAAT,SAAS,QAGpB;AAED,IAAY,eAKX;AALD,WAAY,eAAe;IACzB,sCAAmB,CAAA;IACnB,4CAAyB,CAAA;IACzB,wCAAqB,CAAA;IACrB,oCAAiB,CAAA;AACnB,CAAC,EALW,eAAe,+BAAf,eAAe,QAK1B;AAED,MAAa,uBAAuB;IAClC,GAAG,CAAU;IACb,SAAS,CAAQ;IACjB,eAAe,CAAmB;CACnC;AAJD,0DAIC;AA6GD,IAAY,cAIX;AAJD,WAAY,cAAc;IACxB,uCAAqB,CAAA;IACrB,iCAAe,CAAA;IACf,iCAAe,CAAA;AACjB,CAAC,EAJW,cAAc,8BAAd,cAAc,QAIzB;AACD,IAAY,aASX;AATD,WAAY,aAAa;IACvB,sCAAqB,CAAA;IACrB,8BAAa,CAAA;IACb,0CAAyB,CAAA;IACzB,0DAAyC,CAAA;IACzC,kEAAiD,CAAA;IACjD,kCAAiB,CAAA;IACjB,sCAAqB,CAAA;IACrB,gCAAe,CAAA;AACjB,CAAC,EATW,aAAa,6BAAb,aAAa,QASxB"}
@@ -1,4 +1,4 @@
1
- import { CallDTO, CreateSimulationDto, CreationPhase } from './plato-intefaces';
1
+ import { CallDTO, CreateSimulationDto, CreationPhase, SimulationRecordingsDto, SimulationRecordingsQueryDto } from './plato-intefaces';
2
2
  export interface ApiClientConfig {
3
3
  baseUrl: string;
4
4
  token?: string;
@@ -12,8 +12,8 @@ export interface CallEventMap {
12
12
  'call-end': void;
13
13
  'speech-start': void;
14
14
  'speech-end': void;
15
- 'error': Error;
16
- 'message': {
15
+ error: Error;
16
+ message: {
17
17
  type: string;
18
18
  role: string;
19
19
  transcript?: string;
@@ -58,6 +58,8 @@ export declare class PlatoApiClient {
58
58
  phase: CreationPhase;
59
59
  }>;
60
60
  getCallDetails(callId: string): Promise<CallDTO>;
61
+ getCallRecordings(queryParams: SimulationRecordingsQueryDto): Promise<SimulationRecordingsDto[]>;
62
+ getCallRecording(callId: string): Promise<string>;
61
63
  /**
62
64
  * Remove all listeners for all call events.
63
65
  */
@@ -113,6 +113,32 @@ class PlatoApiClient {
113
113
  throw e;
114
114
  }
115
115
  }
116
+ async getCallRecordings(queryParams) {
117
+ try {
118
+ const res = await this.http.get(`/api/v1/simulation/call/recordings`, {
119
+ params: queryParams,
120
+ });
121
+ return res.data;
122
+ }
123
+ catch (e) {
124
+ if (axios_1.default.isAxiosError(e)) {
125
+ console.error('Error getting call recordings:', e.response?.data.message);
126
+ }
127
+ throw e;
128
+ }
129
+ }
130
+ async getCallRecording(callId) {
131
+ try {
132
+ const res = await this.http.get(`/api/v1/simulation/call/recordings/${callId}`);
133
+ return res.data;
134
+ }
135
+ catch (e) {
136
+ if (axios_1.default.isAxiosError(e)) {
137
+ console.error('Error getting call recording:', e.response?.data.message);
138
+ }
139
+ throw e;
140
+ }
141
+ }
116
142
  /**
117
143
  * Remove all listeners for all call events.
118
144
  */
@@ -130,7 +156,8 @@ class PlatoApiClient {
130
156
  this.eventsAttached = false;
131
157
  }
132
158
  async startCall(simulationId) {
133
- this.callControllerInstance = new web_1.default('f07d17ec-d4e6-487d-a0b9-0539c01aecbb', 'https://db41aykk1gw9e.cloudfront.net');
159
+ this.callControllerInstance = new web_1.default('f07d17ec-d4e6-487d-a0b9-0539c01aecbb', 'https://db41aykk1gw9e.cloudfront.net' // base url
160
+ );
134
161
  if (!this.eventsAttached) {
135
162
  this.attachEvents();
136
163
  }
@@ -1 +1 @@
1
- {"version":3,"file":"plato-sdk.js","sourceRoot":"","sources":["../../../../../libs/plato-sdk/src/lib/plato-sdk.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plato-sdk.js","sourceRoot":"","sources":["../../../../../libs/plato-sdk/src/lib/plato-sdk.ts"],"names":[],"mappings":"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"}
package/README.md DELETED
@@ -1,276 +0,0 @@
1
- # Plato SDK
2
-
3
- A TypeScript SDK for interacting with the Plato API to create and manage AI-powered medical training simulations.
4
-
5
- ## Overview
6
-
7
- The Plato SDK provides a simple and type-safe way to integrate with the Plato platform, allowing you to create medical training simulations with AI personas and manage voice-based interactions.
8
-
9
- ## Features
10
-
11
- - 🎭 Create AI personas with customizable professional profiles and personalities
12
- - 🗣️ Real-time voice interactions with AI assistants
13
- - 📊 Comprehensive event system for call management
14
- - 🔒 Type-safe API with full TypeScript support
15
- - 🎯 Medical training simulation configuration
16
-
17
- ## Installation
18
-
19
- ```bash
20
- npm install plato-sdk
21
- ```
22
-
23
- ## Quick Start
24
-
25
- ```typescript
26
- import { PlatoApiClient } from 'plato-sdk';
27
-
28
- // Initialize the client
29
- const client = new PlatoApiClient({
30
- baseUrl: 'https://your-plato-api.com',
31
- token: 'your-api-token',
32
- user: 'test@test.test'
33
- });
34
-
35
- // Create a simulation
36
- const simulation = await client.createSimulation({
37
- "persona": {
38
- "professionalProfile": {
39
- "location": "City Hospital, New York",
40
- "practiceSettings": "Outpatient Clinic",
41
- "yearOfExperience": 12,
42
- "specialityAndDepartment": "Cardiology"
43
- },
44
- "segment": SegmentType.CostConsciousPrescriber,
45
- "assistantGender": AssistantVoiceGender.Male,
46
- "name": "Dr Vegapunk",
47
- "personalityAndBehaviour": {
48
- "riskTolerance": 40,
49
- "researchOrientation": 70,
50
- "recognitionNeed": 60,
51
- "brandLoyalty": 55,
52
- "patientEmpathy": 80,
53
- "trainingDifficulty": 50,
54
- "friendliness": 75
55
- },
56
- "context": {
57
- "subSpecialityOrTherapyFocus": "Hypertension management",
58
- "typicalPatientMix": "Elderly with comorbidities",
59
- "keyClinicalDrivers": "Reducing cardiovascular risk"
60
- }
61
- },
62
- "product": {
63
- "name": "Ibuprofen 1000mg",
64
- "description": "A nonsteroidal anti-inflammatory drug used to reduce pain, inflammation, and fever"
65
- },
66
- "presentation": "Oral tablets, 10 tablets per pack",
67
- "scenario": "Discussing treatment options for an elderly patient with chronic arthritis",
68
- "objectives": [
69
- "Demonstrate efficacy of Ibuprofen in pain management",
70
- "Highlight safety profile and contraindications",
71
- "Encourage patient adherence"
72
- ],
73
- "anticipatedObjections": [
74
- "Concerns about gastrointestinal side effects",
75
- "Preference for lower-cost generic alternatives",
76
- "Potential interactions with other medications"
77
- ],
78
- "trainingConfiguration": {
79
- "trainingDifficulty": 70,
80
- "communicationFormality": 75,
81
- "friendlinessLevel": 65,
82
- "subjectMatterExpertise": 80
83
- }
84
- });
85
-
86
- // Check the simulation status - If simulation creation phase is equals to FINISHED, the simulation is ready to use
87
- // If the simulation creation phase is ERROR the simulation creation failed and you need to retry creating a new one
88
- // tip: you can also check the simulation status periodically using a polling mechanism
89
- const status = await client.getSimulationStatus(simulation.simulationId);
90
-
91
- // Start a voice call
92
- const call = await client.startCall(simulation.simulationId);
93
-
94
- // Listen to call events
95
- call.on('call-start', () => {
96
- console.log('Call started');
97
- });
98
-
99
- call.on('message', (message) => {
100
- console.log('Message received:', message.transcript);
101
- });
102
-
103
- call.on('call-end', () => {
104
- console.log('Call ended');
105
- });
106
-
107
- // Stop the call when done
108
- call.stopCall();
109
- ```
110
-
111
- ## API Reference
112
-
113
- ### PlatoApiClient
114
-
115
- The main class for interacting with the Plato API.
116
-
117
- #### Constructor
118
-
119
- ```typescript
120
- new PlatoApiClient(config: ApiClientConfig)
121
- ```
122
-
123
- **Parameters:**
124
- - `config.baseUrl` (string): The base URL of the Plato API
125
- - `config.token` (string): Your API authentication token
126
- - `config.user` (string): Your user identifier
127
-
128
- #### Methods
129
-
130
- ##### createSimulation(params: CreateSimulationDto)
131
-
132
- Creates a new medical training simulation. It may take a few minutes for the simulation to be ready for use.
133
-
134
- **Returns:** `Promise<{ simulationId: string, phase: CreationPhase }>`
135
-
136
- ##### startCall(simulationId: string)
137
-
138
- Starts a voice call with the AI persona for the specified simulation.
139
-
140
- **Returns:** Object with:
141
- - `stopCall()`: Function to end the call
142
- - `callId`: Unique identifier for the call
143
- - `on<K>(event: K, listener: CallEventListener<K>)`: Subscribe to call events
144
- - `off<K>(event: K, listener: CallEventListener<K>)`: Unsubscribe from call events
145
-
146
- ##### getCallDetails(callId: string)
147
-
148
- Retrieves detailed information about a completed call, including transcript, summary, recording URL, ratings, and evaluation metrics.
149
-
150
- **Parameters:**
151
- - `callId` (string): The MongoDB `_id` of the call
152
-
153
- **Returns:** `Promise<CallDTO>` — An object containing:
154
- - `_id`: MongoDB ID of the call
155
- - `summary`: Summary of the conversation
156
- - `transcript`: Full transcript of the call
157
- - `recordingUrl`: URL to access the call recording
158
- - `rating`: User-provided rating (0-5)
159
- - `successEvaluation`: Boolean indicating if the call was successful
160
- - `score`: Overall score for the call
161
- - `strengths`: Array of identified strengths
162
- - `weaknesses`: Array of identified weaknesses
163
- - `metric1`, `metric2`, `metric3`: Evaluation metric names
164
- - `metric1Value`, `metric2Value`, `metric3Value`: Values for each metric
165
- - `createdAt`: Timestamp when the call was created
166
- - `endedAt`: Timestamp when the call ended
167
- - And other call-related fields
168
-
169
- **Example:**
170
- ```typescript
171
- // After a call has ended, retrieve its details
172
- const callDetails = await client.getCallDetails(call._id);
173
- console.log('Call Summary:', callDetails.summary);
174
- ```
175
-
176
- ## Checking Simulation Status
177
-
178
- You can check the current phase/status of a simulation using the `checkSimulationStatus` method. This is useful for polling the simulation creation process until it is ready or has failed.
179
-
180
- ```typescript
181
- const status = await client.checkSimulationStatus(simulation.simulationId);
182
- console.log('Current phase:', status.phase); // e.g., 'FINISHED', 'ERROR', etc.
183
- ```
184
-
185
- - **Returns:** `{ phase: CreationPhase }` — The current phase of the simulation creation process.
186
- - **Typical usage:** Poll this method until the phase is `FINISHED` or `ERROR` before starting a call.
187
-
188
- ## Event System
189
-
190
- The SDK provides a comprehensive event system for managing voice calls:
191
-
192
- ### Available Events
193
-
194
- - `call-start`: Triggered when a call begins
195
- - `call-end`: Triggered when a call ends
196
- - `speech-start`: Triggered when speech detection starts
197
- - `speech-end`: Triggered when speech detection ends
198
- - `message`: Triggered when a message is received (contains transcript and metadata)
199
- - `volume-level`: Triggered with volume level updates (number)
200
- - `error`: Triggered when an error occurs
201
-
202
- ### Event Usage
203
-
204
- ```typescript
205
- // Subscribe to events
206
- call.on('message', (message) => {
207
- console.log('Transcript:', message.transcript);
208
- console.log('Type:', message.transcriptType); // 'final' or 'partial'
209
- });
210
-
211
- call.on('volume-level', (level) => {
212
- console.log('Volume level:', level);
213
- });
214
-
215
- call.on('error', (error) => {
216
- console.error('Call error:', error);
217
- });
218
-
219
- ```
220
-
221
- ## Data Types
222
-
223
- ### CreateSimulationDto
224
-
225
- Configuration for creating a simulation:
226
-
227
- ```typescript
228
- interface CreateSimulationDto {
229
- persona: CharacterCreateDto;
230
- product: ProductConfig;
231
- presentation?: string;
232
- scenario: string;
233
- objectives?: string[];
234
- anticipatedObjections?: string[];
235
- trainingConfiguration: TrainingConfigurationDto;
236
- }
237
- ```
238
-
239
- ### CharacterCreateDto
240
-
241
- AI persona configuration:
242
-
243
- ```typescript
244
- interface CharacterCreateDto {
245
- name: string;
246
- professionalProfile: ProfessionalProfileDto;
247
- segment: SegmentType;
248
- personalityAndBehaviour: PersonalityAndBehaviourDto;
249
- context: ContextDto;
250
- assistantGender: AssistantVoiceGender;
251
- }
252
- ```
253
-
254
- ## Error Handling
255
-
256
- The SDK throws errors for invalid configurations and API failures:
257
-
258
- ```typescript
259
- try {
260
- const client = new PlatoApiClient({
261
- baseUrl: 'https://api.plato.com',
262
- token: 'your-token',
263
- user: 'your-user'
264
- });
265
-
266
- const simulation = await client.createSimulation(simulationConfig);
267
- const call = await client.startCall(simulation.simulationId);
268
- } catch (error) {
269
- console.error('Error:', error.message);
270
- }
271
- ```
272
-
273
-
274
- ## Support
275
-
276
- For support and questions, please contact the development team.