retell-sdk 2.2.3 → 2.2.6
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/example.js +48 -5
- package/example.js.map +1 -1
- package/lib/config.d.ts.map +1 -1
- package/lib/config.js.map +1 -1
- package/lib/sdks.d.ts.map +1 -1
- package/lib/sdks.js.map +1 -1
- package/lib/security.d.ts.map +1 -1
- package/lib/security.js +5 -1
- package/lib/security.js.map +1 -1
- package/models/components/agent.d.ts +3 -205
- package/models/components/agent.d.ts.map +1 -1
- package/models/components/agent.js +5 -187
- package/models/components/agent.js.map +1 -1
- package/models/components/agentpromptparams.d.ts.map +1 -1
- package/models/components/agentpromptparams.js.map +1 -1
- package/models/components/calldetail.d.ts +33 -22
- package/models/components/calldetail.d.ts.map +1 -1
- package/models/components/calldetail.js +44 -31
- package/models/components/calldetail.js.map +1 -1
- package/models/components/callphonenumber.d.ts.map +1 -1
- package/models/components/callphonenumber.js.map +1 -1
- package/models/components/index.d.ts +0 -3
- package/models/components/index.d.ts.map +1 -1
- package/models/components/index.js +0 -3
- package/models/components/index.js.map +1 -1
- package/models/components/phonenumber.d.ts.map +1 -1
- package/models/components/phonenumber.js.map +1 -1
- package/models/components/security.d.ts.map +1 -1
- package/models/errors/createagent.d.ts.map +1 -1
- package/models/errors/createagent.js +36 -12
- package/models/errors/createagent.js.map +1 -1
- package/models/errors/createphonecall.d.ts.map +1 -1
- package/models/errors/createphonecall.js +54 -18
- package/models/errors/createphonecall.js.map +1 -1
- package/models/errors/createphonenumber.d.ts.map +1 -1
- package/models/errors/createphonenumber.js +42 -14
- package/models/errors/createphonenumber.js.map +1 -1
- package/models/errors/deleteagent.d.ts.map +1 -1
- package/models/errors/deleteagent.js +36 -12
- package/models/errors/deleteagent.js.map +1 -1
- package/models/errors/deletephonenumber.d.ts.map +1 -1
- package/models/errors/deletephonenumber.js +33 -11
- package/models/errors/deletephonenumber.js.map +1 -1
- package/models/errors/getagent.d.ts.map +1 -1
- package/models/errors/getagent.js +36 -12
- package/models/errors/getagent.js.map +1 -1
- package/models/errors/getcall.d.ts.map +1 -1
- package/models/errors/getcall.js +30 -10
- package/models/errors/getcall.js.map +1 -1
- package/models/errors/getphonenumber.d.ts.map +1 -1
- package/models/errors/getphonenumber.js +36 -12
- package/models/errors/getphonenumber.js.map +1 -1
- package/models/errors/index.d.ts +1 -6
- package/models/errors/index.d.ts.map +1 -1
- package/models/errors/index.js +1 -6
- package/models/errors/index.js.map +1 -1
- package/models/errors/listagents.d.ts.map +1 -1
- package/models/errors/listagents.js +15 -5
- package/models/errors/listagents.js.map +1 -1
- package/models/errors/listcalls.d.ts.map +1 -1
- package/models/errors/listcalls.js +24 -8
- package/models/errors/listcalls.js.map +1 -1
- package/models/errors/listphonenumbers.d.ts.map +1 -1
- package/models/errors/listphonenumbers.js +27 -9
- package/models/errors/listphonenumbers.js.map +1 -1
- package/models/errors/registercall.d.ts +218 -0
- package/models/errors/registercall.d.ts.map +1 -0
- package/models/errors/registercall.js +386 -0
- package/models/errors/registercall.js.map +1 -0
- package/models/errors/updateagent.d.ts.map +1 -1
- package/models/errors/updateagent.js +36 -12
- package/models/errors/updateagent.js.map +1 -1
- package/models/errors/updatephoneagent.d.ts.map +1 -1
- package/models/errors/updatephoneagent.js +36 -12
- package/models/errors/updatephoneagent.js.map +1 -1
- package/models/operations/createagent.d.ts +3 -16
- package/models/operations/createagent.d.ts.map +1 -1
- package/models/operations/createagent.js +4 -12
- package/models/operations/createagent.js.map +1 -1
- package/models/operations/createphonecall.d.ts.map +1 -1
- package/models/operations/createphonecall.js +18 -6
- package/models/operations/createphonecall.js.map +1 -1
- package/models/operations/createphonenumber.d.ts.map +1 -1
- package/models/operations/createphonenumber.js +6 -2
- package/models/operations/createphonenumber.js.map +1 -1
- package/models/operations/createwebcall.d.ts.map +1 -1
- package/models/operations/deleteagent.d.ts.map +1 -1
- package/models/operations/deleteagent.js.map +1 -1
- package/models/operations/deletephonenumber.d.ts.map +1 -1
- package/models/operations/deletephonenumber.js.map +1 -1
- package/models/operations/getagent.d.ts.map +1 -1
- package/models/operations/getagent.js.map +1 -1
- package/models/operations/getcall.d.ts +1 -1
- package/models/operations/getcall.d.ts.map +1 -1
- package/models/operations/getcall.js.map +1 -1
- package/models/operations/getphonenumber.d.ts.map +1 -1
- package/models/operations/getphonenumber.js +6 -2
- package/models/operations/getphonenumber.js.map +1 -1
- package/models/operations/index.d.ts +1 -7
- package/models/operations/index.d.ts.map +1 -1
- package/models/operations/index.js +1 -7
- package/models/operations/index.js.map +1 -1
- package/models/operations/listagents.d.ts.map +1 -1
- package/models/operations/listagents.js.map +1 -1
- package/models/operations/listcalls.d.ts +1 -7
- package/models/operations/listcalls.d.ts.map +1 -1
- package/models/operations/listcalls.js +6 -6
- package/models/operations/listcalls.js.map +1 -1
- package/models/operations/listphonenumbers.d.ts.map +1 -1
- package/models/operations/listphonenumbers.js +6 -2
- package/models/operations/listphonenumbers.js.map +1 -1
- package/models/operations/registercall.d.ts +74 -0
- package/models/operations/registercall.d.ts.map +1 -0
- package/models/operations/registercall.js +104 -0
- package/models/operations/registercall.js.map +1 -0
- package/models/operations/updateagent.d.ts +3 -16
- package/models/operations/updateagent.d.ts.map +1 -1
- package/models/operations/updateagent.js +9 -13
- package/models/operations/updateagent.js.map +1 -1
- package/models/operations/updatephoneagent.d.ts.map +1 -1
- package/models/operations/updatephoneagent.js +6 -2
- package/models/operations/updatephoneagent.js.map +1 -1
- package/package.json +1 -1
- package/sdk/audioWsClient.d.ts +10 -0
- package/sdk/audioWsClient.d.ts.map +1 -0
- package/sdk/audioWsClient.js +60 -0
- package/sdk/audioWsClient.js.map +1 -0
- package/sdk/index.d.ts +1 -1
- package/sdk/index.d.ts.map +1 -1
- package/sdk/index.js +1 -1
- package/sdk/index.js.map +1 -1
- package/sdk/liveClient.d.ts.map +1 -1
- package/sdk/liveClient.js +7 -2
- package/sdk/liveClient.js.map +1 -1
- package/sdk/sdk.d.ts +1 -23
- package/sdk/sdk.d.ts.map +1 -1
- package/sdk/sdk.js +21 -430
- package/sdk/sdk.js.map +1 -1
- package/src/example.ts +136 -88
- package/src/lib/config.ts +32 -32
- package/src/lib/sdks.ts +91 -82
- package/src/lib/security.ts +133 -118
- package/src/models/components/agent.ts +71 -451
- package/src/models/components/calldetail.ts +147 -130
- package/src/models/components/index.ts +0 -3
- package/src/models/components/security.ts +1 -1
- package/src/models/errors/createagent.ts +359 -311
- package/src/models/errors/deleteagent.ts +359 -311
- package/src/models/errors/getagent.ts +358 -302
- package/src/models/errors/getcall.ts +348 -294
- package/src/models/errors/index.ts +1 -6
- package/src/models/errors/listagents.ts +174 -147
- package/src/models/errors/listcalls.ts +251 -211
- package/src/models/errors/registercall.ts +662 -0
- package/src/models/errors/updateagent.ts +359 -311
- package/src/models/operations/createagent.ts +124 -130
- package/src/models/operations/deleteagent.ts +94 -78
- package/src/models/operations/getagent.ts +104 -88
- package/src/models/operations/getcall.ts +101 -88
- package/src/models/operations/index.ts +1 -7
- package/src/models/operations/listagents.ts +68 -60
- package/src/models/operations/listcalls.ts +228 -213
- package/src/models/operations/registercall.ts +167 -0
- package/src/models/operations/updateagent.ts +180 -174
- package/src/sdk/audioWsClient.ts +63 -0
- package/src/sdk/index.ts +1 -1
- package/src/sdk/sdk.ts +802 -1162
- package/src/models/components/agentpromptparams.ts +0 -53
- package/src/models/components/callphonenumber.ts +0 -56
- package/src/models/components/phonenumber.ts +0 -83
- package/src/models/errors/createphonecall.ts +0 -597
- package/src/models/errors/createphonenumber.ts +0 -500
- package/src/models/errors/deletephonenumber.ts +0 -400
- package/src/models/errors/getphonenumber.ts +0 -397
- package/src/models/errors/listphonenumbers.ts +0 -297
- package/src/models/errors/updatephoneagent.ts +0 -397
- package/src/models/operations/createphonecall.ts +0 -308
- package/src/models/operations/createphonenumber.ts +0 -124
- package/src/models/operations/createwebcall.ts +0 -16
- package/src/models/operations/deletephonenumber.ts +0 -103
- package/src/models/operations/getphonenumber.ts +0 -114
- package/src/models/operations/listphonenumbers.ts +0 -76
- package/src/models/operations/updatephoneagent.ts +0 -159
- package/src/sdk/liveClient.ts +0 -109
|
@@ -3,199 +3,205 @@
|
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
5
|
import * as components from "../../models/components";
|
|
6
|
-
import { Function } from "../../models/components";
|
|
7
6
|
import { z } from "zod";
|
|
8
7
|
|
|
9
8
|
export type UpdateAgentRequestBody = {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
interactionSetting?: components.InteractionSettingRequest | undefined;
|
|
23
|
-
/**
|
|
24
|
-
* Unique voice id used for the agent. Find list of available voices in documentation.
|
|
25
|
-
*/
|
|
26
|
-
voiceId?: string | undefined;
|
|
27
|
-
/**
|
|
28
|
-
* Functions are the actions that the agent can perform, like booking appointments, retriving information, etc. By setting this field, either OpenAI's function calling feature or your own custom LLM's logic would determine when the function shall get called, and our server would make the call.
|
|
29
|
-
*/
|
|
30
|
-
functions?: Function[] | undefined;
|
|
9
|
+
/**
|
|
10
|
+
* The name of the agent. Only used for your own reference.
|
|
11
|
+
*/
|
|
12
|
+
agentName?: string | undefined;
|
|
13
|
+
/*
|
|
14
|
+
* The URL we will establish LLM websocket for getting response, usually your server.
|
|
15
|
+
*/
|
|
16
|
+
llmWebsocketUrl?: string | undefined;
|
|
17
|
+
/**
|
|
18
|
+
* Unique voice id used for the agent. Find list of available voices in documentation.
|
|
19
|
+
*/
|
|
20
|
+
voiceId?: string | undefined;
|
|
31
21
|
};
|
|
32
22
|
|
|
33
23
|
/** @internal */
|
|
34
24
|
export namespace UpdateAgentRequestBody$ {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
25
|
+
export type Inbound = {
|
|
26
|
+
agent_name?: string | undefined;
|
|
27
|
+
llm_websocket_url?: string | undefined;
|
|
28
|
+
voice_id?: string | undefined;
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
export const inboundSchema: z.ZodType<
|
|
32
|
+
UpdateAgentRequestBody,
|
|
33
|
+
z.ZodTypeDef,
|
|
34
|
+
Inbound
|
|
35
|
+
> = z
|
|
36
|
+
.object({
|
|
37
|
+
agent_name: z.string().optional(),
|
|
38
|
+
llm_websocket_url: z.string(),
|
|
39
|
+
voice_id: z.string(),
|
|
40
|
+
})
|
|
41
|
+
.transform((v) => {
|
|
42
|
+
return {
|
|
43
|
+
...(v.agent_name === undefined ? null : { agentName: v.agent_name }),
|
|
44
|
+
...(v.llm_websocket_url === undefined
|
|
45
|
+
? null
|
|
46
|
+
: { llmWebsocketUrl: v.llm_websocket_url }),
|
|
47
|
+
...(v.voice_id === undefined ? null : { voiceId: v.voice_id }),
|
|
48
|
+
};
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
export type Outbound = {
|
|
52
|
+
agent_name?: string | undefined;
|
|
53
|
+
llm_websocket_url?: string | undefined;
|
|
54
|
+
voice_id?: string | undefined;
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
export const outboundSchema: z.ZodType<
|
|
58
|
+
Outbound,
|
|
59
|
+
z.ZodTypeDef,
|
|
60
|
+
UpdateAgentRequestBody
|
|
61
|
+
> = z
|
|
62
|
+
.object({
|
|
63
|
+
agentName: z.string().optional(),
|
|
64
|
+
llmWebsocketUrl: z.string().optional(),
|
|
65
|
+
voiceId: z.string().optional(),
|
|
66
|
+
})
|
|
67
|
+
.transform((v) => {
|
|
68
|
+
return {
|
|
69
|
+
...(v.agentName === undefined ? null : { agent_name: v.agentName }),
|
|
70
|
+
...(v.llmWebsocketUrl === undefined
|
|
71
|
+
? null
|
|
72
|
+
: { llm_websocket_url: v.llmWebsocketUrl }),
|
|
73
|
+
...(v.voiceId === undefined ? null : { voice_id: v.voiceId }),
|
|
74
|
+
};
|
|
75
|
+
});
|
|
86
76
|
}
|
|
87
77
|
|
|
88
78
|
export type UpdateAgentRequest = {
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
79
|
+
requestBody: UpdateAgentRequestBody;
|
|
80
|
+
/**
|
|
81
|
+
* Unique id of the agent to be updated.
|
|
82
|
+
*/
|
|
83
|
+
agentId: string;
|
|
94
84
|
};
|
|
95
85
|
|
|
96
86
|
export type UpdateAgentResponse = {
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
87
|
+
/**
|
|
88
|
+
* Successfully updated an agent.
|
|
89
|
+
*/
|
|
90
|
+
agent?: components.Agent | undefined;
|
|
91
|
+
/**
|
|
92
|
+
* HTTP response content type for this operation
|
|
93
|
+
*/
|
|
94
|
+
contentType: string;
|
|
95
|
+
/**
|
|
96
|
+
* HTTP response status code for this operation
|
|
97
|
+
*/
|
|
98
|
+
statusCode: number;
|
|
99
|
+
/**
|
|
100
|
+
* Raw HTTP response; suitable for custom response parsing
|
|
101
|
+
*/
|
|
102
|
+
rawResponse: Response;
|
|
113
103
|
};
|
|
114
104
|
|
|
115
105
|
/** @internal */
|
|
116
106
|
export namespace UpdateAgentRequest$ {
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
107
|
+
export type Inbound = {
|
|
108
|
+
RequestBody: UpdateAgentRequestBody$.Inbound;
|
|
109
|
+
agent_id: string;
|
|
110
|
+
};
|
|
111
|
+
|
|
112
|
+
export const inboundSchema: z.ZodType<
|
|
113
|
+
UpdateAgentRequest,
|
|
114
|
+
z.ZodTypeDef,
|
|
115
|
+
Inbound
|
|
116
|
+
> = z
|
|
117
|
+
.object({
|
|
118
|
+
RequestBody: UpdateAgentRequestBody$.inboundSchema,
|
|
119
|
+
agent_id: z.string(),
|
|
120
|
+
})
|
|
121
|
+
.transform((v) => {
|
|
122
|
+
return {
|
|
123
|
+
requestBody: v.RequestBody,
|
|
124
|
+
agentId: v.agent_id,
|
|
125
|
+
};
|
|
126
|
+
});
|
|
127
|
+
|
|
128
|
+
export type Outbound = {
|
|
129
|
+
RequestBody: UpdateAgentRequestBody$.Outbound;
|
|
130
|
+
agent_id: string;
|
|
131
|
+
};
|
|
132
|
+
|
|
133
|
+
export const outboundSchema: z.ZodType<
|
|
134
|
+
Outbound,
|
|
135
|
+
z.ZodTypeDef,
|
|
136
|
+
UpdateAgentRequest
|
|
137
|
+
> = z
|
|
138
|
+
.object({
|
|
139
|
+
requestBody: UpdateAgentRequestBody$.outboundSchema,
|
|
140
|
+
agentId: z.string(),
|
|
141
|
+
})
|
|
142
|
+
.transform((v) => {
|
|
143
|
+
return {
|
|
144
|
+
RequestBody: v.requestBody,
|
|
145
|
+
agent_id: v.agentId,
|
|
146
|
+
};
|
|
147
|
+
});
|
|
150
148
|
}
|
|
151
149
|
|
|
152
150
|
/** @internal */
|
|
153
151
|
export namespace UpdateAgentResponse$ {
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
152
|
+
export type Inbound = {
|
|
153
|
+
Agent?: components.Agent$.Inbound | undefined;
|
|
154
|
+
ContentType: string;
|
|
155
|
+
StatusCode: number;
|
|
156
|
+
RawResponse: Response;
|
|
157
|
+
};
|
|
158
|
+
|
|
159
|
+
export const inboundSchema: z.ZodType<
|
|
160
|
+
UpdateAgentResponse,
|
|
161
|
+
z.ZodTypeDef,
|
|
162
|
+
Inbound
|
|
163
|
+
> = z
|
|
164
|
+
.object({
|
|
165
|
+
Agent: components.Agent$.inboundSchema.optional(),
|
|
166
|
+
ContentType: z.string(),
|
|
167
|
+
StatusCode: z.number().int(),
|
|
168
|
+
RawResponse: z.instanceof(Response),
|
|
169
|
+
})
|
|
170
|
+
.transform((v) => {
|
|
171
|
+
return {
|
|
172
|
+
...(v.Agent === undefined ? null : { agent: v.Agent }),
|
|
173
|
+
contentType: v.ContentType,
|
|
174
|
+
statusCode: v.StatusCode,
|
|
175
|
+
rawResponse: v.RawResponse,
|
|
176
|
+
};
|
|
177
|
+
});
|
|
178
|
+
|
|
179
|
+
export type Outbound = {
|
|
180
|
+
Agent?: components.Agent$.Outbound | undefined;
|
|
181
|
+
ContentType: string;
|
|
182
|
+
StatusCode: number;
|
|
183
|
+
RawResponse: never;
|
|
184
|
+
};
|
|
185
|
+
|
|
186
|
+
export const outboundSchema: z.ZodType<
|
|
187
|
+
Outbound,
|
|
188
|
+
z.ZodTypeDef,
|
|
189
|
+
UpdateAgentResponse
|
|
190
|
+
> = z
|
|
191
|
+
.object({
|
|
192
|
+
agent: components.Agent$.outboundSchema.optional(),
|
|
193
|
+
contentType: z.string(),
|
|
194
|
+
statusCode: z.number().int(),
|
|
195
|
+
rawResponse: z.instanceof(Response).transform(() => {
|
|
196
|
+
throw new Error("Response cannot be serialized");
|
|
197
|
+
}),
|
|
198
|
+
})
|
|
199
|
+
.transform((v) => {
|
|
200
|
+
return {
|
|
201
|
+
...(v.agent === undefined ? null : { Agent: v.agent }),
|
|
202
|
+
ContentType: v.contentType,
|
|
203
|
+
StatusCode: v.statusCode,
|
|
204
|
+
RawResponse: v.rawResponse,
|
|
205
|
+
};
|
|
206
|
+
});
|
|
201
207
|
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { EventEmitter } from "eventemitter3";
|
|
2
|
+
import WebSocket from "isomorphic-ws";
|
|
3
|
+
|
|
4
|
+
let baseEndpoint = "wss://api.re-tell.ai/audio-websocket/";
|
|
5
|
+
|
|
6
|
+
export class AudioWsClient extends EventEmitter {
|
|
7
|
+
private ws: WebSocket;
|
|
8
|
+
|
|
9
|
+
constructor(callId: string, customEndpoint?: string) {
|
|
10
|
+
super();
|
|
11
|
+
|
|
12
|
+
if (customEndpoint) baseEndpoint = customEndpoint;
|
|
13
|
+
const endpoint = baseEndpoint + callId;
|
|
14
|
+
this.ws = new WebSocket(endpoint);
|
|
15
|
+
this.ws.binaryType = "arraybuffer";
|
|
16
|
+
|
|
17
|
+
this.ws.onmessage = (event) => {
|
|
18
|
+
const audio: ArrayBuffer = event.data as ArrayBuffer;
|
|
19
|
+
this.emit("audio", new Uint8Array(audio));
|
|
20
|
+
};
|
|
21
|
+
this.ws.onclose = (event) => {
|
|
22
|
+
this.emit("close", event.code, event.reason);
|
|
23
|
+
};
|
|
24
|
+
this.ws.onerror = (event) => {
|
|
25
|
+
this.emit("error", event.error);
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
send(audio: Uint8Array) {
|
|
30
|
+
if (this.ws.readyState === 1) {
|
|
31
|
+
this.ws.send(audio);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
close() {
|
|
36
|
+
this.ws.close();
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export function convertUint8ToFloat32(array: Uint8Array): Float32Array {
|
|
41
|
+
const targetArray = new Float32Array(array.byteLength / 2);
|
|
42
|
+
|
|
43
|
+
// A DataView is used to read our 16-bit little-endian samples out of the Uint8Array buffer
|
|
44
|
+
const sourceDataView = new DataView(array.buffer);
|
|
45
|
+
|
|
46
|
+
// Loop through, get values, and divide by 32,768
|
|
47
|
+
for (let i = 0; i < targetArray.length; i++) {
|
|
48
|
+
targetArray[i] = sourceDataView.getInt16(i * 2, true) / Math.pow(2, 16 - 1);
|
|
49
|
+
}
|
|
50
|
+
return targetArray;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
export function convertFloat32ToUint8(array: Float32Array): Uint8Array {
|
|
54
|
+
const buffer = new ArrayBuffer(array.length * 2);
|
|
55
|
+
const view = new DataView(buffer);
|
|
56
|
+
|
|
57
|
+
for (let i = 0; i < array.length; i++) {
|
|
58
|
+
const value = (array[i] as number) * 32768;
|
|
59
|
+
view.setInt16(i * 2, value, true); // true for little-endian
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
return new Uint8Array(buffer);
|
|
63
|
+
}
|
package/src/sdk/index.ts
CHANGED