В Telegram из 1С: сообщения с эмодзи (смайлы, пиктограммы, иконки) пользователям и группам

Публикация № 889654

Обмен - Обмен с другими системами

Telegram эмодзи эмоджи смайлы иконки пиктограммы обработка

10
Обработка отправляет сообщения с эмоджи (смайлы, иконки, пиктограммы) пользователю или группе в Телеграм. Она также показывает список пользователей и групп, которые связывались с Вашим ботом, из этого списка можно выбрать получателя сообщения.

Обработка представлена как простой пример, публикую ее т.к. сам не сразу нашел ответ на вопрос, как отправить смайлы в Телеграм из 1С. Проверена на платформе 8.3.10.2753 и 8.3.11.3133.

Перед отправкой сообщений нужно заполнить настройки.

Настройки

Токен: API-токен Вашего бота, который Вы получили от @BotFather при создании бота в Телеграм. Если бота у Вас еще нет - заведите его, уйдет полминуты, в результате чего @BotFather Вам сообщит что-то вроде этого:

Use this token to access the HTTP API 123456789:AAbbCC00ddEEffGGhhIgKLmnopQFK3-KLAA

Прокси: любой https или socks5 прокси за пределами юрисдикции РКН. Я использую Tor-браузер: если его запустить, то в системе появится  локальный socks5 прокси, использующий сеть тор. На скрине выше именно тор-прокси используется эской. Это и бесплатно, и быстро, и стабильно. Бесплатный сторонний сервер может работать медленно или стать недоступным, в этом случае настройки прокси для Telegramm придется менять. Сеть же Tor работает отлично, и РКН до нее пока не добрался. Если Ваш прокси https - заполняйте настройку без префикса https://. Если socks5 - заполняйте с префиксом socks5:// как на скрине.

После заполнения полей настроек можно нажать кнопку Проверить, если все в порядке - появятся поля с именем Вашего бота.

Для отправки сообщения нужно, чтобы получатель один раз дал на это свое "согласие". Согласие выражается в том, что пользователь отправит хотя бы одно сообщение Вашему боту или просто найдет его в Телеграмм и нажмет кнопку START. Для отправки сообщения в группу просто подпишите своего бота в эту группу. После того, как пользователи или группы "засвидетельствовали" свое согласие получать сообщения от Вашего бота - нажмите кнопку Показать таблицу получателей. Внизу обработки выведется таблица для выбора получателя сообщения. Выберите двойным щелчком строку таблицы с нужным получателем, напишите текст сообщения, кликните нужные пиктограммы (в текст отправки будут вставляться html-тэги иконок) и жмите Отправить сообщение.

Сохраните где-нибудь ИД получателей - если в течение 24 часов пользователь не отправит Вашему боту ни одного сообщения - то этот пользователь перестанет появляться в таблице получателей. Отправлять ему сообщения Вы по прежнему сможете, для этого ИД нужно будет ввести вручную в поле Получатель. То же самое произойдет с ИД группы, если в группе не будет сообщений в течение 24 часов. Если не записали или потеряли ИД получателей - просто попросите их еще раз отправить сообщение боту, в таблице они снова будут появляться в течение 24 часов.

Технические детали.
Большая часть emoji в Telegram - одиночные символы таблицы юникода, как обычные буквы алфавита. Чтобы отправить такие символы по API в GET-запросе (.../SendMessage?text=...), их нужно предварительно URL-кодировать, как, впрочем, и русские буквы. Например, чтобы отправить русский текст "рука" полюс иконку ладони (это  символ юникода с порядковым номером 9995), надо использовать

КодироватьСтроку("рука" + Символ(9995), СпособКодированияСтроки.КодировкаURL);

Но подобный код не будет работать для юникод-символов с порядковым номером больше 65535, просто потому что 1C с ними не умеет работать. А именно в этом диапазоне большинство смайлов. Есть вариант сразу узнать binhex нужного символа, закодированного в UTF-8. В этом случае нужно между байтами binhex поставить знаки % - и мы получим готовый URL-кодированный символ для параметра GET в Телеграм. Моя обработка работает не с binhex, а с десятичными порядковыми номерами символов в таблице юникода. Обработка сама переводит номер символа за пределами понимания эски (например смайл 128512) в URL - кодированный вид. Иными словами, с символом номер 128512 обработка сделает то же, что делал бы код эски:

КодироватьСтроку(Символ(128512), СпособКодированияСтроки.КодировкаURL);

 если бы эска умела работать с символами юникода за пределами границы 65535.

10

Скачать файлы

Наименование Файл Версия Размер
В Telegram из 1С: сообщения с эмодзи (смайлы, пиктограммы, иконки) пользователям и группам:
.epf 22,94Kb
06.09.18
26
.epf 1.0 22,94Kb 26 Скачать

См. также

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо
1. Dwiss 159 14.05.19 17:27 Сейчас в теме
{ВнешняяОбработка.ОтправитьТелеграмму.МодульОбъекта(10)}: Ошибка при вызове метода контекста (Получить)
ХттпОтвет = ХттпСоединение.Получить(ХттпЗапрос);
по причине:
Ошибка работы с Интернет: Не могу установить соединение

тор установлен, в нем все проходит в 1С нет
{"ok":true,"result":{"id":753458953,"is_bot":true,"first_name":"virtex_bot","username":"vrtks_bot"}}
2. uno-c 42 14.05.19 18:04 Сейчас в теме
Тор-браузер должен быть запущен, и порты он бывает разные открывает 9150 или 9050. Если тор-браузер работает нормально с АПИ телеграмма - можно посмотреть в настройках его прокси, и такие же поставить в обработку. Например Если в браузере в прокси написано 127.0.0.1 порт 9150 и работает - то попробуйте прописать в обработке socks5://127.0.0.1 и порт 9150. Если используете тор-консоль - то она выводит при запуске какой порт слушает.
3. Dwiss 159 14.05.19 18:10 Сейчас в теме
https://habr.com/ru/sandbox/115268/
Пробовал и так и так не проходит из 1С
127.0.0.1 порт 9050
и как у вас на картинке с открытым браузером
4. uno-c 42 14.05.19 18:12 Сейчас в теме
5. Dwiss 159 14.05.19 18:17 Сейчас в теме
6. uno-c 42 14.05.19 18:22 Сейчас в теме
А другой браузер, например Firefox (не Tor), через прокси тора работает? Проверить можно на 2ip.ru, что не Ваш комп светится.
7. Dwiss 159 14.05.19 18:23 Сейчас в теме
8. uno-c 42 14.05.19 18:24 Сейчас в теме
значит недоустановилось в нем что-то. Можно перегрузить комп. Или попробовать консольный тор, только он логин/пароль у меня требовал, любой лишь бы был. Консоль кстати и удобней - совсем маленький exe-шник, я в последнее время им пользовался при отладках всяких интеграций 1С и телеграмма. Единственное - еще рекомендую в настройках запретить exit-node российские. А то получится точка выхода из тора опять под РКНом, и снова никакого телеграмма :)
9. Dwiss 159 14.05.19 18:32 Сейчас в теме
10. uno-c 42 14.05.19 18:37 Сейчас в теме
И консольный не? Настройки с которыми у меня сейчас консольный работает прикрепил в картинке.
Прикрепленные файлы:
11. Dwiss 159 14.05.19 18:49 Сейчас в теме
Может тор не настроен? но в нем все работает
12. Dwiss 159 14.05.19 18:50 Сейчас в теме
13. uno-c 42 14.05.19 18:58 Сейчас в теме
Даже не знаю, что еще предположить, смотреть надо. Попробуйте vpn бесплатный. Я пользую hide.me, на месяц бесплатно 2 гига дают, каждый месяц заходить продлевать надо. Выйти на hide.me чтоб зарегистрироваться надо в обход РКН (через тот же тор-браузер), а сам их VPN пока нормально подключается РКН не блокирует. Только в обработке в модуле объекта уберите везде прокси из HTTPсоединений, если через vpn пойдете. Вместо
ХттпСоединение = Новый HTTPСоединение("api.telegram.org",,,,ИнетПрокси,,Новый ЗащищенноеСоединениеOpenSSL);
нужно без ИнетПрокси
ХттпСоединение = Новый HTTPСоединение("api.telegram.org",,,,,,Новый ЗащищенноеСоединениеOpenSSL);
14. Dwiss 159 14.05.19 19:19 Сейчас в теме
спс. так работает, чего с тором не могу понять
15. uno-c 42 14.05.19 19:32 Сейчас в теме
Кстати tor.exe консольный. Чтобы мы правильно друг друга понимали - я имел в виду Tor Expert Bundle, например с этой страницы https://2019.www.torproject.org/download/download. Он когда запускается - консоль висит, и если например неверное подключение к нему указать - без socks5:// например просто 127.0.0.1 или логин/пароль пустой оставить - он прямо в консоли выводит сообщения, что что-то не так, типа вы пытаетесь подключиться через https прокси, а я только socks5 работаю и тд.
16. Dwiss 159 15.05.19 08:35 Сейчас в теме
именно его и запускаю он показывает и Ip и порт и пытается ломиться но не получается у него
17. uno-c 42 15.05.19 09:12 Сейчас в теме
Да, странно, не сталкивался с подобным. Очень редко тор раньше не пропускал к api.telegram.org, как я понял, это когда точка выхода тора в России оказывалась. Путем настроек в файле torrc этот момент обходил.
DataDirectory ..\Data\Tor
GeoIPFile ..\Data\Tor\geoip
GeoIPv6File ..\Data\Tor\geoip6
ExcludeExitNodes {ru}
и запуск батником
tor.exe -f torrc
Оставьте свое сообщение