пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
Слишком длинный поисковый запрос.
По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие
наши статьи:
Да – да, CUCM умеет собирать CDR (Call Detail Record). А в статье мы покажем, как включить данный функционал, который по умолчанию, отключен.
Включение CDR
Подключаемся к интерфейсу Cisco Unified CM Administration:
Переходим по пути System → Service Parameters и выбираем следующее:
Server - 192.168.1.1 (Active), например. Тут мы выбираем ноду, на которой проведем работы. У вас, конечно, IP будет другой. А может и такой же :)
Service - отметьте сервис Cisco CallManager (Active);
Листаем на появившейся страницу параметры и находим сегмент System, в котором отмечаем вот что:
CDR Enabled Flag * - True. Этим параметром мы говорим колл – менеджеру, создавать и хранить CDR – записи по каждому звонку, который пройдет через этот UCM;
CDR Log Calls with Zero Duration Flag * - True. Включая этот параметр, мы говорим, чтобы сервер сохранял звонки, которые не состоялись, или длительность которых менее 1 секунды (это полезно для траблшутинга);
Не забывайте сохранить изменения. Повторите данные процедуры для каждой ноды в кластере (если на этапе выбора в сегменте System → Service Parameters → Server у вас больше одного сервера).
Дополнительная настройка
После этого, давайте познакомимся с дополнительными параметрами. Для этого, в меню настройки нажмите на кнопку Advanced:
Выставьте следующие параметры:
Call Diagnostics Enabled - Enabled Only When CDR Enabled Flag is True. Параметр отвечает за включение так называемых Call Management Records (CMR), которые очень полезны при диагностике проблем и траблшутинге;
Display FAC in CDR - True. Отображать ли Forced Authorization Code (FAC) в CDR записях. То есть, отображаться ли код доступа в CDR – записях. В целом, данный параметр зависит от ваших политик безопасности. Мы отображаем :);
Show Line Group Member DN in finalCalledPartyNumber CDR Field - True. Если коротко – параметр в таком положении, будет показывать DN (directory number) человека, который ответил на звонок внутри группы, а не номер самой группы;
Show Line Group Member Non Masked DN in finalCalledPartyNumber CDR Field: Required Field - по факту, почти тоже самое, что и выше;
Переходим в интерфейс Cisco Unified Serviceability, переходим в раздел Tools → CDR Analysis and Reporting. Далее, во вкладке CDR можете воспользоваться поиском или выгрузкой данных. Enjoy :)
Протоколы API, как и все в этом мире, активно развиваются. Многие компании, включая GraphQL, gRPC и Thrift, пользуются классическими API SOAP и REST. В списке этих API есть и JSON-RPC.
JSON-RPC, созданный для быстрой разработки многофункциональных сайтов, быстро стал лучшим другом разработчиков.
Давайте разберемся, что это такое, и в чем оно полезно специалистам по разработке приложений и API. Знакомство с JSON-RPC начинается с азов JSON. Так что первая глава данной статьи посвящена общей информации о JSON.
JSON – что это такое, и как оно работает
JSON – это легковесный формат обмена сообщениями, который подходит для более быстрой передачи данных. Именно поэтому он так активно используется в современной разработке.
JSON (JavaScript Object Notation, или нотация объектов JavaScript) производит многократную разбивку данных до тех пор, пока они не примут удобный для обработки вид. В основе JSON лежит JavaScript, поэтому просматривая элементы данных, вы не раз встретите строки, нулевые символы, объекты и бинарные переменные.
JSON разбивает сложные сопоставленные данные на управляемые структуры, облегчая обработку данных на многих языках программирования, и считается независимым от языка ресурсом. Его придумал Дуглас Крокфорд в 2000 году с целью упрощения взаимодействия между веб-приложениями и сервером.
Что такое JSON RPC?
JSON-RPC – это не что иное, как преемник JSON, повсеместно признанный протокол для удаленного вызова процедур (RPC - Remote Procedure Calls). Работая на уровне разработки, JSON-RPC запускает различную структуру данных, определяя задачи для приложений. Это сравнительно новый протокол с узкой областью применения.
Наборы команд, гибкость и сценарии развертывания – все работает с ограничениями. Но, тем не менее, разработчики видят в нем идеальный вариант для простой и быстрой разработки. В простых сценариях данные ограничения не являются помехой и побуждают разработчиков переходить с REST на JSON-RPC. Стоит также добавить, что:
JSON-RPC определяет сетевые ограничения, связанные с обработкой данных.
Легкая конструкция и быстрая обработка – все это подходит для инициации передачи данных с узлами Ethereum.
Будучи транспортно-независимым протоколом, JSON-RPC может использовать для взаимодействия сокеты и HTTP.
Это отличное решение для разработки решений на базе Ethereum с использованием блокчейн.
В настоящий момент предлагается 2 стандарта JSON-RPC: JSON-RPC 1.0 и JSON-RPC 2.0:
JSON-RPC 1.0 не хватает возможностей сразу по нескольким пунктам. Отсутствие названий параметров и пояснений к ошибкам вызывает куда больше проблем, чем кажется. Скорее уж, это метод для одноранговой передачи данных.
Обновленный JSON RPC 2.0 значительно доработали, заполнив ряд пробелов предыдущей версии. Версию 1.0. заменили клиент-серверной 2.0. Кроме того, в 2.0. появились транспортные зависимости.
Разумеется, со временем добавили именованные параметры. Поля урезали. Нет ID для уведомлений; в качестве ответа отправляется только результат/ошибка. В обновленной версии есть дополнительные расширения с информацией об ошибках.
Как пользоваться JSON RPC?
Главная функция протокола заключается в отправке клиентских запросов на сервер (при поддержке JSON-RPC). Здесь под клиентом мы подразумеваем общепринятые приложения, которые развертываются для получения запроса от удаленной системы на консолидированный метод.
Введенные параметры передаются удаленной системе в формате массива или объекта. В зависимости от используемой версии JSON-RPC, удаленная система будет отправлять в источник запроса разные итоговые значения.
Все веб-передачи через JSON-RPC унифицированы и сериализированы с помощью JSON. Запрос JSON-RPC – это вызов удаленного метода. Он состоит из 3 элементов:
Метод. Указывает на строку, которая будет запрашиваться при вызове метода. Существует набор зарезервированных имен с префиксом ‘rpc’ – они предназначаются для внутренних вызовов RPC.
Параметры. Второй элемент JSON-RPC (объект или массив) со значением параметра, который будет переноситься. Параметры не вызываются в каждом вызове.
ID. Целое или строковое число, которое регулярно используется для поддержания баланса между запросами и ответами. Если на запрос нет ответа, то ID автоматически удаляется.
В запросе JSON-RPC получатель обязан вернуться к проверенному ответу на каждый полученный запрос. Добавляются 3 компонента:
Результат – первая и важнейшая часть запроса, передающая данные, которые возвращает вызываемый метод. Его часто называют JSON-stat, и при ошибке он остается пустым.
Ошибка – второй компонент. Появляется, если в процессе вызова что-то идет не так. В ошибке отображаются код и сообщение.
ID ответа указывает на запрос, по которому приходит ответ. Если ответов не требуется, то JSON-RPC использует уведомление, в котором написано, что запрос был без ID. В версии 1.0 ID уведомление приходит пустым, а в версии 2.0. оно полностью отсутствует.
Плюсы от использования JSON-RPC
JSON-RPC – это довольно «умный» протокол, который предлагает своим клиентам множество плюсов:
Простая обработка
JSON-RPC намного проще, чем REST. Его легко понимают люди и машины. Здесь нет сложных команд и наборов данных, так что JSON-RPC идеально подходит для начинающих разработчиков. Этот протокол Unicode предлагает компактную командную строку. Кроме того, он способен обрабатывать данные с именованными фразами или отдельными ключевыми словами. Таким образом, JSON-RPC считается простым и понятным инструментом для работы.
Быстрое время разработки
С JSON-RPC не надо ничего придумывать. Все источники доступны и понятны. Такая простота сокращает время разработки и сроки выхода на рынок. Это самое подходящее решение для разработки приложений в сжатые сроки.
Качественный обмен информацией
JSON-RPC гарантирует своевременный, быстрый и точный обмен данными, поскольку может обрабатывать уведомления и несколько вызовов. Чтобы продолжить свою работу, ему не нужно ждать ответа от сервера или клиента. Если сделан запрос сообщения, то JSON-RPC гарантированно доставит его «адресату». Не важно, насколько сложные компоненты приложения входят в цепочку коммуникации, JSON-RPC обеспечит должный обмен информацией.
Улучшенная производительность API
С помощью JSON-RPC можно создавать API, которые не зависят от развертываемого протокола. Такая возможность крайне важна для улучшения производительности API, т.к. заменяет HTTP и TCP, а также снижает рабочую нагрузку.
Описание результатов
JSON-RPC выдает понятные результаты запроса, которые легко прочитать и обработать. Создание пакетных запросов, объяснение body в HTTP и передача параметров – все это гораздо проще реализовать через JSON-RPC.
Улучшенная передача
JSON-RPC – это очень удобный для передачи инструмент, ведь поддерживает такие платформы, как XMPP, WebSockets, SFTP, SSH и SCP. Данное разграничение позволяет разрабатывать быстрые, простые в отладке и удобные для пользователя API. Кроме того, этот протокол полностью отделяет запрошенный контент от используемого процесса передачи. А любые ошибки в запросах, данные и предупреждения передаются через полезную информацию запроса.
REST и JSON-RPC: что выбрать для разработки API?
Богатый выбор API-ресурсов – это всегда хорошо, но остановиться на каком-то одном варианте бывает не так просто. Ниже мы постараемся помочь разработчикам и объясним ключевые особенности популярных протоколов.
JSON-RPC подходит для начинающих разработчиков с ограниченным количеством ресурсов. JSON-RPC – это очень ограниченный в ресурсах протокол, который отлично выполняет свою функцию. Кроме того, если цель разработчика хоть как-то связана с технологией распределенных реестров, то единственным жизнеспособным решением станет именно JSON-RPC. С таким развертыванием не сможет справиться ни один другой протокол.
Для разработки приложений, использующих технологии распределенных реестров, требуется независимый от протокола API, и JSON-RPC отлично подходит. Он позволяет разработчикам создавать API, которые могут взаимодействовать друг с другом с помощью любого протокола.
Есть еще одна область, в которой JSON-RPC превосходит REST. В REST доступен ограниченный набор глаголов, что приводит к ошибкам при выполнении операции. При использовании REST необходимо подробно описать HTTP-метод, и на это тратится много времени. Кроме того, в REST доступны только CRUD-операции. Так что лучше отдавать предпочтение JSON-RPC.
Тем не менее JSON-RPC нельзя назвать универсальным решением для всего. Его проблема заключается во взаимозависимости. Клиенты должны быть тесно связаны с реализацией служб, поэтому вносить изменения в эту реализацию довольно сложно. При попытке изменить что-то, клиенты чаще всего ломаются.
REST решает такие задачи намного лучше. Например, API на базе REST мало того, что легко создаются, так еще и не отслеживают состояния. Этот протокол совместим с HTTP и предлагает огромное множество HTTP-библиотек. REST позволяет создавать гибкие API. Это идеальное решение для CRUD-операций.
Оба протокола имеют свои плюсы и минусы. Разработчикам необходимо принять взвешенное решение, исходя из главной цели разработки. Например, если разработчику нужны высокопроизводительные вычисления, то стоит остановиться на JSON-RPC.
Если требуется независимая разработка приложения с удобным интерфейсом, то смело выбирайте REST. Не стоит также забывать о безопасности API.
JSON-RPC, graphql, grpc
Два самых известных аналога JSON-RPC – это GraphQL и gRPC. GraphQL – это полностью адаптивная система. Она используется для точной локализации данных запроса и получения только необходимых запрашиваемых данных. Основная черта – ориентация на клиента. Сервер практически никак не участвует в веб-передаче. Клиент сам устанавливает правила для обработки запрошенных данных.
GraphQL относится к языкам запросов, а JSON-RPC относится к удаленному вызову процедур.
Еще есть gRPC – легковесный протокол с акцентом на производительность. Это обновленная версия RPC. В JSON-RPC серверы и клиенты договариваются о запрашиваемых данных, а архитектура не важна. А в gRPC, наоборот, запросы обрабатываются по готовой схеме. Этот протокол может выполняться в любой экосистеме.
JSON-RPC интегрируется с MQTT, Python и Kallithea. Для gRPC доступны такие ресурсы, как .NET, JavaScript, C++, Swift и многие другие.
Главные отличия между всеми решениями заключаются в открытости кода и удобстве для клиентов.
Мессенджер Telegram - удобное и популярное средство связи на территории РФ. Несмотря на ограничение доступа, многие юзеры продолжают пользоваться и обмениваться сообщениями в Телеграме. А кто-то пошел еще дальше и интегрирует различные системы с отличным и прозрачным API от «телеги».
Сегодня поговорим про готовый модуль интеграции с Telegram для графической оболочки FreePBX, который будет отправлять вам уведомления о пропущенных вызовах и в случае, если пользователю оставлена голосовая почта. Кстати, этот материал и модуль в очередной раз прислал наш друг Максим (BioDamage) через портал ShareIT :)
Обновление 0.1.1 - 15 августа 2018 г.:
Поддержка extensions типа SIP, PJSIP, IAX2;
Работа в группах вызовов (ring group);
Модуль протестирован на сборках FreePBX Distro (SNG7-FPBX-64bit-1805-1.iso) и на чистом Asterisk поверх Debian с отдельным web – интерфейсом FreePBX 14. Работает :)
Профит и идея
Настройка кастомных контекстов и корректировка диалплана вручную бывает сложна для новичков, которые только приступают к изучению Asterisk и используют графическую оболочку FreePBX. К тому же, большой недостаток таких интеграция, это отсутствие гибкой настройки уведомлений (кому отправлять, а кому нет, в том числе персонализированные уведомления).
Есть потребность – будет и решение. За основу был взят один из старых модулей под названием missedcallnotify человека по имени John Nurick. Скачать модуль можно по ссылке ниже:
Скачать модуль для FreePBX
Установка
Установка вполне стандартная – переходим в раздел Admin → Module Admin и нажимаем Upload modules. В следующем меню выбираем Upload (From Hard Disk), выбираем архив, который скачали по кнопке выше и загружаем:
После этого, в списке модулей находим модуль Missed Call Notifications Telegram, раскрываем описание и жмем Install:
Готово. Переходим к настройке модуля.
Настройка
Cоздаем бота в Телеграме (если его нет). Воспользуйтесь нашим пошаговым материалом по созданию бота, который доступен по ссылке ниже. Выполнив все шаги, которые указаны в пункте «Создание бота в Telegram» - возвращайтесь сюда и переходите к следующему шагу.
Создание бота
С возвращением :) В разделе Applications → Extensions, выбираем нужный нам внутренний номер и открываем его для редактирования. Во вкладке Other делаем следующее:
Уведомления - чтобы включить уведомления, выбираем Enabled, выключить - Disabled;
Токен телеграм бота - токен, который вы получили, пройдя по ссылке в начале этого раздела;
Telergram ID - ID группового чата, который вы получили, пройдя по ссылке в начале этого раздела, либо личный идентификатор;
Тест
Мы – инженеры. И, чтобы проверить модуль, мы смотрим в консоль, а не в лучезарный интерфейс Telegram :) Итак, звоним, не отвечаем на вызов:
Как тебе такое, Илон Маск?
