|
Значок амперсанда & мешает работе Телеграм-бота? Решение в (5) | ☑ | ||
---|---|---|---|---|
0
topa310
15.11.23
✎
15:38
|
Доброго времени суток
Есть бот, написанный на 1С для телеграма. В качестве приветственного окна, если все заполнено правильно, он выдает кнопки: Кнопки1.Добавить(Новый Структура("text,callback_data","Задолженность","dolg")); Кнопки1.Добавить(Новый Структура("text,callback_data","Последнее показание","pokazanie_out_rrg")); Кнопки2.Добавить(Новый Структура("text,callback_data","Контактная информация","contact_info")); Кнопки3.Добавить(Новый Структура("text,callback_data","Передать показание счетчика","pokazanie_in_abonent")); Кнопки4.Добавить(Новый Структура("text,callback_data","Узнать текущий тариф","tarif_abonent")); Кнопки5.Добавить(Новый Структура("text,callback_data","Записаться на прием","talon_abonent")); Если Наличие_EMail=Ложь Тогда Кнопки6.Добавить(Новый Структура("text,callback_data","Передать адрес электронной почты","transfer_email_abonent")); КонецЕсли; Кнопки7.Добавить(Новый Структура("text,url","Оплата", "https://ССЫЛКА/?targetOrg=20032")); Внимание на кнопку7. В данном исполнении при нажатии в телеграмме на кнопку "Оплата" пользователя перекидывает прямо по ссылке на нужный сайт с нужными значениями. Проблема стоит такая: нужна новая ссылка, но чтобы там была заполнена не только организация (Org в ссылке), но и лицевой счет. Как это я планировал сделать: Кнопки7.Добавить(Новый Структура("text,url","Оплата", "https://ССЫЛКА/review?org=20032&acc="+ЛицевойСчет)); И вот значок амперсанта, который идет перед "acc=", после которого заполняется поле лицевого счета на сайте, все ломает. В его присутствии бот отказывается выдавать клавиатуру с кнопками обратно в чат, если же убрать именно его - все становится нормально. Пробовал делать структуру через callbackdata, как в других кнопках, тогда получалось: Кнопки7.Добавить(Новый Структура("text,callback_data","Оплата", "payment_attempt")); А дальше делал проверку, что если пользователь нажал кнопку, под которой payment_attempt, то выполняем соответствующую процедуру, в ходе которой сообщением от бота выдавалась бы нужная ссылка: ЛицевойСчет=Получить_лс_по_id(id); ТекстСообщения="Ссылка на оплату: https://ССЫЛКА/review?org=20032&acc="+ЛицевойСчет; Если ЛицевойСчет<>"" Тогда sendMessage(id, ТекстСообщения); Иначе sendMessage(id, "Не задан лицевой счет"); КонецЕсли; Но бот вместо этого выдает ссылку ровно до символа амперсанда и дальше - ничего. Если поставить амперсанд где-то раньше - ссылка уменьшится, если поставить его в начале переменной "Текст сообщения" - ничего не придет. Устал сражаться с одним символом, прошу помощи у прошаренных. Помимо всего прочего, я делал еще двойной амперсанд (&&), Символ(38) и некоторые другие варианты, которые смог найти в интернете, но ни один из них мою проблему не решил. Возможно, каким-то из них я неправильно воспользовался, так что если у вас есть какие-то идеи, связанные со способами выше, не стесняйтесь их высказать. |
|||
1
Волшебник
15.11.23
✎
15:38
|
А вот здесь условие правильное?
Если Наличие_EMail=Ложь Тогда |
|||
2
topa310
15.11.23
✎
15:44
|
(1) Да. Если электронной почты у этого абонента нет (не привязана к Лицевому счету), то бот в чате показывает кнопку6, по нажатию которой можно привязать электронную почту. Если же почта уже есть, то кнопка не нужна и не добавляется.
|
|||
3
Звездец
15.11.23
✎
15:49
|
если его попробовать заменить аски кодом соответствующим?
|
|||
4
topa310
15.11.23
✎
15:51
|
(3) как это сделать, чтобы 1С его принял в строку? Символ(38), как я уже писал, не срабатывает, есть другой вариант?
|
|||
5
АНДР
15.11.23
✎
15:57
|
20032%26acc
|
|||
6
dmt
15.11.23
✎
15:58
|
||||
7
topa310
15.11.23
✎
16:13
|
(5) гений зашел в тред
спасибо огромное, помогло |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |