Интеграция виджета в Salesbot

Файл manifest.json

1. Указать интерфейс в области видимости

Минимальная версия widget.interface_version >= 2

Пример:

  1. "locations":
  2. [
  3. "salesbot_designer"
  4. ]

2. В сам манифест добавляется объект salesbot_designer Данный объект описывает поля для отображения интерфейса настроек виджета в конфигураторе

Минимальная версия widget.interface_version >= 2

Пример:

  1. "salesbot_designer":
  2. { "logo":
  3. "/widgets/testWidgetShruk/images/shrek.jpg",
  4. "handler_name":
  5. { "name":
  6. "My
  7. handler",
  8. "settings": {
  9. "text": {
  10. "name":
  11. "settings.text",
  12. "default_value":
  13. "Hello, i am
  14. Salesbot!",
  15. "type":
  16. "text",
  17. "manual":
  18. true,
  19. "required": false
  20. },
  21. "link_to":
  22. { "name":
  23. "settings.link",
  24. "default_value":
  25. "www.amocrm.com",
  26. "type":
  27. "url",
  28. "required": false
  29. } } } }

Файл script.js

Настройки каждого из handler’ов прописываются в файле manifest.json, а затем уже в готовом виде используются в коде salesbot

Все допустимые параметры handler размещены здесь - Обработчики Salesbot

События в callbacks:

onSalesbotDesignerSave

Метод срабатывает, когда пользователь в конструкторе Salesbot размещает один из хендлеров, описанных в manifest.json Метод должен вернуть строку вида JSON кода salesbot'а

Принимает на вход:

  • handler_code - Код хендлера объекта в объекте salesbot_designer
  • params - Передаются настройки виджета формата
  1. {
  2. "text":
  3. "Hello, i am
  4. Salesbot!",
  5. "link_to":
  6. "www.amocrm.com"
  7. }

Пример работы метода

  1. onSalesbotDesignerSave:
  2. function(handler_code,
  3. params) { var
  4. salesbot_source = {
  5. question:
  6. [""],
  7. require:
  8. [""] };
  9. salesbot_source.question.push({"type":"text"});
  10. let values;
  11. params.forEach(element
  12. => {
  13. element.forEach(text
  14. => {
  15. values.push(text)
  16. }); });
  17. salesbot_source.question.push({"values":
  18. values});
  19. salesbot_source.question.push({"accept_unsorted":"false"});
  20. return
  21. JSON.stringify([salesbot_source]);
  22. }

salesbotDesignerSettings

Метод рендера содержимого окна настроек виджета, вызываемого из конфигуратора salesbot'a

Принимает на вход:

  • body - Объект DOM
  • renderRow - Функция вида:
  1. function
  2. (caption) { return
  3. twig({ ref:
  4. '/tmpl/salesbot_designer/controls/widget_param.twig'
  5. }) .render({
  6. caption: caption,
  7. is_widget: true });
  8. }

Пример c jQuery

  1. salesbotDesignerSettings:
  2. function($body,
  3. renderRow) { var
  4. use_catalog =
  5. $body.find('[data-field-name="invoice_catalog"]
  6. [name="value_manual"]').val()
  7. == "true",
  8. $catalog_switcher =
  9. $(renderRow())
  10. .append(self.langs.invoice_catalog)
  11. .append(
  12. self.render({ ref:
  13. '/tmpl/controls/switcher.twig'
  14. }, { checked:
  15. use_catalog,
  16. custom_class_name:
  17. 'switcher_blue', id:
  18. 'stripe_invoice_catalog'
  19. }) ); }