Комментарии 34
1) Система без интеграции: оператору поступает звонок от какого-то клиента банка -> Оператор ничего не знает о клиенте и сначала узнаёт ФИО от звонящего потом убеждается, что звонящий действительно тот, кем он назвался. Для оператора это действие — проверка данных от ненадёжного источника, поэтому он все их тщательно проверяет.
2) Система с интеграцией: оператору поступает звонок, система показывает, что это звонок от Иванова. Оператор уточняет данные у звонящего и проверяет, что это действительно Иванов. Для оператора это проверка данных поступивших от надёжного источника — из их собственной внутренней системы, которой оператор склонен доверять.
Вы еще не запаролили свой телефон?
Ещё хотелось бы видеть системы, которые используют голос для проверки пользователя.
Если голос отличается от обычного, то проверка должны быть более основательной.
Люди откровенно устали от колл-центров, до которых невозможно дозвониться и от необходимости проговаривать кучу данных, которые и так уже есть у оператора.Такие люди обычно пишут в чат Рокета. Звонить необходимо разве в случае одновременной утери телефона с приложением и карты, чтобы эту самую карту заблокировать. Других кейсов не могу придумать.
Вроде только написали, а javascript уже устаревший....
Babel не даёт коду быть слишком новым для браузера или ноды. Но не наоборот.
Или вы думаете, что здесь приведён транспилированный код? Было бы странно.
Это да. Просто в 2017 году уже глаза режут вары и коллбеки, без них код понятнее.
var foo = 1;
function bar() {
if (!foo) {
var foo = 10;
}
alert(foo);
}
bar();
А let и const ведут себя точно так же, как и переменные в классических языках разработки — так что подобных стрёмных вопросов просто не возникает.
Собственно, у ESLint (без которого имхо писать не стоит) во всех современных стандартах даже есть специальное правило no-var, в описании которого стоит ровно то, что я чуть выше написал по своим ощущениям:
ECMAScript 6 allows programmers to create variables with block scope instead of function scope using the let and const keywords. Block scope is common in many other programming languages and helps programmers avoid mistakes.
А let и const ведут себя точно так же, как и переменные в классических языках разработкиВот так, например?
let foo = false;
function bar() {
if (!foo) {
let foo = 10;
}
alert(foo);
}
bar();
Напишете, что выведется? И что бы вышло в «классическом» (в вашем понимании) ЯПВозьмите с полки пирожок за придирку к формулировке. Всегда можно найти способ выстрелить себе в ногу, но для таких случаев есть правило no-shadow.
Да, давайте на личности перейдём </sarcasm>
Я вам про let/var в языке, а вы мне про костыли правила для транспайлера. Мне это больше напоминает «я пришёл в JS с языка X, давайте делать вид, что JS — это такой плохой X, а все несовпадения назовём недостатками и заткнём тысячей костылей правил в транспайлере».
no-shadow
заставит вас все имена переменных делать уникальными. Зачем так жить? Назвал переменную i
, и потом ни в одной вложенной функции нельзя for(let i=0
написать.
А «всегда можно найти способ выстрелить себе в ногу» можно и про ошибки с hoisting'ом сказать.
Видимо, вы никогда просто не пробовали это правило. Оно не заставляет называть всё уникальными именами. Оно не даёт только пересекать области видимости. То есть, у вас может быть функция, а внутри неё — сколько угодно циклов для i. А если у вас уже внутри этого цикла идёт ещё один — вообще довольно логично назвать переменную по-другому.
Там прямо сверху пример:
var a = 3;
function b() {
var a = 10;
}
Вот об этом я и говорю — во внешнем скоупе есть
i
, значит, ни в одной из функций, объявленных в нём, нельзя использовать переменную с именем i
. Т.е., если есть глобальная переменная i
, то переменные так нельзя называть вообще нигде.Вы не поверите, но в 2017 году глобальные переменные не используют...
Возьмите с полки пирожок за придирку к формулировке.К остальной части комментария вопросов нет?
Просто мне сложно представить другой кейс, в котором вам захочется использовать то же имя переменной. А с глобальными я верю, поскольку видел воочию код, в котором использовались глобальные переменные с названиями вроде c, v, cc, vv и a. И код этот писался блоками по 400 строк. Думаю, разработчик сильно икал, когда я это рефакторил. Не надо так делать — и никаких проблем с no-shadow у вас не будет.
Кстати, регулярно вижу, когда разработчики прокидывают через всё приложение значимые объекты с названиями вроде c1. И попробуй пойми, что это. Байты что ли экономят? В общем, я своих разработчиков так делать отучил. И с кодом сразу стало на порядок проще работать.
Можно, конечно, ещё потерять и паспорт вместе с телефоном, но это — совсем другая история.
Система вполне дополняется секретным словом, которое нужно ввести оператору со слов клиента, перед действием или выдачей информации. Без этого слова оператору не показываются значимые данные.
Да, Иван Иванович, но без секретного слова больше ничего не доступно оператору. В случае идентификации по паспортным данным, оператор вполне может их вводить со слов звонящего (в номере точно сложно опечататься)
А сама идентификация клиента очень важна хотя бы теми процентами клиентов, которым нужен особый подход — випы и проблемное, остальным — бонус.
Я понимаю что в случае с Рокетом это узкоспециализированное решение заточенное под их процессы.
Главная фишка использования CRM-систем это дальнейшая аналитика: какие звонки приводят к продажам, а какие нет (или к вовлечения в сервис, в случае Рокета).
Откуда Рокетбанк знает ваше имя