Очень часто в боте вам может потребоваться узел Javascript, чтобы выполнить какое-либо действие с помощью кода.
Внутри JS по дефолту определены функции из популярных библиотек: moment, crypto, lodash (переменная _). Чтобы вернуть результат надо делать return var, то есть это работает как стандартный ответ JS функции.
В данном кейсе мы рассмотрим, как с помощью JS сохранить введенный телефон клиента и время в привычном нам формате для дальнейшего использования в запросах.
Решение
Преобразование даты ДД.ММ.ГГГГ в формат ГГГГ-ММ-ДД
Исходные данные: клиент вводит любую дату в формате ДД.ММ.ГГГГ (например, 18.08.2021, 17.07.2021 и т.п.). Для запроса к АПИ клиента дату нужно передавать в формате ГГГГ-ММ-ДД. Можно было изначально спросить у клиента дату в нужном формате, но такой формат не будет удобным для клиентов, так как более привычный - ДД.ММ.ГГГГ.
Поэтому в боте мы у клиента даже будем запрашивать в привычном всем виде - ДД.ММ.ГГГГ, затем через узел JS мы будем её преобразовывать и передавать по АПИ уже в нужном формате.
Для этого необходимо:
1. Добавить узел JS
2. Приписать следующий скрипт с сохранением всех знаков:
В переменную мы выбираем переменную, в которую мы сохраняли введенный клиентом текст. Если текст клиент вводил сразу же перед узлом JS, то в переменной мы выбираем переменную с названием сообщение пользователя. Если в любом другом месте, тогда введенную клиентом дату нужно предварительно сохранить в переменную и потом в JS выбрать её.
В ключ мы прописываем значение userDate. Это означает, что в скрипте в userDate будет подставляться значение из переменной, куда мы сохраняли дату клиента.
4. В разделе Хранилище мы выбираем Хранить данные и переменную, куда мы запишем результат JS. Этот результат (эту переменную) мы будем в дальнейшем использовать в запросе к АПИ клиенту.
Преобразование телефона клиента в нужный формат
Несмотря на то, что мы можем изначально запросить клиентов ввести телефон в формате +7ХХХХХХХХХХ, часть клиентов может вводить номер с 8, без +⅞ и т.п. Чтобы преобразовать номер телефона клиента в необходимый нам, после ввода номера можно использовать узел JS.
Чтобы преобразовать телефон, необходимо:
1. Добавить узел JS
2. Прописать скрипт (в скрипте кроме номеров РФ, будем ещё уметь определять номера Беларуси и преобразовывать в +375ХХХХХХХХХ):
let parsed = phoneNum.match(/^\+?(7|8)(\d10)$/) console.log(parsed) if (parsed) return `+7${parsed[2]}`
parsed = phoneNum.match(/^9(\d9)$/) if (parsed) return `+79${parsed[1]}`
return false
3. В разделе Пары переменных добавить пару:
В переменную мы выбираем переменную, в которую мы сохраняли введенный клиентом номер телефона. Если текст клиент вводил сразу же перед узлом JS, то в переменной мы выбираем переменную с названием сообщение пользователя. Если в любом другом месте, тогда введенную клиентом дату нужно предварительно сохранить в переменную и потом в JS выбрать её.
В ключ мы прописываем значение phoneNum. Это означает, что в скрипте в phoneNum будет подставляться значение из переменной, куда мы сохраняли введенный клиентом номер телефона.
4. В разделе Хранилище мы выбираем Хранить данные и переменную, куда мы запишем результат JS. Этот результат (эту переменную) мы будем в дальнейшем использовать в запросе к АПИ клиенту.