Skip to content

Commit cc2565d

Browse files
authored
Merge pull request #55 from Clement-mim/master
Add sendResult method
2 parents 478c195 + 1ca96a3 commit cc2565d

File tree

3 files changed

+46
-2
lines changed

3 files changed

+46
-2
lines changed

lib/src/interfaces.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,11 @@ export interface ClientMessageCreateRecognizer {
3636
grammar?: string;
3737
}
3838

39+
export interface ClientMessageRetrieveFinalResult {
40+
action: "retrieveFinalResult";
41+
recognizerId: string;
42+
}
43+
3944
export interface ClientMessageRemoveRecognizer {
4045
action: "remove";
4146
recognizerId: string;
@@ -47,6 +52,7 @@ export type ClientMessage =
4752
| ClientMessageCreateRecognizer
4853
| ClientMessageAudioChunk
4954
| ClientMessageSet
55+
| ClientMessageRetrieveFinalResult
5056
| ClientMessageRemoveRecognizer;
5157

5258
export namespace ClientMessage {
@@ -80,6 +86,12 @@ export namespace ClientMessage {
8086
return message?.action === "create";
8187
}
8288

89+
export function isRecognizerRetrieveFinalResultMessage(
90+
message: ClientMessage
91+
): message is ClientMessageRetrieveFinalResult {
92+
return message?.action === "retrieveFinalResult";
93+
}
94+
8395
export function isRecognizerRemoveMessage(
8496
message: ClientMessage
8597
): message is ClientMessageRemoveRecognizer {

lib/src/model.ts

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,12 @@ import {
88
ClientMessageTerminate,
99
ClientMessageLoad,
1010
ClientMessageRemoveRecognizer,
11+
ClientMessageCreateRecognizer,
12+
ClientMessageRetrieveFinalResult,
1113
ModelMessage,
1214
RecognizerEvent,
1315
RecognizerMessage,
1416
ServerMessage,
15-
ServerMessageLoadResult,
16-
ClientMessageCreateRecognizer,
1717
} from "./interfaces";
1818
import { Logger } from "./utils/logging";
1919

@@ -211,6 +211,13 @@ export class Model extends EventTarget {
211211
);
212212
}
213213

214+
public retrieveFinalResult(): void {
215+
model.postMessage<ClientMessageRetrieveFinalResult>({
216+
action: "retrieveFinalResult",
217+
recognizerId: this.id,
218+
});
219+
}
220+
214221
public remove(): void {
215222
model.unregisterRecognizer(this.id);
216223

lib/src/worker.ts

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,15 @@ export class RecognizerWorker {
9292
return;
9393
}
9494

95+
if (ClientMessage.isRecognizerRetrieveFinalResultMessage(message)) {
96+
this.retrieveFinalResult(message.recognizerId)
97+
.then((result) => {
98+
ctx.postMessage(result);
99+
})
100+
.catch((error) => ctx.postMessage({ event: "error", recognizerId: message.recognizerId, error: error.message }));
101+
return;
102+
}
103+
95104
if (ClientMessage.isTerminateMessage(message)) {
96105
this.terminate();
97106
return;
@@ -301,6 +310,22 @@ export class RecognizerWorker {
301310
}
302311
}
303312

313+
private async retrieveFinalResult(recognizerId: string) {
314+
if (!this.recognizers.has(recognizerId)) {
315+
throw new Error(
316+
`Recognizer (id: ${recognizerId}): Does not exist or has already been deleted`
317+
);
318+
}
319+
const recognizer = this.recognizers.get(recognizerId)!;
320+
const finalResult = recognizer.recognizer.FinalResult();
321+
322+
return {
323+
event: "result",
324+
recognizerId,
325+
result: JSON.parse(finalResult),
326+
};
327+
}
328+
304329
private async removeRecognizer(recognizerId: string) {
305330
if (!this.recognizers.has(recognizerId)) {
306331
throw new Error(

0 commit comments

Comments
 (0)