Лайфхаки Telegram Bot API

28.10.23

Интеграция - Мессенджеры и боты

Делюсь лайфхаками после трех проектов на Telegram Bot API.

Писать энциклопедическую статью с картинками и кодом, честно говоря, лень. Возможно, буду делиться наработками по мере обсуждения. Получилась статья на минималках, исключительно ради обратной связи от таких же начинающих внедренцев ТГ-бота, как и я.

 

1. Преимущества ТГ Бота (в сравнении с мобильным приложением):

  1. Не надо создавать приложения для нескольких ОС. Не надо тестировать на разных устройствах (на самом деле надо, но это связано с разной геометрией экранов). Не надо размещать релизы на разных площадках. Не надо следить за стандартами Google, Apple, Microsoft.

  2. Мгновенное развертывание для всех пользователей. Не надо придумывать дополнительные механизмы для принудительного обновления.

  3. Широкая совместимость с разнообразными устройствами и ОС.

  4. Уже встроенная поддержка популярных media-функций, типа обмен файлами, фото, видео, голос, геопозиция, онлайн-оплата

  5. Диалоговый интерфейс интуитивно понятный и естественный для большинства неискушенных пользователей, против оконного интерфейса. 

  6. ТГ быстрый и не занимает много места. Например, 1С-приложение весит от 150Мб, т.к. несет в себе компилятор всего фреймворка.

  7. Готовая альтернатива электронной почте.

  8. Можно работать с конфиденциальной информацией. Благодаря авторизации по телефону имеем почти стопроцентную уверенность, что адресат - наш человек.

  9. Можно встраивать свои приложения на JavaScript

 

2. Недостатки:

  1. Telegram Messenger попадает под политику импортозамещения. По слухам в госучреждениях и госкорпорациях формально уже запрещен. Если конечно ТГ вдруг не разместит серверы на территории РФ. Так что работаем здесь и сейчас, не строя особо далеко идущих планов. Хотя есть надежда, что физическую блокировку вообще делать не будут, ограничатся штрафами. Да и включать репрессии начнут разумно, при наличии достойной альтернативы.

  2. Диалоговый интерфейс - это одновременно и минус. Есть ограничения (о них ниже). Не всё можно показать так просто, как в оконном интерфейсе, приходится придумывать нестандартные ходы.

  3. ТГ любит постоянный Интернет, а мобильное приложение некоторое время может поработать в оффлайне. Но тут зависит от того, какие требования по оперативности предъявляет конкретный бизнес. Никто не мешает пользователю лазить под землей, что-то там писать и фоткать. А при первом выходе на поверхность отложенные сообщения улетят на сервер автоматом.

  4. В отличие от электронной почты ТГ Бот довольно строго соблюдает правила проникновения в частную жизнь. Бот не может делать рассылки незнакомым пользователям, даже если известен их id. Знакомство происходит по инициативе  пользователя - он хотя бы раз должен отправить сообщение в чат-бот. Этого ограничения нет в API клиента, там ты выступаешь от лица пользователя, хотя можно отхватить бан за подозрение в спаме. В среде 1С был один энтузиаст 5 лет назад (Telegram Native API), который упаковал TDLib во внешнюю компоненту 1С, но его никто не поддержал, и он соскочил с темы. Ведь компоненту надо регулярно пересобирать под новые релизы ТГ, чтобы она оставалась жизнеспособной.

 

3. Что интересного удалось раскопать:

  1. ТГ по сути является файловым хранилищем - один раз принятый или отправленный файл не обязательно хранить у себя, достаточно запомнить его id и дальше на него ссылаться. ТГ хранит файлы почти без ограничений по времени и объему.

  2. Отображать файлы лучше всего компактными пачками максимум по 10 штук (sendMediaGroup) - это выглядит стильно!

  3. Работа с ТГ-сервером методом long polling имеет ряд преимуществ перед web hook. С точки зрения безопасности: не надо открывать свой сервер всему миру. С точки зрения быстродействия: висящий в режиме ожидания http-запрос к ТГ-серверу сработает быстрее, чем запуск http-сервиса в 1С-базе по внешнему обращению. Кто-то спросит, а как же асинхронная обработка? Отвечу - а кто мешает обрабатывать каждое сообщение в отдельном ФЗ. И еще спрошу: а когда пользователь отправляет одновременно пачку фоток, как вы их объединяете в одно сообщение, когда они приходят разными запросами в случае с web hook? (PS. Реакция зрачка евангелистов вебхуков показала их категорическое несогласие с моими доводами (см обсуждение). Ну что ж, хорошо когда есть выбор!)

  4. ТГ бот помимо обычных кнопок (ReplyKeyboard), которые прикрепляются внизу экрана и не проматываются, может обрабатывать нажатие inline-кнопок, которые прикрепляются непосредственно к сообщению. При этом можно перерисовывать сообщение, из которого пришло нажатие - внешне это выглядит достаточно гладко, чтобы создалось впечатление открытия нового окна на том же месте.

  5. Но у inline-кнопки есть недостаток - ограниченное место для текста: в лучшем случае не более ширины экрана. Это если размещать кнопки в один ряд. И нельзя переносить текст на следующую строку. Например, для каталога товаров это не подходит, часть описания будет обрезана. Но есть выход: размещать список в обычном тексте, а для открытия карточки товара в качестве ссылки использовать конструкцию типа /U1234 или даже просто числа /123123. ТГ-клиент обрабатывает тап на команду в тексте так, как если бы пользователь сам набрал ее с клавиатуры и отправил. Дальше нужно просто обработать текст полученного сообщения как уникальный идентификатор и вернуть карточку справочника или документа. Такой метод также можно рекомендовать для выдачи списка команд, если он должен подстраиваться под быстро меняющиеся обстоятельства, взамен стандартного меню.

  6. Тап на команду в тексте смещает фокус экрана в самый низ - что, как по мне, тоже преимущество перед inline-кнопкой. Конечно же только в случае, если нажатие inline-кнопки должно вызывать новое сообщение, а не перерисовку существующего. Ведь пользователю никто не мешает прокрутиться далеко вверх, найти там старое сообщение с кнопками, и начать их тыкать. Вы ему в ответ шлете сообщения вниз, но он их не видит, разве что неприметное оконце с количеством новых сообщений.

  7. Запрашивать у пользователя ввод текста или файлов можно через команду принудительной цитаты (ForceReply), полученный результат будет содержать ссылку на цитируемое сообщение. Но это смотрится громоздко. Более естественно выглядит сопоставление входящего текста с последним отправленным сообщением. Но для этого надо сохранять в БД историю всех исходящих сообщений. Бот не может повторно прочитать содержимое экрана, он обрабатывает только входящие события. Поэтому интерпретация полученного сообщения отдана на откуп программисту, сам ТГ-бот никаких методов на этот счет не предлагает.

  8. В одном проекте была задача распознавать голосовые сообщения в текст. Как-то глупо было требовать от сантехника натыкивать “когтистой лапой” отчет о проделанной работе. Я не стал дожидаться выхода стабильной версии платформы 1С 8.3.23, где это уже есть. И не стал тратить время на обучение пользователей Android, как установить себе что-то типа Яндекс-клавиатуры. Сантехников с iPhone, где эта функция уже штатная, я не смог нарисовать в своем воображении. Поэтому воспользовался платным сервисом SaluteSpeech от Сбербанка. Не сочтите за рекламу, но объективно у них хорошая среда для разработчика, куча примеров на Postman, достаточно большой лимит бесплатного времени для тестирования распознавания, и само распознавание идет неплохо, даже пунктуацию расставляет.

  9. В одном проекте заметили, что система время от времени перестает отвечать, как будто пропускает команды. Выяснилось, что сам провайдер по неведомой причине режет 5% запросов к https://api.telegram.org/. Причем ошибка прилетает стабильно на 22 секунде http-запроса по таймауту. Команда pathping сразу показала, на каком узле это происходит. Но для убедительности сделали тестовый стенд на 1С, отправляющий каждые 0,1 сек запросы, и уже готовы были сделать его аналог на Postman. Как вдруг ошибка из тестового стенда ушла, хотя pathping показывал те же 5% потерь. Думаю, провайдер тянул время, пока разбирался. Бывает.

  10. Когда пользователей много, остро встает вопрос обучения. Начитавшись статей про UX/UI, понял только что интерфейс должен быть интуитивно понятным, и что никто не читает мануалы и не смотрит обучающие видео. Даже простейшая инфографика откладывается напотом, и когда надо не находится. Ну и прежний опыт доказал, что всё это баловство руководству лишь для галочки. Знающие люди посоветовали подпушивание - периодически слать пользователю ободряющие сообщения в зависимости от того, где он застрял. Например, пользователь самостоятельно нашел в поиске ваш бот и даже догадался нажать кнопку Запустить. Система выдала ему предложение отправить свой телефон для авторизации. Прошло пять минут бездействия - отправляем ему что-то типа “Спасибо что зашли! Теперь система должна Вас узнать, для этого нажмите кнопку “Отправить свой номер телефона” и подтвердите кнопкой “Поделиться”. Можно даже скриншот приложить для убедительности. Такие контекстные подсказки смотрятся как диалог с живым человеком, будто кто-то следит за твоими действиями и помогает советом по существу. Поверьте, это то единственное, что пользователь прочтёт и вникнет. Проверено - работает!

  11. Для выбора значений из списка неограниченной длины можно использовать механизм inline-запросов. Я подсмотрел это у ВкусВилла: @VkusVillBot. В нём, если нажать кнопку “Искать по названию” (Главное меню - Каталог), в строке пользовательского сообщения появляется команда “@VkusVillBot Товар: “ и выпадает список с картинками и названиями товаров. В строке сообщения можно дописывать уточняющие слова для сужения круга поиска. При выборе позиции появляется сначала сообщение с названием товара как бы от вашего имени с заголовком “через @VkusVillBot”. А затем бот высылает карточку товара с кнопками. Я начал активно использовать inline-запросы в своих проектах, и выяснил, что список может содержать не только картинки, но и обычный текст. И что самое замечательное, такой список может поддерживать пагинацию - выдавать страницы по 50 позиций, а при пролистывании ближе к концу последней страницы подгружать следующую. Единственное ограничение: клиентские приложения в зависимости от геометрии устройства сами решают сколько символов выводить в каждой позиции списка, так что текст позиции должен быть максимально сжатым и информативным. И тем не менее такой механизм существенно расширяет спектр решаемых задач в ТГ боте. Например, можно заполнять поля нового документа (см скриншоты).

Лайфхаки Telegram Bot API

См. также

Мессенджеры и боты Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Интеграция мессенджера WhatsApp и 1С: УНФ, УТ, КА, ERP - отправка и получение сообщений, картинок, файлов и видео прямо в 1С. Расширение работает с сервисом GreenApi.

15600 руб.

23.06.2023    9483    58    12    

34

Мобильная разработка Мессенджеры и боты Платформа 1С v8.3 1С:Конвертация данных Платные (руб)

Теперь создать telegram-бота - элементарно. Достаточно просто нарисовать блок-схему телеграм-бота, и он сразу заработает. Это возможно при использовании Графического конструктора телеграм-ботов. Это единственный конструктор ботов для telegram, чье качество и функционал подтверждены фирмой 1С, есть сертификат 1С:Совместимо. Расширение в интерактивном режиме, с помощью блок-схем, позволяет с минимальными трудозатратами создать телеграм-ботов в любой конфигурации, работающей на платформе «1С:Предприятие 8.3».

13200 руб.

27.12.2021    38198    108    161    

201

SALE! 25%

Мессенджеры и боты Системный администратор Программист Бизнес-аналитик Пользователь Руководитель проекта Платформа 1С v8.3 Платные (руб)

Развитие популярного решения для интеграции мессенджера Telegram с нашей любимой 1С - конструктор чат-ботов в Телеграм.

15000 11250 руб.

18.06.2021    65564    312    272    

369

Документооборот и делопроизводство (СЭД) Мессенджеры и боты Учет документов Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия государственного учреждения 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 Платные (руб)

Расширение для согласования справочников и документов в основных типовых конфигурациях. Ролевая адресация, условная маршрутизация, чат-бот telegram, интеграция с n8n, последовательное и параллельное согласование, уведомление о новых задачах на почту, блокировка объектов в зависимости от статуса, запрет проведения в зависимости от статуса, автозапуск процессов согласования, отчеты по исполнительской дисциплине. Не требуется снятие конфигурации с поддержки. Настройка без программирования. Версия для 1cfresh.com. Сертификат 1С-Совместимо.

14900 руб.

15.11.2018    30270    35    49    

71

Мессенджеры и боты Пользователь Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 1С:Управление торговлей 11 Управленческий учет Платные (руб)

Данное расширение представляет собой интерфейс взаимодействия 1С с сервисом Wazzup. Данный сервис позволяет вести беседу с использованием номера телефона, привязанного к Whatsapp. Почитать о сервисе и его условиях использования можно по ссылке https://wazzup24.com/. На данный момент расширение поддерживает почти все доступные через API функции. Обновление от 19.05.2023, версия 2.1!

14400 руб.

30.11.2020    13594    8    13    

15

Мессенджеры и боты SMS рассылки Платформа 1С v8.3 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

Решение реализовано в виде расширения. Заменяет отправку смс на отправку в WhatsApp через Green-api. Отправка чека картинкой.

7800 руб.

15.05.2024    1544    3    6    

6
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. ixijixi 1913 20.07.23 11:27 Сейчас в теме
Подскажите начинающему в Telegram Bot API.

Стоит задача выполнить через телегу рассылку неких печатных форм (pdf, xls и т.п.) по списку получателей.
Как это лучше реализовать? Рассылать напрямую, имея ChatID, или попросить получателей подключиться к боту и рассылать через бота?
3. barelpro 1430 20.07.23 14:42 Сейчас в теме
(1) Тут возможны варианты:
1. Как вы написали: Попросить получателей подключиться к боту и рассылать через бота. В этом случае у каждого пользователя будет персональный чат с ботом, где ChatId совпадает с id пользователя.
2. Ручками собрать определенных пользователей в определенные группы, подсоединить в группы бота. Тут ChatId будет уже вся группа, и не важно кто там сидит, все увидят его сообщения.
3. невозможно рассылать по списку получателей, если эти получатели не состоят ни в персональном чате с ботом, ни в группе с ботом. Это можно делать с помощью Client API, но нам пока такая технология не доступна (я упоминал умельца 5 лет назад, который соскочил)
9. ixijixi 1913 20.07.23 16:15 Сейчас в теме
(3) Спасибо, значит напрямую не получится, надо через бота. Через группу не вариант, т.к. рассылка персонализированная.
2. maksa2005 550 20.07.23 12:25 Сейчас в теме
Вы колбасу с машиной сравниваете, где колбасу можно продавать и есть, а на машине не только можно ездить, а создать свою. Говорю т.к. есть опыт в ТГ ботах + 3 коммерческих приложения на 1С (с использование ccs/html5,js и 1С)
4. barelpro 1430 20.07.23 14:45 Сейчас в теме
(2) Не понял вас, это аргумент за что или против чего?
5. maksa2005 550 20.07.23 14:51 Сейчас в теме
(4)Это за то что несопоставимые вещи вы сравниваете, а именно ТГ и Мобильную версию
У Вас опыт есть в мобильной разработке?
6. barelpro 1430 20.07.23 15:07 Сейчас в теме
(5) Милейший, давайте рассуждать логически?
Я написал про преимущества ТГ бота над Мобилным приложением. Но я не написал про преимущества мобильного приложения над ТГ ботом, потому что это была бы другая статья. И да, они есть, не спорю.
Насчет моего опыта в мобильных приложениях- найдите в моем профиле статью девятилетней давности. Мой совет - в форумах ИС делайте это всегда, перед тем как задвать такие вопросы.
7. maksa2005 550 20.07.23 15:09 Сейчас в теме
8. Константин С. 675 20.07.23 16:14 Сейчас в теме
По слухам в госучреждениях и госкорпорациях формально уже запрещен

будем пользовать ТамТам :)))
sapervodichka; +1 Ответить
10. sapervodichka 6912 21.07.23 19:07 Сейчас в теме
(8) My Dum-Dum want to speak )))
Прикрепленные файлы:
11. gofrom 22.07.23 16:26 Сейчас в теме
Почитал статью, есть обратная связь, вы же хотели?!

long poolling никаких преимуществ перед webhook-ом не имееет и вообще это костыль!
Вы путаете понятия асинхронная обработка и параллельная обработка.
При отправке пользователем медиа группы, в структуре Message есть свойство media_group_id оно и объединяет разный медиа контент в одну группу.
Откройте для себя inline запросы, идеальный вариант для отображения справочников.
Исправляете одно сообщение, пользователю будет удобно и красиво в ленте.
bayselonarrend; barelpro; +2 Ответить
12. barelpro 1430 23.07.23 00:02 Сейчас в теме
(11) Отличная обратная связь, есть о чем подискутировать!

Начнем с первого утверждения (про остальное напишу в следующих сообщениях):

(11)
long poolling никаких преимуществ перед webhook-ом не имееет и вообще это костыль!
Вы путаете понятия асинхронная обработка и параллельная обработка.


На всякий случай объясню, как работает режим long polling, для тех кто не в теме:
На 1с-сервере постоянно висит одно фоновое задание (ФЗ), которое слушает ТГ-сервер, Слушает - значит висит на таймауте http-запроса (я задал таймаут 120 секунд), Если сообщений не было, таймаут истекает и тут же идет следующий (есть что-то общее с протоколом WebSocket, не правда ли?). Если приходят апдейты (сообщения) - для их обработки тут же запускаются фоновые задания, по одному на каждое сообщение. После чего первое ФЗ возвращается к прослушке, не дожидаясь завершения обработки полученных сообщений (если это не асинхронная обработка, тогда что?). Согласен, в первом ФЗ мы имеем бутылочное горлышко, в виде последовательной обработки входящих сообщений. Тут вебхуку можно сразу присудить победу. И видимо многие так и делают, не принимая во внимание некоторые нюансы. А нюансы в том, что время открытия сессии http-сервиса 1С сильно дорогое! Вот коллега в своей статье https://infostart.ru/1c/articles/1537538/ не поленился и посчитал - более 1 секунды. Да, конечно, 1С придумали режим ibsession, при котором сессия не закрывается, и к ней можно обратиться еще несколько раз, пока не закончиться её время жизни, используя куки первой сессии, а повторные обращения конечно быстрее в разы. Но почему-то меня терзают смутные сомнения, что Telegram ничего не знает про ibsession...

А теперь представим гипотетическую ситуацию: в моменте с ТГ-сервера прилетает 1000 апдейтов.
В случае с web-hook запускается 1000 сеансов http- сервиса.
В случае с long-polling из одного ФЗ запускается 1000 ФЗ.
Внимание вопрос, что быстрее? Поскольку у меня других сведений нет (предположения не в счет), считаем время запуска сеанса http-сервиса равным времени запуска ФЗ из-под ФЗ. Опять же если верна гипотеза, что ТГ не умеет пользоваться 1С-методами кеширования сеанса http-сервиса.
Так что вынужден согласиться, насчет преимущества по производительности погорячился - скорее всего одинаково, ну бывает )).
Но по безопасности все же long polling предпочтительней.
Да и в момент распараллеливания полученного набора сообщений есть возможность дополнительно проанализировать, нет ли среди них связанных сообщений от одного пользователя. У меня есть сценарий, в котором я реагирую на полученное фото ответным сообщением, дескать все нормально, получили, Но когда пользователь присылает сразу пачку фото, ТГ раскладывает их по разным сообщениям, и если не связывать их в одно действие, будет отправляться ответное сообщение на каждое фото, что выглядит как глюк системы. Так что это тоже в плюс long polling.

В догонку вопрос знатокам web hook - а как поведет себя ТГ, если 1С-база зависла и http-соединение временно не доступно? Если попытки на этом закончатся, то это еще один минус в сравнении с long polling. Там мы сообщения не пропустим.
JohnyDeath; +1 Ответить
15. gofrom 23.07.23 18:24 Сейчас в теме
(12)
Если сообщений не было, таймаут истекает и тут же идет следующий (есть что-то общее с протоколом WebSocket, не правда ли?)


WebSocket появилась как технология чтобы устранить костыль long polling, а сейчас есть еще и стримы.

(12)
После чего первое ФЗ возвращается к прослушке, не дожидаясь завершения обработки полученных сообщений (если это не асинхронная обработка, тогда что?)


Параллельная обработка)
Ваш код работает синхронно, ваш код в фоновых заданиях работает синхронно! Асинхронная предполагает обработку в одном потоке, велкам гуглить как работает JavaScript, asyncio в питоне.

(12)
А нюансы в том, что время открытия сессии http-сервиса 1С сильно дорогое! Вот коллега в своей статье https://infostart.ru/1c/articles/1537538/ не поленился и посчитал - более 1 секунды. Да, конечно, 1С придумали режим ibsession, при котором сессия не закрывается, и к ней можно обратиться еще несколько раз, пока не закончиться её время жизни, используя куки первой сессии, а повторные обращения конечно быстрее в разы. Но почему-то меня терзают смутные сомнения, что Telegram ничего не знает про ibsession...


http сеансы все переиспользуются, в чем смысл ручного управления сеансами если его может прибить сервер, непонятно, очередная не продуманная фича 1С.

(12)
В догонку вопрос знатокам web hook - а как поведет себя ТГ, если 1С-база зависла и http-соединение временно не доступно? Если попытки на этом закончатся, то это еще один минус в сравнении с long polling. Там мы сообщения не пропустим.


Телега будет повторять пока не получит код 200 или не пройдет 24 часа.
13. barelpro 1430 23.07.23 00:21 Сейчас в теме
(11)
При отправке пользователем медиа группы, в структуре Message есть свойство media_group_id оно и объединяет разный медиа контент в одну группу.


Я по нему и объединяю разные сообщения в одно. А как в web-hook такие сообщения приходят разными запросами или одним? Если разными, то как вы сделаете, чтобы отреагировать на одно media_group_id одним ответом?
16. gofrom 23.07.23 18:37 Сейчас в теме
(13)
Я по нему и объединяю разные сообщения в одно. А как в web-hook такие сообщения приходят разными запросами или одним? Если разными, то как вы сделаете, чтобы отреагировать на одно media_group_id одним ответом?


Разными, а зачем реагировать на все, если вы понимаете что к вам прилетела медиа группа?
Первое является основным, caption первого сообщения выводится как caption всей медиа группы.
14. barelpro 1430 23.07.23 00:48 Сейчас в теме
(11)
Откройте для себя inline запросы, идеальный вариант для отображения справочников.
Исправляете одно сообщение, пользователю будет удобно и красиво в ленте.


Да, наверное для показа каталога, при условии что мы имеем продвинутого пользователя, который сможет самостоятельно написать конструкцию @имябота и поисковые фразы, инлайн режим вполне подходит. Но я говорил про список команд с длинным текстом, которые не влезают в inline-кнопки. Эту задачу как решить inline режимом? По-моему мой вариант вполне рабочий. Можно например делать динамические меню с меняющимся текстом в зависимости от условий в моменте (см картинку в закрепе).
Прикрепленные файлы:
17. gofrom 23.07.23 19:52 Сейчас в теме
(14) Ох, представляю каких Франкенштейнов вы делаете, не зная всех возможностей телеги)

Меню обновляется не так быстро как обновляются сообщения, видимо другая очередь для методов типа setMyCommands. Меню вообщем-то и не должно часто меняться, так задумали разботчики телеги судя по параметру scope.

(14)
который сможет самостоятельно написать конструкцию @имябота

Не нужно ничего писать, можно добавить кнопку которая откроет inline запрос, в InlineKeyboardButton указывается свойство switch_inline_query_current_chat и значение поисковой фразы или фрагмента.
18. barelpro 1430 23.07.23 23:08 Сейчас в теме
(17)
Меню обновляется не так быстро как обновляются сообщения, видимо другая очередь для методов типа setMyCommands. Меню вообщем-то и не должно часто меняться, так задумали разботчики телеги судя по параметру scope.


В который раз убеждаюсь, что коменты под статьей убивают кучу времени на объяснение казалось бы простых идей. Ладно, это я так, о своем... Короче, setMyCommands задает меню общее для всех пользователей бота, а мне нужно индивидуальное для каждого. Обратите внимание на цыферки на картинке - это текущее количество документов у конкретного персонажа в каждом журнале.

Насчет холивара long-polling vs web-hook считаю ничья! Если не т особых требований заказчика, то это вопрос вкуса. Вообще, окончательную точку может поставить служба безопасности компании. Мне в одном проекте сразу сказали "никаких открытых портов наружу", так что тут без вариантов.

Но все равно, спасибо за советы! Будет соответствующий проект, буду пробовать switch_inline_query_current_chat
19. gofrom 24.07.23 00:42 Сейчас в теме
(18)
Короче, setMyCommands задает меню общее для всех пользователей бота, а мне нужно индивидуальное для каждого.


Можно индивидуально.

(18)
Мне в одном проекте сразу сказали "никаких открытых портов наружу", так что тут без вариантов.


Можно и без портов наружу)

(18)
Обратите внимание на цыферки на картинке - это текущее количество документов у конкретного персонажа в каждом журнале.


Всё я понял, что это просто сообщение. Можно так сделать и через штатное меню.
21. barelpro 1430 24.07.23 13:56 Сейчас в теме
(19)
Можно индивидуально.


Согласен, можно с помощью setChatMenuButton
Но мне то надо еще отражать текущее количество документов, которое может меняться каждую секунду. Не буду же я постоянно дергать эту команду по каждому изменению. Для большого количества пользователей это не enterprise solution.
Или есть другое решение?
22. gofrom 24.07.23 15:08 Сейчас в теме
(21)
Согласен, можно с помощью setChatMenuButton


Опять мимо, setChatMenuButton устанавливает тип кнопки Меню, она может быть WebApp, а может быть команды.
Устанавливает список команд только setMyCommands, рулить кому устанавливать в параметре scope.

Вообще да, команды не для частого изменения, но в WebApp делайте что хотите)
Некоторые умельцы сайты открывают.

(21)
Или есть другое решение?


Можно много чего придумать, но 1С не очень подходит для разработки сложных ботов, но интегрировать с 1С можно очень удачно)
barelpro; +1 Ответить
20. mip128 24.07.23 11:53 Сейчас в теме
Поэтому воспользовался платным сервисом SaluteSpeech от Сбербанка

Тоже остановился на SaluteSpeech
23. wrooom 226 24.07.23 18:05 Сейчас в теме
7. ... Более естественно выглядит сопоставление входящего текста с последним отправленным сообщением.

- Можете подробнее разжевать?
24. barelpro 1430 24.07.23 19:42 Сейчас в теме
(23)
Очень упрощенно, как я решил:
Каждое отправленное сообщение записываю в регистр "история отправленных сообщений", где сообщение связано с контекстным объектом БД.
Когда приходит входящее сообщение, нахожу последнее отправленное сообщение в этот чат, и получаю контекстный объект БД.

У меня, например, в одном проекте (Исполнение заявок АДС ЖКХ) надо было привязать к конкретной заявке фото, текст и голос. В другом проекте (Согласование заявок на расход ДС) при отклонении заявки написать причину отклонения....
В общем есть последнее отправленное ботом сообщение, олицетворяющее объект БД, например заявку, под которым все принятые сообщения должны быть обработаны в контексте этого объекта. По результату обработки отправляем сообщение типа "все ок, ваше фото прикреплено к документу такому-то. Можете прикрепить еще одно фото" и все повторяется.
Оставьте свое сообщение