Интеграция виджета в 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. } ) ) ; }