Здесь показаны различия между двумя версиями данной страницы.
providers:many_hosts:non-work [2019/02/04 15:00] Портнова Татьяна |
providers:many_hosts:non-work [2020/04/05 14:54] |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
- | ====== Настройка индивидуального нерабочего времени для нескольких провайдеров, зарегистрированных на одном хосте ====== | ||
- | |||
- | [[faq:|Обратно к инструкциям]] | ||
- | |||
- | <note tip>Перед ознакомлением с данной инструкцией, необходимо выполнить настройку, описанную [[providers:many_hosts|здесь]].</note> | ||
- | |||
- | ====== Постановка задачи ====== | ||
- | Имеем две учетные записи от провайдера Zadarma, настроенных в Askozia 6 по [[providers:many_hosts|инструкции]]. \\ | ||
- | {{ :providers:many_hosts:2019-02-04_174426.png |}}\\ | ||
- | Необходимо для каждого номера Zadarma настроить свое нерабочее время. Например, для номера +7(495)-229-30-42 рабочее время с 9.00 до 18.00 по МСК; для номера +7 (499) 638-25-84 рабочее время с 8.00 до 20.00 по МСК. | ||
- | |||
- | <note important>Используйте версию **Askozia 6.5.9.46+**</note> | ||
- | |||
- | ====== Решение ====== | ||
- | |||
- | 1. Подключите провайдеров, зарегистрированных на одном хосте, как описано в [[providers:many_hosts|инструкции]]\\ \\ | ||
- | 2. Перейдите в раздел **Система** -> **Кастомизация системных файлов**.\\ {{ :providers:many_hosts:2019-02-04_173507.png |}}\\ \\ | ||
- | 3. Откройте для редактирования конфигурационный файл **extensions.conf**. Установите режим "**Добавлять в конец файла**".\\ \\ | ||
- | 4. В черное окно добавьте следующий фрагмент кода:\\ | ||
- | <code> | ||
- | [public-direct-dial-custom] | ||
- | exten => _.!,1,NoOp(check time) | ||
- | same => n,Gosub(check-out-work-time-custom,${FROM_DID},1) | ||
- | same => n,return | ||
- | |||
- | [check-out-work-time-custom] | ||
- | exten => 584611,1,NoOp(check time) | ||
- | same => n,ExecIfTime(00:00-09:00,mon-fri,*,*?Macro(playback-exit,/offload/asterisk/sounds/other/out_work_times)) | ||
- | same => n,ExecIfTime(18:00-23:59,mon-fri,*,*?Macro(playback-exit,/offload/asterisk/sounds/other/out_work_times)) | ||
- | same => n,return | ||
- | exten => 420296,1,NoOp(check time) | ||
- | same => n,ExecIfTime(00:00-08:00,mon-fri,*,*?Macro(playback-exit,/offload/asterisk/sounds/other/out_work_times)) | ||
- | same => n,ExecIfTime(20:00-23:59,mon-fri,*,*?Macro(playback-exit,/offload/asterisk/sounds/other/out_work_times)) | ||
- | same => n,return | ||
- | </code> | ||
- | |||
- | В выше приведенном фрагменте кода Вам необходимо указать логины от Ваших учетных записей провайдеров.\\ | ||
- | В нашем примере использовались следующие данные: | ||
- | * **584611** - логин от учетной записи провайдера для номера телефона +7(495)-229-30-42.\\ {{ :providers:many_hosts:2019-02-04_174343.png |}} \\ Рабочее время с 9.00 до 18.00. Следовательно необходимо задать два интервала для нерабочего времени: 00:00-09:00 и 18:00-23:59. | ||
- | * **420296** - логин от учетной записи провайдера для номера телефона +7 (499) 638-25-84. \\ {{ :providers:many_hosts:2019-02-04_174408.png |}}\\ Рабочее время с 8.00 до 20.00. Следовательно необходимо задать два интервала для нерабочего времени: 00:00-08:00 и 20:00-23:59. | ||
- | |||
- | {{ :providers:many_hosts:2019-02-04_174643.png |}}\\ | ||
- | |||
- | Более подробно разберём команду **ExecIfTime**. Эта команда выполняет указанное приложение Asterisk, если текущее время соответствует заданной спецификации времени. В нашем случае команда выполняет проигрывание звукового файла, расположенного в директории **/offload/asterisk/sounds/other/out_work_times** в Askozia.\\ | ||
- | Синтаксис команды: | ||
- | <code> | ||
- | ExecIfTime(times,weekdays,mdays,months?appname[(appargs)]) | ||
- | </code> | ||
- | * **times ** - Диапазоны времени в 24-часовом формате | ||
- | * **weekdays** - Дни недели (mon, tue, wed, thu, fri, sat, sun) | ||
- | * **mdays** - Дни месяца (1-31) | ||
- | * **months** - Месяцы (jan, feb, mar, apr и т. д.) | ||
- | * **appname[(appargs)]** - команда Asterisk с указанием параметров вызова | ||
- | |||
- | В нашем примере указаны диапазон времени, диапазон дней недели. Вместо указания дней месяцев и месяцев введены *. Этот символ означает "для всех остальных случаев". | ||
- | <code> | ||
- | ExecIfTime(00:00-08:00,mon-fri,*,*?Macro(playback-exit,/offload/asterisk/sounds/other/out_work_times)) | ||
- | </code> | ||
- | |||
- | |||