MikoPBX
Модули
Перевод этой страницы:
MikoPBX
Модули
Обратно, к основному разделу...
В панели телефонии есть возможность установки статуса сотрудника:
При смене статуса в панели телефонии на АТС в базе данных устанавливается соответствующая настройка в виде числового идентификатора:
АТС по умолчанию никак не реагирует на смену статуса. Но мы можем повлиять на поведение MikoPBX и заставить ее завершать вызов при статусе сотрудника DND.
[all_peers-custom] include => internal-custom [internal-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()
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
Приложение позволит менять статус набором внутреннего номера: