Hi Florin,
Another approach that has worked for us in a callback bot is to avoid applying the timezone offset directly to the slot value.
Instead, we convert the current UTC time to the customer’s local timezone (for example Melbourne) so we have the correct local date. For example:
Flow.LocalDateTime = AddHours(GetCurrentDateTimeUtc(), ToInt(Flow.TimeZoneOffset/60))
We then construct the datetime using that local date together with the hour and minute provided by the customer.
This way the customer can simply say something like “6 pm” or “6:15”, and it resolves correctly as local time, regardless of whether the expression was absolute (“at 6”) or relative (“three hours from now”). The final value can then be converted back to UTC if needed.
In our case we capture the minutes as well, so callbacks can be distributed throughout the hour rather than all being scheduled exactly on the hour.
We implemented this in a digital callback bot, but the same approach should work in a voice bot flow as well since Architect stores DateTime values internally in UTC.
Hope this helps.