Внимание! Документация к новой MikoPBX доступна по ссылке

Инструменты пользователя

Инструменты сайта


handbook:prefix

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Следующая версия
Предыдущая версия
handbook:prefix [2016/12/01 09:38]
tpor создано
handbook:prefix [2016/12/05 14:43] (текущий)
tpor
Строка 1: Строка 1:
-====== Обработка входящих и исходящих вызовов. Файл extensions.conf ======+====== Обработка входящих вызовов. Файл extensions.conf ======
  
-Часто возникает необходимость переопределения формата входящих/​исходящих номеров,​ например,​ заменить префикс входящего звонка от некоторого провайдера с "​7"​ на "​8"​.//  +Часто возникает необходимость переопределения формата входящих номеров,​ например,​ заменить префикс входящего звонка от некоторого провайдера с "​7"​ на "​8"​.\\  
-Предположим,​ у нас есть две объединенные АТС Askozia, условно обозначим их АТС ​и АТС ​(статьи по объединению двух АТС: [[https://​www.askozia.ru/​blogs/​askozia/​askozia-to-combine-the-two-offices/​|Объединение двух станций Askozia]][[http://​blog.telefon1c.ru/​soiediniaiem-mypbx-u100-s-askozia/​|Соединяем MyPBX U100 c Askozia]]). Необходимо,​ чтобы АТС ​принимала входящие звонки от АТС ​с префиксом "7". Для этого выполним следующие действия:​\\  +Предположим,​ у нас есть две объединенные АТС Askozia, условно обозначим их АТС ​Москва ​и АТС ​Питер ​(статьи по объединению двух АТС: [[https://​www.askozia.ru/​blogs/​askozia/​askozia-to-combine-the-two-offices/​|Объединение двух станций Askozia]] ​и [[http://​blog.telefon1c.ru/​soiediniaiem-mypbx-u100-s-askozia/​|Соединяем MyPBX U100 c Askozia]]).\\ Необходимо,​ чтобы АТС ​Питер ​принимала входящие звонки от АТС ​Москва ​с префиксом "8". Для этого выполним следующие действия:​\\  
-1. Вводим IP адрес АТС ​в браузере,​ переходим в **Учетные записи** -> **Провайдеры** и открываем для редактирования провайдер для АТС ​N.\\ +1. Вводим IP адрес АТС ​Питер  ​в браузере,​ переходим в **Учетные записи** -> **Провайдеры** и открываем для редактирования провайдер для АТС ​Москва.\\ 
 2. Переходим в **Дополнительно**,​ находим текстовое поле **Manual Dialplan Incoming** и вставляем в него следующую строчку:​\\ ​ 2. Переходим в **Дополнительно**,​ находим текстовое поле **Manual Dialplan Incoming** и вставляем в него следующую строчку:​\\ ​
-ExecIf($[${CALLERID(num):​0:​1}=7]?​Set(CALLERID(num)=8${CALLERID(num):​1}))\\  +<​code>​ExecIf($[${CALLERID(num):​0:​1}=7]?​Set(CALLERID(num)=8${CALLERID(num):​1}))</​code>​\\  
-{{ :​handbook:​2016-12-01_114017.png?​direct |}}\\ \\ +{{ :​handbook:​2016-12-01_114017.png?​direct |}}\\  
 +Собственно и все, сохраняем настройки для провайдера и проверяем примененные настройки!\\ \\  
 +Давайте же теперь разберемся,​ что мы все-таки сделали!\\ \\  
 +Вы наверное заметили комментарий под полем **Manual Dialplan Incoming**: "//​Изменения будут добавлены в текущий контекст файла extensions.conf//"​.\\  
 +**Extensions.conf** - это один из самых важных конфигурационных файлов. В нем определяется обработка и маршрутизация входящих и исходящих вызовов. Этот файл управляет поведением всех соединений проходящих через Вашу АТС.\\ \\   
 +Содержание файла "​extensions.conf"​ разбито на секции,​ в которых могут быть определены статические настройки ​ или выполняемые команды плана набора (//​контексты//​). Секции,​ предназначенные для статических настроек,​ называются **globals**,​ для этого служит поле **Manual Dialplan Global**. Соответственно поле **Manual Dialplan Incoming** отвечает за секцию,​ предназначенную для входящих звонков,​ а **Manual Dialplan Outgoing** - для исходящих звонков.\\ \\  
 +С полем Manual Dialplan Incoming разобрались,​ теперь перейдем непосредственно к строке,​ которую мы добавили в это поле, а точнее разберемся какие **//​изменения//​** мы внесли в контекст файла extensions.conf. Для начала изучим немного теории о встроенном языке Asterisk.\\ \\  
 +В плане набора (extensions.conf) возможно использование **переменных**,​ для которых используется следующий синтаксис:​\\ ​  
 +**${foo}**, где //foo// - имя переменной.\\  
 +Переменные,​ определенные пользователями,​ не являются регистрозависимыми — ${FOO} и ${Foo} ссылаются на одну и ту же переменную. Но переменные,​ которые определяются самим Asterisk, являются регистрозависимыми — переменная ${EXTEN} будет работать,​ но ${exten} — не будет. Подробнее об использовании переменных в плане набора Asterisk описано [[http://​asterisk.ru/​knowledgebase/​Asterisk+variables|здесь]].\\ \\  
 +**Список предопределенных функций и команд**(устанавливаемых самим Asterisk), которые мы использовали для изменения контекста конфигурационного файла:​\\  
 +**${CALLERID(num)}** - получение текущего значения номера из CallerID [[http://​asterisk.ru/​knowledgebase/​Asterisk+func+callerid|Описание команды CALLERID()]];​\\  
 +**SET()** - используется для установки значения какой-то конкретной переменной в рамках сложного выражения ​ ([[http://​asterisk.ru/​knowledgebase/​Asterisk+func+set|Синтаксис функции SET()]]);\\  
 +**ExecIf** - выполнение внешней программы по заданному условию;​\\  
 +**${foo:​offset:​length}** - возвращает подстроку строки foo, начиная со смещения offset и ограничивая возвращаемую строку размером в length символов [[http://​asterisk.ru/​knowledgebase/​Asterisk+variables|Функции для работы со строками]];​\\  
 +**${foo}${bar}** - соединение двух строк.\\ \\  
 +Таким образом,​ наши изменения в контексте конфигурационного файла можно интерпретировать следующим образом:​\\ 
 +<​code>​ExecIf($[${CALLERID(num):​0:​1}=7]?​Set(CALLERID(num)=8${CALLERID(num):​1}))</​code>​\\  
 +1. Получаем текущее значение входящего номера в виде строки с помощью функции CALLERID().\\  
 +2. Получаем первый символ данной строки (с помощью функции получения подстроки из строки).\\  
 +3. Если первый символ входящего номера равен "​7",​ то устанавливаем текущему значению входящего номера новый номер, начинающийся с "​8"​. Новый номер формируется соединением двух строк: "​8"​ и номером текущего входящего номера без "​7"​ (//​8${CALLERID(num):​1}//​). 
 + 
  
-Собственно и все, сохраняем настройки для провайдера и проверяем примененные настройки.\\ ​ 
-Давайте же теперь разберемся,​ что мы все-таки сделали.\\ ​ 
-Вы наверное заметили комментарий под полем **Manual Dialplan Incoming**: "//​Изменения будут добавлены в текущий контекст файла extensions.conf//"​. Это один из самых важных конфигурационных файлов. В нем определяется обработка и маршрутизация входящих и исходящих вызовов. Этот файл управляет поведением всех соединений проходящих через Вашу АТС.// ​ 
-Содержание файла "​extensions.conf"​ разбито на секции,​ в которых могут быть определены статические настройки и определения или выполняемые команды плана набора,​ в этом случае они называются контекстами. Секции,​ предназначенные для статических настроек,​ называются general и **globals**,​ для этого служит поле **Manual Dialplan Global**. Каждая секция в файле extensions.conf начинается со строки с именем секции,​ заключенного в квадратные скобки. Это делает файл extensions.conf,​ по формату,​ похожим на традиционные .ini файлы в системе Windows.\\ ​ 
-Соответственно поле **Manual Dialplan Incoming** отвечает за секцию,​ предназначенную для входящих звонков,​ а **Manual Dialplan Outgoing** - для исходящих звонков. 
  
  
handbook/prefix.1480585081.txt.gz · Последние изменения: 2016/12/01 09:38 — tpor