Исходные данные
Скачана и установлена сборка FreePBX Distro (SNG7-PBX-64bit-1904), дата релиза май 2020г.
В нее входит: FreePBX 14.0.11, CentOS 7.6, Asterisk 13/16, PHP 5.6.40, Python 2.7
В качестве примера: локальный IP АТС 192.168.0.87, + внешний домена pbx.a-ctroy.ru и внешний адрес 37.113.134.80
Телефонный номер 79320111675, он же транк для звонков.
Для удобства работы я использую SHH доступ: к консоли SecureCRT, к файлам WinSCP + редактор NotePad++.
Настройка доступа извне к АТС
Далее необходимо сделать возможный доступ из интернета к нашему веб-серверу. Для этого необходимо разрешить порты 80, 5038 (если вы устанавливаете модуль на хостинг за пределами локальной сети), 443 (SSL доступ). Так же настроить NAT(проброс) для этих портов.
У каждого роутера свои настройки, в моем случае имею MikroTik RB2011UiAS.
Открываем IP => Firewall => Address List. Создадим список IP, который имеют внешний доступ к нашим портам.
Добавим в него IP адреса Битрикса:
/ip firewall address-list add address=bitrix24.ru list=tel add address=bitrix24.net list=tel add address=bitrix24.com list=tel
И главное наш/ваш Битрикс24:
add address=a-ctroy.bitrix24.ru list=tel
В версии от 6.26. В качестве IP можно указывать доменное имя.
Открываем IP => Firewall => Filter Rules. Создаем правила доступа и запрета к портам 80,5038,443.
Разрешаем доступ к 80 порту. Создаем правило:
Вкладка General.Chain: forwardProtocol: 6(TCP)Dst. Port: 80In. Interface: <�������������������������������������������������������������������������������������������������а Action.Action: accept
Подымаем правило в самый вверх списка, чтобы был максимальный приоритет.
Создаем новое правило запрета к 80 порту.
Вкладка General.Chain: forwardProtocol: 6(TCP)Dst. Port: 80In. Interface: <�����������������������������������������������������������
����аем правило запрета под разрешающим.
Логика такая, разрешаем доступ тем кто из списка. Затем кто не в списке, всех дропаем.
Аналогично (самостоятельно) сделаем для 443 и 5038 порта.
Создаем правила проброса портов 80, 5038, 443.
Открываем IP => Firewall => NAT.Вкладка General.Chain: dsnatProtocol: 6(TCP)Dst. Port: 80In. Interface: <����������������������������������������������������������������192.168.0.87 (IP нашей АТС)To Port: 80
Аналогично (самостоятельно) сделаем для 443 и 5038 порта.
Все, мы настроили доступ к веб-интерфейсу АТС из вне, для ограниченного круга лиц.
Основное меню сервиса: обзор
Разделы меню находятся в левой колонке экрана. Кратко по ним пройдусь.
Живая лента – страница событий портала
Вмещает несколько подразделов:
- «Сообщение» – вкладка, где можно писать сообщения и просматривать смс других коллег, отправка возможна всем сотрудникам или группам, отделам, почтовым пользователям.
- «Задача» – вкладка, предназначенная для формирования задач. Нажимайте «Отправить», и она автоматически отобразится в списке уведомлений Живой ленты. В правом верхнем углу ставьте галочку для присвоения статуса «Важная задача».
- «Событие» – вкладка, где создаются события, указываются требуемые сведения, настройки и сотрудники, у которых отобразится данное сообщение в Живой ленте.
- «Опрос» – вкладка для создания опросов, которые появятся в ленте (для всех сотрудников или выбранных вами групп, подразделений и т.д.).
- «Ещё» – здесь находятся дополнительные вкладки для отправки файлов, благодарности, важных сообщений в Живую ленту.
Доступ к к веб-морде по доменному имени через SSL (Пункт не обязательный)
Дадим доменное имя нашей АТС, для этого открываем веб-морду FreePBX, далее Admin => System Admin => Hostname. Назовем pbx.a-ctroy.ru
Нажмем Update Hostname.
Теперь необходимо настроить DNS сервер, который подружит домен pbx.a-ctroy.ru и наш внешний IP 37.113.134.80. Сам домен a-ctroy.ru, расположен на хостинге SWEB.RU, там и буду настраивать DNS. Пройду в пункт DNS, далее Записи поддоменов, выберу домен a-ctroy.ru. В самом низу создам A запись.
Сразу после этого по pbx.a-ctroy.ru, должен открываться веб-морда. Если не открывается, вашего IP нет в списке доступа, либо вы открываете из локальной сети, в которой сейчас находиться IP АТС (читайте для общего развития «ip loopback mikrotk»).
Далее получаем SSL, открываем веб-морду FreePBX, далее Admin => Certificate Management => New Certificate => Generate Let’s Encrypt Certificate.
В появившемся окне заполняем поля Емаил, Страна и Регион. Жмем Генерировать сертификат. Перед этим действием рекомендую внести IP адреса серверов Let’s Encrypt в список разрешенных, на MiroTike (IP => Firewall => Address List. ) Я добавлю через консоль. Добавление доменов возможна на прошивках выше 6.36.
/ip firewall address-list add address=outbound1.letsencrypt.org list=tel add address=outbound2.letsencrypt.org list=tel add address=mirror1.freepbx.org list=tel add address=mirror2.freepbx.org list=tel
Вернемся в Certificate Management, удалим сертификат default (type Self Signet – само подписной), видим новый сертификат от Let’s Encrypt. В поле Default ставим напротив него галочку.
Затем перейдем Admin => System Admin => HTTPS Setup => Settings
В поле Certificate Manager берем наш сертификат и жмем Install.
На этом пункте мы указали сертификат для веб-сервера Apache и закончили установку SSL доступа.
Коммуникации
За коммуникации в Битрикс24 отвечают Чаты, Уведомления, Живая лента, Календарь, Ежедневные отчеты.
Чаты организуют коммуникации между сотрудниками и полностью заменяют функционал корпоративного мессенджера Slack. Чаты делятся на 2 вида: закрытые и открытые. Закрытые чаты используются для обсуждения вопросов с ограниченным кругом людей. Попасть в закрытый чат можно только по приглашению, его не видно в общем списке чатов. Открытый чат, напротив, виден всем и в него может вступить любой сотрудник.
В Битрикс24 по умолчанию встроена телефония, поэтому если сотрудникам не хватает общения в Чате, можно настроить внутрикорпоративную связь.
Панель уведомлений — стандартный инструмент Битрикс24, который помогает не пропускать важное. Панель уведомлений отображает ваши взаимодействия с коллегами и клиентами в личных и групповых чатах, а также показывает с кем вы взаимодействовали в последнее время.
Живая лента — это лента событий вашей компании, здесь отображаются все актуальные события, которые видят все сотрудники компании, зарегистрированные на портале. Живая лента построена примерно по тому же принципу, что и ленты в соцсетях, типа Вконтакте или Facebook. Здесь отображаются события, сообщения, идеи, голосования и т.д.
Календарь выполняет функции планировщика. Планировать можно как свой рабочий день, так и общие события. Можно запланировать собрание или совещание. Между Собраниями и Совещаниями, можно сразу выделить несколько функциональных отличий.
- В собраниях можно выбирать не только участников, но и секретаря (человека, который будет вести протокол собрания)
- Протокол собрания — функционал, который позволяет зафиксировать все важные моменты, которые обсуждались на встрече.
- Расширенный функционал поля «Описание собрания». Можно форматировать текст по своему усмотрению и стилю.
- И наиболее значимое отличие — раздел «Повестка». Здесь обозначаются обсуждаемые вопросы и по каждому из них назначаются ответственные. Во время собрания каждый участник знает общую программу и тему, по которой ему нужно будет выступать.
Рабочие отчеты помогают наладить коммуникации между руководителем и сотрудником. Сотрудники отправляют руководителю отчет о проделанной за день работе. Руководитель отслеживает текущие работы, составляет планы будущих задач и дает обратную связь.
Создадим AMI-пользователя в FreePBX
Откроем файл /etc/asterisk/manager.conf
Добавим секцию
[callme] ; Имя AMI-пользователяsecret = 123456789 ; Пароль для подключения, ставим посложнейdeny = 0.0.0.0/0.0.0.0 ; Запрещаем подключение с любого адресаpermit = 127.0.0.1/255.255.255.0 ; И постепенно разрешаем нужныеpermit = 192.168.0.87/255.255.255.0 ; Так разрешаем конкретный хостpermit = 192.168.0.0/255.255.255.0 ; А вот так можно разрешить подсетьread = system,call,log,verbose,agent,user,config,dtmf,reporting,cdr,dialplanwrite = system,call,agent,log,verbose,user,config,command,reporting,originate
Настроем вебхуки в Битрикс24
Перейдем в пункт Приложения => Вебхуки.
Добавим вебхук Входящий.
Обзываем его, например CallMeIn, даем права:
- CRM (crm)
- Телефония (telephony)
- Телефония (совершение звонков) (call)
- Диск (disk)
- Структура компании (department)
- Чат и уведомления (im)
- Создание и управление Чат-ботами (imbot)
- Задачи (task)
- Задачи (расширенные права) (tasks_extended)
- Пользователи (user)
- Мгновенные сообщения системы (без доступа к служебному каналу пользователя) (pull)
- Служебный канал для мгновенных сообщений системы (подписка на информацию об обновлении всех элементов системы доступных пользователю) (pull_channel)
- Списки (lists)
После сохранения получаем REST url https://ваше-имя.bitrix24.ru/rest/1/1s777vji3m123dhv/profile/
, для себя сохраняем в блокноте https://ваше-имя.bitrix24.ru/rest/1/1s777vji3m123dhv/
Добавим вебхук Исходящий.
Адрес обработчика: https://pbx.a-ctroy.ru/callme/CallMeOut.php (в вашем случае может быть просто https://ип-внешний/callme/CallMeOut.php) Название: CallMeOut Тип события: Инициация звонка через приложение (ONEXTERNALCALLSTART)
Сохраняем и получаем код авторизации: dtng3732h7777777777vmk524a4lvhj7
Как Ethereum сможет работать с применением шардинга?
Во время свой главной речи на мероприятии, проведенном в Школе бизнеса Сингапурского университета социальных наук, основатель Ethereum Виталик Бутерин попытался в простой форме объяснить концепцию использования «осколков» в блокчейне Ethereum. В своем докладе под названием «Дорога вперед» он заявил:
«Представьте, что Эфириум будет разделен на тысячи островов. Каждый из них сможет выполнять свою функцию. Каждый из островов получит уникальные особенности, а все, кто относится к определенному острову (то есть, имеет на нем счета), смогут взаимодействовать друг с другом и свободно использовать все его функции. Если они захотят связаться с другими островами, им придется использовать определенный протокол».
В настоящее время в сети Ethereum, а также в других блочных цепях, каждый узел — это место хранения глобального состояния сети. В перечень хранимых данных входит баланс счетов, код контрактов и всей дополнительной соответствующей информации. Кроме того, все узлы участвуют в обработке всех транзакций. Хотя это и позволяет достичь очень высокого уровня безопасности, такой подход резко ограничивает возможности масштабирования сети, потому что заключенная в рамки конкретного проекта блок-цепочка представляет собой, по сути, просто один сетевой узел.
Другими словами, скорость блочной цепи определяется тем, насколько быстрым является один узел, так как все узлы должны один за другим выполнять одни и те же транзакции.
Чтобы решить эту проблему, создатели сети Ethereum планируют реализовать ее новую версию с использованием «осколков». В рамках нового проекта для каждого узла, участвующего в системе, обработка всей истории блокчейна больше не будет обязательным действием для добавления новой транзакции в регистр. Вместо этого каждый узел будет обрабатывать только те данные, которые относятся к определенному «осколку».
Будут применены как квадратичные, так и экспоненциальные «осколки». Квадратичный подход предусматривает разбиение регистра таким образом, что в основной цепочке остается только один «осколок». Однако, при экспоненциальном использовании технологии sharding, «осколки» могут размещаться внутри других «осколков».
Хотя разработчикам еще предстоит определить, какие критерии они будут использовать для разделения глобальных состояний на осколки, существует описание того, как это должно работать:
«Например, схема шардинга в рамках Ethereum может предусматривать размещение всех адресов, начиная с 0x00 в один осколок, а адресов, начинающиеся с 0x01, в другой и т. д. В простейшей форме каждый «осколок» будет иметь собственную историю транзакций, а эффект транзакций в определенном осколке k будет ограничен состоянием осколка k».
Используя этот пример, стоит отметить, что каждый процесс обработки узлов, связанный с кошельками в определенном «осколке», должен затрагивать только информацию, находящуюся в этом конкретном «осколке». Это позволит увеличить скорость, а также количество транзакций, которые сможет обрабатывать каждый узел.
Кроме того, новый дизайн будет включать в себя использование смарт-контрактов в основной цепочке. «Умные» контракты будут отвечать за достижение консенсуса между «осколками» и основной цепочкой. Он получит название «шардинговый контракт диспетчеризации». В новом проекте будут также представлены различные типы участников сети:
«Множественные осколки будут обрабатываться раздельно различными поднаборами участников, включая нотариусов, инициаторов, майнеров и валидаторов».
В дополнение к новым типам участников сети новый дизайн также приведет к созданию различных типов узлов. Супер-полный узел будет хранить информацию о сопоставлении всех «осколков» между собой, а также основной цепочки, обеспечивая достижение полного консенсуса.
Узел верхнего уровня будет обрабатывать все основные блоки цепочки, выполняя роль «легкого клиента» для доступа ко всем «осколкам». Узлы с одним осколком будут представлять собой тип узла верхнего уровня, который полностью загружает и проверяет каждое сопоставление данных на определенном осколке. Наконец, легкий узел будет ответственным за загрузку и проверку заголовков блоков основных блочных цепочек и получит доступ только к тем данным, которые ему необходимы для конкретной транзакции.
В то время как случайная перекрестная связь будет отрицать всю концепцию, разработчики намерены предоставить ее в тех случаях, когда это необходимо. Используя так называемую систему квитанций, «осколки» смогут проверять информацию, которой будут обмениваться.
Важно отметить, что технология sharding может быть реализована в сети Ethereum только после перехода на алгоритм PoS. После ее внедрения можно ожидать значительное улучшение эффективности работы сети.
Настраиваем модуль интеграции Asterisk — Битрикс24
Открываем /var/www/html/callme/config.php
Пояснения:
tech – технология по которой работает теелфония (SIP, IAX, DAHDI, PJSIP и т.д.)
authToken — токен авторизации битрикс24, код авторизации исходящего вебхука
bitrixApiUrl — URL входящего вебхука, без profile/ (Вконце URL обязательно должен быть символ «/»)
extentions — список городских номеров подключенных к АТС. Номер должен быть указан строго в том формате, в котором он прописан в параметрах транка (ВАЖНО! Номера указываются в формате ‘123456789’,’1234567890′ — по бокам номера одиночные кавычки.
context – контекст для осуществления исходящих вызовов (по умолчания это from-internal)
Вносим правки в /var/www/html/callme/CallMeIn.php
94, строчка. Меняем /^http.+$/ , на /mp3/
Получится: if(preg_match(‘/mp3/’,$event->getValue())) $globalsObj->FullFnameUrls[$callUniqueid] = $event->getValue();
Для логирования работы модуля создадим папку и дадим права.
mkdir /var/www/html/callme/logsmkdir /var/www/html/callme/records mkdir /var/www/html/callme/monitor/ mkdir /var/www/html/callme/records/wav mkdir /var/www/html/callme/records/mp3 touch /var/www/html/callme/logs/CallMe.logchown asterisk:asterisk /var/www/html/callme -Rchmod +x /var/www/html/callme/CallMeIn.phpchmod +x /var/www/html/callme/CallMeOut.php
Создадим маршруты звонков. Редактируем /etc/asterisk/extensions_override_freepbx.conf
globals { WAV=/var/www/html/callme/records/wav; //Временный каталог с WAV MP3=/var/www/html/callme/records/mp3; //Куда выгружать mp3 файлы URLRECORDS=https://pbx.a-ctroy.ru/records/mp3; RECORDING=0; // Запись, 1 — включена.};[macro-hangupcall] include => macro-hangupcall-custom exten => s,1,Set(CDR(userfield)=${CHANNEL(hangupsource)}) exten => s,n,Set(FullFname=https://pbx.a-ctroy.ru/callme/monitor/${YEAR}/${MONTH}/${DAY}/${CALLFILENAME}.mp3) exten => s,n,Set(CallStart=${UNIQUEID}) exten => s,n,Set(CallStop=${STRFTIME(epoch,,%s)}) exten => s,n,Set(CallMeDURATION=${MATH(${CallStop}-${CallStart},int)}) exten => s,n,ExecIF(${ISNULL(${CallMeDISPOSITION})}?Set(CallMeDISPOSITION=${CDR(disposition)}):NoOP(=== CallMeDISPOSITION already was set ===)) exten => s,n,System(/usr/bin/lame -h -b 192 /var/spool/asterisk/monitor/${YEAR}/${MONTH}/${DAY}/${CALLFILENAME}.${MON_FMT} /var/spool/asterisk/monitor/${YEAR}/${MONTH}/${DAY}/${CALLFILENAME}.mp3) exten => s,n,System(/bin/rm -rf /var/spool/asterisk/monitor/${YEAR}/${MONTH}/${DAY}/${CALLFILENAME}.${MON_FMT}) exten => s,n,Set(CDR(recordingfile)=${CALLFILENAME}.mp3) exten => s,n,Hangup exten => s,n,MacroExit() macro recording(calling,called) { if («${RECORDING}» = «1»){ Set(fname=${UNIQUEID}-${STRFTIME(${EPOCH},,%Y-%m-%d-%H_%M)}-${calling}-${called}); Set(datedir=${STRFTIME(${EPOCH},,%Y/%m/%d)}); System(mkdir -p ${MP3}/${datedir}); System(mkdir -p ${WAV}/${datedir}); Set(monopt=nice -n 19 /usr/bin/lame -b 32 —silent «${WAV}/${datedir}/${fname}.wav» «${MP3}/${datedir}/${fname}.mp3» && rm -f «${WAV}/${fname}.wav» && chmod o+r «${MP3}/${datedir}/${fname}.mp3»); Set(FullFname=${URLRECORDS}/${datedir}/${fname}.mp3); Set(CDR(filename)=${fname}.mp3); Set(CDR(recordingfile)=${fname}.wav); Set(CDR(realdst)=${called}); MixMonitor(${WAV}/${datedir}/${fname}.wav,b,${monopt}); };};context incoming {793230111000=> { //наш номер транка &recording(${CALLERID(number)},${EXTEN}); Answer(); ExecIF(${CallMeCallerIDName}?Set(CALLERID(name)=${CallMeCallerIDName}):NoOp()); // выставляем CallerID если узнали его у Битрикс24 Set(CallStart=${STRFTIME(epoch,,%s)}); Queue(Q1,tT); Set(CallMeDISPOSITION=${CDR(disposition)}); Hangup(); }h => { Set(CDR_PROP(disable)=true); Set(CallStop=${STRFTIME(epoch,,%s)}); Set(CallMeDURATION=${MATH(${CallStop}-${CallStart},int)}); ExecIF(${ISNULL(${CallMeDISPOSITION})}?Set(CallMeDISPOSITION=${CDR(disposition)}):NoOP(=== CallMeDISPOSITION already was set ===)); System(curl -s https://pbx.a-ctroy.ru/callme/CallMeOut.php —data action=sendcall2b24 —data call_id=${CallMeCALL_ID} —data-urlencode FullFname=${FullFname} —data CallIntNum=${CallIntNum} —data CallDuration=${CallMeDURATION} —data-urlencode CallDisposition=${CallMeDISPOSITION}); }}context default {_X. => { Hangup(); }};context dial_out {_. => { &recording(${CALLERID(number)},${EXTEN}); Set(__CallIntNum=${CALLERID(num)}) Set(CallStart=${STRFTIME(epoch,,%s)}); Dial(SIP/${EXTEN}@toOurAster,,t); Hangup(); }h => { Set(CDR_PROP(disable)=true); Set(CallStop=${STRFTIME(epoch,,%s)}); Set(CallMeDURATION=${MATH(${CallStop}-${CallStart},int)}); if(${ISNULL(${CallMeDISPOSITION})}) { Set(CallMeDISPOSITION=${CDR(disposition)}); }System(curl -s https://pbx.a-ctroy.ru/callme/CallMeOut.php —data action=sendcall2b24 —data call_id=${CallMeCALL_ID} —data-urlencode FullFname=${FullFname} —data CallIntNum=${CallIntNum} —data CallDuration=${CallMeDURATION} —data-urlencode CallDisposition=${CallMeDISPOSITION});}};
Роботы и триггеры — в чем разница?
Роботы и триггеры в Битрикс24
— это простой и эффективный инструмент для автоматизации продаж. Доступен он пользователям тарифного плана «
Проект+
» и выше (роботы в сделках доступны только с тарифного плана «
Команда
»).
Основное отличие роботов от триггеров:
- роботы запускают какой-то процесс
(создание письма, уведомления, задачи или отправка SMS-сообщения), когда лид или сделка переходит на определенную стадию обработки; - триггеры переводят лид или сделку в нужную стадию
, если происходит какое-то событие (входящее письмо, заполнена форма на сайте и т.д.).
Итак, когда сущность переходит в статус, для которого настроен робот, он сработает и выполнит какие-то действия вместо менеджера. Например, можно настроить робота, который будет отправлять письмо клиенту, если лид принят в работу (перешел в стадию «Назначен ответственный»).
Запустить же триггер может какое-то действие со стороны клиента, когда сущность находится на определенной стадии. Например, если лид заполнил форму на сайте, то он, минуя другие стадии сразу перейдет на стадию «Качественный лид».
Сконфигурируем Supervisor
Для того чтобы наш модуль всегда отслеживал входящие звонки и взаимодействовал с Битрикс24.
Создадим папку supervisord и в ней файл /etc/supervisord/supervisord.conf:
[unix_http_server]file=/tmp/supervisor.sock ; the path to the socket filechmod=0777 ; socket file mode (default 0700)[inet_http_server] ; inet (TCP) server disabled by defaultport=*:9001 ; ip_address:port specifier, *:port for all ifacechmod=0777chown=root:supervisor[supervisord]logfile=/tmp/supervisord.log ; main log file; default $CWD/supervisord.loglogfile_maxbytes=50MB ; max main logfile bytes b4 rotation; default 50MBlogfile_backups=10 ; # of main logfile backups; 0 means none, default 10loglevel=debug ; log level; default info; others: debug,warn,tracepidfile=/tmp/supervisord.pid ; supervisord pidfile; default supervisord.pidnodaemon=true ; start in foreground if true; default falseminfds=1024 ; min. avail startup file descriptors; default 1024minprocs=200 ; min. avail process descriptors;default 200chmod=0777chown=root:supervisor[rpcinterface:supervisor]supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface[supervisorctl]serverurl=unix:///tmp/supervisor.sock ; use a unix:// URL for a unix socketchmod=0777chown=root:supervisor[program:callme]command=/usr/bin/php CallMeIn.phpdirectory=/var/www/html/callmeautostart=trueautorestart=truestartretries=5stderr_logfile=/var/www/html/callme/logs/daemon.logstdout_logfile=/var/www/html/callme/logs/daemon.log
Создадим сервис-файл, который позволит Supervisor запускаться сразу в фоне при старте ПК /etc/systemd/system/supervisord.service:
[Unit]Description=Supervisor daemonDocumentation=https://supervisord.orgAfter=network.target[Service]ExecStart=/usr/bin/supervisord -n -c /etc/supervisord/supervisord.confExecStop=/usr/bin/supervisorctl $OPTIONS shutdownExecReload=/usr/bin/supervisorctl $OPTIONS reloadKillMode=processRestart=on-failureRestartSec=42s[Install]WantedBy=multi-user.targetAlias=supervisord.service
Запустим сервис systemctl start supervisord.service
И проверим 2 способами:
Выполнив команду
ps aux | grep super
И проверив работу веб-консоли https://192.168.0.87:9001/
Нюансы
1) При клике на телефон клиента в Битрикс24, АТС сначала позвонит на ваш внутренний номер, затем наберет номер клиента.
Открываем https://ВашеИмя.bitrix24.ru/company/ или Сотрудники => Сотрудники
Далее у каждого сотрудника должен быть указан внутренний номер телефона, который соответствует внутреннему номеру на АТС.
2) Необходимо чтобы на АТС было прописано правило исходящего звонка, на номер который будет собираться звонить Битрикс24.
3) При входящем звонке, чтобы создавался новый лид либо всплывала карточка, необходимо: чтобы сотрудник был онлайн и его внутренний номер был зарегистрирован на АТС.
Дополнительные возможности карточки CRM
Добавляйте дела и комментарии в ленту событий (далее таймлайн) сделки и лида. Планируйте работу с клиентом полностью из карточки CRM — можно оставить комментарий, запланировать задачу и т. д.:
Процесс создания комментария — очень простой. Окно ввода комментария обладает знакомым визуальным редактором. Вы можете оформить текст, добавить упоминание другого сотрудника и прикрепить дополнительные материалы (файл, видео).
Важный комментарий можно закрепить в верху таймлайна с помощью кнопки гвоздика.
Это крутая замена бумажных стикеров на рабочем столе. Теперь все важные заметки по каждой сделке на расстоянии нескольких кликов.
Как удалить комментарий из карточки CRM?
Если созданный ранее комментарий больше неактуален: измените, открепите или удалите его. Просто вызовите дополнительное меню кликнув по стрелке.