По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие
наши статьи:
YAML (YAML – Ain’t Markup Language, что можно перевести как "YAML – это не язык разметки"") считается языком сериализации по типу XML и JSON. Он представляет собой расширенную версию JSON, которая используется, в основном, для файлов конфигурации. Вы можете сохранить YAML-файл с расширением .yaml или .yml. Это удобочитаемый файловый формат, состоящий из пар «ключ-значение» и делающий акцент на отступы и отбивку строк. YAML активно используется в файлах конфигурации многих хорошо известных инструментов/технологий, по типу docker-compose, Kubernetes, Ansible и т.д.
Ниже приведено сравнение YAML с XML и JSON.
Теперь давайте обсудим синтаксис, типы данных и особенности YAML-файлов.
Пары «ключ-значение»
Пара «ключ-значение» – это базовая составляющая YAML. Каждый элемент в YAML-документе является членом как минимум одного словаря. Ключами чаще всего являются строки, а значением могут быть данные любого типа: число, логическое значение, строка, пустое значение, массив и объект.
name: John
age: 25
city: LA
Числа
Числа – это одни из скаляров, которые могут использоваться в качестве значения YAML-файлов. Числа бывают десятичными, с плавающей запятой, экспоненциальными, восьмеричными и шестнадцатеричными. Если добавлять их без одинарных или двойных кавычек, то они обрабатываются как строки.
decimal : 10
float : 2.5
exponential : 5.0e+12
infinity : .inf
octal : 0o12
hexadecimal : 0xF
Примечание: Будьте осторожны при представлении некоторых стандартных типов чисел (время, восьмеричные и шестнадцатеричные коды и т.д.). Они могут быть некорректно интерпретированы. Вот несколько примеров.
time : 6:00
hexval: 0x12
octval: 0o25
В этом примере время преобразуется в минуты, поэтому 6:00 интерпретируется как 360. 0x12 обрабатывается как шестнадцатеричный код, поэтому оно переводится в десятеричное значение 18, а 0o25 интерпретируется в десятеричное значение 21. Так что если вы не собираетесь использовать их в таком виде, то добавляйте эти значения в кавычках.
Примечание: Начиная со спецификации YAML 1.2, 0o представляет восьмеричные значения. В более ранних версиях для этих целей использовался 0.
Логические значения
Логические значения похожи на другие языки программирования/представления с двумя состояниями: true или false. Логическими значениями в YAML-файлах считаются не только стандартные true/false, но также yes/no и on/off (исключение: если они добавлены в кавычках).
Примечание: Следите за тем, как вы используете значения yes/no и on/off. Если добавлять их не в одинарных кавычках, то они будут интерпретироваться как логические значения true/false.
Комментарии
Вы можете комментировать содержимое YAML-файла с помощью символа #. Пример ниже:
# This a comment on the first.
# And this a commented second line.
Строки
В YAML-файле вы можете прописывать строки без кавычек. Либо добавлять их в одинарные или двойные кавычки. Можно даже пользоваться всеми тремя способами.
Если в строке содержатся специальные символы, которые нужно экранировать с помощью , то добавлять такую строку нужно в двойных кавычках. Пример:
signature: "John Williams
Sales Executive
XYZ Company LA."
Но при использовании любого из специальных символов ниже:
:, {, }, [, ], ,, &, *, #, ?, |, -, , =, !, %, @, `
не нужно ничего экранировать. Воспользуйтесь одинарными кавычками – с ними строка будет интерпретироваться как нужно.
Одиночная строка
Если вы хотите разбить одну строку на несколько строчек, но синтаксический анализатор должен будет интерпретировать их как одиночную строку, то сделайте следующее:
message: >
this is a normal string
which spans more than multiple lines
but needs to be treated
as a single line.
Начните код с символа > , а затем впишите содержимое строки в виде блока с отступами. В конце проанализированного содержимого добавляется
. Если вам не нужен символ новой строки, то воспользуйтесь символом >-.
Многострочное значение
При добавлении строки, которая разделяется на несколько строк и анализируется так же, как написана, воспользуйтесь схемой ниже.
message: |
this is a multi-line string
which spans across multiple lines
and needs to be treated
as a multi-line string.
| добавляет в конце проанализированного содержимого символ перехода на новую строку. Если вы не хотите видеть в конце проанализированного содержимого символ
, то лучше воспользуйтесь |-.
Нулевые значения
Вы можете представить нулевое значение с помощью ~ или null. Такие значения добавляются без кавычек.
foo: ~
bar: null
Массивы
В YAML значения можно представить в форме массивов/списков. Пример массива данных:
teams:
- name: Australia
rank: 3
- name: New Zealand
rank: 4
- name: England
rank: 1
- name: India
rank: 2
В примере выше представлен массив объектов с названием и рангом команды. Обязательно проверьте, что отбивка строк и отступы заданы единообразно. В противном случае, файл будет некорректным.
Каждый элемент массива обозначается через дефис -. Все элементы должны находиться на одном уровне с одинаковыми отступами.
Если вместо объектов в массиве используются примитивные элементы, то их можно представить следующим образом:
teams: [ Australia, New Zealand, England, India ]
Объекты
Объекты в YAML представляются так:
student:
name: John
age: 22
city: NY
college: NYU
gpa: 3.5
Все атрибуты внутри объекта должны находиться на одном уровне и с одинаковым отступом. Именно это условие указывает на принадлежность к одному объекту и гарантирует корректность YAML-документа.
Заключение
В данной статье вы познакомились с базовыми концепциями при работе с YAML-файлами. Разобравшись в них, вы поймете, как правильно прописывать файлы для своих собственных инструментов и технологий.
На дворе 1988 год – «Microsoft» выпустила операционную систему «MS DOS 4.0», на вершине Эвереста проведена первая в истории телетрансляция, а за окном неспешно протекает эпоха дутых, бесформенных курток :). Казалось бы, все здорово, но ребята из CCITT решают подлить масла в огонь и релизят первое описание ISDN (Integrated Services Digital Network), о котором мы и поговорим.
А что это?
В целом, ISDN это набор стандартов для передачи голоса, видео, блоков данных сети передачи данных и других сервисов по обычным каналам ТфОП (PSTN) - телефонной сети общего пользования. Одновременно. До появления Integrated Services Digital Network, телефонные системы рассматривались как инструмент передачи голоса, с некоторыми сервисами на сети.
ISDN использует временное мультиплексирование TDM (Time Division Multiplexing) и может работать с голосом и данными по одним и тем же линиям. В классических телефонных системах такого и близко не было :)
Сам по себе ISDN представляет гибрид, обеспечивая как доступ в сеть с коммутацией каналов, так и в сеть с коммутацией пакетов. Обеспечивая цифровую передачу голоса или данных, ISDN обеспечивает высокое качество передаваемых данных. По скорости: разгон до 64 кбит/с по абонентской линии и до 128 кбит/с по BRI интерфейсу в обе стороны (загрузка/передача).
В контексте семиуровневой модели OSI (Open Systems Interconnection), ISDN уютно расположился на 1, 2 и 3 уровнях (физический, канальный и сетевой). К первому уровню мы можем отнести BRI/PRI интерфейсы, то есть именно физические соединения, ко второму, протокол контроль ошибок физический линии (LAPD), а на третьем, то есть сетевом, расположился ОКС7 (SS7, Signaling System 7).
ISDN интерфейсы
Мы можем отметить следующие интерфейсы стандарта ISDN:
Basic Rate Interface (BRI) - в BRI интерфейсе существуют два B – канала, которые созданы для передачи данных и 1 D – канал, которые переносит сигнализацию. B – каналы разгоняются до 64 кбит/с, а D – канал гоняет на скорости 16 кбит/c. Кстати, B – канала живут свои жизнью независимо – например, по первому может установиться TCP/IP сессия, а по второму передаваться факс;
Более подробно про BRI можно почитать в нашей статье;
Primary Rate Interface (PRI) - слышали про Е1 - поток? ИКМ 30? Это оно и есть. Условно говоря, PRI состоит из D – сигнального канала (двух, в случае Е1) и от 23 до 30 B – каналов, или как их еще называют, тайм слотов (от TDM).;
Мы тут сравнивали PRI и SIP. Почитать можно тут :)
Broadband-ISDN (B-ISDN) - это так называемый «широкополосный ISDN». Это некое уточнение, спецификация к стандарту, которая расширяет параметры обычного ISDN. Он создан для сетевых служб, которые требуют широкую полосу пропускания;
ISDN службы
Условно, сервисы, которые отдает ISDN можно поделить на три категории:
Передача информации - если говорить прямым языком, «перенос» данных (голос, видео и данные) между пользователями. Сервис живет на нижних трех уровнях модели OSI. ISDN сможет «переносить» данные поверх сетей с коммутацией – каналов/пакетов/фреймов. В данном случае, ISDN не производит никаких манипуляций с содержимым блоков данных;
Телеслужбы - то, что живет от 4 до 7 уровня модели OSI. Вот тут, сеть может менять содержимое пакетов по определенным алгоритмам. ISDN сможет работать с телетекстом, факсом, видеоконференциями. То есть по факту, это некие данные, которые исходят от приложений;
Дополнительные услуги - голосовая почта, вторая линия прочие сервисы, которые могут строить компании поверх ISDN. И зарабатывать на этом :);
Основные принципы ISDN
Как мы сказали в начале статьи, ISDN живет по правилам, описанные CCITT (сейчас это всем известный ITU-T). Вот на чем ребята из ITU – T делают основные акценты:
Поддержка разнородных приложений в ISDN;
Поддержка не только голосовых сервисов;
Акцент на 64 кбитных коннекциях;
Интеллектуальность сети;
Распределенная по уровням архитектура ISDN (по аналогии с OSI);
Огромное разнообразие конфигурации сети;
Мессенджер 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 :) Итак, звоним, не отвечаем на вызов:
Как тебе такое, Илон Маск?