====== MikoPBX + DND в панели телефонии для 1С ======
[[:faq|Обратно, к основному разделу... ]]
В панели телефонии есть возможность установки статуса сотрудника:
* **DND** / Не беспокоить
* **На мобильном** / Отошел
* **На месте** / Доступен
См. документацию по панели телефонии
* [[https://wiki.miko.ru/astpanel:enterprise:ordinary#statusy_polzovatelej | Панель для "Обычное приложение"]]
* [[https://wiki.miko.ru/astpanel:manual:managed#upravlenie_statusom_i_pereadresaciej| Панель для "Управляемое приложение"]]
При смене статуса в панели телефонии на АТС в базе данных устанавливается соответствующая настройка в виде числового идентификатора:
* **0** - Доступен
* **2** или **4** - DND
* **32** или **8** - Отошел
====== Настройка dialplan ======
АТС по умолчанию никак не реагирует на смену статуса. Но мы можем повлиять на поведение MikoPBX и заставить ее завершать вызов при статусе сотрудника DND.
- Перейдите в раздел "**Система**" - "**Кастомизация системных файлов**"{{ :faq:askozia7_custom_extension_dnd_1.jpg |}}
- Откройте файл extensions.conf на редактирование
- Выберите режим "**Добавлять в конец файла**" {{ :faq:askozia7_custom_extension_dnd_2.jpg |}}
- Добавьте текст dialplan,
[internal-users-custom]
exten => _.!,1,NoOp(Start custom context)
same => n,Set(fw_status=${DB(UserBuddyStatus/PJSIP/${EXTEN})})
; DND
same => n,ExecIf($["${fw_status}" == "2" || "${fw_status}" == "4"]?Busy())
; On mobile
same => n,ExecIf($["${fw_status}" == "8" || "${fw_status}" == "32" ]?Set(fw_unav=${DB(FW_UNAV/${EXTEN})}):Set(fw_unav=${UNDEFINED}))
same => n,ExecIf($["${fw_unav}x" != "x"]?Set(pt1c_UNIQUEID=${UNDEFINED}))
same => n,ExecIf($["${fw_unav}x" != "x"]?Set(peer_mobile=1))
same => n,ExecIf($["${fw_unav}x" != "x"]?Goto(internal,${fw_unav},1))
same => n,return
- После этих правок все вызовы на внутренний номер со статусом **DND** будут завершаться с сигналом "**Занято**".
====== Настройка переадресации "На мобильном" ======
**При звонке на Очередь**: Eсли телефон пользователя отключен, то вызов не будет направлен на его номер и не сработает переадресация на мобильный. **Это особенность очереди**.
- Перейдите к редактированию карточки сотрудника {{ :faq:statuses_pt1c_4.jpg |}}
- Назначьте сотруднику мобильный номер телефона {{ :faq:statuses_pt1c_2.jpg |}}
- Настройте переадресацию {{ :faq:statuses_pt1c_3.jpg |}}
====== Изменени статуса с телефона ======
- Опишем на АТС новое "**Приложение dialplan**" {{ :faq:statuses_pt1c_5.jpg |}}
- Заполните "Название приложения"
- Укажите "**Номер для вызова приложения**", его мы опишем шаблоном "**888X**"
- "**Тип кода**" - **Диалплан Asterisk**
- Заполните вкладку "**Программный код**" 1,ExecIf($["${CHANNEL(channeltype)}" == "Local"]?Hangup())
n,Set(ext=${EXTEN:3})
n,ExecIf($["${ext}" == "0"]?Set(new_status=0))
n,ExecIf($["${ext}" == "1"]?Set(new_status=2))
n,ExecIf($["${ext}" == "2"]?Set(new_status=32))
n,ExecIf($["${new_status}x" == "x"]?Hangup())
n,Set(device_status=${IF($["${new_status}" == "0"]?NOT_INUSE:BUSY)})
n,Set(DEVICE_STATE(Custom:${CHANNEL(endpoint)})=${device_status})
n,Set(DB(UserBuddyStatus/PJSIP/${CHANNEL(endpoint)})=${new_status})
n,UserEvent(DB_UserBuddyStatus,chan1c:PJSIP/${CHANNEL(endpoint)},key:PJSIP/${CHANNEL(endpoint)},val:${new_status}})
n,Answer()
n,Hangup
- Сохраните приложение
Приложение позволит менять статус набором внутреннего номера:
* **DND** / Не беспокоить - позвоните на **8881**
* **На мобильном** / Отошел - позвоните на **8882**
* **На месте** / Доступен - позвоните на **8880**
[[:faq|Обратно, к основному разделу... ]]