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

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

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


handbook:prefix

Различия

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

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

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
handbook:prefix [2016/12/01 11:57]
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 |}}\\ 
 Собственно и все, сохраняем настройки для провайдера и проверяем примененные настройки!\\ \\  Собственно и все, сохраняем настройки для провайдера и проверяем примененные настройки!\\ \\ 
Строка 13: Строка 13:
 Содержание файла "​extensions.conf"​ разбито на секции,​ в которых могут быть определены статические настройки ​ или выполняемые команды плана набора (//​контексты//​). Секции,​ предназначенные для статических настроек,​ называются **globals**,​ для этого служит поле **Manual Dialplan Global**. Соответственно поле **Manual Dialplan Incoming** отвечает за секцию,​ предназначенную для входящих звонков,​ а **Manual Dialplan Outgoing** - для исходящих звонков.\\ \\  Содержание файла "​extensions.conf"​ разбито на секции,​ в которых могут быть определены статические настройки ​ или выполняемые команды плана набора (//​контексты//​). Секции,​ предназначенные для статических настроек,​ называются **globals**,​ для этого служит поле **Manual Dialplan Global**. Соответственно поле **Manual Dialplan Incoming** отвечает за секцию,​ предназначенную для входящих звонков,​ а **Manual Dialplan Outgoing** - для исходящих звонков.\\ \\ 
 С полем Manual Dialplan Incoming разобрались,​ теперь перейдем непосредственно к строке,​ которую мы добавили в это поле, а точнее разберемся какие **//​изменения//​** мы внесли в контекст файла extensions.conf. Для начала изучим немного теории о встроенном языке Asterisk.\\ \\  С полем Manual Dialplan Incoming разобрались,​ теперь перейдем непосредственно к строке,​ которую мы добавили в это поле, а точнее разберемся какие **//​изменения//​** мы внесли в контекст файла extensions.conf. Для начала изучим немного теории о встроенном языке Asterisk.\\ \\ 
-В плане набора (extensions.conf) возможно использование переменных,​ для которых используется следующий синтаксис:​\\  ​+В плане набора (extensions.conf) возможно использование ​**переменных**, для которых используется следующий синтаксис:​\\  ​
 **${foo}**, где //foo// - имя переменной.\\ ​ **${foo}**, где //foo// - имя переменной.\\ ​
 Переменные,​ определенные пользователями,​ не являются регистрозависимыми — ${FOO} и ${Foo} ссылаются на одну и ту же переменную. Но переменные,​ которые определяются самим Asterisk, являются регистрозависимыми — переменная ${EXTEN} будет работать,​ но ${exten} — не будет. Подробнее об использовании переменных в плане набора Asterisk описано [[http://​asterisk.ru/​knowledgebase/​Asterisk+variables|здесь]].\\ \\  Переменные,​ определенные пользователями,​ не являются регистрозависимыми — ${FOO} и ${Foo} ссылаются на одну и ту же переменную. Но переменные,​ которые определяются самим Asterisk, являются регистрозависимыми — переменная ${EXTEN} будет работать,​ но ${exten} — не будет. Подробнее об использовании переменных в плане набора Asterisk описано [[http://​asterisk.ru/​knowledgebase/​Asterisk+variables|здесь]].\\ \\ 
-Список предопределенных функций и команд(устанавливаемых самим Asterisk), которые мы использовали для изменения контекста конфигурационного файла:​\\ ​+**Список предопределенных функций и команд**(устанавливаемых самим Asterisk), которые мы использовали для изменения контекста конфигурационного файла:​\\ ​
 **${CALLERID(num)}** - получение текущего значения номера из CallerID [[http://​asterisk.ru/​knowledgebase/​Asterisk+func+callerid|Описание команды CALLERID()]];​\\ ​ **${CALLERID(num)}** - получение текущего значения номера из CallerID [[http://​asterisk.ru/​knowledgebase/​Asterisk+func+callerid|Описание команды CALLERID()]];​\\ ​
 **SET()** - используется для установки значения какой-то конкретной переменной в рамках сложного выражения ​ ([[http://​asterisk.ru/​knowledgebase/​Asterisk+func+set|Синтаксис функции SET()]]);​\\ ​ **SET()** - используется для установки значения какой-то конкретной переменной в рамках сложного выражения ​ ([[http://​asterisk.ru/​knowledgebase/​Asterisk+func+set|Синтаксис функции SET()]]);​\\ ​
Строка 23: Строка 23:
 **${foo}${bar}** - соединение двух строк.\\ \\  **${foo}${bar}** - соединение двух строк.\\ \\ 
 Таким образом,​ наши изменения в контексте конфигурационного файла можно интерпретировать следующим образом:​\\ Таким образом,​ наши изменения в контексте конфигурационного файла можно интерпретировать следующим образом:​\\
-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>​\\ ​ 
-1. Получаем текущее значение входящего номера в виде строки с помощью функции CALLERID(). +1. Получаем текущее значение входящего номера в виде строки с помощью функции CALLERID().\\  
-2. Получаем первый символ данной строки (с помощью функции получения подстроки из строки).+2. Получаем первый символ данной строки (с помощью функции получения подстроки из строки).\\ 
 3. Если первый символ входящего номера равен "​7",​ то устанавливаем текущему значению входящего номера новый номер, начинающийся с "​8"​. Новый номер формируется соединением двух строк: "​8"​ и номером текущего входящего номера без "​7"​ (//​8${CALLERID(num):​1}//​). 3. Если первый символ входящего номера равен "​7",​ то устанавливаем текущему значению входящего номера новый номер, начинающийся с "​8"​. Новый номер формируется соединением двух строк: "​8"​ и номером текущего входящего номера без "​7"​ (//​8${CALLERID(num):​1}//​).
  
handbook/prefix.1480593421.txt.gz · Последние изменения: 2016/12/01 11:57 — tpor