Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
faq:pt1c_dnd [2019/06/13 13:42] Портнов Алексей |
faq:pt1c_dnd [2023/03/27 07:57] (текущий) Портнов Алексей [Изменени статуса с телефона] |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
- | ====== Askozia + DND в панели телефонии для 1С ====== | + | ====== MikoPBX + DND в панели телефонии для 1С ====== |
[[:faq|Обратно, к основному разделу... ]] | [[:faq|Обратно, к основному разделу... ]] | ||
Строка 15: | Строка 15: | ||
* **0** - Доступен | * **0** - Доступен | ||
- | * **2** - DND | + | * **2** или **4** - DND |
- | * **32** - Отошел | + | * **32** или **8** - Отошел |
+ | ====== Настройка dialplan ====== | ||
- | АТС по умолчанию никак не реагирует на смену статуса. Но мы можем повлиять на поведение Askozia и заставить ее завершать вызов при статусе сотрудника DND. | + | АТС по умолчанию никак не реагирует на смену статуса. Но мы можем повлиять на поведение MikoPBX и заставить ее завершать вызов при статусе сотрудника DND. |
- Перейдите в раздел "**Система**" - "**Кастомизация системных файлов**"{{ :faq:askozia7_custom_extension_dnd_1.jpg |}} | - Перейдите в раздел "**Система**" - "**Кастомизация системных файлов**"{{ :faq:askozia7_custom_extension_dnd_1.jpg |}} | ||
- Откройте файл extensions.conf на редактирование | - Откройте файл extensions.conf на редактирование | ||
- Выберите режим "**Добавлять в конец файла**" {{ :faq:askozia7_custom_extension_dnd_2.jpg |}} | - Выберите режим "**Добавлять в конец файла**" {{ :faq:askozia7_custom_extension_dnd_2.jpg |}} | ||
- | - Добавьте текст dialplan, будут кастомизированы "**all_peers**" и "**internal**" <code>[all_peers-custom] | + | - Добавьте текст dialplan, <code> |
- | + | [internal-users-custom] | |
- | exten => _.!,1,Set(fw=${DB(UserBuddyStatus/SIP/${EXTEN})}) | + | exten => _.!,1,NoOp(Start custom context) |
- | same => n,ExecIf($["${fw}" == "2"]?Busy()) ; 2=DND 32=Отошел | + | same => n,Set(fw_status=${DB(UserBuddyStatus/PJSIP/${EXTEN})}) |
- | same => n,Return() | + | ; DND |
- | + | same => n,ExecIf($["${fw_status}" == "2" || "${fw_status}" == "4"]?Busy()) | |
- | [internal-custom] | + | ; On mobile |
- | exten => _XXX,1,Set(fw=${DB(UserBuddyStatus/SIP/${EXTEN})}) | + | same => n,ExecIf($["${fw_status}" == "8" || "${fw_status}" == "32" ]?Set(fw_unav=${DB(FW_UNAV/${EXTEN})}):Set(fw_unav=${UNDEFINED})) |
- | same => n,ExecIf($["${fw}" == "2"]?Busy()) ; 2=DND 32=Отошел | + | same => n,ExecIf($["${fw_unav}x" != "x"]?Set(pt1c_UNIQUEID=${UNDEFINED})) |
- | same => n,Return() | + | 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 | ||
+ | </code> | ||
+ | - После этих правок все вызовы на внутренний номер со статусом **DND** будут завершаться с сигналом "**Занято**". | ||
+ | ====== Настройка переадресации "На мобильном" ====== | ||
- | exten => _XXXX,1,Set(fw=${DB(UserBuddyStatus/SIP/${EXTEN})}) | + | <note important>**При звонке на Очередь**: Eсли телефон пользователя отключен, то вызов не будет направлен на его номер и не сработает переадресация на мобильный. **Это особенность очереди**. </note> |
- | same => n,ExecIf($["${fw}" == "2"]?Busy()) ; 2=DND 32=Отошел | + | - Перейдите к редактированию карточки сотрудника {{ :faq:statuses_pt1c_4.jpg |}} |
- | same => n,Return() | + | - Назначьте сотруднику мобильный номер телефона {{ :faq:statuses_pt1c_2.jpg |}} |
+ | - Настройте переадресацию {{ :faq:statuses_pt1c_3.jpg |}} | ||
+ | ====== Изменени статуса с телефона ====== | ||
+ | - Опишем на АТС новое "**Приложение dialplan**" {{ :faq:statuses_pt1c_5.jpg |}} | ||
+ | - Заполните "Название приложения" | ||
+ | - Укажите "**Номер для вызова приложения**", его мы опишем шаблоном "**888X**" | ||
+ | - "**Тип кода**" - **Диалплан Asterisk** | ||
+ | - Заполните вкладку "**Программный код**" <code>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 | ||
</code> | </code> | ||
- | - После этих правок все вызовы на внутренний номер со статусом **2** - **DND** будут завершаться с сигналом "**Занято**". | + | - Сохраните приложение |
+ | Приложение позволит менять статус набором внутреннего номера: | ||
+ | * **DND** / Не беспокоить - позвоните на **8881** | ||
+ | * **На мобильном** / Отошел - позвоните на **8882** | ||
+ | * **На месте** / Доступен - позвоните на **8880** | ||
[[:faq|Обратно, к основному разделу... ]] | [[:faq|Обратно, к основному разделу... ]] |