Драссссте.
В жизни так бывает, что не все пользователи Октелла используют клиентское приложение: кому-то просто достаточно подцепить IP-телефон к системе и пускать звонки туда-сюда. В этом тоже есть логика - простота и привычность работы с "трубкой". Зачем учить кого-то пользоваться компьютером и телефоном одновременно, если можно научить только трубке, например.
По сути в IP-телефонах должна быть функция , которая включает переадресацию на тот или иной телефон, если вас нет на месте. Т.е. тыкнул кнопку и иди себе спокойно в рестораны, а все звонки будут заприходить тебе на сотовый. Однако, как я уже сказал, не во всех телефонах есть такая функция, да и не всем хочется ковыряться в этих телефонах учитывая исключительную лень человеческой натуры и большое разнообразие этих самых натур, а также производителей телефонов.
Как-то на r.oktell.ru увидел, что кто-то ищет сцеанрий, который бы переводил пользователя (про него, кстати, речь не идет, т.к. участие пользователя в большинстве случаев означает, что у него есть клиентское место Октелл)/линию(а вот про линию и пойдет речь) в режим переадресации. Логика простая: с телефона звоним на номер, например 000123456789 и включается переадресация всех звонков с этой линии на 123456789 (как вы поняли 000 - это некий префикс, по которому и определяется суть всех дел).
Для себя решил, что такой функционал мог бы пригодиться и в нашей компании, а значит надо сделать.
Ну и вот что получилось. Довольно просто.
Продолжаем.
Далее мы удаляем наш внешний номер. Тут можно придумать разную схему. Удалять или нет решать вам. можно просто изменить тип (+100) и Октелл не будет воспринимать это правило. Это будет удобно в случае, если вы хотите упростить жизнь сотрудникам, т.е. единожды создав правило переадресации они сохранят его и будут включать уже по набору какого-либо префикса. Но я не люблю упрощать жизнь людям. Пусть страдают.
В жизни так бывает, что не все пользователи Октелла используют клиентское приложение: кому-то просто достаточно подцепить IP-телефон к системе и пускать звонки туда-сюда. В этом тоже есть логика - простота и привычность работы с "трубкой". Зачем учить кого-то пользоваться компьютером и телефоном одновременно, если можно научить только трубке, например.
По сути в IP-телефонах должна быть функция , которая включает переадресацию на тот или иной телефон, если вас нет на месте. Т.е. тыкнул кнопку и иди себе спокойно в рестораны, а все звонки будут заприходить тебе на сотовый. Однако, как я уже сказал, не во всех телефонах есть такая функция, да и не всем хочется ковыряться в этих телефонах учитывая исключительную лень человеческой натуры и большое разнообразие этих самых натур, а также производителей телефонов.
Как-то на r.oktell.ru увидел, что кто-то ищет сцеанрий, который бы переводил пользователя (про него, кстати, речь не идет, т.к. участие пользователя в большинстве случаев означает, что у него есть клиентское место Октелл)/линию(а вот про линию и пойдет речь) в режим переадресации. Логика простая: с телефона звоним на номер, например 000123456789 и включается переадресация всех звонков с этой линии на 123456789 (как вы поняли 000 - это некий префикс, по которому и определяется суть всех дел).
Для себя решил, что такой функционал мог бы пригодиться и в нашей компании, а значит надо сделать.
Ну и вот что получилось. Довольно просто.
Сценарий работает следующим образом:
- С телефона набираем 000123456789
- Обрезается 000 и запускается данный сценарий по этому префиксу
- Определяем Номер линии, которая инициировала запуск сценария
- Смотрим есть ли у линии свой пользователь или нет. Если есть то в качестве идентификатора используем GUID пользователя, если нет, то GUID линии.
- Проверяем, что делает пользователь - выводит из переадресации или включает ее. Вывод из данного режима - просто 000
- В нашем случае сценарий заносит номер в переадресацию.
- Определяем Статусом объекта личный внутренний номер линии (доступно с версии 2.10+)
Лирическое отступление. На самом деле нет. Это не совсем переадресация, а добавление к внутреннему номеру линии "внешнего номера"
и отключение всех других линий, которые были в этом номере. Т.е. для работы данного сценария должны соблюдаться некоторые условия:
- У вашей линии/пользователя должен быть собственный номер
- У вас должен быть настроенный "Сценарий набора быстрых и внешних номеров"
- Вы должны принять тот факт, что при таком "раскладе" будут переадресовываться и звонки на групповой номер в котором участвует личный внутренний номер сотрудника, что является как плюсом, так и минусом одновременно. Решать вам.
Продолжаем.
- Запрос, который добавляет во внутренний номер внешний номер довольно прост и одновременно хитёр:
update [oktell_settings].[dbo].[A_RuleRecords] set InnerAddressType=InnerAddressType+100 where ruleid = (select extraid from [oktell_settings].[dbo].[A_NumberPlanAction] where numid = (select id from [oktell_settings].[dbo].[A_NumberPlan] where prefix = @prefix))
insert into [oktell_settings].[dbo].[A_RuleRecords] values(cast(@id as uniqueidentifier), 4, 0, 90, (select extraid from [oktell_settings].[dbo].[A_NumberPlanAction] where numid = (select id from [oktell_settings].[dbo].[A_NumberPlan] where prefix = @prefix)), '00000000-0000-0000-0000-000000000001', @num)
Мы находим все линии в определенном ранее внутреннем номере номере и меняем их тип (а бывают разные типы от 0 до 4) на +100, что позволит нам исключить данные линии во взаимодействии с Октеллом (он просто не поймет что это) и одновременно сохранить их в былом виде при возврате.
Второй строкой добавляем Внешний номер 123456789 в определенный ранее внутренний.
- Теперь со спокойной душой ребутим сервер состояний. Бояться не надо, на текущую работу не повлияет.
- Готово! Все звонки поступающие на внутренний номер линии/пользователя будут поступать на его сотовый или куда бы там ни было еще.
Что происходит, когда мы возвращаем номер в былое состояние.
- Начнем с проверки на то, что набрал пользователь, а при возврате он набирает 000, что является признаком для вывода его из нашей "переадресации" и удаления из его внутреннего номера Внешнего номера.
- В данном случае запрос в базу выглядит так:
В первой строке мы возвращаем тип всех ранее существовавших линий, чтобы Октелл снова смог воспринимать их как родных - просто вычитаем 100 из типа. Добавлю, что находим мы эти линии уже не по внутреннему номеру, т.к. определить его более не возможно статусом объекта из-за его логики (он будет во втором случае определять групповой номер линии, если она привязана еще куда-либо) , а по идентификатору пользователя или линии, который присвоили нашей записи при добавлении в таблицу Внешнего номера. Довольно путано, но проблему решает, что позволяет избежать создания дополнительных таблиц в базе.update [oktell_settings].[dbo].[A_RuleRecords] set InnerAddressType=InnerAddressType-100 where ruleid = (select ruleid from [oktell_settings].[dbo].[A_RuleRecords] where reactid ='00000000-0000-0000-0000-000000000001' and id = @id)delete from [oktell_settings].[dbo].[A_RuleRecords] where reactid ='00000000-0000-0000-0000-000000000001' and id = @id
Далее мы удаляем наш внешний номер. Тут можно придумать разную схему. Удалять или нет решать вам. можно просто изменить тип (+100) и Октелл не будет воспринимать это правило. Это будет удобно в случае, если вы хотите упростить жизнь сотрудникам, т.е. единожды создав правило переадресации они сохранят его и будут включать уже по набору какого-либо префикса. Но я не люблю упрощать жизнь людям. Пусть страдают.
- Снова ребутим сервер состояний.
- Готово! Номер вернулся в прежнее состояние.
Можете смело пользоваться и радоваться.
Отмечу такой момент, что данные SQL-запросы можно использовать для вывода и ввода линии в/из групповые номера. Часто бывает такая потребность. Это еще называют Динамическими номерами. Удобно.
Вот готовый сценарий в нем я учел защиту от "дурака" (некоторые набирают несколько раз 000) и добавил возможность включения переадресации на внутренний номер. Учтите, что внутри сценария проверка на внутренний/внешний номер идет путем проверки длины номера (по умолчанию 3), но, если у вас номерной план из четырехзначных номеров, то укажите тут цифру 4:
Вот готовый сценарий в нем я учел защиту от "дурака" (некоторые набирают несколько раз 000) и добавил возможность включения переадресации на внутренний номер. Учтите, что внутри сценария проверка на внутренний/внешний номер идет путем проверки длины номера (по умолчанию 3), но, если у вас номерной план из четырехзначных номеров, то укажите тут цифру 4:
Комментариев нет:
Отправить комментарий