0
Answered

Повторная инициализация виджета

Voo 1 month ago in Widgets • updated by Sergey Stukov (co-founder) 1 month ago 3

Есть необходимость повторно инициализировать виджет в процессе работы нашего WEB приложения, по нескольким причинам:


1. Наша система работает без обновления страниц. Есть модуль Авторизации на котором используем виджет «с ушком», но после успешного входа хотелось бы ушко скрыть и перехватить управление на свой интерфейс. Использовать стили можно, но не вариант по причинам, описанным ниже.


2. Используем SSO для перекрестной авторизации. При построении токена есть такой параметр как срок действия (expires). Наша система может оставаться включенной у клиента сутками, т.е. угадать какой нужен срок действия токена сложно, кому час, а кому неделя. В любом случае генерировать SSO токены с большим сроком действия не правильно. 
- Правильно их периодически обновлять и отправлять клиенту. Но для использования нового токена на клиенте надо заново инициализировать виджет. 
- Или подскажите название свойства, в котором надо хранить свежий токен.


3. Оператор в чате не всегда присутствует. Но когда он on-line надо на клиенте показать кнопку ЧАТ без перегрузки страницы. Реализовать на клиенте периодическую проверку просто, только вот как переинициализировать виджет, когда оператор появился on-line?
Или может есть встроенный метод, которым можно проверять/включат/выключать чат.


PS
Дополнительный вопрос по SSO авторизации. После успешной авторизации на странице профиля клиента есть специальный раздел:
 


Какой параметр и в каком формате надо передать виджету, чтобы заполнить поле Project? Там вроде ссылка должна быть?

Answer

+1
Answer
Answered

Здравствуйте,

Причины и цели понятны.


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

<script language="javascript">
function openWidget(forum_id){
   _ues['forum'] = forum_id; 
   UE.Dialog.preloaded = false;
   UE.Dialog.socket = null;
   UE.Widget.init(_ues);
   UE.Popin.show();
}
</script>
<a href="#" onclick="openWidget('1')">open 1</a>


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


Дополнительный вопрос по SSO авторизации. После успешной авторизации на странице профиля клиента есть специальный раздел:


Никак, сейчас вообще уберем эту колонку. Она просто осталась исторически, когда пользователь был один на всех проектах. Сейчас пользователи в проектах различаются.

GOOD, I'M SATISFIED
Satisfaction mark by Voo 1 month ago
+1
Answer
Answered

Здравствуйте,

Причины и цели понятны.


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

<script language="javascript">
function openWidget(forum_id){
   _ues['forum'] = forum_id; 
   UE.Dialog.preloaded = false;
   UE.Dialog.socket = null;
   UE.Widget.init(_ues);
   UE.Popin.show();
}
</script>
<a href="#" onclick="openWidget('1')">open 1</a>


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


Дополнительный вопрос по SSO авторизации. После успешной авторизации на странице профиля клиента есть специальный раздел:


Никак, сейчас вообще уберем эту колонку. Она просто осталась исторически, когда пользователь был один на всех проектах. Сейчас пользователи в проектах различаются.

Спасибо за подсказку. С виджетом вроде ок, запускается с новым токеном.

А как быть с чатом? Его, не перегружая страницу, можно переинициализировать на новый токен?

+1

Чат сам каждые 60 секунд проверяет наличие операторов и покажет или скроет ушко в зависимости он наличия агентов в онлайн.


SSO токен можете обновить в глобальной переменной 

_ues.params.sso_token