Июн 022014
Доброго вечера.
Попробую тут описать свои затруднения к принятии решений. Вдруг у кого-то будут хорошие мысли? Или, написав это, я сам разберусь в решении 🙂
Итак, речь пойдёт о настройке набора действий (направления) исходящих звонков. Суть желаемых изменений:
- Переделать эти настройки на “действия” (как в правилах входящих). Известные сейчас виды действий:
- “Позвонить через”. Используется с указанием внешней учётной записи. По сути это то, что настраивается сейчас
- “Включить направление”. Можно указать своё направление, направление, на которое дали права, или “все публичные”. При приземлении звонка будут использоваться действия внутри этого направления. При включении некоторые включаемые действия будут игнорироваться (например, действие “Ожидать или отложить”)
- “PIN-код”. Ввод пин-кода для защиты некоторых линий. Например, в направлении может быть задано несколько внешних учётных записей (более дешёвых), а если они почему-то недоступны, то ввод пин-кода и далее более дорогие линии. Защита от болтливых “детей и домашних”.
- “Установить CallerID”. Можно указать режим передачи CallerID для последующих вызовов: от внешней учётки (по умолчанию), от устройства или конкретный подтверждённый
- “Проиграть звуковой файл”. Тут вроде бы понятно…
- “Освободить линии и перейти”. Указывается прядок, на который будет переход. Действие пытается завершить звонки на ожидаемых линиях, гарантированное время которых вышло (завершает звонок на них). Если удалось что-то высвободить, то переходит на указанный порядок и вновь подбирает внешние учётные записи.
- “Ожидать или отложить”. Если при выполнении действий звонок не совершился и были внешние учётные записи, у которых все линии заняты, то пользователю выдаётся звуковое сообщение “Подождите…” и периодическая попытка определить не освободились ли линии. Если стоит опция в действии, то предложит отложить звонок и перезвонит когда линии освободятся (такой функционал сейчас есть на публичных линиях).
- может быть что-то ещё…
- Сохранить принцип использования внешних учётных записей по их порядку. Если указано несколько учётных записей с одним порядком, то они используются в порядке их последнего использования (в результате следующий звонок возьмёт следующую учётную запись). Распространить принцип на включение направлений: если включаемое направление имеет тот же порядок, что и другие внешние учётные записи, то вычисляется минимальный порядок (база) среди порядка внутри направления и включаются учётные записи направления на основе этой “базы”. Это позволит чередовать внешние учётные записи и включаемых направлений наравне с включающими. Путано? Если заинтересует, то приведу примеры…
- Хотелось бы объединить хранение действий для обработки входящих и исходящих звонков. Конечно же каждое действие должно знать доступно ли оно при входящих и исходящих (во входящих тоже пора сделать включение другого набора действий, подпрограммы). Далее можно подумать об объединении обработки правил для выбора действия.
- И конечно же визуальные улучшения настройки с inplace-редактированием действия, отсутствием визуальной перегрузки контролами, лучшей работой при “узких” экранах (характерных для мобильных устройств).
Третий день обдумываю, планирую изменения. Алгоритмы и код в этом месте складывался исторически и сейчас весьма сложен. Всё никак не решусь начать строить рядом новое 🙂
Может у вас будут какие-то вопросы и своевременные пожелания? Вдруг потребуется что-то действительное нужное, но меняющее выбранную мной архитектуру? Лучше сообщите сейчас 🙂 Готов попробовать ответить на любые глупые и умные вопросы.
А нельзя сделать что вроде телефонного дерева для своих учетных записей.
То есть вот человек внес в свой акаунт несколько внешних учетных записей, и ему известны тарифы по ним.
И можно ли сделать так чтоб не выбирать каждый раз через что звонить. А так чтоб внес номера или диапазоны, наприме
90111122233-9019999999 всегда через сипнет
4931111111-4939999999 всегда через комтьюб
при этом можно вносить исключение
9081234567 -через сипнет, хоть он и не входит в диапазон.
думаю так будет удобно. можно будет зарегистрировать много акаунтов, и используя одно устройство звонить через тот акаунт где данный звонок будет выгодней всего.
мне видятся что такие диапазоны сильно надуманы. Более правильно использовать в правилах указание сотовых операторов и их регионы.
Исключения можно просто поднять выше по порядку… А зачем они? MNP учитывается в правилах…
Городские легче использовать масками типа 74932% или /^74932\d{6}$/
Удачи в реализации!
Протестировал и теряюсь в выборе между: “Позвонить через внешнюю учётную запись” и “Включить направление: Позвонить через внешнюю учётную запись”.
Проверял то и то. Вроде результат одинаковый.
Решаемая задача: в исходящих указываем первоприоритетное правило для Плана набора конкретного указываемого номера, набираемого через внешнюю учётную запись (от её имени), чтобы инициировать вызов на этот номер с последующей передачей/переадресацией поступающих вызовов по факту их поступления.
@tolkien есть два действия: исходящий через и включить направление.. Первое: осуществить исходящий звонок через указанную внешнюю учетную запись.
Второе: кв бы вызывать подпрограмму.. набор действий, среди которых может быть и “исходящий через”.
Рекомендую более понятно вам называть наборы действий 🙂