По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие
наши статьи:
Группы вызовов (звонящие группы) – это объединенные под едиными правилами телефонные аппараты. Такой функционал очень удобен, когда вызов необходимо распределить между определенным пулом телефонов по заранее настроенным правилам. Например, вы хотите чтобы 2 телефона звонили одновременно при входящем звонке, или звонили поочередно – эта настройка реализуется с помощью ринг – групп. На номер группы можно позвонить с офисного IP – телефона, что делает ее функционал еще более удобным.
Необходимые настройки
Для создания ринг-группы в Elastix необходимо открыть следующую вкладку:
PBX → PBX Configuration → Ring Groups. Вы автоматически попадёте в окно создания новой ринг-группы (скриншот ниже).
Производим настройку следующих параметров:
Ring-Group Number - Название ринг-группы
Group description – описание, например «sales»
Ring Strategy – важный пункт, так как он определяет алгоритм обзвона ринг-группы, их описания в конце статьи;
Ring Time – количественная характеристика в секундах, определяет сколько по времени будет идти вызов на данную группу
Extension list – список экстеншенов, на которые будет маршрутизироваться вызов. Важный момент – кроме непосредственно экстеншенов сюда можно добавить любые номера, которые настроены в исходящих маршрутах, но если номер не является экстеншеном, после него необходимо поставить # (решётку) – к примеру, 89162998979#.
Так же рассмотрим остальные поля:
Extension Quick Pick – инструмент для добавления экстеншенов в список, экстеншен добавится в конец списка.
Announcement – голосовое или музыкальное приветствие в случае попадания вызова в данную группу
Play Music on Hold – включение или выключение MoH (мелодия на удержании вызова)
CID Name Prefix - описательный префикс, который будет высвечиваться при звонке на внутренние телефоны, к примеру: Sales:Igor Zamochnikov
Ignore CF Settings – экстеншены, которые будут совершать попытку перевести поступающий вызов будут проигнорированы, включается галочкой.
Skip Busy Agent – вызов будет пропускать экстеншен, который в данный момент участвует в разговоре
Enable Call Pickup – возможность «поднять» вызов с использованием номера ринг-группы
Одним из достаточно интересных параметров так же является Confirm Calls – подтверждение вызовов удаленной стороной по нажатию единицы – до момента нажатия разговор не начнется. Опция доступна только для стратегии ringall.
Remote Announce – сообщение, которое будет проигрываться принимающей стороне если включена опция Confirm Calls
Too-Late Announce – сообщение, которое будет проигрываться принимающей стороне, если она взяла трубку до нажатия на 1. Так же используется только вместе с включенной опцией подтверждения вызова.
Call Recording - Включение записи разговоров в данной ринг-группе
Destination if no answer – в данном примере по истечению таймаута вызов будет сброшен.
Ниже приведен пример настроенной ринг-группы:
После этого необходимо нажать Submit Changes и Apply Config.
Нужно иметь в виду – номер ринг-группы становится практически тем же номером экстеншена, но с некоторым ограничениями. То есть на этот номер можно будет позвонить с телефона, указать его как цель в IVR и так далее. Теперь давайте разберемся с параметрами распределения вызовов внутри самой группы:
ringall: Вызов поступает на все номера, указанные в настройках ринг-группы одновременно (настройка по умолчанию)
hunt: Вызов поочередно проходит через каждый номер
memoryhunt: Вызов начинается с первого номера в списке, затем звонит 1й и 2й, затем 1й, 2й и 3й, и так далее.
*-prim: Режимы с данной припиской работают, как и описанные выше, с одним отличием – если первый номер в списке занят, вызов прекратится
firstavailable: вызов поступает на первый незанятый канал
firstnotonphone: вызов поступает на первый телефон, на котором не снята трубка
random: Вызов поступает на указанные номера с определенным приоритетом так, чтобы вызовы распределялись относительно равномерно. Имитирует очередь (Queue) в те моменты, когда очередь не может быть использована.
Сегодня хотим предложить крутой функционал, который тебе захочется установить на своей 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}
Готово. Сохраняем настройки и переходим к тестам:
API расшифровывается как Application Programming Interface (программный интерфейс приложения). Что же это такое?
По сути, это описание способов взаимодействия между программами, как они могут общаться и передавать данные друг другу.
Рассмотрим пример из жизни:
Приходя в ресторан вы взаимодействуйте с официантом - можете попросить меню, сделать заказ, попросить принести счет. Официант является интерфейсом вашего взаимодействия с рестораном - вам не нужно знать о том как готовится еда, ингредиенты, как рассчитывать чек, все это сделает ресторан, и отдаст вам результаты при помощи официанта, который в этом примере представляет собой API ресторана. От вас скрываются сложные детали и просто происходит общение между двумя системами - клиентом и рестораном.
Вернемся к компьютерам. Предположим, что у нашей платформы доступного айти образования Merion Academy есть интерфейс работы с клиентами - тот самый API, в котором есть определенные функции, куда можно отправить какой - то запрос, и получить ответ. Представим, что у нашего API есть функция вернуть список курсов по Linux, на которые сейчас действует скидка 50% - в такой случае браузер должен сделать запрос к нашему API на получение такого списка курсов, а ответ получить эти данные и отрисовать на странице.
Важно учесть, что API интерфейсы не всемогущи - вы получите только те функции, которые заложил разработчик. Например, если помимо курсов по Linux со скидкой 50% вы захотите еще получить прогноз погоды в селе “Добрые Пчёлы” - то сорри, наш API пока так не умеет. Для добавления каждой такой новой функции программист должен разработать ее.
API состоит из двух частей: это сам интерфейс взаимодействия, скажем так некий мост, портал, окно, а вторая часть - это его описание, которое отвечает на вопрос “а как этой штукой то пользоваться?”
Взаимодействие может быть не только между клиентом и сервером, как в примере с нашей ИТ платформой, но и между серверами. Представьте: решили вы полететь в солнечный Дубай, купили билетик на сайте, а он вам еще и погоду показывает. Как же так! Неужели у компании по продаже билетов еще и метеорологические датчики по всему миру стоят, которые сообщают о погоде? Конечно нет - сайт с билетами взаимодействует с каким - то сервисом погоды по API, который как раз занимается погодными данными. А сайт с билетиками еще и скорее всего платит за каждый запрос небольшую денюжку.
Кстати, API может быть не только у веб - сервисов, где общение происходит по протоколу HTTP. API есть и у операционных систем, для взаимодействия с самой операционкой и железом. Например, если вы создаете свой аналог инстаграма, то для работы с камерой на устройстве вам нужно взаимодействовать с API системы, которая уже знает как работать с камерой, а не придумывать что-то самому с нуля, да еще и для миллиона разных устройств.
API действительно делает жизнь разработчика удобнее, а чтобы работа с API не превратилась в бардак, оно стандартизировано. Самый популярный, это конечно же REST API, но перед тем как перейти к нему, скажем пару слов про SOAP (Service Object Access Protocol), который появился несколько раньше и описывал правила синтаксиса для сообщений запросов и ответов, отправляемых веб-приложениями. Подробнее про SOAP - тут.
Ну и все, кто поддерживал SOAP должны были обмениваться XML-сообщениями между системами через HTTP или SMTP. XML (Extensible Markup Language), он же расширяемый язык разметки - это формат для хранения и передачи данных, в котором данные размещены в тегах, что делает их легко читаемыми как для компьютера, так и для человека.
Развиваясь, люди перешли на REST, который в отличии от SOAP не является протоколом, а является архитектурным стилем. В SOAP приходилось писать в разы больше кода и заворачивать каждое сообщение в XML.
REST же делает данные доступными в качестве ресурсов, которые представлены уникальным URL-адресом, и можно запросить этот ресурс, указав его URL-адрес. Например чтобы посмотреть свои подписки на ютубе нужно выполнить запрос на вот такой адрес https://www.youtube.com/feed/subscriptions.
Веб-API, соответствующие стандартам подхода REST, называются RESTful API. Они используют различные HTTP-запросы для работы с ресурсами, такие как GET - запрос, который используется для получения информации или POST, который в свою очередь нужен для отправки данных.
RESTful системы поддерживают обмен сообщениями в различных форматах, таких как самый обычный текст, HTML формат, YAML, XML и JSON, в то время как SOAP разрешает только XML, как мы и сказали ранее. Самый популярный это конечно JavaScript Object Notation, он же JSON - простой и универсальный формат, который содержит в себе набор пар ключ:значение.
Также хотим сказать про штуку, которая называется gRPC (Remote Procedure Calls) которая в основном используется для связи между разными сервисами и работает очень быстро благодаря тому что тут используется протокол HTTP/2 который работает гораздо быстрее засчет всяких новинок вроде сжатия хедеров, а вместо JSON или XML используется формат Protocol Buffers (protobuf), который работает быстрее и потребляет меньше ресурсов при работе с ним. Работает все это настолько быстро, что можно делать вызов к функции на другом сервере с такой же скоростью, как если бы она находилась на нашем. Подробнее про gRPC и Protobuf - тут
Ну и не можем не сказать про модный GraphQL - это язык запросов для API который позволяет указывать точные данные, которые ему нужны, и упрощает получение и склейку данных из нескольких источников, поэтому разработчик может использовать один вызов API для запроса всех необходимых ему данных.