По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Мы уже рассказывали про Asterisk Manager Interface (AMI) в предыдущих статьях. Если кратко – AMI интерфейс служит для получения команд от внешних приложений на управление АТС – инициацию вызовов, например. Как правило, приложения, которые используют AMI именно внешние и подключаются с других хостов. Именно поэтому, необходимо наверняка знать – работает ли AMI корректно? Об это и поговорим. Windows: проверка Telnet Самый просто способ проверки – проверка с помощью Telnet. Нам нужно просто указать IP – адрес и порт AMI (как правило, это 5038, если не меняли) и выполнить телнет коннекцию. Проверку надежнее всего проводить с хоста, с которого будет подключаться ваше приложение, так как AMI имеет возможность фильтрации по IP; В качестве клиента мы воспользуемся Putty. Открываем клиент и указываем следующее: Host Name (or IP address) - IP – адрес вашего сервера с Asterisk; Port - 5038, стандартный порт AMI (если вы его не меняли); Connection Type - отмечаем Telnet; Выполняем подключение. Если все работает хорошо, то вы увидите следующее: Linux: проверка Telnet Если вы хотите выполнить проверку с Linux – based машины, то просто дайте следующую команду в консоли: [admin@merionet ~]# telnet 192.168.1.14 5038 Trying 192.168.1.14... Connected to localhost. Escape character is '^]'. Asterisk Call Manager/2.8.0
img
Привет! В этой статье мы рассмотрим Partitions и Calling Search Space (CSS) в Cisco Unified Communications Manager (CUCM) , которые являются частью механизма Class of Control и применяются при разграничении доступов. /p> Partitions можно рассматривать как набор маршрутов, паттернов, номеров DN, каждый из которых может принадлежать к определенным разделам. CSS же представляет собой упорядоченный список Partitions. Чтобы совершить вызов Partition вызываемой стороны должен принадлежать CSS вызывающей стороны. При попытке выполнить вызов CUCM просматривает CSS вызывающей стороны и проверяет, принадлежит ли вызываемая сторона Partition’у в CSS. Если это так, вызов направляется в Translation Pattern. Если нет, то вызов отклоняется или Translation Pattern игнорируется. Подробнее про маршрутизацию и Translation Pattern’ы можно прочить в наших статьях. Можно назначить разные CSS IP-телефонам, номерам DN, переадресации всех вызовов (Call Forwarding All – CFA), переадресации без ответа (Call Forwarding No Answer - CFNA), переадресации вызовов в случае занятости (Call Forwarding Busy - CFB), шлюзов и паттернам Translation Pattern. Разделы и CSS облегчают маршрутизацию вызовов, поскольку они делят план маршрутизации на логические подмножества на основе организации, местоположения и/или типа вызова. Чтобы лучше понять, как все это работает, рассмотрим пример. Пример использования Partitions и CSS Этот пример иллюстрирует, как можно разграничить маршрутизацию звонка между пользователями в пределах организации. Допустим, у нас имеется три группы пользователей: Стажеры (могут звонить только на внутренние номера) Работники (могут звонить на внутренние номера и совершать междугородние звонки) Руководство (могут звонить на внутренние номера, совершать междугородние и международные звонки) Для каждого направления необходимо иметь Partition: Внутренние номера –Partition_1 Междугородние звонки – Partition_2 Международные звонки – Partition_3 Эти разделы отражают все возможные направления звонков. Все телефоны (номера DN) мы поместим в раздел Partition_1 (внутренние номера). На шлюзе сконфигурировано два паттерна Route Patterns: Все звонки кроме международных (поместим в раздел Partition_2) Международные звонки (поместим в раздел Partition_3) На основании этих ограничений создаем три CSS: CSS1 содержит разделы: Partition_1 CSS2 содержит разделы: Partition_1, Partition_2 CSS3 содержит разделы: Partition_1, Partition_2, Partition_3 Настраиваем телефоны: На телефонах стажеров указываем CSS1 На телефонах работников указываем CSS2 На телефонах руководства указываем CSS3 Теперь совершим тестовые звонки с заданными настройками. Тест 1: Звонок с телефона стажера Набран внутренний номер: Вызываемый абонент: Partition_1 Разделы CSS вызывающего абонента: Partition_1 Результат: Вызов выполнится (раздел Partition_1 включен в CSS) Набран междугородний номер: Вызываемый абонент: Partition_2 Разделы CSS вызывающего абонента: Partition_1 Результат: Вызов не выполнится (раздел Partition_2 не включен в CSS) Набран международный номер: Вызываемый абонент: Partition_3 Разделы CSS вызывающего абонента: Partition_1 Результат: Вызов не выполнится (раздел Partition_3 не включен в CSS) Тест 2: Звонок с телефона работника Набран внутренний номер: Вызываемый абонент: Partition_1 Разделы CSS вызывающего абонента: Partition_1, Partition_2 Результат: Вызов выполнится (раздел Partition_1 включен в CSS) Набран междугородний номер: Вызываемый абонент: Partition_2 Разделы CSS вызывающего абонента: Partition_1, Partition_2 Результат: Вызов выполнится (раздел Partition_2 включен в CSS) Набран международный номер: Вызываемый абонент: Partition_3 Разделы CSS вызывающего абонента: Partition_1, Partition_2 Результат: Вызов не выполнится (раздел Partition_3 не включен в CSS) Тест 3: Звонок с телефона руководства Набран внутренний номер: Вызываемый абонент: Partition_1 Разделы CSS вызывающего абонента: Partition_1, Partition_2, Partition_3 Результат: Вызов выполнится (раздел Partition_1 включен в CSS) Набран междугородний номер: Вызываемый абонент: Partition_2 Разделы CSS вызывающего абонента: Partition_1, Partition_2, Partition_3 Результат: Вызов выполнится (раздел Partition_2 включен в CSS) Набран международный номер: Вызываемый абонент: Partition_3 Разделы CSS вызывающего абонента: Partition_1, Partition_2, Partition_3 Результат: Вызов выполнится (раздел Partition_3 включен в CSS) Таким образом, получается, что вызовы совершать можно, только если раздел Partition вызываемого абонента находится в CSS вызывающего. Настройка Начнем с настройки Partitions. В Cisco Call Manager Administration переходим во вкладку Call Routing → Class of Control → Partition и нажимаем Add New. Здесь в поле Name указываем название для раздела и нажимаем Save. Теперь перейдем к созданию CSS. Для этого выберем вкладку Call Routing → Class of Control → Calling Search Space. Тут указываем имя в поле Name, из поля Available Partitions перенесем в поле Selected Partitions разделы, которые должен содержать CSS. Перенос осуществляется при помощи стрелочек. После чего нажимаем кнопку Save для сохранения. После того как мы создали CSS и Partitions на наших серверах, применим их к устройствам. Рассмотрим это на примере настройки телефона. Для этого выбираем телефон, который мы хотим настроить во вкладке Device → Phone. В его настройках выбираем желаемую линию и нажимаем на нее, например Line [1] . В открывшемся окне в строке Route Partition в выпадающем списке выбираем раздел для этой линии. После этого нажимаем Save и возвращаемся назад. Теперь нам осталось применить к телефону CSS. Здесь, в настройках телефона в поле Device Information находим строчку Calling Search Space и в выпадающем меню выбираем созданный ранее CSS. Затем сохраняем и применяем настройки. Аналогично мы можем настраивать Partitions и CSS на других устройствах, паттернах и номерах.
img
Что такое API? Поскольку мы говорим про REST API, то наше определение API не будет сильно выходить за тематику сетей. Подробнее про API можно прочитать тут. API означает Application Programming Interface. API задает связь между программами для возможности передачи данных. То, что программа имеет API, подразумевает, что она передает часть своих данных для использования клиентом. Клиентом может быть фронтенд часть той же самой программы или другая внешняя программа. Для получения этих данных необходимо отправить структурированный запрос на API. Если запрос удовлетворят желаемым требованиям, то ответ, содержащий данные, будет отправлен туда откуда был сделан запрос. Обычно ответ представлен в формате JSON или XML. В некоторых случаях, для получения доступа к внешнему API, от вас может потребоваться авторизация. Каждый API имеет документацию, в которой говорится какие данные доступны и как структурировать свой запрос для получения правильного ответа. Примеры API Рассмотрим в качестве примера реальную ситуацию. Представьте посещение нового ресторана. Вы пришли, чтобы заказать еду, а поскольку вы здесь впервые, то точно не знаете какие блюда они подают. Официант дает вам меню, в котором можно выбрать, чтобы вы хотели съесть. После того, как выбор сделан, официант отправляется на кухню и приносит вам еду. В данном случае официант - это API, который обеспечивает вашу взаимосвязь с кухней. Документация API - это меню. Запрос выполняется в тот момент, когда вы отмечаете желаемые блюда, а ответ - это блюда, которые вам принесли. Что такое REST? REST означает REpresentational State Transfer (передача состояния представления). Это стандарт, который определяет форму и работу процессов, позволяющих нам взаимодействовать с данными на вебсерверах. Приведенное выше определение может выглядеть не так сложно или «профессионально», как то, что вы могли встретить в интернете, но главное, чтобы вы поняли основную цель REST API. API, который удовлетворяет некоторым или всем шести руководящим ограничениям REST считается RESTful. Мы можем взаимодействовать с серверами при помощи протокола HTTP. Благодаря этим протоколам мы можем Create (создавать), Read (читать), Update (обновлять) and Delete (удалять) данные – также известные как CRUD операции. Но каким образом мы можем выполнять CRUD операции и взаимодействовать с данными на сервере? Мы делаем это, посылая HTTP запросы, и это тот самый момент, когда REST начинает действовать. REST упрощает процесс взаимодействия с сервером, предоставляя различные HTTP методы/операции/команды, с помощью которых можно посылать запросы на сервер. Как взаимодействовать с сервером, используя REST API? Как мы уже обсуждали, REST API облегчает процесс взаимодействия с сервером, предоставляя нам различные методы HTTP запросов. Наиболее распространенные методы: GET: Метод get используется для Чтения данных с сервера. POST: Метод post используется для Создания данных. PATCH/PUT: Метод patch используется для Обновления данных. DELETE: Метод delete используется для Удаления данных. Эти методы предоставлены нам REST, что упрощает выполнение CRUD операций. Таким образом: Создать => POST Прочитать => GET Обновить => PATCH/PUT Удалить => DELETE Если мы хотим сделать запрос на сервер, например, для получения данных, то мы отправляем запрос GET на узел/источник данных на сервере. Узел данных аналогичен URL. Если запрос составлен корректно, то сервер отправит нам в ответ запрашиваемые данные. Также он отправит код состояния, где 200 - это успешное выполнение, а 400 - это ошибка пользователя. Пример запроса на JSONPlaceholder API, используя JavaScript: fetch('https://jsonplaceholder.typicode.com/todos/1') .then(response => response.json()) .then(json => console.log(json)) При выполнении запроса с использованием fetch API по умолчанию используется метод GET, поэтому мы можем не указывать его явно. Но мы должны будем это сделать при использовании других методов. В приведенном выше примере, узел данных - это https://jsonplaceholder.typicode.com, а запрашиваемые нами данные - это один элемент todo. Данные будет получены в JSON формате. Если бы мы использовали запрос POST, тогда бы мы использовали метод POST, а в теле запроса находились бы данные, которые мы создали для отправки на сервер. Для удаления нам потребуется использовать соответствующий запрос, содержащий id элемента todo, который мы хотим удалить. Например: fetch('https://jsonplaceholder.typicode.com/posts/3', { method: 'DELETE', }); Для обновления данных нужно, чтобы запрос содержал id и данные для обновления. Как в этом примере: fetch('https://jsonplaceholder.typicode.com/posts/5', { method: 'PATCH', body: JSON.stringify({ title: 'new todo', }), headers: { 'Content-type': 'application/json; charset=UTF-8', }, }) .then((response) => response.json()) .then((json) => console.log(json)); Заключение В этом руководстве вы узнали, что такое REST и как он помогает нам эффективно взаимодействовать с сервером. Мы дали определение API и рассмотрели пример, который помог объяснить его смысл. Мы также узнали некоторые методы REST для создания, чтения, обновления и удаления данных, хранящихся на сервере.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59