# Приложения диалпланов

**Приложения диалпланов** - это программируемые голосовые приложения на PHP и Asterisk Dialplan.\
MikoPBX поставляется с несколькими предварительно сконфигурированными приложениями. С некоторыми базовыми знаниями планов набора Asterisk можно легко создавать дополнительные приложения. Как и учетная запись телефона, приложения могут иметь внутренний номер, присвоенный в настройках.&#x20;

Ниже вы увидите описание базовых приложений, включенных в MikoPBX:

<figure><img src="https://3704471835-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MPK4TuzRBnP7rt8htho-887967055%2Fuploads%2FMvTDgWwzcfzPO2Dd1QgL%2F1.png?alt=media&#x26;token=6f198701-f69e-4be3-b251-60f2907bdbf7" alt=""><figcaption><p>Встроенные приложения диалпланов</p></figcaption></figure>

| Номер приложения | Описание приложения                                                                                                                                                                                                      |
| ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| 000063           | Приложение считывает внутренний номер сотрудника, используемое для вызова приложения, и озвучивает его сотруднику, т.е. сотруднику озвучивается его внутренний номер на АТС                                              |
| 000064           | **0000MILLI** - Генерирует постоянный звуковой сигнал частотой 1000 Гц. Используется для проверки качества соединения.                                                                                                   |
| 10003246         | Приложение **Echo** посылает полученные аудиосигналы обратно пользователю, чтобы можно было определить длительность задержки. В общем, Вы слышите, что Вы говорите. Приложение в основном используется для тестирования. |

## Создание приложений <a href="#sozdanie_prilozhenij" id="sozdanie_prilozhenij"></a>

Приложения MikoPBX создаются из нескольких планов набора Asterisk приложений. В системе есть много примеров готовых к выполнению приложений. Для добавления нового приложения MikoPBX нажмите на "**Добавить новое**" в меню приложений.

<figure><img src="https://3704471835-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MPK4TuzRBnP7rt8htho-887967055%2Fuploads%2F168nH2AdUw244vbJUMRM%2F2.png?alt=media&#x26;token=1a80c9b4-eee8-49b2-aa8e-ce47d5e4d605" alt=""><figcaption><p>Элемент для создания нового приложения диалплана</p></figcaption></figure>

Всего в несколько шагов Вы сможете создать свои собственные приложения. Во-первых, определите **Название** и **Номер вызова** для приложения, при необходимости заполните поле **Комментарий**.\
Возможный тип кода приложения:

* **PHP-AGI скрипт** - AGI - это встроенный в Asterisk метод выполнения внешних скриптов (по аналогии с CGI для http серверов), который может расширить функциональность asterisk при помощи других языков программирования, в частности PHP. AGI скрипты могут управлять вызовом в плане набора, вызываются из файла: extensions.conf
* **Диалплан Asterisk** - конфигурация плана набора содержится в файле конфигурации Asterisk - **extensions.conf**. Это один из самых важных конфигурационных файлов. В нем определяется обработка и маршрутизация входящих и исходящих вызовов. Этот файл управляет поведением всех соединений проходящих через Вашу АТС.

<figure><img src="https://3704471835-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MPK4TuzRBnP7rt8htho-887967055%2Fuploads%2FtmIZxMV1275MD7J1X2MN%2F3.png?alt=media&#x26;token=1802de3b-a2d5-4341-b6c1-e2b0227fbf5d" alt=""><figcaption><p>Раздел конфигурации нового приложения диалплана</p></figcaption></figure>

Внесем ясность: мы будем называть MikoPBX приложения - приложениями, планы набора Asterisk -функциями. Например, Answer(), NoOP(), Set() and Wait() - это функции. Эти отдельные целевые функции Asterisk, которые затем объединяются в MikoPBX для создания более мощных MikoPBX приложений.\
\
Опишите логические операции в текстовом поле **Программный код**. Обратите внимание, что в одной строке одновременно допускается только одна команда, например:

<figure><img src="https://3704471835-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MPK4TuzRBnP7rt8htho-887967055%2Fuploads%2F5ytFF6NuBINrLCYAyks9%2F4.png?alt=media&#x26;token=171ec239-1098-400e-b397-d61b6a41a44e" alt=""><figcaption><p>Вкладка "<strong>Программный код</strong>"</p></figcaption></figure>

На рисунке пример простейшего приложения для номера 000063. После набора номера, вы услышите, как робот озвучивает Ваш внутренний номер.

{% hint style="danger" %}
MikoPBX будет проверять используемые команды. Не исключено, что неправильно запрограммированные операции могут повлиять на работоспособность вашей телефонной системы.
{% endhint %}

Описание Asterisk функций, которые Вы можете использовать в своих приложениях:

| Наименование команды | Описание                                                                                                                                                                                                    |
| -------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| answer               | Перевести вызов в отвеченное состояние.                                                                                                                                                                     |
| channel status       | Возвращает статус подключенного канала.                                                                                                                                                                     |
| control stream file  | Отправка в канал заданного звукового файла, с возможностью управления его проигрывания (пауза/перемотка/возобновление проигрывания) с помощью получаемых от абонента DTMF цифр, если заданы. (Asterisk 1.2) |
| database del         | Удаление ключа/значения из базы данных.                                                                                                                                                                     |
| database deltree     | Удаление дерева ключей/значений из базы данных.                                                                                                                                                             |
| database get         | Получить значение из базы данных.                                                                                                                                                                           |
| database put         | Добавление/изменение значения в базе данных.                                                                                                                                                                |
| exec                 | Выполнение заданной Команды. (Команды - это функции, которые Вы используете при описании плана набора в файле extensions.conf ).                                                                            |
| get data             | Получить данные из канала.                                                                                                                                                                                  |
| get option           | Ведет себя аналогично команде «STREAM FILE», но используется с заданным значением для таймаута. (Asterisk 1.2)                                                                                              |
| get variable         | Получить значение переменной канала.                                                                                                                                                                        |
| hangup               | Разорвать соединение (Hangup) на текущем канале.                                                                                                                                                            |
| noop                 | Пустая команда. Ничего не делает.                                                                                                                                                                           |
| receive char         | Принимает один символ из канала, если он поддерживает эту возможность.                                                                                                                                      |
| receive text         | Принимает текстовую строку из канала, если он поддерживает эту возможность.                                                                                                                                 |
| record file          | Производит запись в заданный файл.                                                                                                                                                                          |
| say alpha            | Проговаривает заданную строку символов. (Asterisk 1.2)                                                                                                                                                      |
| say date             | Проговаривает дату. (Asterisk 1.2)                                                                                                                                                                          |
| say datetime         | Проговаривает дату и время, согласно заданному формату. (Asterisk 1.2)                                                                                                                                      |
| say digits           | Проговаривает заданную строку цифр.                                                                                                                                                                         |
| say number           | Проговаривает заданный номер.                                                                                                                                                                               |
| say phonetic         | Проговаривает заданную строку символов.                                                                                                                                                                     |
| say time             | Проговаривает время.                                                                                                                                                                                        |
| send image           | Отправляет изображение в канал, если он поддерживает эту возможность.                                                                                                                                       |
| send text            | Отправляет текст в канал, если он поддерживает эту возможность.                                                                                                                                             |
| set autohangup       | Автоматическое завершение соединение (Autohangup) на канале в заданное время.                                                                                                                               |
| set callerid         | Установка callerid для текущего канала.                                                                                                                                                                     |
| set context          | Установка контекста для текущего канала.                                                                                                                                                                    |
| set extension        | Изменение екстеншена для текущего канала.                                                                                                                                                                   |
| set music            | Включение/Выключение музыки ожидания (Music on hold), например: «SET MUSIC ON default».                                                                                                                     |
| set priority         | Установка значения приоритета для следующей выполняемой команды для канала.                                                                                                                                 |
| set variable         | Установка переменной канала.                                                                                                                                                                                |
| stream file          | Отправка звукового файла в канал.                                                                                                                                                                           |
| tdd mode             | Установка режима TDD для канала, который может его поддерживать, для включения возможности взаимодействия с TDD.                                                                                            |
| verbose              | Запись сообщения в verbose log сервера asterisk.                                                                                                                                                            |
| wait for digit       | Ожидание нажатия DTMF кнопки                                                                                                                                                                                |

Нажмите **Сохранить** для завершения настройки.
