====== 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|Обратно, к основному разделу... ]]