По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Все мы любим компьютеры. Они могут делать столько удивительных вещей. За пару десятилетий компьютеры произвели самую настоящую революцию почти во всех аспектах человеческой жизни. Они могут справляться с задачами различной степени сложности, просто переворачивая нули и единицы. Просто удивительно, как такое простое действие может привести к такому уровню сложности. Но я уверен, что вы все знаете, что такой сложности нельзя добиться (практически нельзя) простым случайным переворачиванием чисел. Но за этим стоит определенные логические рассуждения. Есть правила, которые определяют, как это все должно происходить. В данной статье мы обсудим эти правила и увидим, как они управляют «мышлением» компьютера. Что такое булева алгебра? Это правила, о которых я упоминал выше, описываются некой областью математики, называемой булевой алгеброй. В своей книге 1854 года британский математик Джордж Буль предложил использовать систематический набор правил для работы со значениями истинности. Эти правила положили математическую основу для работы с логическими высказываниями. А эти основы привели к развитию булевой алгебры. Для того, чтобы понять, что из себя представляет булева алгебра, сначала мы должны понять сходства и различия между ней и другими формами алгебры. Алгебра в целом занимается изучением математических символов и операций, которые можно выполнять над этими символами. Эти символы сами по себе ничего не значат. Они обозначают некую величину. Именно эти величины и придают ценность этим символам, и именно с этими величинами и выполняются операции. Булева алгебра также имеет дело с символами и правилами, позволяющими выполнять различные операции над этими символами. Разница заключается в том, что эти символы что-то значат. В случае обычной алгебры символы обозначают действительные числа. А в булевой алгебре они обозначают значения истинности. На рисунке ниже представлен весь набор действительных чисел. Набор действительных чисел включает натуральные числа (1, 2, 3, 4, …), положительные целые числа (все натуральные числа и 0), целые числа (…, -2, -1, 0, 1, 2, 3, …) и т.д. Обычная алгебра имеет дело со всем этим набором чисел. Для сравнения, значения истинности состоят из набора, который включает в себя только два значения: True и False. Здесь я хотел бы отметить, что мы можем использовать любые другие символы для обозначения этих значений. Например, в информатике, как правило, эти значения обозначают через 0 и 1 (0 используется в качестве False, 1 – в качестве True). Вы также можете сделать это более оригинальным способом, обозначая значения истинности какими-то другими символами, например, кошки и собаки или бананы и апельсины. Суть здесь в том, что смысл этих значений останется неизменным, как бы вы их не обозначили. Но убедитесь, что вы не меняете символы в процессе выполнения операций. Теперь вопрос в том, что если (True и False), (0 и 1) – это просто обозначения, то что же они пытаются обозначить? Смысл, лежащий в основе значений истинности, исходит из области логики, где значения истинности используются для того, чтобы определить, является ли высказывание «Истинным» (True) или «Ложным» (False). Здесь значения истинности обозначают соответствие высказывания истине, то есть показывают, является ли высказывание истинным или ложным. Высказывание – это просто некоторое утверждение, что-то вроде «Все кошки милые». Если приведенное выше высказывание верно, то мы присваиваем ему значение истинности «Истина» (True) или «1», в противном случае мы присваиваем ему значение истинности «Ложь» (False) или «0». В цифровой электронике значения истинности используются для обозначения состояний электронных схем «включено» и «выключено». Подробнее об этом мы поговорим позже в этой же статье. Логические операции и таблицы истинности Как и в обычной алгебре, в булевой алгебре также можно применять операции к значениям для получения некоторых результатов. Однако эти операции не похожи на операции в обычной алгебре, поскольку, как мы уже упоминали ранее, булева алгебра работает со значениями истинности, а не с действительными числами. В булевой алгебре есть три основные операции. OR: OR или "ИЛИ", также известная как дизъюнкция. Эта операция выполняется над двумя логическими переменными. Результатом операции OR будет 0, если оба операнда равны 0, иначе будет 1. Для того, чтобы более наглядно продемонстрировать принцип работы этой операции, визуализируем ее с помощью таблицы истинности. Таблицы истинности дают нам хорошее представление о том, как работают логические операции. Также это удобный инструмент для выполнения логических операций. Операция OR: Переменная 1 Переменная 2 Результат 0 0 0 0 1 1 1 0 1 1 1 1 AND: AND или "И", также известная как конъюнкция. Эта операция выполняется над двумя логическими переменными. Результатом операции AND будет 1, если оба операнда равны 1, иначе будет 0. Таблица истинности выглядит следующим образом. Операция AND: Переменная 1 Переменная 2 Результат 0 0 0 0 1 0 1 0 0 1 1 1 NOT: NOT или "НЕ", также известное как отрицание. Эта операция выполняется только над одной переменной. Если значение переменной равно 1, то результатом этой операции будет 0, и наоборот, если значение переменной равно 0, то результатом операции будет 1. Операция NOT: Переменная 1 Результат 0 1 1 0 Булева алгебра и цифровые схемы Булева алгебра после своего появления очень долго оставалась одним из тех понятий в математике, которые не имели какого-то значительного практического применения. В 1930-х годах Клод Шеннон, американский математик, обнаружил, что булеву алгебру можно использовать в схемах, где двоичные переменные могут обозначать сигналы «низкого» и «высокого» напряжения или состояния «включено» и «выключено». Эта простая идея создания схем с помощью булевой алгебры привела к развитию цифровой электроники, которая внесла большой вклад в разработку схем для компьютеров. Цифровые схемы реализуют булеву алгебру при помощи логических элементов – схем, обозначающих логическую операцию. Например, элемент OR будет обозначать операцию OR. То же самое относится и к элементам AND и NOT. Наряду с основными логическими элементами существуют и логические элементы, которые можно создать путем комбинирования основных логических элементов. NAND: элемент NAND, или "И-НЕ", образован комбинацией элементов NOT и AND. Элемент NAND дает на выходе 0, если на обоих входах 1, в противном случае – 1. Элемент NAND обладает свойством функциональной полноты. Это означает, что любая логическая функция может быть реализована только с помощью элементов NAND. Элемент NAND: Вход 1 Вход 2 Результат 0 0 1 0 1 1 1 0 1 1 1 0 NOR: элемент NOR, или "ИЛИ-НЕ", образован комбинацией элементов NOT и OR. Элемент NOR дает на выходе 1, если на обоих входах 0, в противном случае – 0. Элемент NOR, как и элемент NAND, обладает свойством функциональной полноты. Это означает, что любая логическая функция может быть реализована только с помощью элементов NOR. Элемент NOR: Вход 1 Вход 2 Результат 0 0 1 0 1 0 1 0 0 1 1 0 Большинство цифровых схем построены с использованием элементов NAND и NOR из-за их функциональной полноты, а также из-за простоты изготовления. Помимо элементов, рассмотренных выше, существуют также особые элементы, которые служат для определенных целей. Вот они: XOR: элемент XOR, или "исключающее ИЛИ", - это особый тип логических элементов, который дает на выходе 0, если оба входа равны 0 или 1, в противном случае – 1. Элемент XOR: Вход 1 Вход 2 Результат 0 0 0 0 1 1 1 0 1 1 1 0 XNOR: элемент XNOR, или "исключающее ИЛИ-НЕ", - это особый тип логических элементов, который дает на выходе 1, когда оба входа равны 0 или 1, в противном случае – 0. Элемент XNOR: Вход 1 Вход 2 Результат 0 0 1 0 1 0 1 0 0 1 1 1 Заключение Итак, на этом мы можем закончить обсуждение булевой алгебры. Надеюсь, что к текущему моменту у вас сложилась неплохая картина того, что же такое булева алгебра. Это, конечно, далеко не все, что вам следует знать о булевой алгебре. В ней есть множество понятий и деталей, которые мы не обсудили в данной статье.
img
Для присоединения к другим телефонным станциям, в SoftX3000 создаются транковые группы разных типов. Для начала рассмотрим порядок создания SIP-транка, который чаще всего используется для подключения небольших АТС предприятий УПАТС. Для начала следует определиться с правилами нумерации транков и сопутствующих записей внутри нашей АТС. Например, пусть SIP-транки будут иметь нумерацию с 1 по 100, транки ОКС-7 со 101 п 199. В рамках одного транка все команды и записи удобно будет вести с одним номером, чтобы было проще ориентироваться в настройках позже. ADD OFC этой командой создаем направление. Здесь параметры имеют следующее назначение: Office direction number порядковый номер направления. На этот номер будем ссылаться в других команда и таблицах. Office direction name название направления. Для удобства идентификации можно указать любое название. Peer office type тип удаленной станции, может принимать значения: PBX - УПАТС СС местная сельская АТС CMPX местная городская и сельская АТС NATT междугородная АТС INTT международная АТС Peer office level - уровень противоположной станции по отношению к текущей. Значения: HIGH выше текущей станции SAME одного уровня LOW ниже текущей ADD SRT создаем подмаршрут, который будет привязан непосредственно к транку. Можно создать несколько подмаршрутов и объединить их в один маршрут: при проблемах с первым подмаршрутом в списке станция будет пытаться использовать следующий. Параметры команды: Sub-route number порядковый номер подмаршрута. Можно установить любой свободный номер, но предпочтительнее, чтобы он совпадал с номером OFC, заданный в предыдущей команде. Office direction number номер OFC, который задан в предыдущей команде. Sub-route name название подмаршрута любое удобное название. ADD RT создаем маршрут, в котором указываем один или несколько подмаршрутов, созданных предыдущей командой. Если указано несколько подмаршрутов, станция будет пытаться использовать первый в списке, если он не доступен, то следующий по списку. Параметры команды: Route number порядковый номер маршрута. Любое число, но, по договоренности, устанавливаем то же значение, что и в командах ранее. Route name произвольное название. 1 st sub-route первый подмаршрут. Указываем номер подмаршрута, созданного в предыдущей команде. Остальные параметры необходимы, если создано несколько подмаршрутов и необходимо настроить параметры выбора между ними. ADD RTANA правило выбора маршрута. Эта таблица определяет по какому маршруту будет направлен вызов, основываясь на многочисленных параметрах вызова, среди которых: категория абонента, тип А-номера, дополнительный атрибут абонента прочие. Параметры команды: Route selection code код выбора маршрута. На этот код ссылается запись в таблице префиксов CNACLD Route selection source code этот код является одним из параметров callsrc. Caller category категория абонента, задается при создании абонента в командах ADD VSBR или ADD MSBR. Caller category категория абонента, устанавливается в командах ADD VSBR или ADD MSBR в параметре Subscriber type. Так же можно применить данное свойство для транзитных вызовов, задав категорию в команде ADD CNACLR. Service attribute указывает, какие типы вызовов могут использовать данный маршрут (INTT - международные, NATT - междугородные, CITY - местные, ALL - любые) Caller access если необходимо, чтобы маршрут могли выбрать только абоненты ISDN, выбрать ISDN, если только не ISDN-абоненты, то NONISDN. Transmission capability тип поддерживаемого трафика (голос, данные, видео и прочее) Time index временной индекс. Если в станции используется маршрутизация по временным меткам. Если не используется, устанавливается значение по-умолчанию 0. Route number номер маршрута, который задан в команде ADD RT. Signaling as prior приоритет выбора подмаршрута в соответствии с типом сигнализации. Nature of callee address indicator тип вызываемого номера (International, National, Subscriber, ALL) Customized caller type дополнительный параметр абонента, который задается в командах ADD VSBR или ADD MSBR (Customized subscriber type) Called number Plan identity план нумерации вызываемого номера. Чтобы вызов прошел по данному маршруту, должны совпасть все условия. Чтобы какое-то условие игнорировалось при выборе маршрута, необходимо установить значение в ALL или значение по-умолчанию. Применение Пример 1 Допустим, у нас есть направление OFC=1, на которое ссылается подмаршрут SRT=1, на который, в свою очередь, ссылается маршрут RT=1. Допустим, это присоединение УПАТС, и все вызовы на это направление с любых источников должны проходить без ограничений. В таком случае создадим правило RTANA со следующими параметрами: В данном случае: Route selection code = 1 код выбора маршрута, который нужно указать в команде ADD CNACLD Route number указание на созданный ранее маршрут RT=1 Route selection source code параметр, задаваемый в callsrc. Значение остальных параметров установлены так, что при их любом значении вызов будет смаршрутизирован. Пример 2 Допустим, направление из предыдущего примера является выходом на оператора междугородной связи и доступ к нему могут получать лишь те абоненты, которые заключили с ним договор. Эти абоненты имеют отличительный признак - Customized subscriber type=8. В таком случае устанавливаем в параметре Customized caller type значение CUST8, и абоненты, у которых этот параметр отличается от CUST8 не смогут использовать данный маршрут. По такому же принципу работает ограничение и по другим параметрам. Пример 3 Если ограничивающие параметры не применимы для вызова (например, Customized subscriber type невозможно задать для вызовов, приходящих с другого транка), то и ограничения данных вызовов не произойдет. Чтобы ограничить транзитные вызовы со входящих транков, необходимо создать дополнительный callsource и задать в нем произвольный Route selection source code, отличный от значения по-умолчанию: Теперь, если мы назначим входящем транку созданный callsrc, то сможем применять Route selection source code для маршрутизации, указывая его в команде RTANA. Пример 4 Так же мы можем создать несколько правил RTANA с одним и тем же Route selection code, но разными параметрами, как в примере ниже: Здесь приведено правило RTANA для звонков на междугородные направления, а выбора маршрута осуществляется в зависимости от различных параметров вызова (в частности, Caller category и Customize subscriber type). ADD SIPTG создает транк-группу, в которой задается количество каналов, код источника вызова (для входящих вызовов), и номер подмаршрута, к которому привязана транк-группа. Trunk group number порядковый номер транк-группы Call source code код источника вызова, используется для маршрутизации входящих вызовов Sub-route number номер подмаршрута, указываем созданный ранее подмаршрут Maximum caller number restriction максимальное количество вызовов в транке. При достижении этого количества вызовов в транке, все последующие вызовы отбрасываются. Stop call restriction при снижении количества вызовов до числа, указанного в этой команде, ограничение вызовов, сработавшее по предыдущему параметру, снимается ADD SIPIPPAIR задает параметры непосредственного стыка с противоположным оборудованием (ip-адрес удаленной станции, локальный порт для приема сигнализации) Trunk group number порядковый номер транк-группы, указываем номер из предыдущей команды IFMI module number номер модуля IFMI в системе, можно узнать, дав команду LST BRD Local server port порт приема сигнализации SIP Remote URI 1 ip-адрес противоположной станции. Если sip-транк настраивается через SBC, здесь указывается loopback-интерфейс, который назначен транку.` ADD CNACLD этой командой задается префикс выхода на созданную транк-группу. Local DN set номер Local DN set, в которой будет находится префикс набора. Как правило, в станции только один Local DN set, указываем его номер Call prefix префикс набора, по которому вызовы будут направляться в созданное нами направление Service attribute тип исходящего вызова, принимает значения: LCO (Intra-officce) внутренние вызовы станции, LC (Local), LCT (Local toll) местные, NTT (National toll) междугородные (федеральные), ITT (International toll) международные, EMC экстренные вызовы. Route selection code код выбора маршрута, номер, указанный в команде RTANA. Minimum number length минимальная длина номера по данному префиксу Maximum number length максимальная длина номера по данному префиксу Charging selection code код источника тарификации. Настройка SIP -транка в пограничном контроллере сессий Huawei SE 2200 Общие правила настройки sip-транка в SBC Interface LoopBack 1 интерфейс, который указываем в SoftX3000 как противоположную станцию description test - trunk справочное название интерфейса ip address 192.168.33.1 255.255.255.255 адрес созданного интерфейса Interface LoopBack 2 интерфейс, который указываем в противоположной станции как адрес SoftX3000 description test - trunk справочное название интерфейса ip address 192.168.44.1 255.255.255.255 адрес созданного интерфейса acl number 3011 создаем список доступа rule 0 permit ip source 192168.55.1 0 разрешаем трафик от адреса противоположной станции rule 5 permit ip source 192.168.22.0 0.0.0.255 разрешаем трафик от SoftX3000 и сопутствующего оборудования (в этой сети, вероятно, так же будет UMG и прочее оборудование в составе SoftX3000) rule 10 deny ip запретить все прочие адреса Выше обозначенная группа команд необходима для обеспечения безопасности, на нашей сети используются другие методы и эти команды не используются и не проверялись автором. Здесь они приведены для полной информации о правильной последовательности настройки. sbc wellknowport clientaddr 192.168.33.1 sip 5060 разрешаем прием сигнализации SIP по порту 5060 на адресе 192.168.33.1 (от SoftX3000) sbc wellknowport clientaddr 192.168.44.1 sip 5060 разрешаем прием сигнализации SIP по порту 5060 на адресе 192.168.44.1 (от противоположной станции) sbc wellknowport softxaddr 192.168.22.1 sip 5060 обозначаем адрес SoftX3000. (Если SBC уже настроен ранее и работает, данная команда уже, вероятно, есть в конфигурации) sbc mapgroup intercom - ip 1001 создаем mapgroup в сторону SoftX3000 description == test - trunk == - справочное название clientaddr 192.168.44.1 адрес в сторону противоположной станции match acl 3011 проверка адресов согласно списка acl 3011 serveraddr 192.168.33.1 адрес в сторону SoftX softxaddr 192.168.22.1 - адрес SoftX3000 media - clientaddr 192.168.44.1 адрес в сторону противоположной станции media - serveraddr 192.168.33.1 адрес в сторону SoftX enable команда на активацию mapgroup sbc mapgroup intercom - ip 1002 создаем mapgroup в сторону противоположной станции description ==test-trunk== clientaddr 192.168.33.1 адрес в сторону SoftX match acl 3011 - проверка адресов согласно списка acl 3011 serveraddr 192.168.44.1 адрес в сторону противоположной станции softxaddr 192.168.55.1 - адрес противоположной станции media - clientaddr 192.168.33.1 адрес в сторону SoftX media - serveraddr 192.168.44.1 адрес в сторону противоположной станции enable команда на активацию mapgroup
img
Сегодня хотим поговорить про модуль «Web Callback» для FreePBX 13. Модуль является платным и стоит $50. Платеж единоразовый. В сравнении с популярными сервисами обратного звонка, покупка модуля окупается в среднем за полгода. Интересно? Тогда читайте ниже: настройка и адаптация стиля под свой сайт. Процесс настройки Данный модуль находится в меню Applications. Он позволяет легко и просто добавить HTML “Позвоните Мне” код на ваш веб-сайт. Посетители просто вводят свой телефонный номер для соединения с нужной вам очередью или ринг-группой. Далее, этот модуль позволяет выставить префикс для поступающего номера, что позволит определить, что вызов идет именно с модуля обратного звонка. Так же можно указать правила набора номера, для определения номеров, на которые можно совершить вызов. Как только вы установите направление для вызова и подтвердите настройки модуля, вы получите HTML-код для добавления на вашу страницу. Итак, пошаговый процесс создания кода для помещения на веб-страницу: Нажмите на + Add Web Callback Заполните поля: Описание полей: Name – Название коллбэка CID Prepend – Префикс при определении номера, в данном случае – «CALLBACK» Number Prepend – Префикс при наборе номера Dial Matches – Маска, для определения номеров, которые можно набирать Icon – Выбор иконки из предложенных Valid Message – Сообщение, которое высвечивается при правильном наборе Invalid Message – Сообщение, которое высвечивается при неправильном наборе Error Message – Сообщение, которое высвечивается, если произошла какая-либо ошибка Destination – Направление вызова, в данном случае – ринг-группа с названием “web callback” HTML Code – Код, который появится после сохранения настроек Нажмите Submit Далее нужно только добавить получившийся код на сайт и пользоваться. Только надо учитывать два момента: первый – данный модуль надо купить у Shmooze и иметь публичный адрес вашей АТС/или пробрасывать порты. Изменения стиля формы обратного звонка После того как мы создали форму обратного звонка на сайт, нам необходимо доработать ее внешне, так как встроенные формы имеют не привлекательный дизайн. Открываем файл /etc/schmooze/wcb.html и добавляем в него следующий код: <style type="text/css"> #frame { background-image: url('/admin/images/webcallback.png'); background-repeat: no-repeat; background-size: 200px; height: 65px; cursor: pointer; cursor: hand; } #webcallbackinput { position: relative; left: 66px; top: 30px; width: 125px; } </style> <div id="frame"> <input type="text" name="num" placeholder="Укажите ваш номер" id="webcallbackinput" value=""> <input type="hidden" id="dest" value="http://1.2.3.4:12345/wcb.php"> <input type="hidden" id="i" value="1"> </div> <div id="link"></div> <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script> <script type="text/javascript"> $(document).ready(function(){ $('#frame').click(function(){ if ($('#webcallbackinput').val()) { var valid_msg = 'Спасибо. Мы уже звоним Вам!'; var invalid_msg = 'Ошибка. Пожалуйста, укажите все параметры согласно требованию полей'; var but = $(this); $.ajax({ url: $('#dest').val(), type: 'post', data: {p: $('#webcallbackinput').val(), i: $('#i').val()}, cache: false, success: function(data, b, c) { data = $.parseJSON(data); switch (data.Response) { case 'Error': switch (data.Message) { case 'Originate failed': alert(invalid_msg); break; default: alert(data.Message); break; } break; case 'Success': alert(valid_msg); break; default: break; } }, error: function(a, b, c) { alert(invalid_msg); } }) } }) }); </script> Обратите внимание, чтобы форма работала корректно, вам необходимо указать корректное значение параметра value в поле input ниже (это значение было сгенерировано на этапе настройки в поле) и значение параметр id в поле, следующем следом за ним. В нашем примере, id=2: <input type="hidden" id="dest" value="http://1.2.3.4:12345/wcb.php"> <input type="hidden" id="i" value="1"> В данном примере указано значение http://1.2.3.4:12345/wcb.php , где значение 1.2.3.4 – внешний IP – адрес нашего маршрутизатора, а 12345 – это проброс нестандартного порта в наш Asterisk. Рекомендуем в настройках проброшенного порта указать разрешенные сети (source address), с которых можно подключиться через этот порт. Это необходимо в целях безопасности, если ваш Web – сервер находится не в локальной сети, а например, на хостинге Так же здесь вы можете настроить сообщения, которые будут показаны пользователю при успешном и неуспешном исходе вызова обратного звонка var valid_msg = 'Спасибо. Мы уже звоним Вам!'; var invalid_msg = 'Ошибка. Пожалуйста, укажите все параметры согласно требованию полей ';
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59