Имя: Пароль:
1C
1С v8
Вызов клиента с сервера
0 Hasty
 
07.07.20
11:00
Приветствую коллеги!
Прошу наставить новичка на путь истинный.
Пишу расширение для работы с телефонией.
АТС создает вебхук на событие и я его отлавливаю http-сервисом, все в порядке, все работает.
Но требуется при срабатывании события на сервере отправить сообщение пользователю.
Я понимаю, что нельзя вызвать клиентские функции из сервера, поэтому решил эту задачу так:
При срабатывании события создаю запись в регистр сведений, каждая запись в измерениях содержит ссылку на пользователя, для которого оно создано. Так же в записи содержится измерение "Просмотрено" тип булево.
А каждый клиент раз в 2 секунды проверяет регистр сведений и если находит запись с условием "Просмотрено" = Ложь, отображает сообщение методом ПоказатьОповещениеПользователя(), и меняет флаг.
Это все работает.
Но! На сколько все это правильно? Каждый клиент каждые 2 секунды выполняет запрос.
Может есть более элегантный способ решения?
Заранее спасибо!
1 asady
 
07.07.20
11:03
(0) или ВК или юзать сервер взаимодействия
дергать каждые 2 сек из всех клиентов сервер - имхо жестоко.
2 Hasty
 
07.07.20
12:16
(1) Вот и мне не нравиться, чувствую что можно сделать лучше.
Сервер взаимодействия погуглю, но очень хочется остаться в рамках платформы, без дополнительного софта
3 Fedor-1971
 
07.07.20
12:36
(2) не оставляй записи в РС, удаляй их после Сообщить пользователю - регистр будет небольшим и отработка обращения быстрой.

Если надо хранить данные телефонии используй второй регистр, чисто для хранения с доп.полями для удобного поиска и фильтрации информации

Как варианты:
  1. если основа АТС Asterisk (или подобная) - они могут писать события в БД MySQL, вот и прилепи её как внешний источник данных, если не нужно быстрой реакции пользователя (т.е. принять звонок или выдать пользователю данные кто звонит), то достаточно формы с таблицей звонков
  2. пробуй ловить свои события клиентом (тот же гемор, только в профиль) все пользователи ломанутся получать данные с сервера телефонии, но это менее напряжно чем обрабатывать события на сервере 1С и потом думать как что-то рассказать пользователю
4 dmpl
 
07.07.20
12:38
(2) Сервер взаимодействия - это минимум 300к в год плюсом к стоимости владения.
5 Fedor-1971
 
07.07.20
12:48
3+ Посмотри в сторону Web-сервиса 1С: телефония просто дёргает 1С по своим событиям, но проблема информирования пользователя останется
6 Hasty
 
07.07.20
13:02
(3) Телефония Zebratelecom, ограничен выданным API.
Могу только слать GET(PUT) запросы на получение-изменения настроек, и получать вебхуки по событиям (Создан звонок,  ответ, закончен).
Можно конечно оповещения сваливать в какую-нибудь mysql и на php (или на python, или еще на чем угодно) отдавать данные по GET запросам клиента, это конечно разгрузить сервер 1с, но какое то половинчатое решение
7 Fedor-1971
 
07.07.20
13:06
(6) тогда надо смотреть в сторону ВК и ОбработкаВнешнегоСобытия
8 fisher
 
07.07.20
13:07
(4) Помню меня тыкали в существование возможности приобрести сервер взаимодействий отдельно, без покупки КОРП-лицензий.
9 fisher
 
07.07.20
13:10
Но все равно зла не хватает. ИМХО покупать сервер взаимодействий для закрытия сабжевой потребности - это из пушки по воробьям. Ничего не мешало ведь реализовать более легкое решение. Куча их в виде ВК существует. Но нет. Им КОРП продвигать надо.
10 craxx
 
07.07.20
13:11
(9) совсем изврат конечно, но апач+ поле HTML документа на форме.
11 craxx
 
07.07.20
13:12
+(10) а там уже средствами AJAX всякие подписки и т.п.
12 fisher
 
07.07.20
13:14
(10) Изврат - это пол-беды. А вот доп-требования в виде постоянно открытой формы - это уже гораздо хуже.
13 craxx
 
07.07.20
13:19
(12) ну это решается формой в режиме рабочего стола, где вся эта радость присутствовать
14 fisher
 
07.07.20
13:56
(13) Да ради бога. Но лично я бы, если бы прижало с онлайн-режимом (типа телефонии), использовал бы ВК с банальным TCP-сервером.
15 dmpl
 
07.07.20
14:39
(9) У меня вопрос - зачем весь этот фронт-энд делать на 1С? Ну не 1С-ная это тема.
16 fisher
 
07.07.20
16:10
(15) Расклады разные бывают. Бывает, во всем остальном тема полностью 1С-ная и заводить ради нескольких калек с немудреными потребностями отдельную систему в существующий зоопарк с последующей поддержкой и дополнительными интеграциями - тоже так себе вариант.
17 Hasty
 
07.07.20
16:31
(15) Почему же не 1с-ная, с каждым новым релизом платформы, интерфейс становиться более интерактивный.
Да и на текущей версии есть все механизмы для реализации мной задуманного функционала, кроме вот этих сообщений
18 lodger
 
07.07.20
17:19
(3) "не оставляй записи в РС, удаляй их после Сообщить пользователю - регистр будет небольшим и отработка обращения быстрой."
ну такое себе. удаление записи самая дорогая операция в работе с РС. да и запись флагов, как в (0) тоже плохо.
если уж колхозить с РС, то просто маркер времени вешать в РС при записи. а при чтении выбирать записи не старше 5 секунд. ессно, РС становится периодическим, где период это и есть маркер времени вход.звонка.
19 dmpl
 
07.07.20
18:09
(16) Ну если несколько калек - так и нехай дергают сервер, от него не убудет.
20 craxx
 
07.07.20
18:26
(15) фронтенд в 1С это хорошая тема - стильно, модно и интерактивно. И хорошо продается заказчикам.
21 lodger
 
07.07.20
18:28
(9) сервер взаимодействия продается отдельно.
22 craxx
 
07.07.20
18:34
(21) "Розничная цена электронной поставки сейчас составляет 50 400 рублей." (с)
23 lodger
 
07.07.20
22:20
(22) кстати, не запрещено пользоваться мощностями сервера взаимодействия всея 1с. https://1cdialog.com/ru/pricing/
24 Hasty
 
07.07.20
22:44
(23) Пока бесплатно, а на долго ли?
25 lodger
 
07.07.20
23:09
(24) уже 4 года бесплатная. вроде пока не чешутся, все равно им нужен демонстратор системы.
корпам он доступен по лицензии, другие крупные потребители без корпа покупают (22)
так что, этот сервис на правах демки еще долго будет жить.
26 Garykom
 
гуру
07.07.20
23:39
(0) ВК на клиентах которые регаются на сервисе, который получает вебхук.
Сервис получив вебхук дергает нужную ВК.
Связь между ВК и сервисом как угодно хоть tcp хоть что повыше, например каждая ВК это тоже http сервис.
27 Hasty
 
08.07.20
12:10
Всем спасибо!Буду думать в сторону ВК
28 Krolik Bezobraznik
 
08.07.20
12:21
(0) Я не понял, Вам нужно вывести пользователю сообщение на экран со стороны сервера?
29 Fedor-1971
 
08.07.20
12:25
(27) Дополнительно можешь глянуть в сторону локального сервера Asterisk, настроишь транк с Зеброй и получишь полные возможности сервера себе в руки.

Малость покопаться с безопасностью придётся, как я понимаю, у вас одна зебра с известными IP, что проще. Главное не выставляй сервер наружу для звонков, организуй работу через Транк и будет тебе счастье
30 Hasty
 
08.07.20
13:12
(28) Все верно
31 ДенисЧ
 
08.07.20
13:14
Есть же готовые решения, правда, платные...
32 craxx
 
08.07.20
13:16
(31) пример можно?
33 Fedor-1971
 
08.07.20
13:25
(32) МИКО, для 8.2 у них была бесплатная библиотека, правда, нужен был локальый сервер
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший