diff --git a/distributor/_studio_dependecies/ConversationFlowExport/IVA-Solution-Consultants_Distributor_Full_05292025_7fe819e2-91cb-47a9-a4a8-da6bbf5d14c1.json b/distributor/_studio_dependecies/ConversationFlowExport/IVA-Solution-Consultants_Distributor_Full_05292025_7fe819e2-91cb-47a9-a4a8-da6bbf5d14c1.json new file mode 100644 index 0000000..0c2ff06 --- /dev/null +++ b/distributor/_studio_dependecies/ConversationFlowExport/IVA-Solution-Consultants_Distributor_Full_05292025_7fe819e2-91cb-47a9-a4a8-da6bbf5d14c1.json @@ -0,0 +1 @@ +{"file":{"content":{"intents":[{"_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0NDM0YWZiZGY5MzBmNGIzODdm","workspaceId":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTgzYjY0YWZiZGY5MzBmNGIzODYz","organizationId":null,"modelId":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0MzU0YWZiZGY5MzBmNGIzODZh","label":"VXML Welcome Event @ 6647ad7b84df93835bbb4346","keyPhrases":[],"enabled":true,"relevant":true,"metadata":{"createdBy":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjRmMWFjODE1NDVmODJiMDVhODgzNDQ3","createdAt":1741788227700,"_vc":{"branch":"current","operation":"create","_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0NDM0YWZiZGY5MzBmNGIzODdl","lts_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjgzODc5MDE4YzllYjA3MzRjODkxNjIy","commitId":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjgzODc5MDFkMDM3ZjMzNGIyZTZiMWI3"},"updatedAt":1748531457197,"updatedBy":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjRiYWMwNTkyNGE5YzU3ODNlZjc0MjRl"}},{"_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0NDM0YWZiZGY5MzBmNGIzODgz","workspaceId":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTgzYjY0YWZiZGY5MzBmNGIzODYz","organizationId":null,"modelId":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0MzU0YWZiZGY5MzBmNGIzODZh","label":"VXML Max Speech Timeout @ 6647ad7b84df93835bbb4346","keyPhrases":[],"enabled":true,"relevant":true,"metadata":{"createdBy":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjRmMWFjODE1NDVmODJiMDVhODgzNDQ3","createdAt":1741788227749,"_vc":{"branch":"current","operation":"create","_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0NDM0YWZiZGY5MzBmNGIzODgy","lts_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjgzODc5MDE4YzllYjA3MzRjODkxNjI0","commitId":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjgzODc5MDFkMDM3ZjMzNGIyZTZiMWI3"},"updatedAt":1748531457197,"updatedBy":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjRiYWMwNTkyNGE5YzU3ODNlZjc0MjRl"}},{"_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0NDM0YWZiZGY5MzBmNGIzODg5","workspaceId":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTgzYjY0YWZiZGY5MzBmNGIzODYz","organizationId":null,"modelId":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0MzU0YWZiZGY5MzBmNGIzODZh","label":"VXML Transfer Call Event @ 6647ad7b84df93835bbb4346","keyPhrases":[],"enabled":true,"relevant":true,"metadata":{"createdBy":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjRmMWFjODE1NDVmODJiMDVhODgzNDQ3","createdAt":1741788227865,"_vc":{"branch":"current","operation":"create","_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0NDM0YWZiZGY5MzBmNGIzODg4","lts_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjgzODc5MDE4YzllYjA3MzRjODkxNjI3","commitId":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjgzODc5MDFkMDM3ZjMzNGIyZTZiMWI3"},"updatedAt":1748531457197,"updatedBy":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjRiYWMwNTkyNGE5YzU3ODNlZjc0MjRl"}},{"_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0NDM0YWZiZGY5MzBmNGIzODgx","workspaceId":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTgzYjY0YWZiZGY5MzBmNGIzODYz","organizationId":null,"modelId":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0MzU0YWZiZGY5MzBmNGIzODZh","label":"VXML Queue Status Event @ 6647ad7b84df93835bbb4346","keyPhrases":[],"enabled":true,"relevant":true,"metadata":{"createdBy":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjRmMWFjODE1NDVmODJiMDVhODgzNDQ3","createdAt":1741788227728,"_vc":{"branch":"current","operation":"create","_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0NDM0YWZiZGY5MzBmNGIzODgw","lts_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjgzODc5MDE4YzllYjA3MzRjODkxNjIz","commitId":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjgzODc5MDFkMDM3ZjMzNGIyZTZiMWI3"},"updatedAt":1748531457197,"updatedBy":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjRiYWMwNTkyNGE5YzU3ODNlZjc0MjRl"}},{"_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0NDM0YWZiZGY5MzBmNGIzODg1","workspaceId":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTgzYjY0YWZiZGY5MzBmNGIzODYz","organizationId":null,"modelId":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0MzU0YWZiZGY5MzBmNGIzODZh","label":"VXML Noinput Event @ 6647ad7b84df93835bbb4346","keyPhrases":[],"enabled":true,"relevant":true,"metadata":{"createdBy":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjRmMWFjODE1NDVmODJiMDVhODgzNDQ3","createdAt":1741788227773,"_vc":{"branch":"current","operation":"create","_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0NDM0YWZiZGY5MzBmNGIzODg0","lts_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjgzODc5MDE4YzllYjA3MzRjODkxNjI1","commitId":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjgzODc5MDFkMDM3ZjMzNGIyZTZiMWI3"},"updatedAt":1748531457197,"updatedBy":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjRiYWMwNTkyNGE5YzU3ODNlZjc0MjRl"}},{"_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0NDM0YWZiZGY5MzBmNGIzODg3","workspaceId":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTgzYjY0YWZiZGY5MzBmNGIzODYz","organizationId":null,"modelId":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0MzU0YWZiZGY5MzBmNGIzODZh","label":"VXML Unrecognized Event @ 6647ad7b84df93835bbb4346","keyPhrases":[],"enabled":true,"relevant":true,"metadata":{"createdBy":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjRmMWFjODE1NDVmODJiMDVhODgzNDQ3","createdAt":1741788227801,"_vc":{"branch":"current","operation":"create","_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0NDM0YWZiZGY5MzBmNGIzODg2","lts_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjgzODc5MDE4YzllYjA3MzRjODkxNjI2","commitId":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjgzODc5MDFkMDM3ZjMzNGIyZTZiMWI3"},"updatedAt":1748531457197,"updatedBy":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjRiYWMwNTkyNGE5YzU3ODNlZjc0MjRl"}}],"alternates":[{"_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0NDQ0YWZiZGY5MzBmNGIzODk1","workspaceId":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTgzYjY0YWZiZGY5MzBmNGIzODYz","organizationId":null,"modelId":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0MzU0YWZiZGY5MzBmNGIzODZh","intentId":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0NDM0YWZiZGY5MzBmNGIzODgy","value":"vxmlmaxspeechtimeout","entities":[],"metadata":{"createdBy":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjRmMWFjODE1NDVmODJiMDVhODgzNDQ3","createdAt":1741788228035,"_vc":{"branch":"current","operation":"create","_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0NDQ0YWZiZGY5MzBmNGIzODk0","lts_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjgzODc5MDE4YzllYjA3MzRjODkxNjMx","commitId":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjgzODc5MDFkMDM3ZjMzNGIyZTZiMWI3"},"updatedAt":1748531457211,"updatedBy":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjRiYWMwNTkyNGE5YzU3ODNlZjc0MjRl"},"dependsOn":[{"_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0NDM0YWZiZGY5MzBmNGIzODgy","_vc_latest":{"_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0NDM0YWZiZGY5MzBmNGIzODgz","workspaceId":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTgzYjY0YWZiZGY5MzBmNGIzODYz","organizationId":null,"modelId":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0MzU0YWZiZGY5MzBmNGIzODZh","label":"VXML Max Speech Timeout @ 6647ad7b84df93835bbb4346","keyPhrases":[],"enabled":true,"relevant":true,"publication":{"_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjZmNzE5MjYxOWYzZjIxOTI3MzcyZTY2","original_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjY0N2E4YzQ4NGRmOTM4MzViYmI0MzM3"},"metadata":{"createdBy":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjRmMWFjODE1NDVmODJiMDVhODgzNDQ3","createdAt":1741788227749,"_vc":{"branch":"current","operation":"create","_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0NDM0YWZiZGY5MzBmNGIzODgy","lts_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjgzODc5MDE4YzllYjA3MzRjODkxNjI0","commitId":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjgzODc5MDFkMDM3ZjMzNGIyZTZiMWI3"},"updatedAt":1748531457197,"updatedBy":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjRiYWMwNTkyNGE5YzU3ODNlZjc0MjRl"}}}]},{"_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0NDM0YWZiZGY5MzBmNGIzODhm","workspaceId":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTgzYjY0YWZiZGY5MzBmNGIzODYz","organizationId":null,"modelId":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0MzU0YWZiZGY5MzBmNGIzODZh","intentId":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0NDM0YWZiZGY5MzBmNGIzODg2","value":"vxmlunrecognized","entities":[],"metadata":{"createdBy":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjRmMWFjODE1NDVmODJiMDVhODgzNDQ3","createdAt":1741788227948,"_vc":{"branch":"current","operation":"create","_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0NDM0YWZiZGY5MzBmNGIzODhl","lts_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjgzODc5MDE4YzllYjA3MzRjODkxNjJl","commitId":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjgzODc5MDFkMDM3ZjMzNGIyZTZiMWI3"},"updatedAt":1748531457211,"updatedBy":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjRiYWMwNTkyNGE5YzU3ODNlZjc0MjRl"},"dependsOn":[{"_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0NDM0YWZiZGY5MzBmNGIzODg2","_vc_latest":{"_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0NDM0YWZiZGY5MzBmNGIzODg3","workspaceId":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTgzYjY0YWZiZGY5MzBmNGIzODYz","organizationId":null,"modelId":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0MzU0YWZiZGY5MzBmNGIzODZh","label":"VXML Unrecognized Event @ 6647ad7b84df93835bbb4346","keyPhrases":[],"enabled":true,"relevant":true,"publication":{"_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjZmNzE5MjYxOWYzZjIxOTI3MzcyZTY2","original_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjY0N2E4YzQ4NGRmOTM4MzViYmI0MzM5"},"metadata":{"createdBy":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjRmMWFjODE1NDVmODJiMDVhODgzNDQ3","createdAt":1741788227801,"_vc":{"branch":"current","operation":"create","_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0NDM0YWZiZGY5MzBmNGIzODg2","lts_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjgzODc5MDE4YzllYjA3MzRjODkxNjI2","commitId":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjgzODc5MDFkMDM3ZjMzNGIyZTZiMWI3"},"updatedAt":1748531457197,"updatedBy":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjRiYWMwNTkyNGE5YzU3ODNlZjc0MjRl"}}}]},{"_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0NDM0YWZiZGY5MzBmNGIzODkx","workspaceId":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTgzYjY0YWZiZGY5MzBmNGIzODYz","organizationId":null,"modelId":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0MzU0YWZiZGY5MzBmNGIzODZh","intentId":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0NDM0YWZiZGY5MzBmNGIzODg0","value":"vxmlnoinput","entities":[],"metadata":{"createdBy":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjRmMWFjODE1NDVmODJiMDVhODgzNDQ3","createdAt":1741788227975,"_vc":{"branch":"current","operation":"create","_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0NDM0YWZiZGY5MzBmNGIzODkw","lts_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjgzODc5MDE4YzllYjA3MzRjODkxNjJm","commitId":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjgzODc5MDFkMDM3ZjMzNGIyZTZiMWI3"},"updatedAt":1748531457211,"updatedBy":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjRiYWMwNTkyNGE5YzU3ODNlZjc0MjRl"},"dependsOn":[{"_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0NDM0YWZiZGY5MzBmNGIzODg0","_vc_latest":{"_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0NDM0YWZiZGY5MzBmNGIzODg1","workspaceId":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTgzYjY0YWZiZGY5MzBmNGIzODYz","organizationId":null,"modelId":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0MzU0YWZiZGY5MzBmNGIzODZh","label":"VXML Noinput Event @ 6647ad7b84df93835bbb4346","keyPhrases":[],"enabled":true,"relevant":true,"publication":{"_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjZmNzE5MjYxOWYzZjIxOTI3MzcyZTY2","original_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjY0N2E4YzQ4NGRmOTM4MzViYmI0MzM4"},"metadata":{"createdBy":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjRmMWFjODE1NDVmODJiMDVhODgzNDQ3","createdAt":1741788227773,"_vc":{"branch":"current","operation":"create","_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0NDM0YWZiZGY5MzBmNGIzODg0","lts_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjgzODc5MDE4YzllYjA3MzRjODkxNjI1","commitId":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjgzODc5MDFkMDM3ZjMzNGIyZTZiMWI3"},"updatedAt":1748531457197,"updatedBy":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjRiYWMwNTkyNGE5YzU3ODNlZjc0MjRl"}}}]},{"_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0NDM0YWZiZGY5MzBmNGIzODhk","workspaceId":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTgzYjY0YWZiZGY5MzBmNGIzODYz","organizationId":null,"modelId":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0MzU0YWZiZGY5MzBmNGIzODZh","intentId":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0NDM0YWZiZGY5MzBmNGIzODdl","value":"vxmlwelcome","entities":[],"metadata":{"createdBy":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjRmMWFjODE1NDVmODJiMDVhODgzNDQ3","createdAt":1741788227918,"_vc":{"branch":"current","operation":"create","_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0NDM0YWZiZGY5MzBmNGIzODhj","lts_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjgzODc5MDE4YzllYjA3MzRjODkxNjJk","commitId":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjgzODc5MDFkMDM3ZjMzNGIyZTZiMWI3"},"updatedAt":1748531457211,"updatedBy":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjRiYWMwNTkyNGE5YzU3ODNlZjc0MjRl"},"dependsOn":[{"_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0NDM0YWZiZGY5MzBmNGIzODdl","_vc_latest":{"_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0NDM0YWZiZGY5MzBmNGIzODdm","workspaceId":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTgzYjY0YWZiZGY5MzBmNGIzODYz","organizationId":null,"modelId":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0MzU0YWZiZGY5MzBmNGIzODZh","label":"VXML Welcome Event @ 6647ad7b84df93835bbb4346","keyPhrases":[],"enabled":true,"relevant":true,"publication":{"_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjZmNzE5MjYxOWYzZjIxOTI3MzcyZTY2","original_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjY0N2E4YzQ4NGRmOTM4MzViYmI0MzM1"},"metadata":{"createdBy":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjRmMWFjODE1NDVmODJiMDVhODgzNDQ3","createdAt":1741788227700,"_vc":{"branch":"current","operation":"create","_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0NDM0YWZiZGY5MzBmNGIzODdl","lts_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjgzODc5MDE4YzllYjA3MzRjODkxNjIy","commitId":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjgzODc5MDFkMDM3ZjMzNGIyZTZiMWI3"},"updatedAt":1748531457197,"updatedBy":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjRiYWMwNTkyNGE5YzU3ODNlZjc0MjRl"}}}]},{"_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0NDQ0YWZiZGY5MzBmNGIzODkz","workspaceId":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTgzYjY0YWZiZGY5MzBmNGIzODYz","organizationId":null,"modelId":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0MzU0YWZiZGY5MzBmNGIzODZh","intentId":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0NDM0YWZiZGY5MzBmNGIzODg4","value":"vxmltransfercall","entities":[],"metadata":{"createdBy":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjRmMWFjODE1NDVmODJiMDVhODgzNDQ3","createdAt":1741788228004,"_vc":{"branch":"current","operation":"create","_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0NDQ0YWZiZGY5MzBmNGIzODky","lts_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjgzODc5MDE4YzllYjA3MzRjODkxNjMw","commitId":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjgzODc5MDFkMDM3ZjMzNGIyZTZiMWI3"},"updatedAt":1748531457211,"updatedBy":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjRiYWMwNTkyNGE5YzU3ODNlZjc0MjRl"},"dependsOn":[{"_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0NDM0YWZiZGY5MzBmNGIzODg4","_vc_latest":{"_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0NDM0YWZiZGY5MzBmNGIzODg5","workspaceId":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTgzYjY0YWZiZGY5MzBmNGIzODYz","organizationId":null,"modelId":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0MzU0YWZiZGY5MzBmNGIzODZh","label":"VXML Transfer Call Event @ 6647ad7b84df93835bbb4346","keyPhrases":[],"enabled":true,"relevant":true,"publication":{"_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjZmNzE5MjYxOWYzZjIxOTI3MzcyZTY2","original_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjY0N2E4YzQ4NGRmOTM4MzViYmI0MzNh"},"metadata":{"createdBy":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjRmMWFjODE1NDVmODJiMDVhODgzNDQ3","createdAt":1741788227865,"_vc":{"branch":"current","operation":"create","_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0NDM0YWZiZGY5MzBmNGIzODg4","lts_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjgzODc5MDE4YzllYjA3MzRjODkxNjI3","commitId":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjgzODc5MDFkMDM3ZjMzNGIyZTZiMWI3"},"updatedAt":1748531457197,"updatedBy":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjRiYWMwNTkyNGE5YzU3ODNlZjc0MjRl"}}}]},{"_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0NDM0YWZiZGY5MzBmNGIzODhi","workspaceId":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTgzYjY0YWZiZGY5MzBmNGIzODYz","organizationId":null,"modelId":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0MzU0YWZiZGY5MzBmNGIzODZh","intentId":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0NDM0YWZiZGY5MzBmNGIzODgw","value":"vxmlqueuestatus","entities":[],"metadata":{"createdBy":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjRmMWFjODE1NDVmODJiMDVhODgzNDQ3","createdAt":1741788227891,"_vc":{"branch":"current","operation":"create","_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0NDM0YWZiZGY5MzBmNGIzODhh","lts_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjgzODc5MDE4YzllYjA3MzRjODkxNjJj","commitId":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjgzODc5MDFkMDM3ZjMzNGIyZTZiMWI3"},"updatedAt":1748531457211,"updatedBy":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjRiYWMwNTkyNGE5YzU3ODNlZjc0MjRl"},"dependsOn":[{"_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0NDM0YWZiZGY5MzBmNGIzODgw","_vc_latest":{"_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0NDM0YWZiZGY5MzBmNGIzODgx","workspaceId":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTgzYjY0YWZiZGY5MzBmNGIzODYz","organizationId":null,"modelId":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0MzU0YWZiZGY5MzBmNGIzODZh","label":"VXML Queue Status Event @ 6647ad7b84df93835bbb4346","keyPhrases":[],"enabled":true,"relevant":true,"publication":{"_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjZmNzE5MjYxOWYzZjIxOTI3MzcyZTY2","original_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjY0N2E4YzQ4NGRmOTM4MzViYmI0MzM2"},"metadata":{"createdBy":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjRmMWFjODE1NDVmODJiMDVhODgzNDQ3","createdAt":1741788227728,"_vc":{"branch":"current","operation":"create","_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0NDM0YWZiZGY5MzBmNGIzODgw","lts_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjgzODc5MDE4YzllYjA3MzRjODkxNjIz","commitId":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjgzODc5MDFkMDM3ZjMzNGIyZTZiMWI3"},"updatedAt":1748531457197,"updatedBy":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjRiYWMwNTkyNGE5YzU3ODNlZjc0MjRl"}}}]}],"entities":[],"entityValues":[],"conversationFlows":[{"_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMjliMTcyYTk5M2U2MmE1YmRhYzIy","workspaceId":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTgzYjY0YWZiZGY5MzBmNGIzODYz","organizationId":null,"modelId":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0MzU0YWZiZGY5MzBmNGIzODZh","name":"VXML Events @ 6647ad7b84df93835bbb4346","description":"No description","content":{"6fcfc962-9cc5-415f-bd3f-d7a3f0470dd1":{"type":"intent","componentId":"intent","icon":"ear-listen","position":{"left":5130.9609375,"top":5168.96875},"name":"Intent","description":"Select intents as flow triggers","id":"6fcfc962-9cc5-415f-bd3f-d7a3f0470dd1","data":{"intentId":"67d194434afbdf930f4b3882","ports":[{"id":"c117a795-8f45-4591-b0b6-1007da744173"}]}},"dbc05c11-81aa-4aab-a7de-88f7b786fd35":{"type":"intent","componentId":"intent","icon":"ear-listen","position":{"left":5134.94921875,"top":5433.9453125},"name":"Intent","description":"Select intents as flow triggers","id":"dbc05c11-81aa-4aab-a7de-88f7b786fd35","data":{"intentId":"67d194434afbdf930f4b3886","ports":[{"id":"8643e899-4ccc-472b-87a8-ccac830620b4"}]}},"7bd547b2-f820-49e6-ac80-bb2d0d5f7169":{"type":"intent","componentId":"intent","icon":"ear-listen","position":{"left":5129.9375,"top":5785.9296875},"name":"Intent","description":"Select intents as flow triggers","id":"7bd547b2-f820-49e6-ac80-bb2d0d5f7169","data":{"intentId":"67d194434afbdf930f4b3884","ports":[{"id":"347d5936-ff0b-496e-a3ca-bddc4eaf6a2d"}]}},"d09bc7d0-41e8-4457-9337-52c73565771b":{"type":"intent","componentId":"intent","icon":"ear-listen","position":{"left":5127.94921875,"top":6054.9453125},"name":"Intent","description":"Select intents as flow triggers","id":"d09bc7d0-41e8-4457-9337-52c73565771b","data":{"intentId":"67d194434afbdf930f4b3880","ports":[{"id":"aa325093-4e21-4dff-8f5c-aee9f0be397e"}]}},"707c19e4-5685-4117-bcc7-14517d338f79":{"type":"intent","componentId":"intent","icon":"ear-listen","position":{"left":5139.9609375,"top":6258.94140625},"name":"Intent","description":"Select intents as flow triggers","id":"707c19e4-5685-4117-bcc7-14517d338f79","data":{"intentId":"67d194434afbdf930f4b387e","ports":[{"id":"67b883e6-f051-4a78-98bb-e067f18d89db"}]}},"fb08b400-bf23-4c72-ae8e-94d2bbba0af1":{"type":"group","componentId":"group","icon":"layer-group","position":{"left":5495.9453125,"top":5075.78125},"name":"Group","description":"Useful for grouping widgets together","id":"fb08b400-bf23-4c72-ae8e-94d2bbba0af1","data":{"steps":["c117a795-8f45-4591-b0b6-1007da744173","501902db-7b86-4904-9d8c-fe6c2f857fab"]}},"c117a795-8f45-4591-b0b6-1007da744173":{"_id":"662bf8dedae383ffb348fea3","componentId":"664caf7f-fce6-4a55-b195-fdcfe47119eb","originalComponentId":"d9db6b1e-e3d5-40f2-a618-7684a28adfc0","type":"seed","icon":"paragraph","position":{"left":0,"top":0},"name":"Multi-Channel Reply","readme":"# Multi-Channel Reply Widget\r\n\r\nThis widget allows you to craft responses with rich text features\r\nusing a user-friendly WYSIWYG editor.\r\n\r\n## Supported Channels\r\n\r\n- Plain text (fallback)\r\n- Web/HTML\r\n- Facebook\r\n- Microsoft Teams\r\n- Twitter\r\n- WhatsApp\r\n\r\n### All Channels\r\n\r\nYou can define multiple messages within a single reply. Use the **Add Content**\r\nbutton to add additional messages or other types of content (depending on the\r\nselected channel.)\r\n\r\nYou can include **inline conversation variables** in your response\r\nby including a variable name surrounded by curly brackets,\r\nsuch as `{variableName}`. Object paths and arrays are also supported, e.g. `{path.to.thing[3]}`.\r\n\r\nA randomizer feature is also included for rich text and plain text replies.\r\nYou can define multiple **alternative responses** for each message,\r\none of which will be selected at random each time the response is hit in the agent.\r\n\r\nYou may also create replies for multiple languages.\r\nUse the dropdown at the top of the form to select the language currently being edited.\r\nAll languages will share the same content cards for every channel.\r\n\r\n### Web Channel\r\n\r\nSupported features include:\r\n\r\n- **Bold**\r\n- _Italic_\r\n- Bulleted lists\r\n- Numbered lists\r\n- Hyperlinks\r\n- Images\r\n- Block quotes\r\n- Quick replies\r\n- Undo/redo\r\n- Copy/paste\r\n\r\nThe editor saves the response in HTML format. If desired,\r\nyou can view and edit the raw HTML markup by toggling the switch\r\nfrom **Rich** to **Raw**.\r\n\r\n### Facebook Channel\r\n\r\nSupported features include:\r\n\r\n- **Bold**\r\n- _Italic_\r\n- ~~Strikethrough~~\r\n- Carousel\r\n- Image replies\r\n- Quick replies\r\n- Undo/redo\r\n- Copy/paste\r\n\r\nThe editor saves the response in Facebook message format. If desired,\r\nyou can view and edit the raw markup by toggling the switch\r\nfrom **Rich** to **Raw**.\r\n\r\n### Microsoft Teams Channel\r\n\r\nSupported features include:\r\n\r\n- **Bold**\r\n- _Italic_\r\n- Bulleted lists\r\n- Numbered lists\r\n- Hyperlinks\r\n- Block quotes\r\n- Quick replies\r\n- Cards\r\n - Hero Card\r\n - Thumbnail Card\r\n- Undo/redo\r\n- Copy/paste\r\n\r\nThe editor saves the response in Markdown format. If desired,\r\nyou can view and edit the raw Markdown markup by toggling the switch\r\nfrom **Rich** to **Raw**.\r\n\r\n### Twitter Channel\r\n\r\nSupported features include:\r\n\r\n- Plain text replies\r\n- Quick Reply messages\r\n- Calls to Action\r\n\r\n### WhatsApp Channel\r\n\r\nSupported features include:\r\n\r\n- **Bold**\r\n- _Italic_\r\n- ~~Strikethrough~~\r\n- Quick Replies\r\n- Menu Replies\r\n- Media Replies\r\n - Image\r\n - Video\r\n - Audio\r\n - Document (txt, PDF, Word, Excel, Powerpoint)\r\n- Undo/redo\r\n- Copy/paste\r\n\r\nThe editor saves the response in WhatsApp message format. If desired,\r\nyou can view and edit the raw markup by toggling the switch\r\nfrom **Rich** to **Raw**.\r\n","description":"Craft rich text replies for multiple different channels","endpoint":"https://console.ivastudio.verint.live/Widget/get/64e3ca2df0c99192d946ab9e_655d44bd75c5d32ee18263ca_664caf7f-fce6-4a55-b195-fdcfe47119eb.js","version":{"major":0,"minor":1,"patch":14},"metadata":{"createdBy":"64e637d804bf464073a2a224","createdAt":1714157790017},"id":"c117a795-8f45-4591-b0b6-1007da744173","groupId":"fb08b400-bf23-4c72-ae8e-94d2bbba0af1","data":{"code":"// Auto-generated code. Do not modify.\nconst channels = {\n \"text\": {\n \"en\": [[\"I am sorry, I work best with small simple statements and that reply sounded very long. \"]]\n },\n \"web\": {\n \"en\": [[\"
I am sorry, I work best with small simple statements and that reply sounded very long.
\"]]\n },\n \"voice\": {\n \"en\": [[\"I am sorry, I work best with small simple statements and that reply sounded very long. \"]]\n }\n};\nconst channelOptions = {};\nconst channelName = (req.body?.metadata?.channel ?? req.body?.channel ?? \"web\").toLowerCase();\nconst languages = channels[channelName] ?? channels.text ?? channels.web;\nconst lang = (req.body?.metadata?.lang ?? req.body?.lang ?? \"en\").slice(0, 2);\nconst replies = languages?.[lang] ?? [[\"\"]];\nreplies.forEach(replySet => {\n function replaceVariables(str) {\n return str.replace(/{([^}]+)}/g, (match, key) => new Function(\"x\", \"return x.\" + key)(conversationData));\n }\n let reply = replySet.length > 1 ? replySet[Math.floor(Math.random() * replySet.length)] : replySet[0];\n if (typeof reply === 'object') {\n function replaceValues(obj) {\n if (Array.isArray(obj)) {\n for (let i = 0; i < obj.length; i++) {\n if (typeof obj[i] === \"object\") {\n replaceValues(obj[i]);\n } else if (typeof obj[i] === \"string\") {\n obj[i] = replaceVariables(obj[i]);\n }\n }\n } else {\n for (const key in obj) {\n if (typeof obj[key] === \"object\") {\n replaceValues(obj[key]);\n } else if (typeof obj[key] === \"string\") {\n obj[key] = replaceVariables(obj[key]);\n }\n }\n }\n }\n replaceValues(reply);\n } else {\n reply = replaceVariables(reply);\n }\n recognizedObject.answers.push(reply);\n});\nconst options = channelOptions[channelName]?.[lang];\nif (options && options.length > 0) {\n if (!(\"options\" in recognizedObject)) recognizedObject.options = [];\n recognizedObject.options.push(...options);\n}\nnext();","ports":[],"activeChannels":{"text":[{"type":"text","languages":{"en":[{"value":"I am sorry, I work best with small simple statements and that reply sounded very long. ","valid":true}]}}],"web":[{"type":"text","languages":{"en":[{"value":"I am sorry, I work best with small simple statements and that reply sounded very long.
","valid":true}]}}],"voice":[{"type":"text","languages":{"en":[{"value":"I am sorry, I work best with small simple statements and that reply sounded very long. ","valid":true}]}}]},"valid":true,"updateKey":683299749}},"92a8b64f-a684-4870-9eb7-fbdd7212f511":{"type":"group","componentId":"group","icon":"layer-group","position":{"left":5497.9453125,"top":5362.7734375},"name":"Group","description":"Useful for grouping widgets together","id":"92a8b64f-a684-4870-9eb7-fbdd7212f511","data":{"steps":["8643e899-4ccc-472b-87a8-ccac830620b4","6df7e34b-7fab-4972-8e6f-5cca901b9985"]}},"8643e899-4ccc-472b-87a8-ccac830620b4":{"_id":"662bf8dedae383ffb348fea3","componentId":"664caf7f-fce6-4a55-b195-fdcfe47119eb","originalComponentId":"d9db6b1e-e3d5-40f2-a618-7684a28adfc0","type":"seed","icon":"paragraph","position":{"left":0,"top":0},"name":"Multi-Channel Reply","readme":"# Multi-Channel Reply Widget\r\n\r\nThis widget allows you to craft responses with rich text features\r\nusing a user-friendly WYSIWYG editor.\r\n\r\n## Supported Channels\r\n\r\n- Plain text (fallback)\r\n- Web/HTML\r\n- Facebook\r\n- Microsoft Teams\r\n- Twitter\r\n- WhatsApp\r\n\r\n### All Channels\r\n\r\nYou can define multiple messages within a single reply. Use the **Add Content**\r\nbutton to add additional messages or other types of content (depending on the\r\nselected channel.)\r\n\r\nYou can include **inline conversation variables** in your response\r\nby including a variable name surrounded by curly brackets,\r\nsuch as `{variableName}`. Object paths and arrays are also supported, e.g. `{path.to.thing[3]}`.\r\n\r\nA randomizer feature is also included for rich text and plain text replies.\r\nYou can define multiple **alternative responses** for each message,\r\none of which will be selected at random each time the response is hit in the agent.\r\n\r\nYou may also create replies for multiple languages.\r\nUse the dropdown at the top of the form to select the language currently being edited.\r\nAll languages will share the same content cards for every channel.\r\n\r\n### Web Channel\r\n\r\nSupported features include:\r\n\r\n- **Bold**\r\n- _Italic_\r\n- Bulleted lists\r\n- Numbered lists\r\n- Hyperlinks\r\n- Images\r\n- Block quotes\r\n- Quick replies\r\n- Undo/redo\r\n- Copy/paste\r\n\r\nThe editor saves the response in HTML format. If desired,\r\nyou can view and edit the raw HTML markup by toggling the switch\r\nfrom **Rich** to **Raw**.\r\n\r\n### Facebook Channel\r\n\r\nSupported features include:\r\n\r\n- **Bold**\r\n- _Italic_\r\n- ~~Strikethrough~~\r\n- Carousel\r\n- Image replies\r\n- Quick replies\r\n- Undo/redo\r\n- Copy/paste\r\n\r\nThe editor saves the response in Facebook message format. If desired,\r\nyou can view and edit the raw markup by toggling the switch\r\nfrom **Rich** to **Raw**.\r\n\r\n### Microsoft Teams Channel\r\n\r\nSupported features include:\r\n\r\n- **Bold**\r\n- _Italic_\r\n- Bulleted lists\r\n- Numbered lists\r\n- Hyperlinks\r\n- Block quotes\r\n- Quick replies\r\n- Cards\r\n - Hero Card\r\n - Thumbnail Card\r\n- Undo/redo\r\n- Copy/paste\r\n\r\nThe editor saves the response in Markdown format. If desired,\r\nyou can view and edit the raw Markdown markup by toggling the switch\r\nfrom **Rich** to **Raw**.\r\n\r\n### Twitter Channel\r\n\r\nSupported features include:\r\n\r\n- Plain text replies\r\n- Quick Reply messages\r\n- Calls to Action\r\n\r\n### WhatsApp Channel\r\n\r\nSupported features include:\r\n\r\n- **Bold**\r\n- _Italic_\r\n- ~~Strikethrough~~\r\n- Quick Replies\r\n- Menu Replies\r\n- Media Replies\r\n - Image\r\n - Video\r\n - Audio\r\n - Document (txt, PDF, Word, Excel, Powerpoint)\r\n- Undo/redo\r\n- Copy/paste\r\n\r\nThe editor saves the response in WhatsApp message format. If desired,\r\nyou can view and edit the raw markup by toggling the switch\r\nfrom **Rich** to **Raw**.\r\n","description":"Craft rich text replies for multiple different channels","endpoint":"https://console.ivastudio.verint.live/Widget/get/64e3ca2df0c99192d946ab9e_655d44bd75c5d32ee18263ca_664caf7f-fce6-4a55-b195-fdcfe47119eb.js","version":{"major":0,"minor":1,"patch":14},"metadata":{"createdBy":"64e637d804bf464073a2a224","createdAt":1714157790017},"id":"8643e899-4ccc-472b-87a8-ccac830620b4","groupId":"92a8b64f-a684-4870-9eb7-fbdd7212f511","data":{"code":"// Auto-generated code. Do not modify.\nconst channels = {\n \"text\": {\n \"en\": [[\"I am sorry, I did not understand that. \"]]\n },\n \"web\": {\n \"en\": [[\"I am sorry, I did not understand that.
\"]]\n },\n \"voice\": {\n \"en\": [[\"I am sorry, I did not understand that. \"]]\n }\n};\nconst channelOptions = {};\nconst channelName = (req.body?.metadata?.channel ?? req.body?.channel ?? \"web\").toLowerCase();\nconst languages = channels[channelName] ?? channels.text ?? channels.web;\nconst lang = (req.body?.metadata?.lang ?? req.body?.lang ?? \"en\").slice(0, 2);\nconst replies = languages?.[lang] ?? [[\"\"]];\nreplies.forEach(replySet => {\n function replaceVariables(str) {\n return str.replace(/{([^}]+)}/g, (match, key) => new Function(\"x\", \"return x.\" + key)(conversationData));\n }\n let reply = replySet.length > 1 ? replySet[Math.floor(Math.random() * replySet.length)] : replySet[0];\n if (typeof reply === 'object') {\n function replaceValues(obj) {\n if (Array.isArray(obj)) {\n for (let i = 0; i < obj.length; i++) {\n if (typeof obj[i] === \"object\") {\n replaceValues(obj[i]);\n } else if (typeof obj[i] === \"string\") {\n obj[i] = replaceVariables(obj[i]);\n }\n }\n } else {\n for (const key in obj) {\n if (typeof obj[key] === \"object\") {\n replaceValues(obj[key]);\n } else if (typeof obj[key] === \"string\") {\n obj[key] = replaceVariables(obj[key]);\n }\n }\n }\n }\n replaceValues(reply);\n } else {\n reply = replaceVariables(reply);\n }\n recognizedObject.answers.push(reply);\n});\nconst options = channelOptions[channelName]?.[lang];\nif (options && options.length > 0) {\n if (!(\"options\" in recognizedObject)) recognizedObject.options = [];\n recognizedObject.options.push(...options);\n}\nnext();","ports":[],"activeChannels":{"text":[{"type":"text","languages":{"en":[{"value":"I am sorry, I did not understand that. ","valid":true}]}}],"web":[{"type":"text","languages":{"en":[{"value":"I am sorry, I did not understand that.
","valid":true}]}}],"voice":[{"type":"text","languages":{"en":[{"value":"I am sorry, I did not understand that. ","valid":true}]}}]},"valid":true,"updateKey":843160827}},"a516be40-cf36-4a0a-873b-99d080ec9264":{"type":"group","componentId":"group","icon":"layer-group","position":{"left":5503.921875,"top":5733.75390625},"name":"Group","description":"Useful for grouping widgets together","id":"a516be40-cf36-4a0a-873b-99d080ec9264","data":{"steps":["347d5936-ff0b-496e-a3ca-bddc4eaf6a2d","35a62471-638e-4b13-b7ae-2695573f3dca"]}},"347d5936-ff0b-496e-a3ca-bddc4eaf6a2d":{"_id":"662bf8dedae383ffb348fea3","componentId":"664caf7f-fce6-4a55-b195-fdcfe47119eb","originalComponentId":"d9db6b1e-e3d5-40f2-a618-7684a28adfc0","type":"seed","icon":"paragraph","position":{"left":0,"top":0},"name":"Multi-Channel Reply","readme":"# Multi-Channel Reply Widget\r\n\r\nThis widget allows you to craft responses with rich text features\r\nusing a user-friendly WYSIWYG editor.\r\n\r\n## Supported Channels\r\n\r\n- Plain text (fallback)\r\n- Web/HTML\r\n- Facebook\r\n- Microsoft Teams\r\n- Twitter\r\n- WhatsApp\r\n\r\n### All Channels\r\n\r\nYou can define multiple messages within a single reply. Use the **Add Content**\r\nbutton to add additional messages or other types of content (depending on the\r\nselected channel.)\r\n\r\nYou can include **inline conversation variables** in your response\r\nby including a variable name surrounded by curly brackets,\r\nsuch as `{variableName}`. Object paths and arrays are also supported, e.g. `{path.to.thing[3]}`.\r\n\r\nA randomizer feature is also included for rich text and plain text replies.\r\nYou can define multiple **alternative responses** for each message,\r\none of which will be selected at random each time the response is hit in the agent.\r\n\r\nYou may also create replies for multiple languages.\r\nUse the dropdown at the top of the form to select the language currently being edited.\r\nAll languages will share the same content cards for every channel.\r\n\r\n### Web Channel\r\n\r\nSupported features include:\r\n\r\n- **Bold**\r\n- _Italic_\r\n- Bulleted lists\r\n- Numbered lists\r\n- Hyperlinks\r\n- Images\r\n- Block quotes\r\n- Quick replies\r\n- Undo/redo\r\n- Copy/paste\r\n\r\nThe editor saves the response in HTML format. If desired,\r\nyou can view and edit the raw HTML markup by toggling the switch\r\nfrom **Rich** to **Raw**.\r\n\r\n### Facebook Channel\r\n\r\nSupported features include:\r\n\r\n- **Bold**\r\n- _Italic_\r\n- ~~Strikethrough~~\r\n- Carousel\r\n- Image replies\r\n- Quick replies\r\n- Undo/redo\r\n- Copy/paste\r\n\r\nThe editor saves the response in Facebook message format. If desired,\r\nyou can view and edit the raw markup by toggling the switch\r\nfrom **Rich** to **Raw**.\r\n\r\n### Microsoft Teams Channel\r\n\r\nSupported features include:\r\n\r\n- **Bold**\r\n- _Italic_\r\n- Bulleted lists\r\n- Numbered lists\r\n- Hyperlinks\r\n- Block quotes\r\n- Quick replies\r\n- Cards\r\n - Hero Card\r\n - Thumbnail Card\r\n- Undo/redo\r\n- Copy/paste\r\n\r\nThe editor saves the response in Markdown format. If desired,\r\nyou can view and edit the raw Markdown markup by toggling the switch\r\nfrom **Rich** to **Raw**.\r\n\r\n### Twitter Channel\r\n\r\nSupported features include:\r\n\r\n- Plain text replies\r\n- Quick Reply messages\r\n- Calls to Action\r\n\r\n### WhatsApp Channel\r\n\r\nSupported features include:\r\n\r\n- **Bold**\r\n- _Italic_\r\n- ~~Strikethrough~~\r\n- Quick Replies\r\n- Menu Replies\r\n- Media Replies\r\n - Image\r\n - Video\r\n - Audio\r\n - Document (txt, PDF, Word, Excel, Powerpoint)\r\n- Undo/redo\r\n- Copy/paste\r\n\r\nThe editor saves the response in WhatsApp message format. If desired,\r\nyou can view and edit the raw markup by toggling the switch\r\nfrom **Rich** to **Raw**.\r\n","description":"Craft rich text replies for multiple different channels","endpoint":"https://console.ivastudio.verint.live/Widget/get/64e3ca2df0c99192d946ab9e_655d44bd75c5d32ee18263ca_664caf7f-fce6-4a55-b195-fdcfe47119eb.js","version":{"major":0,"minor":1,"patch":14},"metadata":{"createdBy":"64e637d804bf464073a2a224","createdAt":1714157790017},"id":"347d5936-ff0b-496e-a3ca-bddc4eaf6a2d","groupId":"a516be40-cf36-4a0a-873b-99d080ec9264","data":{"code":"// Auto-generated code. Do not modify.\nconst channels = {\n \"text\": {\n \"en\": [[\"I am sorry, I couldn't hear you. \"]]\n },\n \"web\": {\n \"en\": [[\"I am sorry, I couldn't hear you.
\"]]\n },\n \"voice\": {\n \"en\": [[\"I am sorry, I couldn't hear you. \"]]\n }\n};\nconst channelOptions = {};\nconst channelName = (req.body?.metadata?.channel ?? req.body?.channel ?? \"web\").toLowerCase();\nconst languages = channels[channelName] ?? channels.text ?? channels.web;\nconst lang = (req.body?.metadata?.lang ?? req.body?.lang ?? \"en\").slice(0, 2);\nconst replies = languages?.[lang] ?? [[\"\"]];\nreplies.forEach(replySet => {\n function replaceVariables(str) {\n return str.replace(/{([^}]+)}/g, (match, key) => new Function(\"x\", \"return x.\" + key)(conversationData));\n }\n let reply = replySet.length > 1 ? replySet[Math.floor(Math.random() * replySet.length)] : replySet[0];\n if (typeof reply === 'object') {\n function replaceValues(obj) {\n if (Array.isArray(obj)) {\n for (let i = 0; i < obj.length; i++) {\n if (typeof obj[i] === \"object\") {\n replaceValues(obj[i]);\n } else if (typeof obj[i] === \"string\") {\n obj[i] = replaceVariables(obj[i]);\n }\n }\n } else {\n for (const key in obj) {\n if (typeof obj[key] === \"object\") {\n replaceValues(obj[key]);\n } else if (typeof obj[key] === \"string\") {\n obj[key] = replaceVariables(obj[key]);\n }\n }\n }\n }\n replaceValues(reply);\n } else {\n reply = replaceVariables(reply);\n }\n recognizedObject.answers.push(reply);\n});\nconst options = channelOptions[channelName]?.[lang];\nif (options && options.length > 0) {\n if (!(\"options\" in recognizedObject)) recognizedObject.options = [];\n recognizedObject.options.push(...options);\n}\nnext();","ports":[],"activeChannels":{"text":[{"type":"text","languages":{"en":[{"value":"I am sorry, I couldn't hear you. ","valid":true}]}}],"web":[{"type":"text","languages":{"en":[{"value":"I am sorry, I couldn't hear you.
","valid":true}]}}],"voice":[{"type":"text","languages":{"en":[{"value":"I am sorry, I couldn't hear you. ","valid":true}]}}]},"valid":true,"updateKey":27692630}},"3079f18b-3c1f-43a4-86b8-941016e511a6":{"type":"group","componentId":"group","icon":"layer-group","position":{"left":5518.96875,"top":6003.76171875},"name":"Group","description":"Useful for grouping widgets together","id":"3079f18b-3c1f-43a4-86b8-941016e511a6","data":{"steps":["aa325093-4e21-4dff-8f5c-aee9f0be397e"]}},"aa325093-4e21-4dff-8f5c-aee9f0be397e":{"_id":"662bf8dedae383ffb348fea3","componentId":"664caf7f-fce6-4a55-b195-fdcfe47119eb","originalComponentId":"d9db6b1e-e3d5-40f2-a618-7684a28adfc0","type":"seed","icon":"paragraph","position":{"left":0,"top":0},"name":"Multi-Channel Reply","readme":"# Multi-Channel Reply Widget\r\n\r\nThis widget allows you to craft responses with rich text features\r\nusing a user-friendly WYSIWYG editor.\r\n\r\n## Supported Channels\r\n\r\n- Plain text (fallback)\r\n- Web/HTML\r\n- Facebook\r\n- Microsoft Teams\r\n- Twitter\r\n- WhatsApp\r\n\r\n### All Channels\r\n\r\nYou can define multiple messages within a single reply. Use the **Add Content**\r\nbutton to add additional messages or other types of content (depending on the\r\nselected channel.)\r\n\r\nYou can include **inline conversation variables** in your response\r\nby including a variable name surrounded by curly brackets,\r\nsuch as `{variableName}`. Object paths and arrays are also supported, e.g. `{path.to.thing[3]}`.\r\n\r\nA randomizer feature is also included for rich text and plain text replies.\r\nYou can define multiple **alternative responses** for each message,\r\none of which will be selected at random each time the response is hit in the agent.\r\n\r\nYou may also create replies for multiple languages.\r\nUse the dropdown at the top of the form to select the language currently being edited.\r\nAll languages will share the same content cards for every channel.\r\n\r\n### Web Channel\r\n\r\nSupported features include:\r\n\r\n- **Bold**\r\n- _Italic_\r\n- Bulleted lists\r\n- Numbered lists\r\n- Hyperlinks\r\n- Images\r\n- Block quotes\r\n- Quick replies\r\n- Undo/redo\r\n- Copy/paste\r\n\r\nThe editor saves the response in HTML format. If desired,\r\nyou can view and edit the raw HTML markup by toggling the switch\r\nfrom **Rich** to **Raw**.\r\n\r\n### Facebook Channel\r\n\r\nSupported features include:\r\n\r\n- **Bold**\r\n- _Italic_\r\n- ~~Strikethrough~~\r\n- Carousel\r\n- Image replies\r\n- Quick replies\r\n- Undo/redo\r\n- Copy/paste\r\n\r\nThe editor saves the response in Facebook message format. If desired,\r\nyou can view and edit the raw markup by toggling the switch\r\nfrom **Rich** to **Raw**.\r\n\r\n### Microsoft Teams Channel\r\n\r\nSupported features include:\r\n\r\n- **Bold**\r\n- _Italic_\r\n- Bulleted lists\r\n- Numbered lists\r\n- Hyperlinks\r\n- Block quotes\r\n- Quick replies\r\n- Cards\r\n - Hero Card\r\n - Thumbnail Card\r\n- Undo/redo\r\n- Copy/paste\r\n\r\nThe editor saves the response in Markdown format. If desired,\r\nyou can view and edit the raw Markdown markup by toggling the switch\r\nfrom **Rich** to **Raw**.\r\n\r\n### Twitter Channel\r\n\r\nSupported features include:\r\n\r\n- Plain text replies\r\n- Quick Reply messages\r\n- Calls to Action\r\n\r\n### WhatsApp Channel\r\n\r\nSupported features include:\r\n\r\n- **Bold**\r\n- _Italic_\r\n- ~~Strikethrough~~\r\n- Quick Replies\r\n- Menu Replies\r\n- Media Replies\r\n - Image\r\n - Video\r\n - Audio\r\n - Document (txt, PDF, Word, Excel, Powerpoint)\r\n- Undo/redo\r\n- Copy/paste\r\n\r\nThe editor saves the response in WhatsApp message format. If desired,\r\nyou can view and edit the raw markup by toggling the switch\r\nfrom **Rich** to **Raw**.\r\n","description":"Craft rich text replies for multiple different channels","endpoint":"https://console.ivastudio.verint.live/Widget/get/64e3ca2df0c99192d946ab9e_655d44bd75c5d32ee18263ca_664caf7f-fce6-4a55-b195-fdcfe47119eb.js","version":{"major":0,"minor":1,"patch":14},"metadata":{"createdBy":"64e637d804bf464073a2a224","createdAt":1714157790017},"id":"aa325093-4e21-4dff-8f5c-aee9f0be397e","groupId":"3079f18b-3c1f-43a4-86b8-941016e511a6","data":{"code":"// Auto-generated code. Do not modify.\nconst channels = {\n \"text\": {\n \"en\": [[\"Queue Status Event.\"]]\n },\n \"web\": {\n \"en\": [[\"Queue status event.
\"]]\n },\n \"voice\": {\n \"en\": [[\"Queue Status Event.\"]]\n }\n};\nconst channelOptions = {};\nconst channelName = (req.body?.metadata?.channel ?? req.body?.channel ?? \"web\").toLowerCase();\nconst languages = channels[channelName] ?? channels.text ?? channels.web;\nconst lang = (req.body?.metadata?.lang ?? req.body?.lang ?? \"en\").slice(0, 2);\nconst replies = languages?.[lang] ?? [[\"\"]];\nreplies.forEach(replySet => {\n function replaceVariables(str) {\n return str.replace(/{([^}]+)}/g, (match, key) => new Function(\"x\", \"return x.\" + key)(conversationData));\n }\n let reply = replySet.length > 1 ? replySet[Math.floor(Math.random() * replySet.length)] : replySet[0];\n if (typeof reply === 'object') {\n function replaceValues(obj) {\n if (Array.isArray(obj)) {\n for (let i = 0; i < obj.length; i++) {\n if (typeof obj[i] === \"object\") {\n replaceValues(obj[i]);\n } else if (typeof obj[i] === \"string\") {\n obj[i] = replaceVariables(obj[i]);\n }\n }\n } else {\n for (const key in obj) {\n if (typeof obj[key] === \"object\") {\n replaceValues(obj[key]);\n } else if (typeof obj[key] === \"string\") {\n obj[key] = replaceVariables(obj[key]);\n }\n }\n }\n }\n replaceValues(reply);\n } else {\n reply = replaceVariables(reply);\n }\n recognizedObject.answers.push(reply);\n});\nconst options = channelOptions[channelName]?.[lang];\nif (options && options.length > 0) {\n if (!(\"options\" in recognizedObject)) recognizedObject.options = [];\n recognizedObject.options.push(...options);\n}\nnext();","ports":[],"activeChannels":{"text":[{"type":"text","languages":{"en":[{"value":"Queue Status Event.","valid":true}]}}],"web":[{"type":"text","languages":{"en":[{"value":"Queue status event.
","valid":true}]}}],"voice":[{"type":"text","languages":{"en":[{"value":"Queue Status Event.","valid":true}]}}]},"valid":true,"updateKey":264004016}},"9806cea7-2826-4ef9-8b05-bc57ed949a7b":{"type":"group","componentId":"group","icon":"layer-group","position":{"left":5512.93359375,"top":6173.75390625},"name":"Group","description":"Useful for grouping widgets together","id":"9806cea7-2826-4ef9-8b05-bc57ed949a7b","data":{"steps":["67b883e6-f051-4a78-98bb-e067f18d89db"]}},"67b883e6-f051-4a78-98bb-e067f18d89db":{"_id":"662bf8dedae383ffb348fea3","componentId":"664caf7f-fce6-4a55-b195-fdcfe47119eb","originalComponentId":"d9db6b1e-e3d5-40f2-a618-7684a28adfc0","type":"seed","icon":"paragraph","position":{"left":0,"top":0},"name":"Multi-Channel Reply","readme":"# Multi-Channel Reply Widget\r\n\r\nThis widget allows you to craft responses with rich text features\r\nusing a user-friendly WYSIWYG editor.\r\n\r\n## Supported Channels\r\n\r\n- Plain text (fallback)\r\n- Web/HTML\r\n- Facebook\r\n- Microsoft Teams\r\n- Twitter\r\n- WhatsApp\r\n\r\n### All Channels\r\n\r\nYou can define multiple messages within a single reply. Use the **Add Content**\r\nbutton to add additional messages or other types of content (depending on the\r\nselected channel.)\r\n\r\nYou can include **inline conversation variables** in your response\r\nby including a variable name surrounded by curly brackets,\r\nsuch as `{variableName}`. Object paths and arrays are also supported, e.g. `{path.to.thing[3]}`.\r\n\r\nA randomizer feature is also included for rich text and plain text replies.\r\nYou can define multiple **alternative responses** for each message,\r\none of which will be selected at random each time the response is hit in the agent.\r\n\r\nYou may also create replies for multiple languages.\r\nUse the dropdown at the top of the form to select the language currently being edited.\r\nAll languages will share the same content cards for every channel.\r\n\r\n### Web Channel\r\n\r\nSupported features include:\r\n\r\n- **Bold**\r\n- _Italic_\r\n- Bulleted lists\r\n- Numbered lists\r\n- Hyperlinks\r\n- Images\r\n- Block quotes\r\n- Quick replies\r\n- Undo/redo\r\n- Copy/paste\r\n\r\nThe editor saves the response in HTML format. If desired,\r\nyou can view and edit the raw HTML markup by toggling the switch\r\nfrom **Rich** to **Raw**.\r\n\r\n### Facebook Channel\r\n\r\nSupported features include:\r\n\r\n- **Bold**\r\n- _Italic_\r\n- ~~Strikethrough~~\r\n- Carousel\r\n- Image replies\r\n- Quick replies\r\n- Undo/redo\r\n- Copy/paste\r\n\r\nThe editor saves the response in Facebook message format. If desired,\r\nyou can view and edit the raw markup by toggling the switch\r\nfrom **Rich** to **Raw**.\r\n\r\n### Microsoft Teams Channel\r\n\r\nSupported features include:\r\n\r\n- **Bold**\r\n- _Italic_\r\n- Bulleted lists\r\n- Numbered lists\r\n- Hyperlinks\r\n- Block quotes\r\n- Quick replies\r\n- Cards\r\n - Hero Card\r\n - Thumbnail Card\r\n- Undo/redo\r\n- Copy/paste\r\n\r\nThe editor saves the response in Markdown format. If desired,\r\nyou can view and edit the raw Markdown markup by toggling the switch\r\nfrom **Rich** to **Raw**.\r\n\r\n### Twitter Channel\r\n\r\nSupported features include:\r\n\r\n- Plain text replies\r\n- Quick Reply messages\r\n- Calls to Action\r\n\r\n### WhatsApp Channel\r\n\r\nSupported features include:\r\n\r\n- **Bold**\r\n- _Italic_\r\n- ~~Strikethrough~~\r\n- Quick Replies\r\n- Menu Replies\r\n- Media Replies\r\n - Image\r\n - Video\r\n - Audio\r\n - Document (txt, PDF, Word, Excel, Powerpoint)\r\n- Undo/redo\r\n- Copy/paste\r\n\r\nThe editor saves the response in WhatsApp message format. If desired,\r\nyou can view and edit the raw markup by toggling the switch\r\nfrom **Rich** to **Raw**.\r\n","description":"Craft rich text replies for multiple different channels","endpoint":"https://console.ivastudio.verint.live/Widget/get/64e3ca2df0c99192d946ab9e_655d44bd75c5d32ee18263ca_664caf7f-fce6-4a55-b195-fdcfe47119eb.js","version":{"major":0,"minor":1,"patch":14},"metadata":{"createdBy":"64e637d804bf464073a2a224","createdAt":1714157790017},"id":"67b883e6-f051-4a78-98bb-e067f18d89db","groupId":"9806cea7-2826-4ef9-8b05-bc57ed949a7b","data":{"code":"// Auto-generated code. Do not modify.\nconst channels = {\"text\":{\"en\":[[\"Please enter your workspace code:\"]]},\"web\":{\"en\":[[\"Please enter your workspace code:
\"]]},\"voice\":{\"en\":[[\"Please enter your workspace code:\"]]}};\nconst channelOptions = {};\nconst channelName = (req.body?.metadata?.channel ?? req.body?.channel ?? \"web\").toLowerCase();\nconst languages = channels[channelName] ?? channels.text ?? channels.web;\nconst lang = (req.body?.metadata?.lang ?? req.body?.lang ?? \"en\").slice(0, 2);\nconst replies = languages?.[lang] ?? [[\"\"]];\nreplies.forEach(replySet => {\n\tfunction replaceVariables(str) {\n\t\treturn str.replace(/{([^}]+)}/g, (match, key) => (new Function(\"x\", \"return x.\" + key))(conversationData));\n\t}\n\tlet reply = replySet.length > 1 ? replySet[Math.floor(Math.random() * replySet.length)] : replySet[0];\n\tif(typeof reply === 'object') {\n\t\tfunction replaceValues(obj) {\n\t\t\tif(Array.isArray(obj)) {\n\t\t\t\tfor(let i = 0; i < obj.length; i++) {\n\t\t\t\t\tif(typeof obj[i] === \"object\") {\n\t\t\t\t\t\treplaceValues(obj[i]);\n\t\t\t\t\t}\n\t\t\t\t\telse if(typeof obj[i] === \"string\") {\n\t\t\t\t\t\tobj[i] = replaceVariables(obj[i]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tfor(const key in obj){\n\t\t\t\t\tif(typeof obj[key] === \"object\") {\n\t\t\t\t\t\treplaceValues(obj[key]);\n\t\t\t\t\t}\n\t\t\t\t\telse if(typeof obj[key] === \"string\") {\n\t\t\t\t\t\tobj[key] = replaceVariables(obj[key]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treplaceValues(reply);\n\t}\n\telse {\n\t\treply = replaceVariables(reply);\n\t}\n\trecognizedObject.answers.push(reply);\n});\nconst options = channelOptions[channelName]?.[lang];\nif(options && options.length > 0) {\n\tif(!(\"options\" in recognizedObject)) recognizedObject.options = [];\n\trecognizedObject.options.push(...options);\n}\nnext();\n","ports":[],"activeChannels":{"text":[{"type":"text","languages":{"en":[{"value":"Please enter your workspace code:","valid":true}]}}],"web":[{"type":"text","languages":{"en":[{"value":"Please enter your workspace code:
","valid":true}]}}],"voice":[{"type":"text","languages":{"en":[{"value":"Please enter your workspace code:","valid":true}]}}]},"valid":true,"updateKey":52392153}},"501902db-7b86-4904-9d8c-fe6c2f857fab":{"_id":"662bed6aa966ff323c01f430","componentId":"b59636d2-457a-47dd-ac95-c7f4ff8b2c93","originalComponentId":"ea8f8d4a-9d23-4f73-a628-28dd4df8662b","type":"seed","icon":"plug-circle-check","position":{"left":0,"top":0},"endpoint":"https://console.ivastudio.verint.live/Widget/get/649f328215391a16f47d081e_649f49f4cc92e926d671e8c4_b59636d2-457a-47dd-ac95-c7f4ff8b2c93.js","metadata":{"createdBy":"650a13a8303c8abc768b7df1","createdAt":1714154858711},"id":"501902db-7b86-4904-9d8c-fe6c2f857fab","groupId":"fb08b400-bf23-4c72-ae8e-94d2bbba0af1","data":{"code":"if (\"returnToSlotName\" && !_.isUndefined(conversationData.returnToSlotName)) {\n next(0);\n} else {\n next(1);\n}","ports":[{"id":"6b55be9c-ef19-49d6-9666-134d52610a86"},{"id":"87af2146-45c9-4105-a079-a1b3a40c846f"}],"variableName":"returnToSlotName","selectedCondition":"exists","selectedFailureAction":"next(index)","selectedSuccessAction":"next(index)"}},"6df7e34b-7fab-4972-8e6f-5cca901b9985":{"_id":"662bed6aa966ff323c01f430","componentId":"b59636d2-457a-47dd-ac95-c7f4ff8b2c93","originalComponentId":"ea8f8d4a-9d23-4f73-a628-28dd4df8662b","type":"seed","icon":"plug-circle-check","position":{"left":0,"top":0},"endpoint":"https://console.ivastudio.verint.live/Widget/get/649f328215391a16f47d081e_649f49f4cc92e926d671e8c4_b59636d2-457a-47dd-ac95-c7f4ff8b2c93.js","metadata":{"createdBy":"650a13a8303c8abc768b7df1","createdAt":1714154858711},"id":"6df7e34b-7fab-4972-8e6f-5cca901b9985","groupId":"92a8b64f-a684-4870-9eb7-fbdd7212f511","data":{"code":"if (\"returnToSlotName\" && !_.isUndefined(conversationData.returnToSlotName)) {\n next(0);\n} else {\n next(1);\n}","ports":[{"id":"6b55be9c-ef19-49d6-9666-134d52610a86"},{"id":"87af2146-45c9-4105-a079-a1b3a40c846f"}],"variableName":"returnToSlotName","selectedCondition":"exists","selectedSuccessAction":"next(index)","selectedFailureAction":"next(index)"}},"35a62471-638e-4b13-b7ae-2695573f3dca":{"_id":"662bed6aa966ff323c01f430","componentId":"b59636d2-457a-47dd-ac95-c7f4ff8b2c93","originalComponentId":"ea8f8d4a-9d23-4f73-a628-28dd4df8662b","type":"seed","icon":"plug-circle-check","position":{"left":0,"top":0},"endpoint":"https://console.ivastudio.verint.live/Widget/get/649f328215391a16f47d081e_649f49f4cc92e926d671e8c4_b59636d2-457a-47dd-ac95-c7f4ff8b2c93.js","metadata":{"createdBy":"650a13a8303c8abc768b7df1","createdAt":1714154858711},"id":"35a62471-638e-4b13-b7ae-2695573f3dca","groupId":"a516be40-cf36-4a0a-873b-99d080ec9264","data":{"code":"if (\"returnToSlotName\" && !_.isUndefined(conversationData.returnToSlotName)) {\n next(0);\n} else {\n next(1);\n}","ports":[{"id":"6b55be9c-ef19-49d6-9666-134d52610a86"},{"id":"87af2146-45c9-4105-a079-a1b3a40c846f"}],"variableName":"returnToSlotName","selectedCondition":"exists","selectedSuccessAction":"next(index)","selectedFailureAction":"next(index)"}},"4fdff133-ea1b-4504-a277-e14f011a8347":{"type":"group","componentId":"group","icon":"layer-group","position":{"left":6035.45703125,"top":5491.0078125},"name":"Group","description":"Useful for grouping widgets together","id":"4fdff133-ea1b-4504-a277-e14f011a8347","data":{"steps":["87af2146-45c9-4105-a079-a1b3a40c846f"],"name":"No Current Slot Name in resturnToSlotName"}},"87af2146-45c9-4105-a079-a1b3a40c846f":{"_id":"662bf8dedae383ffb348fea3","componentId":"664caf7f-fce6-4a55-b195-fdcfe47119eb","originalComponentId":"d9db6b1e-e3d5-40f2-a618-7684a28adfc0","type":"seed","icon":"paragraph","position":{"left":0,"top":0},"name":"Multi-Channel Reply","readme":"# Multi-Channel Reply Widget\r\n\r\nThis widget allows you to craft responses with rich text features\r\nusing a user-friendly WYSIWYG editor.\r\n\r\n## Supported Channels\r\n\r\n- Plain text (fallback)\r\n- Web/HTML\r\n- Facebook\r\n- Microsoft Teams\r\n- Twitter\r\n- WhatsApp\r\n\r\n### All Channels\r\n\r\nYou can define multiple messages within a single reply. Use the **Add Content**\r\nbutton to add additional messages or other types of content (depending on the\r\nselected channel.)\r\n\r\nYou can include **inline conversation variables** in your response\r\nby including a variable name surrounded by curly brackets,\r\nsuch as `{variableName}`. Object paths and arrays are also supported, e.g. `{path.to.thing[3]}`.\r\n\r\nA randomizer feature is also included for rich text and plain text replies.\r\nYou can define multiple **alternative responses** for each message,\r\none of which will be selected at random each time the response is hit in the agent.\r\n\r\nYou may also create replies for multiple languages.\r\nUse the dropdown at the top of the form to select the language currently being edited.\r\nAll languages will share the same content cards for every channel.\r\n\r\n### Web Channel\r\n\r\nSupported features include:\r\n\r\n- **Bold**\r\n- _Italic_\r\n- Bulleted lists\r\n- Numbered lists\r\n- Hyperlinks\r\n- Images\r\n- Block quotes\r\n- Quick replies\r\n- Undo/redo\r\n- Copy/paste\r\n\r\nThe editor saves the response in HTML format. If desired,\r\nyou can view and edit the raw HTML markup by toggling the switch\r\nfrom **Rich** to **Raw**.\r\n\r\n### Facebook Channel\r\n\r\nSupported features include:\r\n\r\n- **Bold**\r\n- _Italic_\r\n- ~~Strikethrough~~\r\n- Carousel\r\n- Image replies\r\n- Quick replies\r\n- Undo/redo\r\n- Copy/paste\r\n\r\nThe editor saves the response in Facebook message format. If desired,\r\nyou can view and edit the raw markup by toggling the switch\r\nfrom **Rich** to **Raw**.\r\n\r\n### Microsoft Teams Channel\r\n\r\nSupported features include:\r\n\r\n- **Bold**\r\n- _Italic_\r\n- Bulleted lists\r\n- Numbered lists\r\n- Hyperlinks\r\n- Block quotes\r\n- Quick replies\r\n- Cards\r\n - Hero Card\r\n - Thumbnail Card\r\n- Undo/redo\r\n- Copy/paste\r\n\r\nThe editor saves the response in Markdown format. If desired,\r\nyou can view and edit the raw Markdown markup by toggling the switch\r\nfrom **Rich** to **Raw**.\r\n\r\n### Twitter Channel\r\n\r\nSupported features include:\r\n\r\n- Plain text replies\r\n- Quick Reply messages\r\n- Calls to Action\r\n\r\n### WhatsApp Channel\r\n\r\nSupported features include:\r\n\r\n- **Bold**\r\n- _Italic_\r\n- ~~Strikethrough~~\r\n- Quick Replies\r\n- Menu Replies\r\n- Media Replies\r\n - Image\r\n - Video\r\n - Audio\r\n - Document (txt, PDF, Word, Excel, Powerpoint)\r\n- Undo/redo\r\n- Copy/paste\r\n\r\nThe editor saves the response in WhatsApp message format. If desired,\r\nyou can view and edit the raw markup by toggling the switch\r\nfrom **Rich** to **Raw**.\r\n","description":"Craft rich text replies for multiple different channels","endpoint":"https://console.ivastudio.verint.live/Widget/get/64e3ca2df0c99192d946ab9e_655d44bd75c5d32ee18263ca_664caf7f-fce6-4a55-b195-fdcfe47119eb.js","version":{"major":0,"minor":1,"patch":14},"metadata":{"createdBy":"64e637d804bf464073a2a224","createdAt":1714157790017},"id":"87af2146-45c9-4105-a079-a1b3a40c846f","groupId":"4fdff133-ea1b-4504-a277-e14f011a8347","data":{"code":"// Auto-generated code. Do not modify.\nconst channels = {\n \"text\": {\n \"en\": [[\"How can I help you today?\"]]\n },\n \"web\": {\n \"en\": [[\"How can I help you today?
\"]]\n },\n \"voice\": {\n \"en\": [[\"How can I help you today?\"]]\n }\n};\nconst channelOptions = {};\nconst channelName = (req.body?.metadata?.channel ?? req.body?.channel ?? \"web\").toLowerCase();\nconst languages = channels[channelName] ?? channels.text ?? channels.web;\nconst lang = (req.body?.metadata?.lang ?? req.body?.lang ?? \"en\").slice(0, 2);\nconst replies = languages?.[lang] ?? [[\"\"]];\nreplies.forEach(replySet => {\n function replaceVariables(str) {\n return str.replace(/{([^}]+)}/g, (match, key) => new Function(\"x\", \"return x.\" + key)(conversationData));\n }\n let reply = replySet.length > 1 ? replySet[Math.floor(Math.random() * replySet.length)] : replySet[0];\n if (typeof reply === 'object') {\n function replaceValues(obj) {\n if (Array.isArray(obj)) {\n for (let i = 0; i < obj.length; i++) {\n if (typeof obj[i] === \"object\") {\n replaceValues(obj[i]);\n } else if (typeof obj[i] === \"string\") {\n obj[i] = replaceVariables(obj[i]);\n }\n }\n } else {\n for (const key in obj) {\n if (typeof obj[key] === \"object\") {\n replaceValues(obj[key]);\n } else if (typeof obj[key] === \"string\") {\n obj[key] = replaceVariables(obj[key]);\n }\n }\n }\n }\n replaceValues(reply);\n } else {\n reply = replaceVariables(reply);\n }\n recognizedObject.answers.push(reply);\n});\nconst options = channelOptions[channelName]?.[lang];\nif (options && options.length > 0) {\n if (!(\"options\" in recognizedObject)) recognizedObject.options = [];\n recognizedObject.options.push(...options);\n}\nnext();","ports":[],"activeChannels":{"text":[{"type":"text","languages":{"en":[{"value":"How can I help you today?","valid":true}]}}],"web":[{"type":"text","languages":{"en":[{"value":"How can I help you today?
","valid":true}]}}],"voice":[{"type":"text","languages":{"en":[{"value":"How can I help you today?","valid":true}]}}]},"valid":true,"updateKey":988073571}},"0d13599a-36e8-432d-83d0-7d751f1fbb93":{"type":"group","componentId":"group","icon":"layer-group","position":{"left":6126.44921875,"top":5248.91015625},"name":"Group","description":"Useful for grouping widgets together","id":"0d13599a-36e8-432d-83d0-7d751f1fbb93","data":{"steps":["6b55be9c-ef19-49d6-9666-134d52610a86"],"name":"Returning To returnToSlotName via \"GoTo\""}},"6b55be9c-ef19-49d6-9666-134d52610a86":{"type":"seed","componentId":"seed","icon":"code","position":{"left":0,"top":0},"name":"Code","description":"Allows custom code to execute where placed","id":"6b55be9c-ef19-49d6-9666-134d52610a86","groupId":"0d13599a-36e8-432d-83d0-7d751f1fbb93","data":{"code":"recognizedObject.goTo = conversationData.returnToSlotName;\nnext();","ports":[null]}}},"global":false,"metadata":{"createdBy":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjRmMWFjODE1NDVmODJiMDVhODgzNDQ3","createdAt":1741788228178,"_vc":{"branch":"current","operation":"update","_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0NDQ0YWZiZGY5MzBmNGIzODk2","lts_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjgzODc5MDE4YzllYjA3MzRjODkxNjM2","commitId":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjgzODc5MDFkMDM3ZjMzNGIyZTZiMWI3"},"updatedBy":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjRiYWMwNTkyNGE5YzU3ODNlZjc0MjRl","updatedAt":1748531457223},"dependsOn":[{"_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0NDM0YWZiZGY5MzBmNGIzODdl","_vc_latest":{"_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0NDM0YWZiZGY5MzBmNGIzODdm","workspaceId":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTgzYjY0YWZiZGY5MzBmNGIzODYz","organizationId":null,"modelId":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0MzU0YWZiZGY5MzBmNGIzODZh","label":"VXML Welcome Event @ 6647ad7b84df93835bbb4346","keyPhrases":[],"enabled":true,"relevant":true,"publication":{"_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjZmNzE5MjYxOWYzZjIxOTI3MzcyZTY2","original_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjY0N2E4YzQ4NGRmOTM4MzViYmI0MzM1"},"metadata":{"createdBy":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjRmMWFjODE1NDVmODJiMDVhODgzNDQ3","createdAt":1741788227700,"_vc":{"branch":"current","operation":"create","_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0NDM0YWZiZGY5MzBmNGIzODdl","lts_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjgzODc5MDE4YzllYjA3MzRjODkxNjIy","commitId":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjgzODc5MDFkMDM3ZjMzNGIyZTZiMWI3"},"updatedAt":1748531457197,"updatedBy":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjRiYWMwNTkyNGE5YzU3ODNlZjc0MjRl"}}},{"_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0NDM0YWZiZGY5MzBmNGIzODgy","_vc_latest":{"_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0NDM0YWZiZGY5MzBmNGIzODgz","workspaceId":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTgzYjY0YWZiZGY5MzBmNGIzODYz","organizationId":null,"modelId":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0MzU0YWZiZGY5MzBmNGIzODZh","label":"VXML Max Speech Timeout @ 6647ad7b84df93835bbb4346","keyPhrases":[],"enabled":true,"relevant":true,"publication":{"_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjZmNzE5MjYxOWYzZjIxOTI3MzcyZTY2","original_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjY0N2E4YzQ4NGRmOTM4MzViYmI0MzM3"},"metadata":{"createdBy":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjRmMWFjODE1NDVmODJiMDVhODgzNDQ3","createdAt":1741788227749,"_vc":{"branch":"current","operation":"create","_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0NDM0YWZiZGY5MzBmNGIzODgy","lts_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjgzODc5MDE4YzllYjA3MzRjODkxNjI0","commitId":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjgzODc5MDFkMDM3ZjMzNGIyZTZiMWI3"},"updatedAt":1748531457197,"updatedBy":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjRiYWMwNTkyNGE5YzU3ODNlZjc0MjRl"}}},{"_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0NDM0YWZiZGY5MzBmNGIzODgw","_vc_latest":{"_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0NDM0YWZiZGY5MzBmNGIzODgx","workspaceId":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTgzYjY0YWZiZGY5MzBmNGIzODYz","organizationId":null,"modelId":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0MzU0YWZiZGY5MzBmNGIzODZh","label":"VXML Queue Status Event @ 6647ad7b84df93835bbb4346","keyPhrases":[],"enabled":true,"relevant":true,"publication":{"_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjZmNzE5MjYxOWYzZjIxOTI3MzcyZTY2","original_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjY0N2E4YzQ4NGRmOTM4MzViYmI0MzM2"},"metadata":{"createdBy":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjRmMWFjODE1NDVmODJiMDVhODgzNDQ3","createdAt":1741788227728,"_vc":{"branch":"current","operation":"create","_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0NDM0YWZiZGY5MzBmNGIzODgw","lts_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjgzODc5MDE4YzllYjA3MzRjODkxNjIz","commitId":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjgzODc5MDFkMDM3ZjMzNGIyZTZiMWI3"},"updatedAt":1748531457197,"updatedBy":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjRiYWMwNTkyNGE5YzU3ODNlZjc0MjRl"}}},{"_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0NDM0YWZiZGY5MzBmNGIzODg0","_vc_latest":{"_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0NDM0YWZiZGY5MzBmNGIzODg1","workspaceId":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTgzYjY0YWZiZGY5MzBmNGIzODYz","organizationId":null,"modelId":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0MzU0YWZiZGY5MzBmNGIzODZh","label":"VXML Noinput Event @ 6647ad7b84df93835bbb4346","keyPhrases":[],"enabled":true,"relevant":true,"publication":{"_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjZmNzE5MjYxOWYzZjIxOTI3MzcyZTY2","original_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjY0N2E4YzQ4NGRmOTM4MzViYmI0MzM4"},"metadata":{"createdBy":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjRmMWFjODE1NDVmODJiMDVhODgzNDQ3","createdAt":1741788227773,"_vc":{"branch":"current","operation":"create","_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0NDM0YWZiZGY5MzBmNGIzODg0","lts_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjgzODc5MDE4YzllYjA3MzRjODkxNjI1","commitId":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjgzODc5MDFkMDM3ZjMzNGIyZTZiMWI3"},"updatedAt":1748531457197,"updatedBy":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjRiYWMwNTkyNGE5YzU3ODNlZjc0MjRl"}}},{"_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0NDM0YWZiZGY5MzBmNGIzODg2","_vc_latest":{"_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0NDM0YWZiZGY5MzBmNGIzODg3","workspaceId":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTgzYjY0YWZiZGY5MzBmNGIzODYz","organizationId":null,"modelId":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0MzU0YWZiZGY5MzBmNGIzODZh","label":"VXML Unrecognized Event @ 6647ad7b84df93835bbb4346","keyPhrases":[],"enabled":true,"relevant":true,"publication":{"_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjZmNzE5MjYxOWYzZjIxOTI3MzcyZTY2","original_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjY0N2E4YzQ4NGRmOTM4MzViYmI0MzM5"},"metadata":{"createdBy":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjRmMWFjODE1NDVmODJiMDVhODgzNDQ3","createdAt":1741788227801,"_vc":{"branch":"current","operation":"create","_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0NDM0YWZiZGY5MzBmNGIzODg2","lts_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjgzODc5MDE4YzllYjA3MzRjODkxNjI2","commitId":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjgzODc5MDFkMDM3ZjMzNGIyZTZiMWI3"},"updatedAt":1748531457197,"updatedBy":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjRiYWMwNTkyNGE5YzU3ODNlZjc0MjRl"}}}]}],"globalVariables":[{"_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0OTQ0YWZiZGY5MzBmNGIzODk4","workspaceId":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTgzYjY0YWZiZGY5MzBmNGIzODYz","name":"voiceSettings_6647ad7b84df93835bbb4346","type":"Object","content":"{\r\n \"nlu\": {\r\n \"apiBaseURL\": \"http://ivas-router.prd1\",\r\n \"modelName\": \"MVP\",\r\n \"settings\": {\r\n \"intentConfidenceThreshold\": 0.4\r\n }\r\n },\r\n \"suffix\": \"6647ad7b84df93835bbb4346\",\r\n \"waitHoldTimeout\": \"8s\",\r\n \"waitHoldQueueStatus\": \"20\",\r\n \"responses\": {\r\n \"welcome\": \"Hello, I'm a virtual assistant. How can I help you?\",\r\n \"unrecognized\": \"I did not understand what you said. Can you please say it again?\",\r\n \"unanswered\": \"I understand what you said, but I have not been taught how to answer your question... yet.\",\r\n \"noinput\": \"If you said something, I did not hear it. Can you please repeat that?\",\r\n \"speechtimeout\": \"We may be having noise issues with our call, Can you repeat that?\",\r\n \"transferCall\": \"Forwarding to a live operator\",\r\n \"pleaseContinueToHold\": \"Please continue to wait for the next available representative.\",\r\n \"safetynet\": \"There was a problem processing your request. How else can I help?\"\r\n },\r\n \"ivr\": {\r\n \"hostname\": \"https://router.ivastudio.verint.live\",\r\n \"applicationName\": \"SC Distr\"\r\n },\r\n \"transfer\": {\r\n \"destination\": \"\"\r\n },\r\n \"integrations\": {\r\n \"CAInterface\": {\r\n \"enabled\": false,\r\n \"suffix\": \"\"\r\n }\r\n }\r\n}","parameters":null,"returnsContextObject":null,"organizationId":null,"metadata":{"createdBy":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjRmMWFjODE1NDVmODJiMDVhODgzNDQ3","createdAt":1741788227337,"_vc":{"branch":"current","operation":"update","_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0NDM0YWZiZGY5MzBmNGIzODZi","lts_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjgzODc5NTU4YzllYjA3MzRjODkyMDE5","commitId":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjgzODc5NTVkMDM3ZjMzNGIyZTZiMWI4"},"updatedBy":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjRiYWMwNTkyNGE5YzU3ODNlZjc0MjRl","updatedAt":1748531541999}},{"_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0NDM0YWZiZGY5MzBmNGIzODZl","workspaceId":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTgzYjY0YWZiZGY5MzBmNGIzODYz","name":"vxmlgen_gvf_6647ad7b84df93835bbb4346","type":"Function","content":"// version 1.0.5\nreturn {\nfrontDoor: options => {\n const parameters = _.merge({\n lastResortUrl: 'D:\\\\\\\\Program Files (x86)\\\\\\\\Intervoice\\\\Media Server for VOIP\\\\\\\\APPL\\\\\\\\CSIURLROUTER\\\\\\\\lastresort.vxml'\n }, options);\n parameters.suffix = parameters.suffix && `_${parameters.suffix}` || '';\n const xml = {\n 'vxml': {\n '$': {\n 'version': '2.1',\n 'xmlns': 'http://www.w3.org/2001/vxml',\n 'xmlns:xsi': 'http://www.w3.org/2001/XMLSchema-instance',\n 'xsi:schemaLocation': 'http://www.w3.org/2001/vxml http://www.w3.org/TR/2007/REC-voicexml21-20070619/vxml.xsd'\n },\n 'var': [{\n '$': {\n 'name': 'sessionId',\n 'expr': 'session.connection.log.callid'\n }\n }, {\n '$': {\n 'name': 'localURI',\n 'expr': 'session.connection.local.uri'\n }\n }, {\n '$': {\n 'name': 'remoteURI',\n 'expr': 'session.connection.remote.uri'\n }\n }, {\n '$': {\n 'name': 'aai',\n 'expr': 'session.connection.aai'\n }\n }, {\n '$': {\n 'expr': \"''\",\n 'name': 'sessionJSON'\n }\n }, {\n '$': {\n 'name': 'errorCount',\n 'expr': '0'\n }\n }, {\n '$': {\n 'name': 'message',\n 'expr': \"''\"\n }\n }, {\n '$': {\n 'name': 'event',\n 'expr': \"''\"\n }\n }],\n 'form': [{\n '$': {\n 'id': 'main'\n },\n 'block': [{\n 'script': [\"\\n \\n // https://www.ecma-international.org/ecma-262/#sec-json.stringify\\n // JSON.stringify() is supported in ECMA 262 edition 5 and later.\\n // Convergys CIVP 10 supports ECMA 262 edition 3\\n // For this alternate implementation, see:\\n // https://www.sitepoint.com/javascript-json-serialization/\\n\\n var JSON = JSON || {};\\n\\n JSON.stringify = JSON.stringify || function (obj) {\\n\\n var t = typeof (obj);\\n if (t != \\\"object\\\" || obj === null) {\\n\\n // simple data type\\n if (t == \\\"string\\\") obj = '\\\"' + obj + '\\\"';\\n return String(obj);\\n\\n }\\n else {\\n\\n // recurse array or object\\n var n, v, json = [], arr = (obj && obj.constructor == Array);\\n\\n for (n in obj) {\\n v = obj[n]; t = typeof (v);\\n\\n if (t == \\\"string\\\") v = '\\\"' + v.replace(/\\\\\\\\([^\\\"])/g, \\\"\\\\\\\\\\\\\\\\$1\\\") + '\\\"';\\n else if (t == \\\"undefined\\\") v = null;\\n else if (t == \\\"object\\\" && v !== null) v = JSON.stringify(v);\\n\\t\\t\\t\\t\\t\\telse if (t == \\\"function\\\") v = null;\\n\\n json.push((arr ? \\\"\\\" : '\\\"' + n + '\\\":') + String(v));\\n }\\n\\n return (arr ? \\\"[\\\" : \\\"{\\\") + String(json) + (arr ? \\\"]\\\" : \\\"}\\\");\\n }\\n };\\n\\n JSON.parse = JSON.parse || function (str) {\\n if (str === \\\"\\\") str = '\\\"\\\"';\\n eval(\\\"var p=\\\" + str + \\\";\\\");\\n return p;\\n };\\n\\n sessionJSON = JSON.stringify(session);\\n \\n \"],\n 'submit': [{\n '$': {\n 'method': 'post',\n 'expr': 'loopUrl',\n 'namelist': 'sessionId localURI remoteURI aai sessionJSON'\n }\n }]\n }]\n }],\n 'catch': [{\n '$': {\n 'event': 'connection.disconnect'\n },\n 'assign': [{\n '$': {\n 'name': 'message',\n 'expr': '_message'\n }\n }, {\n '$': {\n 'name': 'event',\n 'expr': '_event'\n }\n }],\n 'submit': [{\n '$': {\n 'method': 'post',\n 'expr': 'stopUrl',\n 'namelist': 'sessionId message event'\n }\n }]\n }, {\n '$': {\n 'event': 'error'\n },\n 'assign': [{\n '$': {\n 'name': 'errorCount',\n 'expr': 'errorCount + 1'\n }\n }, {\n '$': {\n 'name': 'message',\n 'expr': '_message'\n }\n }, {\n '$': {\n 'name': 'event',\n 'expr': '_event'\n }\n }],\n 'if': [{\n '$': {\n 'cond': 'errorCount > 3'\n },\n 'log': [{\n '_': 'Tranfer of last resort., sessionId: ,\\n\\t\\tevent: , message: \\n\\t\\t\\t',\n '$': {\n 'label': 'error'\n },\n 'value': [{\n '$': {\n 'expr': 'sessionId'\n }\n }, {\n '$': {\n 'expr': '_event'\n }\n }, {\n '$': {\n 'expr': '_message'\n }\n }]\n }],\n 'goto': [{\n '$': {\n 'expr': 'lastResortUrl'\n }\n }]\n }],\n 'submit': [{\n '$': {\n 'method': 'post',\n 'expr': 'errorUrl',\n 'namelist': 'sessionId message event'\n }\n }]\n }]\n }\n };\n xml.vxml.var.push({\n '$': {\n 'name': 'loopUrl',\n 'expr': `'${parameters.loopUrl || `${parameters.hostname}/ProxyScript/run/${parameters.workspaceId}/${parameters.branch}/vxml_loop${parameters.suffix}`}'`\n }\n }, {\n '$': {\n 'name': 'errorUrl',\n 'expr': `'${parameters.errorUrl || `${parameters.hostname}/ProxyScript/run/${parameters.workspaceId}/${parameters.branch}/vxml_error${parameters.suffix}`}'`\n }\n }, {\n '$': {\n 'name': 'lastResortUrl',\n 'expr': `'${parameters.lastResortUrl}'`\n }\n }, {\n '$': {\n 'name': 'stopUrl',\n 'expr': `'${parameters.stopUrl || `${parameters.hostname}/ProxyScript/run/${parameters.workspaceId}/${parameters.branch}/vxml_stop${parameters.suffix}`}'`\n }\n }, {\n '$': {\n 'name': 'maxspeechtimeoutUrl',\n 'expr': `'${parameters.maxspeechtimeoutUrl || `${parameters.hostname}/ProxyScript/run/${parameters.workspaceId}/${parameters.branch}/vxml_loop${parameters.suffix}/maxspeechtimeout`}'`\n }\n });\n const builder = new xml2js.Builder({\n cdata: true\n });\n return builder.buildObject(xml);\n},\nloop: options => {\n const builder = new xml2js.Builder();\n const parameters = _.merge({\n dialogName: 'test_dialog',\n dtmfgrammarUri: 'builtin:dtmf/digits',\n languageCode: 'en-US',\n lastResortUrl: 'D:\\\\\\\\Program Files (x86)\\\\\\\\Intervoice\\\\Media Server for VOIP\\\\\\\\APPL\\\\\\\\CSIURLROUTER\\\\\\\\lastresort.vxml',\n voiceName: 'en-US-Wavenet-F',\n prosodyRate: '1.0',\n confidencelevel: 0.01,\n sensitivity: 0.5,\n completetimeout: '1s',\n incompletetimeout: '1s',\n maxspeechtimeout: '15s',\n timeout: '15s',\n privatedata: false,\n bargein: false,\n processingSoundUrl: 'https://ivastudio.ai/media-file/5009635/2af2ba0f-3222-485d-bb60-4ed4f8883545.wav',\n dtmf: {\n interdigittimeout: '5s',\n termtimeout: '0s',\n termchar: '#'\n },\n vars: []\n }, options, options?.recognizedData?.ivrSettings);\n const xml = {\n 'vxml': {\n '$': {\n 'version': '2.1',\n 'xmlns': 'http://www.w3.org/2001/vxml',\n 'xmlns:xsi': 'http://www.w3.org/2001/XMLSchema-instance',\n 'xsi:schemaLocation': 'http://www.w3.org/2001/vxml http://www.w3.org/TR/2007/REC-voicexml21-20070619/vxml.xsd'\n },\n 'property': [],\n 'var': [{\n '$': {\n 'name': 'utterance'\n }\n }, {\n '$': {\n 'name': 'confidence'\n }\n }, {\n '$': {\n 'name': 'inputmode'\n }\n }, {\n '$': {\n 'name': 'interpretation'\n }\n }, {\n '$': {\n 'name': 'errorCount',\n 'expr': '0'\n }\n }, {\n '$': {\n 'name': 'message'\n }\n }, {\n '$': {\n 'name': 'event'\n }\n }],\n 'script': [\"\\n setProperty(\\\"com.ivb.tts.request_id\\\", session.connection.log.callid)\\n \"],\n 'form': [{\n '$': {\n 'id': 'main'\n },\n 'property': [{\n '$': {\n 'name': 'confidencelevel'\n }\n }, {\n '$': {\n 'name': 'sensitivity'\n }\n }, {\n '$': {\n 'name': 'completetimeout'\n }\n }, {\n '$': {\n 'name': 'incompletetimeout'\n }\n }, {\n '$': {\n 'name': 'maxspeechtimeout'\n }\n }, {\n '$': {\n 'name': 'timeout'\n }\n }, {\n '$': {\n 'name': 'recordutterance',\n 'value': 'true'\n }\n }, {\n '$': {\n 'name': 'recordutterancetype',\n 'value': 'audio/x-wav'\n }\n }, {\n '$': {\n 'name': 'com.intervoice.log.privatedata'\n }\n }, {\n '$': {\n 'name': 'interdigittimeout'\n }\n }, {\n '$': {\n 'name': 'termtimeout'\n }\n }],\n 'block': [],\n 'field': [{\n '$': {\n 'name': 'intent'\n },\n 'grammar': [{\n '$': {\n 'srcexpr': 'grammarUri'\n }\n }, {\n '$': {\n 'srcexpr': 'dtmfgrammarUri'\n }\n }],\n 'prompt': [],\n 'filled': [{\n 'goto': [{\n '$': {\n 'next': '#exit'\n }\n }]\n }]\n }]\n }, {\n '$': {\n 'id': 'exit'\n },\n 'property': [],\n 'block': [{\n 'if': [{\n '$': {\n 'cond': \"typeof(application.lastresult$) != 'undefined'\"\n },\n 'if': [{\n '$': {\n 'cond': \"typeof(application.lastresult$[0]) != 'undefined'\"\n },\n 'assign': [{\n '$': {\n 'name': 'inputmode',\n 'expr': 'application.lastresult$[0].inputmode'\n }\n }, {\n '$': {\n 'name': 'confidence',\n 'expr': 'application.lastresult$[0].confidence'\n }\n }, {\n '$': {\n 'name': 'utterance',\n 'expr': 'application.lastresult$[0].utterance'\n }\n }],\n 'if': [{\n '$': {\n 'cond': \"typeof(application.lastresult$[0].interpretation) == 'object'\"\n },\n 'throw': [{\n '$': {\n 'event': 'error.interpretation',\n 'message': 'The semantic result returned an object.'\n }\n }],\n 'else': [''],\n 'assign': [{\n '$': {\n 'name': 'interpretation',\n 'expr': 'application.lastresult$[0].interpretation'\n }\n }]\n }],\n 'var': [{\n '$': {\n 'name': 'waveform',\n 'expr': 'application.lastresult$.waveform'\n }\n }]\n }],\n 'else': [''],\n 'throw': [{\n '$': {\n 'event': 'nomatch'\n }\n }]\n }],\n 'submit': [{\n '$': {\n 'method': 'post',\n 'fetchtimeout': \"16s\",\n 'expr': 'loopUrl',\n 'namelist': 'sessionId confidence inputmode utterance interpretation recognizerRequestID waveform'.concat(...parameters.vars.map(v => {\n return ` ${v.$.name}`;\n }))\n }\n }]\n }]\n }],\n 'noinput': [{\n 'submit': [{\n '$': {\n 'method': 'post',\n 'expr': 'noinputUrl',\n 'namelist': 'sessionId recognizerRequestID'\n }\n }]\n }],\n 'nomatch': [{\n 'submit': [{\n '$': {\n 'method': 'post',\n 'expr': 'nomatchUrl',\n 'namelist': 'sessionId recognizerRequestID'\n }\n }]\n }],\n 'catch': [{\n '$': {\n 'event': 'maxspeechtimeout'\n },\n 'submit': [{\n '$': {\n 'method': 'post',\n 'expr': 'maxspeechtimeoutUrl',\n 'namelist': 'sessionId recognizerRequestID'\n }\n }]\n }, {\n '$': {\n 'event': 'connection.disconnect'\n },\n 'assign': [{\n '$': {\n 'name': 'message',\n 'expr': '_message'\n }\n }, {\n '$': {\n 'name': 'event',\n 'expr': '_event'\n }\n }],\n 'submit': [{\n '$': {\n 'method': 'post',\n 'expr': 'stopUrl',\n 'namelist': 'sessionId message event'\n }\n }]\n }, {\n '$': {\n 'event': 'error'\n },\n 'assign': [{\n '$': {\n 'name': 'errorCount',\n 'expr': 'errorCount + 1'\n }\n }, {\n '$': {\n 'name': 'message',\n 'expr': '_message'\n }\n }, {\n '$': {\n 'name': 'event',\n 'expr': '_event'\n }\n }],\n 'if': [{\n '$': {\n 'cond': 'errorCount > 3'\n },\n 'log': [{\n '_': 'Tranfer of last resort: sessionId: ,\\n\\t\\tevent: , message: .',\n '$': {\n 'label': 'error'\n },\n 'value': [{\n '$': {\n 'expr': 'sessionId'\n }\n }, {\n '$': {\n 'expr': '_event'\n }\n }, {\n '$': {\n 'expr': '_message'\n }\n }]\n }],\n 'goto': [{\n '$': {\n 'expr': 'lastResortUrl'\n }\n }]\n }],\n 'submit': [{\n '$': {\n 'method': 'post',\n 'expr': 'errorUrl',\n 'namelist': 'sessionId message event'\n }\n }]\n }]\n }\n };\n parameters.rmodel = parameters.rmodel || {\n 'languageCode': parameters.languageCode,\n 'maxAlternatives': 1,\n 'model': 'phone_call',\n 'useEnhanced': true,\n 'speechContexts': []\n };\n parameters.suffix = parameters.suffix && `_${parameters.suffix}` || '';\n if (parameters.recognizedData && parameters.recognizedData.expectedPhrases) {\n parameters.rmodel.speechContexts = [{\n phrases: parameters.recognizedData.expectedPhrases\n }];\n }\n xml.vxml.$['xml:lang'] = parameters.languageCode;\n xml.vxml.property.push({\n '$': {\n 'name': 'com.ivb.asr.application_name',\n 'value': parameters.applicationName || `${parameters.workspaceId}_VerintVXML`\n }\n }, {\n '$': {\n 'name': 'com.ivb.asr.dialog_name',\n 'value': parameters.dialogName\n // 'value': parameters?.dialogName ?? (recognizedData?.answers?.join(\";:;\") || \"EMPTY\").substring(0, 100)\n }\n }, {\n '$': {\n 'name': 'com.ivb.asr.request_id',\n 'value': parameters.requestId\n }\n }, {\n '$': {\n 'name': 'com.ivb.tts.application_name',\n 'value': parameters.applicationName || `${parameters.workspaceId}_VerintVXML`\n }\n }, {\n '$': {\n 'name': 'com.ivb.tts.dialog_name',\n 'value': parameters.dialogName\n }\n }, {\n '$': {\n 'name': 'com.ivb.tts.Voice-Engine',\n 'value': 'google'\n }\n }, {\n '$': {\n 'name': 'com.ivb.tts.Voice-Name',\n 'value': parameters.voiceName\n }\n }, {\n '$': {\n 'name': 'com.ivb.tts.Prosody-Rate',\n 'value': parameters.prosodyRate\n }\n });\n if (parameters.processingSoundUrl) {\n xml.vxml.property.push({\n '$': {\n 'name': 'fetchaudio',\n 'value': parameters.processingSoundUrl\n }\n }, {\n '$': {\n 'name': 'fetchaudiodelay',\n 'value': '1s'\n }\n }, {\n '$': {\n 'name': 'fetchaudiominimum',\n 'value': '1s'\n }\n });\n }\n xml.vxml.var.unshift({\n '$': {\n 'name': 'sessionId',\n 'expr': `'${parameters.sessionId}'`\n }\n }, {\n '$': {\n 'name': 'recognizerRequestID',\n 'expr': `'${parameters.requestId}'`\n }\n }, {\n '$': {\n 'name': 'grammarUri',\n 'expr': parameters.grammarUri ? `'${parameters.grammarUri}'` : `'builtin:speech/transcribe?rname=Google;rmodel=${encodeURIComponent(JSON.stringify(parameters.rmodel))}'`\n }\n }, {\n '$': {\n 'name': 'dtmfgrammarUri',\n 'expr': `'${parameters.dtmfgrammarUri}'`\n }\n }, {\n '$': {\n 'name': 'noinputUrl',\n 'expr': `'${parameters.noinputUrl || `${parameters.hostname}/ProxyScript/run/${parameters.workspaceId}/${parameters.branch}/vxml_loop${parameters.suffix}/noinput`}'`\n }\n }, {\n '$': {\n 'name': 'nomatchUrl',\n 'expr': `'${parameters.nomatchUrl || `${parameters.hostname}/ProxyScript/run/${parameters.workspaceId}/${parameters.branch}/vxml_loop${parameters.suffix}/nomatch`}'`\n }\n }, {\n '$': {\n 'name': 'loopUrl',\n 'expr': `'${parameters.loopUr || `${parameters.hostname}/ProxyScript/run/${parameters.workspaceId}/${parameters.branch}/vxml_loop${parameters.suffix}`}'`\n }\n }, {\n '$': {\n 'name': 'errorUrl',\n // 'expr': `'${parameters.errorUrl || `${parameters.hostname}/ProxyScript/run/${parameters.workspaceId}/${parameters.branch}/vxml_error${parameters.suffix}`}'`\n 'expr': `'${parameters.stopUrl || `${parameters.hostname}/ProxyScript/run/${parameters.workspaceId}/${parameters.branch}/vxml_stop${parameters.suffix}`}'`\n }\n }, {\n '$': {\n 'name': 'lastResortUrl',\n 'expr': `'${parameters.lastResortUrl}'`\n }\n }, {\n '$': {\n 'name': 'stopUrl',\n 'expr': `'${parameters.stopUrl || `${parameters.hostname}/ProxyScript/run/${parameters.workspaceId}/${parameters.branch}/vxml_stop${parameters.suffix}`}'`\n }\n }, {\n '$': {\n 'name': 'maxspeechtimeoutUrl',\n 'expr': `'${parameters.maxspeechtimeoutUrl || `${parameters.hostname}/ProxyScript/run/${parameters.workspaceId}/${parameters.branch}/vxml_loop${parameters.suffix}/maxspeechtimeout`}'`\n }\n });\n parameters.vars.forEach(v => {\n xml.vxml.var.unshift(v);\n });\n xml.vxml.form = xml.vxml.form.map(f => {\n switch (f.$.id) {\n case 'main':\n if (f.property) {\n f.property = f.property.map(p => {\n switch (p.$.name) {\n case 'confidencelevel':\n p.$.value = parameters.confidencelevel;\n break;\n case 'sensitivity':\n p.$.value = parameters.sensitivity;\n break;\n case 'completetimeout':\n p.$.value = parameters.completetimeout;\n break;\n case 'incompletetimeout':\n p.$.value = parameters.incompletetimeout;\n break;\n case 'maxspeechtimeout':\n p.$.value = parameters.maxspeechtimeout;\n break;\n case 'timeout':\n p.$.value = parameters.timeout;\n break;\n case 'com.intervoice.log.privatedata':\n p.$.value = parameters.privatedata;\n break;\n case 'interdigittimeout':\n p.$.value = parameters.dtmf.interdigittimeout;\n break;\n case 'termtimeout':\n p.$.value = parameters.dtmf.termtimeout;\n break;\n }\n return p;\n });\n }\n if (parameters.disconnect) {\n const obj = {};\n if (parameters.promptAudio) {\n obj.prompt = [];\n if (Array.isArray(parameters.promptAudio)) {\n obj.prompt.push(...parameters.promptAudio.map(audio => {\n return {\n $: {\n bargein: parameters.bargein\n },\n audio: [{\n $: {\n src: audio\n }\n }]\n };\n }));\n } else {\n obj.prompt.push({\n $: {\n bargein: parameters.bargein\n },\n audio: [{\n $: {\n src: parameters.promptAudio\n }\n }]\n });\n }\n } else if (parameters.promptText) {\n obj.prompt = {\n _: parameters.promptText,\n $: {\n bargein: parameters.bargein\n }\n };\n } else if (parameters.promptMixed) {\n obj.prompt = parameters.promptMixed.map(prompt => {\n const obj = {\n $: {\n bargein: parameters.bargein\n }\n };\n if (prompt.url) {\n obj.audio = [{\n $: {\n src: prompt.url\n }\n }];\n } else {\n obj._ = prompt.text;\n }\n return obj;\n });\n }\n obj.submit = {\n $: {\n method: 'post',\n expr: 'stopUrl',\n namelist: 'sessionId'\n }\n };\n f.block = (f.block || []).concat(obj);\n }\n if (f.field) {\n f.field = f.field.map(f => {\n switch (f.$.name) {\n case 'intent':\n if (parameters.promptAudio) {\n f.prompt = [];\n if (Array.isArray(parameters.promptAudio)) {\n f.prompt.push(...parameters.promptAudio.map(audio => {\n return {\n $: {\n bargein: parameters.bargein\n },\n audio: [{\n $: {\n src: audio\n }\n }]\n };\n }));\n } else {\n f.prompt.push({\n $: {\n bargein: parameters.bargein\n },\n audio: [{\n $: {\n src: parameters.promptAudio\n }\n }]\n });\n }\n } else if (parameters.promptText) {\n f.prompt = {\n '_': parameters.promptText,\n '$': {\n bargein: parameters.bargein\n }\n };\n } else if (parameters.promptMixed) {\n f.prompt = parameters.promptMixed.map(prompt => {\n const obj = {\n $: {\n bargein: parameters.bargein\n }\n };\n if (prompt.url) {\n obj.audio = [{\n $: {\n src: prompt.url\n }\n }];\n } else {\n obj._ = prompt.text;\n }\n return obj;\n });\n }\n break;\n }\n return f;\n });\n }\n break;\n }\n return f;\n });\n return builder.buildObject(xml);\n},\nstop: options => {\n const parameters = _.merge({\n processingSoundUrl: 'https://ivastudio.ai/media-file/5009635/2af2ba0f-3222-485d-bb60-4ed4f8883545.wav',\n terminationObject: {\n type: 'DISCONNECT'\n }\n }, options);\n parameters.suffix = parameters.suffix && `_${parameters.suffix}` || '';\n const xml = {\n 'vxml': {\n '$': {\n 'version': '2.1',\n 'xmlns': 'http://www.w3.org/2001/vxml',\n 'xmlns:xsi': 'http://www.w3.org/2001/XMLSchema-instance',\n 'xsi:schemaLocation': 'http://www.w3.org/2001/vxml http://www.w3.org/TR/2007/REC-voicexml21-20070619/vxml.xsd'\n },\n 'property': [],\n 'var': [],\n 'form': [{\n 'var': [],\n 'block': []\n }]\n }\n };\n if (parameters.useLoop) {\n xml.vxml.property.push({\n '$': {\n 'name': 'fetchaudio',\n 'value': parameters.processingSoundUrl\n }\n }, {\n '$': {\n 'name': 'fetchaudiodelay',\n 'value': '1s'\n }\n }, {\n '$': {\n 'name': 'fetchaudiominimum',\n 'value': '1s'\n }\n });\n xml.vxml.var.push({\n '$': {\n 'name': 'stopUrl',\n 'expr': `'${parameters.stopUrl || `${parameters.hostname}/ProxyScript/run/${parameters.workspaceId}/${parameters.branch}/vxml_stop${parameters.suffix}`}'`\n }\n }, {\n $: {\n name: 'sessionId',\n expr: `'${parameters.sessionId}'`\n }\n }, {\n $: {\n name: 'looped',\n expr: true\n }\n });\n xml.vxml.form[0].block[0] = {\n submit: {\n $: {\n method: 'post',\n expr: 'stopUrl',\n namelist: 'sessionId looped'\n }\n }\n };\n } else {\n switch (parameters.terminationObject.type) {\n case 'RETURN':\n {\n xml.vxml.form[0].block[0] = {\n 'return': {}\n };\n if (parameters.terminationObject.data) {\n xml.vxml.form[0].var.push({\n $: {\n name: '_aai',\n expr: `'${parameters.terminationObject.data}'`\n }\n });\n xml.vxml.form[0].block[0].return.$ = {\n namelist: '_aai'\n };\n }\n break;\n }\n case 'TRANSFER':\n {\n if (parameters.terminationObject.destination) {\n xml.vxml.form[0].transfer = {\n $: {\n type: 'blind',\n dest: parameters.terminationObject.destination\n }\n };\n xml.vxml.catch = [{\n '$': {\n event: 'connection.disconnect'\n },\n 'return': {}\n }];\n }\n break;\n }\n case 'GOTO':\n xml.vxml.form[0].block[0] = {\n 'submit': {\n $: {\n next: parameters.terminationObject.url,\n namelist: Object.keys(parameters.terminationObject.vars).join(' '),\n method: 'post'\n }\n }\n };\n for (const [key, value] of Object.entries(parameters.terminationObject.vars)) {\n xml.vxml.form[0].var.push({\n $: {\n name: key,\n expr: value\n }\n });\n }\n break;\n default:\n xml.vxml.form[0].block[0] = {\n disconnect: {}\n };\n }\n }\n const builder = new xml2js.Builder();\n return builder.buildObject(xml);\n},\nannounce: options => {\n const builder = new xml2js.Builder();\n const parameters = _.merge({\n dialogName: 'test_dialog',\n languageCode: 'en-US',\n lastResortUrl: 'D:\\\\\\\\Program Files (x86)\\\\\\\\Intervoice\\\\Media Server for VOIP\\\\\\\\APPL\\\\\\\\CSIURLROUTER\\\\\\\\lastresort.vxml',\n voiceName: 'en-US-Wavenet-F',\n prosodyRate: '1.0',\n privatedata: false,\n fetchtimout: \"35s\",\n processingSoundUrl: 'https://ivastudio.ai/media-file/5009635/4b11d97f-3b02-4746-8482-a7375f78a8a2.wav',\n vars: []\n }, options, options?.recognizedData?.ivrSettings);\n const xml = {\n 'vxml': {\n '$': {\n 'version': '2.1',\n 'xmlns': 'http://www.w3.org/2001/vxml',\n 'xmlns:xsi': 'http://www.w3.org/2001/XMLSchema-instance',\n 'xsi:schemaLocation': 'http://www.w3.org/2001/vxml http://www.w3.org/TR/2007/REC-voicexml21-20070619/vxml.xsd'\n },\n 'property': [],\n 'var': [{\n '$': {\n 'name': 'errorCount',\n 'expr': '0'\n }\n }, {\n '$': {\n 'name': 'message'\n }\n }, {\n '$': {\n 'name': 'event'\n }\n }],\n 'script': [\"\\n setProperty(\\\"com.ivb.tts.request_id\\\", session.connection.log.callid)\\n \"],\n 'form': [{\n '$': {\n 'id': 'main'\n },\n 'property': [{\n '$': {\n 'name': 'com.intervoice.log.privatedata'\n }\n }],\n 'block': [{\n '$': {\n 'name': 'announce'\n },\n 'prompt': [{\n '_': parameters.promptText,\n '$': {\n bargein: false\n }\n }]\n }]\n }, {\n '$': {\n 'id': 'exit'\n },\n 'property': [],\n 'block': [{\n 'submit': [{\n '$': {\n 'method': 'post',\n 'fetchtimeout': parameters.fetchtimout,\n 'expr': 'loopUrl',\n 'namelist': 'sessionId'\n }\n }]\n }],\n 'catch': [{\n '$': {\n 'event': 'error.badfetch.timeout'\n },\n 'submit': [{\n '$': {\n 'method': 'post',\n 'expr': 'loopUrl',\n 'namelist': 'sessionId'\n }\n }]\n }]\n }],\n 'catch': [{\n '$': {\n 'event': 'connection.disconnect'\n },\n 'assign': [{\n '$': {\n 'name': 'message',\n 'expr': '_message'\n }\n }, {\n '$': {\n 'name': 'event',\n 'expr': '_event'\n }\n }],\n 'submit': [{\n '$': {\n 'method': 'post',\n 'expr': 'stopUrl',\n 'namelist': 'sessionId message event'\n }\n }]\n }, {\n '$': {\n 'event': 'error'\n },\n 'assign': [{\n '$': {\n 'name': 'errorCount',\n 'expr': 'errorCount + 1'\n }\n }, {\n '$': {\n 'name': 'message',\n 'expr': '_message'\n }\n }, {\n '$': {\n 'name': 'event',\n 'expr': '_event'\n }\n }],\n 'if': [{\n '$': {\n 'cond': 'errorCount > 3'\n },\n 'log': [{\n '_': 'Transfer of last resort: sessionId: ,\\n\\t\\tevent: , message: .',\n '$': {\n 'label': 'error'\n },\n 'value': [{\n '$': {\n 'expr': 'sessionId'\n }\n }, {\n '$': {\n 'expr': '_event'\n }\n }, {\n '$': {\n 'expr': '_message'\n }\n }]\n }],\n 'goto': [{\n '$': {\n 'expr': 'lastResortUrl'\n }\n }]\n }],\n 'submit': [{\n '$': {\n 'method': 'post',\n 'expr': 'errorUrl',\n 'namelist': 'sessionId message event'\n }\n }]\n }]\n }\n };\n parameters.suffix = parameters.suffix && `_${parameters.suffix}` || '';\n xml.vxml.$['xml:lang'] = parameters.languageCode;\n xml.vxml.property.push({\n '$': {\n 'name': 'com.ivb.tts.application_name',\n 'value': parameters.applicationName || `${parameters.workspaceId}_VerintVXML`\n }\n }, {\n '$': {\n 'name': 'com.ivb.tts.dialog_name',\n 'value': parameters.dialogName\n }\n }, {\n '$': {\n 'name': 'com.ivb.tts.Voice-Engine',\n 'value': 'google'\n }\n }, {\n '$': {\n 'name': 'com.ivb.tts.Voice-Name',\n 'value': parameters.voiceName\n }\n }, {\n '$': {\n 'name': 'com.ivb.tts.Prosody-Rate',\n 'value': parameters.prosodyRate\n }\n });\n if (parameters.processingSoundUrl) {\n xml.vxml.property.push({\n '$': {\n 'name': 'fetchaudio',\n 'value': parameters.processingSoundUrl\n }\n }, {\n '$': {\n 'name': 'fetchaudiodelay',\n 'value': '1s'\n }\n }, {\n '$': {\n 'name': 'fetchaudiominimum',\n 'value': '1s'\n }\n });\n }\n xml.vxml.var.unshift({\n '$': {\n 'name': 'sessionId',\n 'expr': `'${parameters.sessionId}'`\n }\n }, {\n '$': {\n 'name': 'recognizerRequestID',\n 'expr': `'${parameters.requestId}'`\n }\n }, {\n '$': {\n 'name': 'loopUrl',\n 'expr': `'${parameters.loopUr || `${parameters.hostname}/ProxyScript/run/${parameters.workspaceId}/${parameters.branch}/vxml_loop${parameters.suffix}`}'`\n }\n }, {\n '$': {\n 'name': 'errorUrl',\n // 'expr': `'${parameters.errorUrl || `${parameters.hostname}/ProxyScript/run/${parameters.workspaceId}/${parameters.branch}/vxml_error${parameters.suffix}`}'`\n 'expr': `'${parameters.stopUrl || `${parameters.hostname}/ProxyScript/run/${parameters.workspaceId}/${parameters.branch}/vxml_stop${parameters.suffix}`}'`\n }\n }, {\n '$': {\n 'name': 'lastResortUrl',\n 'expr': `'${parameters.lastResortUrl}'`\n }\n }, {\n '$': {\n 'name': 'stopUrl',\n 'expr': `'${parameters.stopUrl || `${parameters.hostname}/ProxyScript/run/${parameters.workspaceId}/${parameters.branch}/vxml_stop${parameters.suffix}`}'`\n }\n });\n xml.vxml.form = xml.vxml.form.map(f => {\n switch (f.$.id) {\n case 'main':\n if (f.property) {\n f.property = f.property.map(p => {\n switch (p.$.name) {\n case 'com.intervoice.log.privatedata':\n p.$.value = parameters.privatedata;\n break;\n }\n return p;\n });\n }\n const obj = {};\n if (parameters.disconnect) {\n obj.submit = {\n $: {\n method: 'post',\n expr: 'stopUrl',\n namelist: 'sessionId'\n }\n };\n } else {\n obj.goto = [{\n '$': {\n 'next': '#exit'\n }\n }];\n }\n f.block = (f.block || []).concat(obj);\n break;\n }\n return f;\n });\n return builder.buildObject(xml);\n},\nannounce2: options => {\n const builder = new xml2js.Builder();\n const parameters = _.merge({\n dialogName: 'test_dialog',\n dtmfgrammarUri: 'builtin:dtmf/digits',\n languageCode: 'en-US',\n lastResortUrl: 'D:\\\\\\\\Program Files (x86)\\\\\\\\Intervoice\\\\Media Server for VOIP\\\\\\\\APPL\\\\\\\\CSIURLROUTER\\\\\\\\lastresort.vxml',\n voiceName: 'en-US-Wavenet-F',\n fetchtimeout: \"35s\",\n prosodyRate: '1.0',\n confidencelevel: 0.01,\n sensitivity: 0.5,\n completetimeout: '1s',\n incompletetimeout: '1s',\n maxspeechtimeout: '15s',\n timeout: '1s',\n privatedata: false,\n bargein: false,\n processingSoundUrl: 'https://ivastudio.ai/media-file/5009635/4b11d97f-3b02-4746-8482-a7375f78a8a2.wav',\n dtmf: {\n interdigittimeout: '5s',\n termtimeout: '0s',\n termchar: '#'\n },\n vars: []\n }, options, options?.recognizedData?.ivrSettings);\n parameters.timeout = \"1s\";\n const xml = {\n 'vxml': {\n '$': {\n 'version': '2.1',\n 'xmlns': 'http://www.w3.org/2001/vxml',\n 'xmlns:xsi': 'http://www.w3.org/2001/XMLSchema-instance',\n 'xsi:schemaLocation': 'http://www.w3.org/2001/vxml http://www.w3.org/TR/2007/REC-voicexml21-20070619/vxml.xsd'\n },\n 'property': [],\n 'var': [{\n '$': {\n 'name': 'utterance'\n }\n }, {\n '$': {\n 'name': 'confidence'\n }\n }, {\n '$': {\n 'name': 'inputmode'\n }\n }, {\n '$': {\n 'name': 'interpretation'\n }\n }, {\n '$': {\n 'name': 'errorCount',\n 'expr': '0'\n }\n }, {\n '$': {\n 'name': 'message'\n }\n }, {\n '$': {\n 'name': 'event'\n }\n }],\n 'script': [\"\\n setProperty(\\\"com.ivb.tts.request_id\\\", session.connection.log.callid)\\n \"],\n 'form': [{\n '$': {\n 'id': 'main'\n },\n 'property': [{\n '$': {\n 'name': 'confidencelevel'\n }\n }, {\n '$': {\n 'name': 'sensitivity'\n }\n }, {\n '$': {\n 'name': 'completetimeout'\n }\n }, {\n '$': {\n 'name': 'incompletetimeout'\n }\n }, {\n '$': {\n 'name': 'maxspeechtimeout'\n }\n }, {\n '$': {\n 'name': 'timeout'\n }\n }, {\n '$': {\n 'name': 'recordutterance',\n 'value': 'true'\n }\n }, {\n '$': {\n 'name': 'recordutterancetype',\n 'value': 'audio/x-wav'\n }\n }, {\n '$': {\n 'name': 'com.intervoice.log.privatedata'\n }\n }, {\n '$': {\n 'name': 'interdigittimeout'\n }\n }, {\n '$': {\n 'name': 'termtimeout'\n }\n }],\n 'block': [],\n 'field': [{\n '$': {\n 'name': 'intent'\n },\n 'grammar': [{\n '$': {\n 'srcexpr': 'grammarUri'\n }\n }, {\n '$': {\n 'srcexpr': 'dtmfgrammarUri'\n }\n }],\n 'prompt': [],\n 'filled': [{\n 'goto': [{\n '$': {\n 'next': '#exit'\n }\n }]\n }]\n }]\n }, {\n '$': {\n 'id': 'exit'\n },\n 'property': [],\n 'block': [{\n 'submit': [{\n '$': {\n 'method': 'post',\n 'fetchtimeout': parameters.fetchtimeout,\n 'expr': 'loopUrl',\n 'namelist': 'sessionId'\n }\n }]\n }]\n }],\n 'noinput': [{\n 'goto': [{\n '$': {\n 'next': '#exit'\n }\n }]\n }],\n 'nomatch': [{\n 'goto': [{\n '$': {\n 'next': '#exit'\n }\n }]\n }],\n 'catch': [{\n '$': {\n 'event': 'maxspeechtimeout'\n },\n 'submit': [{\n '$': {\n 'method': 'post',\n 'expr': 'maxspeechtimeoutUrl',\n 'namelist': 'sessionId recognizerRequestID'\n }\n }]\n }, {\n '$': {\n 'event': 'connection.disconnect'\n },\n 'assign': [{\n '$': {\n 'name': 'message',\n 'expr': '_message'\n }\n }, {\n '$': {\n 'name': 'event',\n 'expr': '_event'\n }\n }],\n 'submit': [{\n '$': {\n 'method': 'post',\n 'expr': 'stopUrl',\n 'namelist': 'sessionId message event'\n }\n }]\n }, {\n '$': {\n 'event': 'error'\n },\n 'assign': [{\n '$': {\n 'name': 'errorCount',\n 'expr': 'errorCount + 1'\n }\n }, {\n '$': {\n 'name': 'message',\n 'expr': '_message'\n }\n }, {\n '$': {\n 'name': 'event',\n 'expr': '_event'\n }\n }],\n 'if': [{\n '$': {\n 'cond': 'errorCount > 3'\n },\n 'log': [{\n '_': 'Tranfer of last resort: sessionId: ,\\n\\t\\tevent: , message: .',\n '$': {\n 'label': 'error'\n },\n 'value': [{\n '$': {\n 'expr': 'sessionId'\n }\n }, {\n '$': {\n 'expr': '_event'\n }\n }, {\n '$': {\n 'expr': '_message'\n }\n }]\n }],\n 'goto': [{\n '$': {\n 'expr': 'lastResortUrl'\n }\n }]\n }],\n 'submit': [{\n '$': {\n 'method': 'post',\n 'expr': 'errorUrl',\n 'namelist': 'sessionId message event'\n }\n }]\n }]\n }\n };\n parameters.rmodel = parameters.rmodel || {\n 'languageCode': parameters.languageCode,\n 'maxAlternatives': 1,\n 'model': 'phone_call',\n 'useEnhanced': true,\n 'speechContexts': []\n };\n parameters.suffix = parameters.suffix && `_${parameters.suffix}` || '';\n if (parameters.recognizedData && parameters.recognizedData.expectedPhrases) {\n parameters.rmodel.speechContexts = [{\n phrases: parameters.recognizedData.expectedPhrases\n }];\n }\n xml.vxml.$['xml:lang'] = parameters.languageCode;\n xml.vxml.property.push({\n '$': {\n 'name': 'com.ivb.asr.application_name',\n 'value': parameters.applicationName || `${parameters.workspaceId}_VerintVXML`\n }\n }, {\n '$': {\n 'name': 'com.ivb.asr.dialog_name',\n 'value': parameters.dialogName\n // 'value': parameters?.dialogName ?? (recognizedData?.answers?.join(\";:;\") || \"EMPTY\").substring(0, 100)\n }\n }, {\n '$': {\n 'name': 'com.ivb.asr.request_id',\n 'value': parameters.requestId\n }\n }, {\n '$': {\n 'name': 'com.ivb.tts.application_name',\n 'value': parameters.applicationName || `${parameters.workspaceId}_VerintVXML`\n }\n }, {\n '$': {\n 'name': 'com.ivb.tts.dialog_name',\n 'value': parameters.dialogName\n }\n }, {\n '$': {\n 'name': 'com.ivb.tts.Voice-Engine',\n 'value': 'google'\n }\n }, {\n '$': {\n 'name': 'com.ivb.tts.Voice-Name',\n 'value': parameters.voiceName\n }\n }, {\n '$': {\n 'name': 'com.ivb.tts.Prosody-Rate',\n 'value': parameters.prosodyRate\n }\n });\n if (parameters.processingSoundUrl) {\n xml.vxml.property.push({\n '$': {\n 'name': 'fetchaudio',\n 'value': parameters.processingSoundUrl\n }\n }, {\n '$': {\n 'name': 'fetchaudiodelay',\n 'value': '1s'\n }\n }, {\n '$': {\n 'name': 'fetchaudiominimum',\n 'value': '1s'\n }\n });\n }\n xml.vxml.var.unshift({\n '$': {\n 'name': 'sessionId',\n 'expr': `'${parameters.sessionId}'`\n }\n }, {\n '$': {\n 'name': 'recognizerRequestID',\n 'expr': `'${parameters.requestId}'`\n }\n }, {\n '$': {\n 'name': 'grammarUri',\n 'expr': parameters.grammarUri ? `'${parameters.grammarUri}'` : `'builtin:speech/transcribe?rname=Google;rmodel=${encodeURIComponent(JSON.stringify(parameters.rmodel))}'`\n }\n }, {\n '$': {\n 'name': 'dtmfgrammarUri',\n 'expr': `'${parameters.dtmfgrammarUri}'`\n }\n }, {\n '$': {\n 'name': 'noinputUrl',\n 'expr': `'${parameters.noinputUrl || `${parameters.hostname}/ProxyScript/run/${parameters.workspaceId}/${parameters.branch}/vxml_loop${parameters.suffix}/noinput`}'`\n }\n }, {\n '$': {\n 'name': 'nomatchUrl',\n 'expr': `'${parameters.nomatchUrl || `${parameters.hostname}/ProxyScript/run/${parameters.workspaceId}/${parameters.branch}/vxml_loop${parameters.suffix}/nomatch`}'`\n }\n }, {\n '$': {\n 'name': 'loopUrl',\n 'expr': `'${parameters.loopUr || `${parameters.hostname}/ProxyScript/run/${parameters.workspaceId}/${parameters.branch}/vxml_loop${parameters.suffix}`}'`\n }\n }, {\n '$': {\n 'name': 'errorUrl',\n // 'expr': `'${parameters.errorUrl || `${parameters.hostname}/ProxyScript/run/${parameters.workspaceId}/${parameters.branch}/vxml_error${parameters.suffix}`}'`\n 'expr': `'${parameters.stopUrl || `${parameters.hostname}/ProxyScript/run/${parameters.workspaceId}/${parameters.branch}/vxml_stop${parameters.suffix}`}'`\n }\n }, {\n '$': {\n 'name': 'lastResortUrl',\n 'expr': `'${parameters.lastResortUrl}'`\n }\n }, {\n '$': {\n 'name': 'stopUrl',\n 'expr': `'${parameters.stopUrl || `${parameters.hostname}/ProxyScript/run/${parameters.workspaceId}/${parameters.branch}/vxml_stop${parameters.suffix}`}'`\n }\n }, {\n '$': {\n 'name': 'maxspeechtimeoutUrl',\n 'expr': `'${parameters.maxspeechtimeoutUrl || `${parameters.hostname}/ProxyScript/run/${parameters.workspaceId}/${parameters.branch}/vxml_loop${parameters.suffix}/maxspeechtimeout`}'`\n }\n });\n parameters.vars.forEach(v => {\n xml.vxml.var.unshift(v);\n });\n xml.vxml.form = xml.vxml.form.map(f => {\n switch (f.$.id) {\n case 'main':\n if (f.property) {\n f.property = f.property.map(p => {\n switch (p.$.name) {\n case 'confidencelevel':\n p.$.value = parameters.confidencelevel;\n break;\n case 'sensitivity':\n p.$.value = parameters.sensitivity;\n break;\n case 'completetimeout':\n p.$.value = parameters.completetimeout;\n break;\n case 'incompletetimeout':\n p.$.value = parameters.incompletetimeout;\n break;\n case 'maxspeechtimeout':\n p.$.value = parameters.maxspeechtimeout;\n break;\n case 'timeout':\n p.$.value = parameters.timeout;\n break;\n case 'com.intervoice.log.privatedata':\n p.$.value = parameters.privatedata;\n break;\n case 'interdigittimeout':\n p.$.value = parameters.dtmf.interdigittimeout;\n break;\n case 'termtimeout':\n p.$.value = parameters.dtmf.termtimeout;\n break;\n }\n return p;\n });\n }\n if (parameters.disconnect) {\n const obj = {};\n if (parameters.promptAudio) {\n obj.prompt = [];\n if (Array.isArray(parameters.promptAudio)) {\n obj.prompt.push(...parameters.promptAudio.map(audio => {\n return {\n $: {\n bargein: parameters.bargein\n },\n audio: [{\n $: {\n src: audio\n }\n }]\n };\n }));\n } else {\n obj.prompt.push({\n $: {\n bargein: parameters.bargein\n },\n audio: [{\n $: {\n src: parameters.promptAudio\n }\n }]\n });\n }\n } else if (parameters.promptText) {\n obj.prompt = {\n _: parameters.promptText,\n $: {\n bargein: parameters.bargein\n }\n };\n } else if (parameters.promptMixed) {\n obj.prompt = parameters.promptMixed.map(prompt => {\n const obj = {\n $: {\n bargein: parameters.bargein\n }\n };\n if (prompt.url) {\n obj.audio = [{\n $: {\n src: prompt.url\n }\n }];\n } else {\n obj._ = prompt.text;\n }\n return obj;\n });\n }\n obj.submit = {\n $: {\n method: 'post',\n expr: 'stopUrl',\n namelist: 'sessionId'\n }\n };\n f.block = (f.block || []).concat(obj);\n }\n if (f.field) {\n f.field = f.field.map(f => {\n switch (f.$.name) {\n case 'intent':\n if (parameters.promptAudio) {\n f.prompt = [];\n if (Array.isArray(parameters.promptAudio)) {\n f.prompt.push(...parameters.promptAudio.map(audio => {\n return {\n $: {\n bargein: parameters.bargein\n },\n audio: [{\n $: {\n src: audio\n }\n }]\n };\n }));\n } else {\n f.prompt.push({\n $: {\n bargein: parameters.bargein\n },\n audio: [{\n $: {\n src: parameters.promptAudio\n }\n }]\n });\n }\n } else if (parameters.promptText) {\n f.prompt = {\n '_': parameters.promptText,\n '$': {\n bargein: parameters.bargein\n }\n };\n } else if (parameters.promptMixed) {\n f.prompt = parameters.promptMixed.map(prompt => {\n const obj = {\n $: {\n bargein: parameters.bargein\n }\n };\n if (prompt.url) {\n obj.audio = [{\n $: {\n src: prompt.url\n }\n }];\n } else {\n obj._ = prompt.text;\n }\n return obj;\n });\n }\n break;\n }\n return f;\n });\n }\n break;\n }\n return f;\n });\n return builder.buildObject(xml);\n}\n};","parameters":"","returnsContextObject":false,"organizationId":null,"metadata":{"createdBy":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjRmMWFjODE1NDVmODJiMDVhODgzNDQ3","createdAt":1741788227476,"_vc":{"branch":"current","operation":"create","_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0NDM0YWZiZGY5MzBmNGIzODZk","lts_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjgzODc5NTU4YzllYjA3MzRjODkyMDE4","commitId":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjgzODc5NTVkMDM3ZjMzNGIyZTZiMWI4"},"updatedAt":1748531541999,"updatedBy":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjRiYWMwNTkyNGE5YzU3ODNlZjc0MjRl"}}],"proxyScripts":[{"_id":"4d5df90a-66f1-48b1-9762-7d76c888d153-NjdkMTk0NDM0YWZiZGY5MzBmNGIzODcx","route":"vxml_error_6647ad7b84df93835bbb4346","description":"","content":"console.log(req.body); // <- Post request body\nconsole.log(res.query); // <- Query strings\nconst vxmlResponse = `\n