По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Спешим поделиться тем, как с помощью IP-АТС Asterisk можно провести двусторонний видео - звонок. В качестве терминалов, которые будут участвовать в данном соединении, мы выбрали программный open - sourсe клиент IP-телефонии на базе протокола SIP - Linphone (Linux Phone) версии 3.10.2 для Windows и приложение Linphone для Android версии 3.1.1. Настройки произведем с помощью графического интерфейса FreePBX 13. Конфигурация FreePBX Приступим к настройке. Для начала необходимо создать на сервере два внутренних номера (Extension). Важно: обязательно создавайте номера с типом CHAN_SIP. Теперь новым внутренним номерам нужно включить поддержку видео. Для этого переходим во вкладку Advanced: И напротив строки Video Support выбираем Yes. Такую процедуру проделываем для всех номеров, которым хотим разрешить пользоваться видео - вызовами. Теперь необходимо включить глобальную поддержку видео. Для этого переходим по следующему пути: Settings -> Asterisk SIP Settings и открываем вкладку Chan SIP Settings: По умолчанию, в разделе Video Codecs поддержка видео отключена. Для того, чтобы её выключить, нажимаем Enabled: Откроется список поддерживаемых видео кодеков. По умолчанию, Asterisk поддерживает следующие кодеки: H.261, mpeg4, H.263, H.263+, H.264 и последний кодек, который мы будем использовать далее - VP8. Чтобы исключить возможные проблемы с подключением SIP-терминалов в дальнейшем, можно изменить ещё один параметр. Дело в том, что практически все SIP-терминалы используют 5060 порт для отправки запросов регистрации, а в FreePBX 13 для технологии CHAN_SIP используется порт 5160, соответственно, на этапе регистрации Endpoint’а могут возникнуть проблемы. Что бы этого избежать, в строке Bind Port поставим 5060. Не забудьте предварительно поменять порт для CHAN_PJSIP, может возникнуть внутренний конфликт. На этом настройка FreePBX завершена, теперь необходимо настраивать терминалы. Настройка видео - терминалов Как было сказано в начале, для теста будем использовать Linphone (Linux Phone) версии 3.10.2. После установки дистрибутива, нас встречает помощник настройки учётной записи SIP: Вводим данные для ранее созданного внутреннего номера, например - 1022, и жмём Применить. Если всё было сделано верно, то мы увидим наш полный идентификатор и зелёный круг, свидетельствующий о том, что регистрация была успешной. Далее переходим в настройки, выбираем требуемые параметры видео (разрешение и частоту кадров) В разделе кодеки, следует обязательно убедиться в том, что кодек VP8 – разрешен к использованию. На этом настройка десктопного клиента для Windows закончена. Теперь сконфигурируем Linphone Android клиент. После установки приложения, нужно выбрать USE SIP ACCOUNT Ввести данные учетной записи в соответствии с данными, которые мы вводили на сервере. В качестве транспорт укажите UDP. В разделе Settings устанавливаем требуемые параметры по видео (разрешение, частоту кадров, максимальную пропускную способность) и обязательно разрешаем использование кодека VP8. Если всё было сделано правильно, то мы увидим статус Registered. Софтфон готов к использованию. Теперь можно проводить вызовы с трансляцией видео. Набираем номер нужного абонента и жмём на значок трубки. Нажав на значок Видео начнётся двусторонняя видеотрансляция. Ниже пример как это выглядит на десктопной версии: И пример того, как это выглядит в мобильном приложении:
img
В данной статье рассмотрим ещё один полезный модуль из базового функционала FreePBX 13 - Set CallerID. Данный модуль позволяет влиять на идентификатор вызывающего абонента (CID- СallerID) в рамках процесса установления вызова. Например, если у вас несколько провайдеров по-разному отдают CallerID, в данном модуле можно привести их к общему виду для корректного отображения в CDR или добавить к определенным входящим звонкам уникальный префикс. Пошаговое видео Настройка модуля Set CID Перейдём к настройке. Традиционно, для всех примеров, будем использовать FreePBX версии 13. Для того, чтобы попасть в модуль Set CallerID, с главной страницы, переходим по следующему пути: Applications -> Set CallerID. По умолчанию, данная вкладка пустая, нажимаем на кнопку Add Откроется следующее окно добавления нового CID, в котором необходимо заполнить следующие пункты. Рассмотрим подробнее каждый из пунктов: Description - Предлагается ввести описательное название нового CID, которое поможет определить его назначение. Например: “Sales CID” CallerID Name - Здесь настраивается на что будет заменено имя звонящего (caller ID name). Если предполагается изменение текущего имени, то необходимо включить соответствующие переменные. Если же оставить данное поле пустым, то имя звонящего останется пустым. CallerID Number - Здесь настраивается на что будет заменён номер звонящего (caller ID number). Если предполагается изменение текущего номера, то необходимо включить соответствующие переменные. Если же оставить данное поле пустым, то номер звонящего останется пустым. Destination - Здесь выбирается назначение для продолжения звонка. Звонок будет перенаправлен по данному назначению с новыми именем и номером (CallerID Name/ Number) Пример модификации Caller ID Name Давайте рассмотрим несколько примеров, чтобы понять, как работает данный модуль, а заодно и принципы работы с переменными. Допустим, мы хотим добавить некий префикс к номерам, которые маршрутизируются с нашего IVR. Мы знаем, что на нашем IVR настроен маршрут для соединения с отделом продаж по клавише “3” и хотим, чтобы у всех звонков, отправленных по данному маршруту был префикс “Sales” перед номером. Для этого, сначала создаём новый шаблон в модуле. В поле Description пишем “Sales CID” В поле CallerID Name пишем “Sales:” перед ${CALLERID(name)}, это действие и добавляет необходимый префикс. Поле CallerID Number оставляем без изменений Наконец, в поле Destination, выбираем назначение для данного шаблона – внутренний номер менеджера по продажам (7771 Sales Manager) Не забываем нажимать Submit и Apply Config Далее, отправляемся в модуль IVR и настраиваем соответствующее правило. Готово, теперь все абоненты, попавшие на IVR и нажавшие клавишу “3” на телефоне, попадут на менеджера по продажам, но их номера на дисплее телефона менеджера, будут иметь префикс “Sales”, так менеджер поймёт, что звонок поступил с IVR. Если Вы хотите подробнее ознакомиться с возможностями модуля IVR, прочитайте нашу соответствующую статью о настройке модуля IVR во FreePBX 13. Пример модификации Caller ID Number Рассмотрим другой пример. Допустим, наш провайдер отдаёт нам callerID в формате 8ХХХХХХХХХХ. Но звонить в город мы должны через префикс “9”. Если нам придёт звонок с номера 8ХХХХХХХХХХ, мы должны будем сначала набрать “9”, чтобы дозвониться. Данную задачу можно решить с помощью модуля Set CallerID. Создадим новый шаблон. В поле Description пишем “Outbound Prefix 9” Поле CallerID Name оставляем без изменений В CallerID Number Наконец, в поле Destination, выбираем назначение для данного шаблона, например ринг-группа - (4543 Managers) Готово, теперь, при поступлении внешнего звонка на ринг-группу Managers, к номеру звонящего автоматически будет добавлен необходимый префикс “9”, таким образом, все участники из ринг-группы, смогут очень просто сразу вызвать абонента заново. Если Вы хотите побольше узнать о группах вызова, прочитайте нашу соответствующую статью о настройке модуля Ring Groups во FreePBX 13. Синтаксис Обобщим все вышесказанное и сведем в таблицу принципы формирования переменных: Пример Описание ${переменная:n} убирает одну цифру спереди. Например, если звонок приходит вам с Caller ID Number +74951234567, то запись вида ${CALLERID(num):1} преобразует его в 74951234567 ${переменная:-n} тоже самое, только цифры буду удаляться с конца. Например, при записи ${CALLERID(num):-2} номер +74951234567 будет преобразован в +749512345 ${переменная:s:n} Данную запись следуют интерпретировать так: начиная с символа s удалить n символов. Например, запись вида ${CALLERID(num):3:2} преобразует номер +74951234567 в +741234567
img
Если Вы наконец поняли, что повсюду окружены контейнерами и обнаружили, что они решают массу проблем и имеют много преимуществ: Контейнеры вездесущи - ОС, версии библиотек, конфигурации, папки и приложения помещаются в контейнер. Вы гарантируете, что та же самая задача, которая была протестирована в QA, достигнет производственной среды с таким же поведением. Контейнеры упрощены - объем памяти контейнера невелик. Вместо сотен или тысяч мегабайт контейнер будет выделять память только для основного процесса. Контейнеры быстрые - Вы можете запустить контейнер для начала работы так же быстро, как типичный процесс Linux. Вместо минут можно запустить новый контейнер за несколько секунд. Тем не менее, многие пользователи по-прежнему относятся к контейнерам так же, как к типичным виртуальным машинам, и забывают про важную характеристику: они одноразовые. Мантра о контейнерах: “Контейнеры эфемерны”. Эта характеристика заставляет пользователей поменять свое мышление относительно того, как они должны обращаться с контейнерами и управлять ими; и я объясню, чего НЕ следует делать, чтобы продолжать извлекать наилучшие преимущества контейнеров. 10 вещей, которых следует избегать в Docker контейнерах Не хранить данные в контейнерах - контейнер может быть остановлен, удален или заменен. Приложение версии 1.0, работающее в контейнере, может быть легко заменено версией 1.1 без какого-либо неблагоприятного воздействия или потери данных. Поэтому, если нужно сохранить данные, сделайте это на диске. В этом случае следует также позаботиться о том, чтобы два контейнера записывали данные на один и тот же диск, что может привести к повреждению. Убедитесь, что приложения могут записывать данные в хранилище объектов. Не разделять свое приложение на две части - так как некоторые люди видят контейнеры в роли виртуальной машин и поэтому большинство из них склонны думать, что они должны применять свое приложение только в существующих работающих контейнерах. Это может быть справедливо на этапе разработки, на котором Вам необходимо непрерывно разрабатывать и налаживать процесс; но для непрерывной доставки (CD) в QA и производства, Ваше приложение должно быть частью образа. Помните: Контейнеры нельзя изменить. Не создавать большие образы - большой образ будет труднее распространить. Убедитесь в наличии только необходимых файлов и библиотек для запуска приложения/процесса. Не устанавливайте ненужные пакеты и не запускайте обновления (yum update), которые загружают много файлов на новый слой образы. Не использовать однослойный образ - чтобы эффективно пользоваться многоуровневой файловой системой, всегда создавайте собственный базовый слой образы для операционной системы, а также другой слой для определения имени пользователя, слой для установки во время выполнения, слой для конфигурации и, наконец, слой для приложения. Будет проще воссоздать образ, управлять им и использовать его. Не создавать образы из запущенных контейнеров - другими словами, не используйте слово docker commit для создания образа. Этот способ не приносит пользы, и его следует полностью избегать. Всегда используйте полностью воспроизводимый Dockerfile или любой другой S2I (от источника к изображению) подход, и Вы можете отследить изменения в Dockerfile, если сохранить его в хранилище системы управления версиями (git). Не использовать latest (последний) тег – он подобен SNAPSHOT для пользователей Maven. Метки подключаются из-за слоистой файловой природы контейнеров. Вы ведь не хотите иметь сюрпризы при построении образа несколько месяцев, а потом выяснить, что приложение не может быть запущено, так как родительский слой (из-за Dockerfile) был заменен новой версией, которая не является обратно совместимой, или из кэша сборки была получена неправильная "последняя" версия. Тега latest также следует избегать при применении контейнеров в производстве, так как невозможно отследить, какая версия образа выполняется. Не выполнять более одного процесса в одном контейнере - контейнеры идеально подходят для выполнения лишь одного процесса (HTTP, сервер приложений, база данных), но если имеется более одного процесса, могут возникнуть дополнительные проблемы с управлением, извлечением журналов и обновлением их по отдельности. Не хранить учетные данные в виде образов. Используйте переменные среды, ведь для этого не требуется жестко кодировать имя пользователя/пароль в образе. Используйте переменные среды для получения этой информации вне контейнера. Отличный пример этого принципа - образ Постгреса. Не запускать процессы от имени пользователя root - "По умолчанию docker контейнеры выполняются от имени пользователя root. По мере «взросления» docker контейнеров могут стать доступны секретные по умолчанию параметры. На данный момент требуемый root опасен для других и может быть доступен не во всех средах. Ваш образ должен использовать инструкцию USER, чтобы указать пользователя, не являющегося root, для контейнеров, которые будут запускаться". Не полагайтесь на IP-адреса - каждый контейнер имеет свой собственный внутренний IP-адрес, и он может измениться, если вы запустите и остановите контейнер. Если приложению или микросервису требуется связь с другим контейнером, используйте переменные среды для передачи соответствующего имени хоста и порта из одного контейнера в другой.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59