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

Файл manifest.json

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

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

Пример:

"locations":[
    "salesbot_designer"
]

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

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

Пример:

"salesbot_designer": {
  "logo": "/widgets/testWidgetShruk/images/shrek.jpg",
  "handler_name": {
    "name": "My handler",
    "settings": {
      "text": {
        "name": "settings.text ",
        "default_value": "Hello, i am Salesbot!",
        "type": "text",
        "manual": true,
        "required": false
      },
      "link_to": {
        "name": "settings.link ",
        "default_value": "www.amocrm.com ",
        "type": "url",
        "required": false
      }
    }
  }
}

Файл script.js

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

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

События в callbacks:

onSalesbotDesignerSave

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

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

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

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

onSalesbotDesignerSave:
  function (handler_code, params) {
    var salesbot_source = {
      question: [""],
      require: [""]
    };
    salesbot_source.question.push({"type": "text"});
    let values;
    params.forEach(element => {
      element.forEach(text => {
        values.push(text)
      });
    });
    salesbot_source.question.push({
      "values": values
    });
    salesbot_source.question.push({"accept_unsorted": "false"});
    return JSON.stringify([salesbot_source]);
  }

salesbotDesignerSettings

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

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

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

Пример c jQuery

salesbotDesignerSettings: function ($body, renderRow) {
  var use_catalog = $body.find('[data-field-name="invoice_catalog"][name = "value_manual"]').val() == "true", 
    $catalog_switcher = $(renderRow())
      .append(self.langs.invoice_catalog)
      .append(
        self.render({
          ref:
            '/tmpl/controls/switcher.twig'
        }, {
          checked:
          use_catalog,
          custom_class_name:
            'switcher_blue', id:
            'stripe_invoice_catalog'
        })
      );
}