По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Сегодня хотим предложить крутой функционал, который тебе захочется установить на своей IP – АТС Asterisk прямо сейчас! Речь пойдет про отправку записи разговора на адрес электронной почты со всеми причитающимися метаданными звонка. Работает это примерно вот так: ваш сотрудник поговорил по телефону, положил трубку, после чего, ответственному по электронной почте приходит письмо с записью разговора, датой и временем звонка, а также номерами А и Б. Настроить эту «фичу» очень легко. Приступаем к настройке. Bash скрипт для Asterisk Сам по себе скрипт написан на bash. Скрипт будет инициироваться сразу после окончания звонка и в него будут переданы нужные для работы переменные. Но об этом чуть позже: #!/bin/bash dt=$(date '+%m/%d/%Y %r'); echo -e "Привет! Появилась новая запись разговоров на нашем сервере Asterisk Звонок был совершен $dt Нам позвонил этот номер - $5 Вызов принял - $7 Запись разговора во вложении " | mail -a /var/spool/asterisk/monitor/$1/$2/$3/$6 -s "Новая запись разговоров" info@merionet.ru Пробежимся по переменным, которые будут относится к звонку и будут передаваться (все кроме $dt) с Asterisk: $1 - год звонка; $2 - месяц звонка; $3 - день звонка; $4 - дата и время в формате строки; $5 - источник звонка (звонящий); $6 - имя файла аудио – записи разговора; $7 - куда был совершен вызов; $dt - генерируем дату звонка; Переходим в консоль сервера Asterisk. Первым делом создаем файл с расширением .sh в него мы поместим наш скрипт: touch /var/lib/asterisk/bin/rectoemail.sh Даем файлу нужные права и разрешения: chown asterisk:asterisk rectoemail.sh chmod 774 rectoemail.sh Теперь открываем сам файл скрипта для редактирования: vim /var/lib/asterisk/bin/rectoemail.sh И добавляем скрипт в файл. Для того, чтобы сделать это, скопируйте скрипт из статьи. В режиме редактирования через vim нажмите «o» на клавиатуре, затем нажмите правую кнопку мыши – скрипт будет добавлен в файл. После этого, нажмите Esc на клавиатуре и комбинацию :x! + Enter для сохранения изменений. Готово. Доработка в FreePBX Теперь нужно поставить наш скрипт на автоматический запуск. Переходим в раздел Settings → Advanced Settings. Убеждаемся, что параметры Display Readonly Settings и Override Readonly Settings установлены в значение Yes. Теперь находим параметр Post Call Recording Script и добавляем в его поле следующую строчку: bash /var/lib/asterisk/bin/rectoemail.sh ^{YEAR} ^{MONTH} ^{DAY} ^{TIMESTR} ^{FROMEXTEN} ^{CALLFILENAME}.^{MIXMON_FORMAT} ^{ARG3} Готово. Сохраняем настройки и переходим к тестам:
img
Когда администратор является единственным администратором АТС, то проблем с выяснением причин кто и что сломал не возникает, так как административный аккаунт один и им пользуется только один человек. А вот когда администраторов много, да ещё необходимо разграничивать права доступа в зависимости от выполняемых обязанностей, тогда как раз и встает вопрос о персональных аккаунтах для администраторов. Для этого можно создавать как персональные профайлы (под единичные доступы), так и групповые (например, для сотрудников, выполняющих ограниченные функции – проверка состояния транков, создание абонентов, настройка Call Center и так далее). Стоит заметить, что первые 19 профайлов являются системными и их менять или удалять не стоит. Для новых профайлов следует использовать номера с 20. Выполнение в терминале или консоли GEDI Для начала надо создать новый профайл командой: add user-profile-by-category НОМЕР или add user-profile НОМЕР В открывшемся окне выставляем параметры, которые нам необходимы. User Profile Name – имя профайла. Служит для идентификации уровня доступа (имя пользователя или имя группы пользователей, для которых и создается данный профайл). Shell Access? – разрешен ли данному профайлу доступ в командную строку системы В терминале это выглядит так: А в консоли GEDI это будет немного поудобнее, тем более, что выставление параметров можно выполнять при помощи мыши, при этом по нажатию правой кнопки показывается подсказка по значениям в конкретном поле: На первой странице выставляются общие (групповые для функций) права на доступ. Более детальные разрешения выставляются на последующих страницах. Однако без выставления прав на группу нельзя выставить права на функцию, входящую в эту группу. Например, нельзя разрешить настраивать абонентов или транки, не разрешив при этом группу Maintenance (G) на первой странице. Но можно разрешить доступ только к абонентам, но запретив доступ к транкам. Чтобы не открывать все группы, можно найти необходимую функцию, посмотреть в какую группу (категорию) входит данная функция и на первой странице разрешить именно эту группу. Разрешение r позволяет только просматривать без возможности создания или внесение изменений в настройки. Разрешение w дополнительно позволяет ещё и создавать, изменять и удалять настройки. Разрешение m позволяет выполнять дополнительные действия по обслуживанию (трассировки, включение/выключение абонентов или транков и так далее) Обычно создают профайл для полного доступа администраторов (с включением всех групп (категорий) и правами доступа wm) и профайлы с ограниченным доступом для других пользователей, выполняющих некоторое задачи (например, 1-линия для создания абонентов, служба мониторинга для просмотра статусов абонентов или транков и так далее). После установки всей настроек сохраняем настройки путем нажатия F3 в терминале или Enter (F3) в консоли GEDI. Выполняется в web-браузере Подключаемся к Avaya Communication Manager по IP-адресу, заходим под учетной записью dadmin (если она у нас единственная) или под учетной записью «полного» администратора (если ранее был создан такой аккаунт). Далее Administration → Server (Maintenace) → Security → Administrator Accounts → Add Login и создаем уже сами аккаунты: Сначала выбираем уровень доступа. В зависимости от выбранного уровня предоставляются разные права, не настраиваемые в профайле. Вот пример предоставляемых прав для 2-х администраторов: Для уровня «полного» администратора выбираем Privileged Administrator. Login name – создаваемый логин, по которому будет осуществляться авторизация. Additional groups (profile) – в выпадающем списке выбираем созданный ранее профайл. Enter password or key – вводим пароль для входа. Re-enter password or key – подтверждаем введенный ранее пароль. Как правило пользователь должен сам создавать и помнить свои пароли, поэтому Force password/key change on next login – отмечаем в Yes. Тогда при первом входе пользователю будет предложено для продолжения работы сменить пароль на новый. Далее подтверждаем введенные данные Submit. Для добавления доступа к Web-настройкам созданный ранее профайл надо добавить через Administration → Server (Maintenace) → Security → Web Access Mask. Нажимаем Add, потом вводим номер нашего созданного профайла и выбираем какую маску доступа будем применять или сразу будем применять все включено/выключено. После сохранения убеждаемся, что вновь добавленная маска применилась, выбираем её, заходим в нее нажав Change и проверяем/добавляем/удаляем необходимые настройки. Далее заходим под созданной учетной записью и проверяем уровень доступа по доступным командам. После проверки полного доступа рекомендуется сменить пароль для учетной записи dadmin и не выдавать этот логин никому. Дальше в логах на СМ мы можем просмотреть историю входов, введенных команд и выполненных действий по каждому логину.
img
gRPC — это мощная платформа для работы с удаленными вызовами процедур (Remote Procedure Calls). RPC позволят писать код так, как будто он будет выполняться на локальном компьютере, даже если он может выполняться на другом компьютере. Что такое RPC? RPC — это форма взаимодействия клиент-сервер, в которой используется вызов функции, а не обычный вызов HTTP. Идея в том, что мы можем вызвать и выполнить функцию где-то на удаленной системе, как если бы это была локальная функция. Он использует IDL (Interface Definition Language - язык описания интерфейса) как форму контракта на вызываемые функции и тип данных. RPC — это протокол "запрос-ответ", т.е. он следует модели "клиент-сервер": Клиент делает запрос на выполнение процедуры на удаленном сервере. Как и при синхронном локальном вызове, клиент приостанавливается до тех пор, пока не будут возвращены результаты процедуры. Параметры процедуры передаются по сети на сторону сервера. Процедура выполняется на сервере и, наконец, результаты передаются обратно клиенту. gRPC воспроизводит этот архитектурный стиль взаимодействия клиент-сервер через вызовы функций. Таким образом, gRPC технически не является новой концепцией. Скорее, он был заимствован из этой старой техники и улучшен, что сделало ее очень популярной. Что такое gRPC? В 2015 году Google открыл исходный код своего проекта, который в конечном итоге получил название gRPC. Но что на самом деле означает буква «g» в gRPC? Многие люди могут предположить, что это для Google, потому что Google это сделал, но это не так. Google меняет значение «g» для каждой версии до такой степени, что они даже сделали README, чтобы перечислить все значения. С момента появления gRPC он приобрел довольно большую популярность, и многие компании используют его. Есть много причин, по которым gRPC так популярен: простая абстракция, он поддерживается во многих языках и он очень эффективный. И помимо всех вышеперечисленных причин, gRPC популярен потому, что очень популярны микросервисы и имеется большое количество взаимодействий между ними. Именно здесь gRPC помогает больше всего, предоставляя поддержку и возможности для решения типичных проблем, возникающих в таких ситуациях. А поскольку разные сервисы могут быть написаны на разных языках, gRPC поставляется с несколькими библиотеками для их поддержки. Архитектура gRPC Мы сказали что производительность gRPC очень высока, но что делает ее такой хорошей? Что делает gRPC намного лучше, чем RPC, если их дизайн очень похож? Вот несколько ключевых отличий, которые делают gRPC столь эффективным. HTTP/2 HTTP был с нами очень долго. Сейчас почти все серверные службы используют этот протокол. HTTP/1.1 долгое время оставался актуальным, затем в 2015 году, появился HTTP/2, который фактически заменил HTTP/1.1 как самый популярный транспортный протокол в Интернете. Если вы помните, что 2015 год был также годом выхода gRPC, и это было вовсе не совпадение. HTTP/2 также был создан Google для использования gRPC в его архитектуре. HTTP/2 — одна из важных причин, почему gRPC может работать так хорошо. И в следующем разделе вы поймете, почему. Мультиплексирование запроса/ответа В традиционном протоколе HTTP невозможно отправить несколько запросов или получить несколько ответов вместе в одном соединении. Для каждого из них необходимо создать новое соединение. Такой вид мультиплексирования запроса/ответа стал возможен в HTTP/2 благодаря введению нового уровня HTTP/2, называемого binary framing. Этот двоичный уровень инкапсулирует и кодирует данные. На этом уровне HTTP-запрос/ответ разбивается на кадры (они же фреймы). Фрейм заголовков (HEADERS frame) содержит типичную информацию заголовков HTTP, а фрейм данных (DATA frame) содержит полезные данные. Используя этот механизм, можно получить данные из нескольких запросов в одном соединении. Это позволяет получать полезные данные из нескольких запросов с одним и тем же заголовком, тем самым идентифицируя их как один запрос. Сжатие заголовка Вы могли столкнуться со многими случаями, когда заголовки HTTP даже больше, чем полезная нагрузка. И HTTP/2 имеет очень интересную стратегию под названием HPack для решения этой проблемы. Во-первых, все в HTTP/2 кодируется перед отправкой, включая заголовки. Это помогает повысить производительность, но это не самое важное в сжатии заголовков. HTTP/2 сопоставляет заголовок как на стороне клиента, так и на стороне сервера. Из этого HTTP/2 может узнать, содержит ли заголовок одно и то же значение, и отправляет значение заголовка только в том случае, если оно отличается от предыдущего заголовка. Как видно на картинке выше, запрос № 2 отправит только новый путь, так как другие значения точно такие же как и были. И да, это значительно сокращает размер полезной нагрузки и, в свою очередь, еще больше повышает производительность HTTP/2. Что такое Protocol Buffer (Protobuf)? Protobuf — это наиболее часто используемый IDL для gRPC. Здесь вы храните свои данные и функциональные контракты в виде так называемого прото-файла. По сути это протокол сериализации данных, такой как JSON или XML. Выглядит это так: message Person { required string name = 1; required int32 id = 2; optional string email = 3; } Так мы определили сообщение Person с полями name, id и email Поскольку это форма контракта то и клиент, и сервер должны иметь один и тот же прото-файл. Файл proto действует как промежуточный контракт для клиента, чтобы вызвать любые доступные функции с сервера. Protobuf также имеет собственные механизмы, в отличие от обычного REST API, который просто отправляет строки JSON в виде байтов. Эти механизмы позволяют значительно уменьшить полезную нагрузку и повысить производительность. Что еще может предложить gRPC? Метаданные Вместо обычного заголовка HTTP-запроса в gRPC есть то, что называется метаданными (Metadata). Метаданные — это тип данных «ключ-значение», которые можно установить как на стороне клиента, так и на стороне сервера. Заголовок может быть назначен со стороны клиента, в то время как серверы могут назначать заголовок и трейлеры, если они оба представлены в виде метаданных. Потоковая передача Потоковая передача (Streaming) — это одна из основных концепций gRPC, когда в одном запросе может выполняться несколько действий. Это стало возможным благодаря упомянутой ранее возможности мультиплексирования HTTP/2. Существует несколько видов потоковой передачи: Server Streaming RPC: когда клиент отправляет один запрос, а сервер может отправить несколько ответов. Например, когда клиент отправляет запрос на домашнюю страницу со списком из нескольких элементов, сервер может отправлять ответы по отдельности, позволяя клиенту использовать отложенную загрузку. Client Streaming RPC: когда клиент отправляет несколько запросов, а сервер отправляет обратно только один ответ. Например, zip/chunk, загруженный клиентом. Bidirectional Streaming RPC: клиент и сервер одновременно отправляют сообщения друг другу, не дожидаясь ответа. Перехватчики gRPC поддерживает использование перехватчиков для своего запроса/ответа. Они перехватывают сообщения и позволяют вам изменять их. Это звучит знакомо? Если вы работали с HTTP-процессами в REST API, перехватчики очень похожи на middleware (оно же промежуточное ПО). Библиотеки gRPC обычно поддерживают перехватчики и обеспечивают простую реализацию. Перехватчики обычно используются для: Изменения запроса/ответа перед передачей. Это можно использовать для предоставления обязательной информации перед отправкой на клиент/сервер. Позволяет вам манипулировать каждым вызовом функции, например, добавлять дополнительные логи для отслеживания времени отклика. Балансировки нагрузки Если вы еще не знакомы с балансировкой нагрузки, это механизм, который позволяет распределять клиентские запросы по нескольким серверам. Но балансировка нагрузки обычно делается на уровне прокси (например, nginx). Так причем это здесь? Дело в том, что gRPC поддерживает метод балансировки нагрузки клиентом. Он уже реализован в библиотеке Golang и может быть легко использован. Хотя это может показаться какой-то магией, это не так. Там есть что-то типа преобразователя DNS для получения списка IP-адресов и алгоритм балансировки нагрузки под капотом. Отмена вызова Клиенты gRPC могут отменить вызов gRPC, когда им больше не нужен ответ. Однако откат на стороне сервера невозможен. Эта функция особенно полезна для потоковой передачи на стороне сервера, когда может поступать несколько запросов к серверу. Библиотека gRPC оснащена шаблоном метода наблюдателя, чтобы узнать, отменен ли запрос, и позволить ей отменить несколько соответствующих запросов одновременно.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59