diff --git a/packages/bot-engine/src/updateVariablesInSession.ts b/packages/bot-engine/src/updateVariablesInSession.ts index 1e91d5c31..f61a712bc 100644 --- a/packages/bot-engine/src/updateVariablesInSession.ts +++ b/packages/bot-engine/src/updateVariablesInSession.ts @@ -71,8 +71,10 @@ const updateTypebotVariables = ({ const serializedNewVariables = newVariables.map((variable) => ({ ...variable, value: Array.isArray(variable.value) - ? variable.value.map(safeStringify) - : safeStringify(variable.value), + ? variable.value.map((value) => + sanitizeNewVariableValue(safeStringify(value)), + ) + : sanitizeNewVariableValue(safeStringify(variable.value)), })); let setVariableHistoryIndex = state.currentSetVariableHistoryIndex ?? 0; @@ -106,3 +108,19 @@ const updateTypebotVariables = ({ setVariableHistoryIndex, }; }; + +const sanitizeNewVariableValue = (value: string | null): string | null => + value ? sanitizeString(value) : null; + +export const sanitizeString = (input: string): string => { + // 1. Replace unpaired surrogate halves with � + let output = input.replace( + /([\uD800-\uDBFF](?![\uDC00-\uDFFF]))|((?