diff --git a/src/speech/index.d.ts b/src/speech/index.d.ts index fb2be8a..8a4d134 100644 --- a/src/speech/index.d.ts +++ b/src/speech/index.d.ts @@ -960,6 +960,7 @@ export declare class IaraSpeechRecognitionDetail extends IaraEventDetail { transcript: string; richTranscript: string; richTranscriptModifiers?: string[]; + richTranscriptWithoutModifiers?: string; rid?: string; isFinal: boolean; isFirst: boolean; diff --git a/src/syncfusion/index.ts b/src/syncfusion/index.ts index 88497f3..6b5525e 100644 --- a/src/syncfusion/index.ts +++ b/src/syncfusion/index.ts @@ -139,18 +139,34 @@ export class IaraSyncfusionAdapter this.undo(); } - if (inference.richTranscriptModifiers?.length) { + if ( + inference.richTranscriptModifiers?.length && + inference.richTranscriptWithoutModifiers + ) { const phraseOrTemplate = this._recognition.richTranscriptTemplates.templates[ inference.richTranscriptModifiers[0] ]; const metadata = phraseOrTemplate.metadata as { category?: string }; if (metadata.category === "Template" || !metadata.category) { - const removeDivTags = inference.richTranscript - .replace(/^
/, "") + const index: number | undefined = + inference.richTranscriptWithoutModifiers.match( + `iara texto ${inference.richTranscriptModifiers[0]}` + )?.index; + + const templatePrefix = inference.richTranscript + .slice(0, index) + .replace(/^
/, ""); + const template = inference.richTranscript + .slice(index) .replace(/<\/div>$/, ""); - const removeDivParagraph = removeDivTags.replace(/(<\/div>
)/, ""); - this.insertTemplate(removeDivParagraph); + + this.insertInference({ + ...inference, + ...{ richTranscript: templatePrefix, richTranscriptModifiers: [] }, + }); + this.insertTemplate(template); + return; } }