Перейти к контенту

JS методы и объекты AmoCRM

В этом разделе описываются функции и объекты для работы с AmoCRM, которые служат для более легкого доступа к среде (информация о виджете, авторизованном пользователе и т. д.), а также для вызова некоторых элементов интерфейса.

Всплывающее уведомление

Система имеет возможность отображать окно в правом нижнем углу с уведомлением. В качестве примера использования можно вызвать уведомление о входящем вызове по вызываемой телефонии.

 

Для реализации этой функции можно использовать предоставленный объект. В приведенном примере функция создана для работы с ней.

self.add_call_notify = function(mess){
    var w_name = self.i18n('widget').name,
        date_now = Math.ceil(Date.now()/1000),
        lang = self.i18n('settings'),
        n_data = {
            from: mess.from,
            to: mess.to,
            duration: mess.duration,
            link: mess.link,
            text: w_name + ': ' + mess.text,
            date: date_now
        };
 
    if (mess.element && mess.element.id && mess.element.type){
        n_data.element = mess.element;
    }
   
    AMOCRM.notifications.add_call(n_data);
};
 
/*---------------------------------------*/
var notify_data={};
notify_data.from = '+7 (999) 111 22 33';
notify_data.to = 'User Name';
notify_data.duration = 65;
notify_data.link = 'https://example.com/dialog.mp3';
notify_data.text = 'Widget text';
notify_data.element = { id: 1003619, type: "contact" };
 
self.add_call_notify(notify_data);

Пример не только вызывает окно уведомлений, но и связывает ссылку.

Пользовательский поиск при заполнении поля типа «юридическое лицо»

В системе реализована возможность использования настраиваемого поиска юридических лиц при заполнении поля типа юридическое лицо.

Для реализации этой функции вы можете использовать предоставленный метод. Для этого поместите в массив AMOCRM.widgets.legal_handlers функцию, которая будет возвращать ajax. Ajax должен возвращать массив объектов следующей структуры:

{
    name: ''QSOFT LLC',
    inn: '5009051111',
    kpp: '500901001',
    ogrn: '1065009000187',
    type: '1',
    address: '222 COLUMBUS AVE SUITE 407 SAN FRANCISCO, CA',
}

Пример реализации:

AMOCRM.widgets.legal_handlers = [function(data) {
    var def = $.Deferred();
 
    $.ajax({
        type: 'POST',
        url: 'http://www.example.com/',
        dataType: 'json',
        data: data
    }).done(_.bind(function (response) {
        var res;
       
       res = _.map(response._embedded.items, function(item) {
           return {
               name: item.name,
               inn: item.inn,
               kpp: item.kpp,
               ogrn: item.ogrn,
               type: item.type,
               address: item.address
           };
       });
 
       this.def.resolve(res);
    }, {def: def}))
    .fail(_.bind(def.reject, def, []));;
 
    return def.promise();
}];

Уведомление об ошибке

Мы рекомендуем использовать такие уведомления, если JS на странице выполняет какие-то фоновые действия (называемые скрытыми от пользователя, а не по его вызову). В таких случаях вы можете уведомить пользователя о том, что что-то пошло не так и какие действия ему нужно предпринять.

Например, вы разрабатываете виджет телефонии и подключаетесь к серверу в фоновом режиме, чтобы ждать событий о входящих звонках. В какой-то момент вы поняли, что не можете подключиться к своему серверу и ожидаемая функциональность не будет работать. Об этом сообщении об ошибке (с описанием причин) лучше уведомить пользователя по телефону техподдержки.

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

Объект очень похож на указанное выше уведомление, но отображает сообщение об ошибке. В этом случае функция закрытия окна ведет себя иначе, она запоминает событие закрытия в пользовательском COOKIE и больше не отображает его.

var  errors = AMOCRM.notifications,
    date_now = Math.ceil(Date.now()/1000),
    header = self.get_settings().widget_code,
    text = 'error'
    var n_data = {
                header: header, // widget code  
                text:''+text+'',// error message text
                date: date_now // /date
            },
    callbacks = { done: function(){console.log('done');}, //successfully added and saved AJAX done
                  fail: function(){console.log('fail');}, //AJAX fail
                  always: function(){console.log('always');} // always called
                };
 
    errors.add_error(n_data,callbacks);

Рассмотрим параметры подробнее:

header — (строка) название виджета будет отображаться в заголовке

text — (строка) сообщение об ошибке

date — дата

callbacks функции обратного вызова объекта.

Модальный объект для работы с модальным окном

Для работы с ним его необходимо подключить в файле script.js

В этом примере показано, как использовать объект модального окна Modal.

define(['jquery','lib/components/base/modal'], function($, Modal){
  var CustomWidget = function () {
    this.callbacks = {
      // . . .
      bind_actions: function(){
        //.  .  .
        var data ='

Test

Some text

‘; modal = new Modal({ class_name: ‘modal-window’, init: function ($modal_body) { var $this = $(this); $modal_body .trigger(‘modal:loaded’) // launches a modal window .html(data) .trigger(‘modal:centrify’) // configures the modal window .append(»); }, destroy: function () { } }); //. . . return true; } } } return CustomWidget; });

Для работы с модальным оконным объектом вам необходимо подключить его через require (определить в начале script.js) и передать параметры: class_name, init (), destroy (). В init передаются данные для отображения в модальном окне и триггерные события для запуска методов модального объекта и отображения модального окна в DOM.

Метод получения статуса онлайн-пользователей

Этот метод позволяет получать информацию о онлайн-статусе пользователей. Статус может быть истиной (если пользователь в сети) или ложью (если пользователь не в сети).

Получение статуса онлайн для всех пользователей в AmoCRM

AMOCRM.sdk.showUserStatus() // object with all user id and status
// Example response:
{
 {
    id: 123456,
   online: true
  },
  {
    id: 123456,
    online: false
  }, ...
}

Чтобы получить всех пользователей и их онлайн-статусы, метод вызывается без флага и возвращает всех пользователей и их онлайн-статусы в объекте id.

Получение идентификатора всех пользователей в сети

AMOCRM.sdk.showUserStatus('online')// array of all id users online
// Example response:
[123456, 123457...]

Чтобы получить список всех пользователей, находящихся в сети, этот метод необходимо вызывать с флагом «онлайн». В этом случае он вернет массив, содержащий идентификаторы пользователей в сети.

Получение статуса онлайн-пользователя по его id

var id_user = 123456; // Unique account ID
var status_user = AMOCRM.sdk.showUserStatus(id_user) ; // online user status (true or false)

Чтобы получить статус пользователя по его идентификатору, необходимо вызвать метод с уникальным идентификатором учетной записи. Этот метод возвращает true (если пользователь находится в сети) или false (если пользователь не в сети)

Обработка ошибок AmoCRM

AMOCRM.notifications.show_user_status(‘someString’) // object with all users id and status

Если был введен неверный идентификатор пользователя, произошла ошибка при записи флага, был задан неверный флаг, то функция будет работать так же, как и без параметров, возвращая объект со всеми id и их онлайн-статусами. Чтобы самим не настраивать amocrm можно обратиться в компанию simbios.kz.

Оцени статью

Средняя оценка / 5. Количество голосов:

Спасибо, помогите другим - напишите комментарий, добавьте информации к статье.

Или поделись статьей

Видим, что вы не нашли ответ на свой вопрос.

Помогите улучшить статью.

 

Пока нет комментариев.

Добавить комментарий

Ваш e-mail не будет опубликован.

СайдбарКомментарии (0)