По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Как и любая современная АТС, Asterisk имеет свою встроенную систему хранения истории звонков - CDR (Call Detail Record). Она используется для снятия статистики, ведения отчетности, прослушивания вызовов или подсчета биллинговых показателей. В Asterisk для этого создана база данных asteriskcdrdb, в которой существует таблица cdr. Давайте рассмотрим как пользоваться данной таблицей и ее структуру. [root@asterisk]# mysql // подключаемся к MySQL После успешного подключения, необходимо выбрать для работы базу данных asteriskcdrdb: mysql> use asteriskcdrdb; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed Давайте убедимся, что у нас есть таблица cdr. Выполним это, как указано ниже: mysql> show tables; +-------------------------+ | Tables_in_asteriskcdrdb | +-------------------------+ | cdr | | cel | +-------------------------+ 2 rows in set (0.00 sec) На данном этапе мы убедились, что у нас есть база данных asteriskcdrdb, в которой находится таблица cdr. Давайте попробуем посмотреть входящие звонки из города за сегодня (дата написания статьи 18 марта 2016 года), в период с 12:00 до 12:10, т.е за 10 минут: SELECT `dst` , `src` , `duration` , `calldate` , `recordingfile` FROM `cdr` WHERE `calldate` >= '2016-03-18 12:00:00' AND `calldate` <= '2016-03-18 12:10:00' AND LENGTH( `src` ) >3; +-----+-------------+----------+---------------------+----------------------------------------------------------------+ | dst | src | duration | calldate | recordingfile | +-----+-------------+----------+---------------------+----------------------------------------------------------------+ | 113 | 84991111111 | 140 | 2016-03-18 12:00:36 | external-113-84991111111-20160318-115933-1458291573.157155.wav | | 104 | 89162222222 | 81 | 2016-03-18 12:01:33 | external-104-89162222222-20160318-120133-1458291693.157169.wav | +-----+-------------+----------+---------------------+----------------------------------------------------------------+ 2 rows in set (0.00 sec) В вышеуказанном примере, в SQL запросе указано LENGTH( `src` ) >3. Столбец ‘src’ – показывает номер звонящего (source - источник). Это сделано для того, чтобы исключить внутренние звонки, так как у нас используется трехзначная нумерация. Тем самым, мы получаем в результате данные, с которыми затем можем работать. Например, отправить на почту в виде отчета. Ниже рассмотрена структура таблицы cdr в базе данных asteriskcdrdb: Столбец Пример значения Описание calldate 2016-03-18 12:00:36 Дата и время звонка clid "Oleg Ivanov" <84991111111> В данное поле попадает полное CallerID (CLID, CID), которое состоит из имени и номера звонящего. Это доступно только для считывания. src 84991111111 Номер звонящего в конструкции CallerID (CNUM). Это доступно только для считывания. dst 113 Номер назначения для звонка. Это доступно только для считывания. dcontext CustomContext1 Контекст для обработки. Это доступно только для считывания. channel SIP/0002B2356854-a34bh3ef Канал, через который поступил звонок dstchannel SIP/0004F6675969-97836bb0 Канал, через который ушел исходящий звонок lastapp Dial, Busy, Congestion Приложение, которое последним отработало этот вызов перед попаданием в таблицу cdr lastdata SIP/0004F6675969,30,tT Аргумент, который был передан приложению, которое отработало вызов последним (lastapp) duration 75 Количество секунд от начала (отметка start) до окончания вызова (отметка end) billsec 67 Количество секунд от ответа (отметка answer) до окончания вызова (отметка end). Данное значение всегда меньше значения duration, и отражает длительность самого разговора, что важно для подсчета стоимости. disposition ANSWERED, BUSY, NO ANSWER, FAILED Результат звонка amaflags OMIT, BILLING, DOCUMENTATION, Unknown Метка Automatic Message Accounting (AMA) – автоматический учет стоимости вызова. accountcode 23232 Идентификатор аккаунта. Данное значение пустое по умолчанию, и определяется параметрами конкретного пользователя. uniqueid 1458291693.157169 Уникальный идентификатор звонка userfield - Пользовательское поле. Здесь можно передавать что угодно, добавляя данные в этот столбец при работе с вызовом внутри контекста обработки. did 4996491913 DID (Direct Inward Dialing). На основании DID вызова на Asterisk осуществляется его маршрутизация (это значение приходит от провайдера). recordingfile external-113-84991111111-20160318-115933-1458291573.157155.wav Имя файла, содержащего запись разговора. В данном имени можно проследить путь к файлу в файловой структуре сервера. cnum 84991111111 Номер звонящего в структуре CallerID. cnam Oleg Ivanov Имя звонящего в структуре CallerID. Теперь, когда вы понимаете принцип формирования запросов к базе данных и ее структуру, вы можете без труда формировать собственные отчеты. Например, ежедневный отчет о количестве входящих звонков за текущий день на почту. Это реализуется средствами php скрипта и добавления расписания через cron. Поговорим об этом в следующей статье
img
Чтобы понять NoSQL, нужно разобраться, что такое SQL и почему мы говорим ему No. Итак, SQL (structured query language) расшифровывается как «язык структурированных запросов», и это язык запросов для управления данными в так называемых реляционных базах данных, или просто БД В реляционных базах мы храним данные в таблицах, которые логически связаны между собой - отсюда и название - реляционные от слова relation, связь. Это один из самых популярных типов баз. В этих таблицах есть строки и столбцы. В столбце таблицы хранится определенный тип данных, а в каждой ячейке – значение. Строка же получается как набор связанных значений, которые относятся к одному объекту - мы видим что у крыла типа чайка длина 25 метров. Ну и каждая строка в таблице может быть помечена каким то уникальным идентификатором, который называется первичным ключом (primary key). А затем при помощи него мы можем связать данные из нескольких таблиц, например в отдельной таблице, где он станет внешним ключом (foreign key). В общем, как таблица в экселе, только данные могут быть связаны. Что еще важно знать: реляционные БД требуют так называемую схему (schema) - описание структуры таблицы ее полей и ограничений. То есть если нам например нужно добавить или убрать столбец в таблице, то это изменение коснется всех данных внутри нее. Также БД этого типа соответствуют так называемым принципам ACID (Atomicity — Атомарность, Consistency — Согласованность, Isolation — Изолированность, Durability — Надёжность), что вкратце означает, что при работе с базой, целостность и согласованность данных гарантирована, даже если возникли проблемы с сетью или железом, что полезно при работе с финансами, например. В качестве примеров таких баз назовем: Microsoft SQL Server, Oracle Database, MySQL и PostgreSQL. Разобрались. Теперь вернемся к NoSQL. Это тип баз данных, которые хранят данные в отличном от реляционных таблиц формате. Они узкоспециализированны для конкретных задач и нужны для улучшения производительности, масштабируемости и удобства в работе. Базы данных "ключ-значение" (key-value) Суть в том, что мы храним данные в таком виде: у нас есть уникальный ключ, который указывает на какое-то значение. А сама база - это совокупность этих пар. Вот так просто! Причем эти данные могут быть чем угодно, числом, строкой или даже другой парой ключ-значение потому что в отличии от реляционных баз данных они не имеют предопределенной структуры данных. Многие БД такого типа хранят данные в памяти (RAM), в отличии от других баз, которые хранят данные на диске, что хоть и может ограничивать объем хранимых данных (хотя они требуют гораздо меньше памяти), но это обеспечивают просто невероятную скорость. Ну и раз это NoSQL то никаких сложных запросов, никаких связей друг с другом - мы просто записываем ключ и его значение, и получаем значение по ключу. Где их использовать? Они отлично подходят для хранения кэша или пользовательских сессий. А в качестве самого простого примера можно назвать корзину в интернет магазине - где мы храним идентификатор пользователя, и сколько товаров он положил в корзину. Самые популярные хранилки по типу “ключ - значение” это Redis, Memcached и DynamoDB. Wide-column (columnstore базы данных, БД с широкими столбцами или колоночные БД) Все также просто - берем key-value БД, и делаем так чтобы в значении мы могли хранить несколько столбцов сразу. Это позволяет удобно хранить связанную информацию. Похоже на реляционную БД, но только в отличии от нее, тут у нас нет схемы, поэтому мы можем хранить разные неструктурированные данные. Такой тип БД подойдет для хранения логов, данных с умных холодильников и чайников, а также различных аналитических приложений, где данные хранятся в большом объеме. Netflix, например, хранит в таких таблицах историю просмотров пользователя. В качестве примеров таких баз назовем Cassandra, Hbase и ClickHouse. Базы данных документов или документориентированные БД (Document DB) Подробнее про них можно прочитать в нашей отдельной статье. Если предыдущие типы NoSQL БД обычно используются для специфических задач, то эти базы уже более универсальны, и могут стать основным местом хранения информации. Здесь мы храним документы. Документ это набор нескольких пар ключ-значение, о которых мы говорили раньше, и раз это не SQL, то они неструктурированны и не требуют схему. Это значит, что мы можем легко добавлять и удалять поля в документе, в отличие от реляционных БД, где изменения затронули бы всю таблицу. Документы даже могут быть вложенными, и содержать в себе другие документы. Данные хранятся в стандартных форматах, таких как XML, YAML и JSON. Такая форма хранения идеально подходит к объектам, которые используются в приложениях. Мы буквально сразу получаем полный объект который нам нужен, а в SQL нужно сначала приложить усилия и даже сделать несколько запросов и все собрать в необходимый вид. Документы можно группировать друг с другом собирая их в коллекции, которые можно собирать в логическую иерархию, получая что-то по типу реляционных БД. Это как шкаф на работе - в один ящик мы можем положить трудовые договоры, в другой - договоры с партнерами, а в третий договоры аренды. Ничто нам не мешает сложить всё в одну кучу, но так удобнее. И вот эти ящики как раз и будут коллекциями в нашем случае. А отсутствие схемы позволяет нам положить в один ящик договоры, которые схожи логически, но имеют разную структуру внутри. Например, долгосрочный договор с сотрудником и договор с компанией. Коллекции есть не у всех БД такого типа, некоторые системы используют теги или древовидные иерархии. Они часто используются для мобильных приложений и игр, блогов, интернет магазинов и всяких штук где у нас имеется много контента. Самые популярные БД такого типа - MongoDB, Amazon DynamoDB, CouchDB. Графовые БД (Graph DB) Тут мы больше значения уделяем тому как данные связаны друг с другом, и эта БД лучше всего обрабатывает такие данные. Тут у нас есть узлы, которые представляют данные и ребра (или соединения), которые описывают связь между этими данными. Помните как в реляционных базах мы записывали связь в отдельной таблице? Тут мы можем обойтись без нее, просто показав связь. Такие базы просто необходимы для алгоритмов рекомендаций, социальных сетей, управления компьютерными сетями и маршрутизацией или даже обнаружения финансового мошенничества. Самые популярные графовые базы: Neo4j и DGraph Поисковые БД (Search-engine database) Они, как понятно из названия, нужны для поиска данных из большого количества источников. Работают они примерно также как и базы данных документов - мы добавляем документы с текстом внутри, а БД проанализирует весь текст в этих документах и создаст индексы для этого текста. По сути это работает как указатели, которые ты видел в конце книги, где указывается какой-то термин и страница на которой он встречается. И когда пользователь выполняет поиск, то сканируются только эти индексы, а не все документы в базе. Ну и очевидно что они используются в качестве полнотекстового поиска, а также для хранения и анализа логов. Примеры - Elasticsearch, Solr, Algolia Базы данных временных рядов (Time series database) Это базы данных, оптимизированные для данных с отметками времени. Такое используется, для мониторинга систем, где мы храним значение времени и данные в этот момент. Например, загрузка сервера или количество подключений. Примеры - InfluxDB и Prometheus Многомодульные БД (multi-model) Также существуют так называемые много-модульные БД (multi-model), которые поддерживают несколько моделей данных. Например тот же рredis умеет и в ключ-значение, и документы с графами и даже временные данные обработает.
img
Привет, дорогой любитель автоматизации с помощью бизнес - процессов! Мы очень рады, что в поисках полезной автоматизации обработки лидов в Битрикс24 ты нашел эту статью. Все потому, что мы тоже любим упрощать работу себе и своим сотрудникам, поэтому вот тебе кейс: Валерий – успешный менеджер по продажам. К нему прилетает лид. У Валерия есть только его электронная почта – оставлять телефон лид не захотел/не смог. После первичной обработки (выяснение потребностей, требований к услугам и так далее) лид сообщает, что не может ответить на некоторые вопросы и просит тайм – аут – предположим, пару дней. Конвертировать в сделку лида рано – мы не знаем ключевых параметров для формирования коммерческого предложения. Лид так и остается MQL (Marketing Qualified Lead) сущностью. В силу некоторых анатомических особенностей, Валерий бывает забывчив. В потоке новых лидов, которых он успешно конвертируется в SQL (Sales Qualified Lead), Валерий забывает про MQL лида. Но не забывает бизнес – процесс, о котором мы сейчас и расскажем. Битрикс24 бесплатно! Битрикс24 общается с лидом за вас Бизнес процесс работает следующим образом: Менеджер ставит лид в статус «Дожимаем лида»; Запускается цикл, который будет выполнятся до тех пор, пока лид находится в статусе «Дожимаем лида»; Бизнес-процесс берет паузу в 3 рабочих дня и спустя это время отправляет первое письмо лиду. Письмо будет отправляться от email адреса ответственного, с обращением к лиду по имени и формированием небольшой подписи в письме. Письмо отправляется такого содержания : Принято ли решение по проекту «%название_лида%». Параллельно с этим ответственному приходит сообщение об отправке внутри Битрикс24; После выполнения предыдущего шага, снова берется пауза в три рабочих дня, после чего отправляется письмо лиду другого содержания: Очень хотим с Вами работать :) Принято ли решение по проекту «%название_лида%»?. Параллельное уведомление приходит и ответственному; После чего, указанные выше шаги повторяются еще 2 раза (то есть общее число отправленных писем с интервалом в 3 рабочих дня будет равно 6); После отправки шестого письма бизнес процесс прервется; Очень советуем настроить триггеры в Битрикс24. Например, при событии «Входящее письмо» и «Входящий email» у вас будет переключаться статус – тем самым, при наличии активности по лиду (переписка, звонок) бизнес процесс будет прерываться. Блок-схема работы указана ниже: Настройка бизнес - процесса Итак, переходим к разбору полетов. Открываем CRM → Настройки → Автоматизация → Бизнес - процессы. В разделе «Лид» нажимаем добавить шаблон: даем первичное название и описание шаблону, предварительно сняв галочки на параметру автоматического запуска (запускать бизнес процесс мы будем изнутри другого процесса). Скачать бизнес – процесс для лидов в Битрикс24 Переходим во вкладку «Переменные» и создаем две служебных переменные, нажав «Создать переменную»: Идентификатор mail_choose Название: - выбор письма для отправки; Описание: - переменная содержит в себе либо 1, либо 2. В зависимости от значения, Заказчику будут отправляться разные письма; Тип: - целое число; Значение по умолчанию: - 0; Идентификатор count Название: - счетчик отправок; Описание: - когда клиенту будут отправлены 2 формата письма - мы будем увеличивать значение этой переменной на 1; Тип: - целое число; Значение по умолчанию: - 0; Общая структура нашего бизнес – процесса следующая: Первый элемент – «Цикл». Условно говоря, это блок, в котором задается некое условие, и, до тех пор, пока это условие выполняется, все элементы внутри цикла будут прогоняться снова и снова. Лишь в том случае, когда условие не выполнится, цикл будет завершен. В нашем случае условием «Цикла» будет статус лида. Пока он равен статусу «Дожимаем лида» - цикл жив: Итак, цикл начинается. Первым действием мы увеличиваем переменную mail_choose на 1 (ее значение по умолчанию 0). Это нужно для выбора письма, которое мы будем отправлять лиду. Для этого, мы выбираем блок «Изменение переменных», выбираем переменную «Выбор письма для отправки» и приравниваем ее к значению =({=Variable:mail_choose}+1). Переменная будет увеличена на 1. Добавляем блок «Пауза в выполнении». Здесь мы будем ставить бизнес – процесс на паузу на 3 рабочих дня. В разделе «Режим» выбираем чек-бокс «Время» и в поле «Дата» добавляем следующий код: =addworkdays({=System:Now}, 3) Приступаем к отправке. Данный блок будет отработан только после паузы в 3 рабочих дня. Первым делом, нам надо убедиться, что количество отправленных писем клиенту не равно 6 (мы не хотим отправлять клиенту больше 6 писем с напоминанием о себе). Счетчик с идентификатором count увеличивается каждый раз, когда клиенту отправляется четное письмо. Это значит, что уходит первое письмо – счетчик не увеличивается. Уходит второе – прибавляем 1 к переменной count. Уходит третье – ничего. Уходит четвертое - + 1. И так далее. В результате, когда переменная будет равна 3, мы будем завершать наш бизнес процесс. Если наш счетчик меньше 3, то мы переходим к выбору письма. Тут в игру вступает переменная mail_choose. Сейчас она равна 1 (мы увеличили ее в начале цикла). Поэтому, мы отправляем первое письмо и уведомление ответственному: После отправки уведомления бизнес процесс переходит в начало цикла. Там мы опять увеличиваем переменную mail_choose на 1, проходим паузу и условие. Теперь наша переменная равна 2, поэтому, мы отправляем лиду второй вариант письма: Второе письмо отправлено, и теперь, нам нужно обработать наши переменные: =({=Variable:count}+1) - увеличиваем счетчик отправок на 1; Выбор письма для отправки - приравниваем к 0; Вот и все. Теперь все происходит по новой, но переменная count = 1. Пока count не достигнет значения 3, цикл будет повторяться. Для этого, заранее настраиваем запуск этого бизнес – процесса при переключении статус лида на «Дожимаем лида». Давайте протестируем: переводим лида в нужный статус: О том, как создать запуск бизнес – процесса по переключению статус лида можете прочитать в этой статье. Через 3 дня нам (лиду) приходит первое письмо: И еще через 3 дня приходит второе письмо: Удачных полетов :)
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59