способ и устройство для приема телефонного вызова
Классы МПК: | H04M1/66 устройства для предотвращения нежелательного или злонамеренного вызова H04M3/38 устройства, исключающие возможность соединения некоторых абонентов с определенными номерами H04M3/42 системы, обеспечивающие абонентам особые услуги или удобства |
Автор(ы): | Дэвид Гленн Карлсон[US], Томас Эдвард Миллер[US] |
Патентообладатель(и): | Интернэшнл Бизнес Машинз Корпорейшн (US) |
Приоритеты: |
подача заявки:
1993-08-26 публикация патента:
20.12.1997 |
Телефонный вызов осуществляется вызывающим абонентом. Вызов направляется по телефонной сети к блоку терминального оборудования. Терминальное оборудование анализирует информацию, непосредственно связанную с данным телефонным вызовом. Эта информация разбивается на отдельные атрибуты, такие как номера телефонов вызывающего и вызываемого абонентов. Затем производится поиск в номерных списках, содержащихся в памяти терминального оборудования, для нахождения записи, которая соответствует атрибутам вызова. Если такая запись не находится, вызов отвергается. Если же находится одна или несколько таких записей, вызов направляется по тому маршруту, который указан в записи номерного списка, имеющей наиболее оптимальное соответствие с атрибутами вызова. Номерные списки доступны для редактирования пользователем. 2 с. и 4 з. п. ф-лы, 12 ил.
Рисунок 1, Рисунок 2, Рисунок 3, Рисунок 4, Рисунок 5, Рисунок 6, Рисунок 7, Рисунок 8, Рисунок 9, Рисунок 10, Рисунок 11, Рисунок 12
Формула изобретения
1. Способ приема телефонного вызова, основанный на анализе информации, непосредственно связанной с данным телефонным вызовом, отличающийся тем, что последовательно разделяют информацию на совокупность атрибутов вызова, просматривают номерной список для нахождения первой записи, соответствующей совокупности атрибутов вызова, находят первую запись, соответствующую номерному списку, присваивают первой записи номерного списка первое числовое значение, показывающее, насколько оптимально указанная первая запись соответствует совокупности атрибутов вызова, просматривают номерной список для нахождения второй записи номерного списка, соответствующей совокупности атрибутов, находят вторую запись номерного списка, присваивают второй записи номерного списка второе числовое значение, показывающее, насколько оптимально вторая запись номерного списка соответствует указанной совокупности атрибутов вызова, определяют, что второе числовое значение показывает более оптимальное соответствие, чем первое числовое значение, направляют телефонный вызов на телефон с номером, связанным со второй записью номерного списка. 2. Способ по п.1, отличающийся тем, что на этапе присвоения первого числового значения первой записи номерного списка дополнительно указывают в первом числовом значении то, что для первой записи номерного списка имеет место действительное соответствие, определяют весовой фактор для каждого из указанной совокупности атрибутов вызова, увеличивают первое числовое значение на величину весового фактора, соответствующего одному из совокупности атрибутов вызова, причем делают это каждый раз, когда запись номерного списка в точности соответствует одному из множества атрибутов вызова. 3. Способ по пп.1 и 2, отличающийся тем, что дополнительно определяют атрибут среды, просматривают номерной список для нахождения первой записи, соответствующей совокупности атрибутов среды, присваивают первой записи номерного списка первое числовое значение, показывающее, насколько оптимально указанная первая запись соответствует совокупности атрибутов среды, просматривают номерной список для нахождения второй записи номерного списка, соответствующей совокупности атрибутов среды, присваивают второй записи номерного списка второе числовое значение, показывающее, насколько оптимально вторая запись номерного списка соответствует указанному атрибуту среды. 4. Способ по п. 3, отличающийся тем, что на этапе присвоения первого числового значения первой записи номерного списка дополнительно определяют весовой фактор для указанного атрибута среды и увеличивают первое числовое значение на величину весового фактора, соответствующего указанному атрибуту среды, причем делают это каждый раз, когда указанная запись номерного списка в точности соответствует указанному атрибуту среды. 5. Устройство для приема телефонного вызова из телефонной сети, основанное на анализе информации непосредственно связанной с данными телефонным вызовом, содержащее терминалы, соединенные с телефонной сетью и имеющие процессор и блок памяти, отличающееся тем, что содержит последовательно соединенные блок разделения информации на совокупность атрибутов вызова, блок поиска в номерном списке первой записи, соответствующей совокупности атрибутов вызова, блок нахождения первой записи, соответствующей совокупности атрибутов вызова, блок присвоения данной первой записи номерного списка первого числового значения, характеризующего оптимальность соответствия первой записи указанной совокупности атрибутов вызова, блок поиска в номерном списке для нахождения второй записи номерного списка, соответствующей указанной совокупности атрибутов вызова, блок нахождения второй записи номерного списка, блок присвоения второй записи второго числового значения, характеризующего оптимальность соответствия второй записи указанной совокупности атрибутов вызова, блок установления большей оптимальности соответствия, показываемого вторым числовым значением, в сравнении с первым числовым значением, блок направления телефонного вызова на телефон с номером, соответствующим второй записи номерного списка. 6. Устройство по п.5, отличающееся тем, что блок присвоения первой записи номерного списка первого числового значения включает в себя блок указания в первом числовом значении того, что в первой записи номерного списка имеет место действительное соответствие, блок определения весового фактора для каждого из указанной совокупности атрибутов вызова, блок увеличения первого числового значения на величину весового фактора, соответствующего одному из указанной совокупности атрибутов вызова каждый раз, когда запись в точности соответствует именно этому атрибуту вызова.Описание изобретения к патенту
Настоящее изобретение относится к способу и устройству для принятия телефонного вызова, основанных на анализе информации, которой сопровождается указанный телефонный вызов. В последние несколько лет телекоммуникационная промышленность испытала значительный прогресс в области технологии. В далеком прошлом остались те дни, когда телефон высоко ценился только как простое, удобное и относительно конфиденциальное устройство, используемое, в основном, для общения с друзьями, знакомыми и для того, чтобы позвонить, например, в магазин. Сегодня владелец телефона имеет столько же оснований хвалить его, сколько и проклинать. Очень часто по возвращении домой после рабочего дня его встречает шквал нежелательных телефонных звонков от неизвестных абонентов, каждый из которых старается продать ему свои товары или услуги. Отсеивание поступающих звонков с помощью автоответчика частично решает проблему, но приводит к тому, что это уже досаждает семье, друзьям и другим абонентам, имеющим более благовидные причины для звонка, из-за того, что все звонки после обработки автоответчиком отсеиваются. К тому же, многие "дружественные" абоненты страдают так называемой "боязнью автоответчиков" и вешают трубку после нескольких гудков так, чтобы автоответчик не сработал. Сейчас некоторые региональные телефонные компании в Соединенных Штатах предоставляют своим клиентам услугу, называемую "определитель абонента". Определитель абонента отображает телефонный номер абонента, от которого поступил вызов. Таким образом, когда телефон звонит, владелец может посмотреть на этот номер и решить: стоит ли ему отвечать на звонок. Хотя определитель абонента имеет некоторые преимущества перед автоответчиком, он по-своему ограничен. Зачастую владелец не может вспомнить, является ли данный конкретный номер "желательным" или нет. Отсюда частые ошибки, связанные с ответом на нежелательный звонок, и наоборот. Технологический прогресс телефонных средств повлек за собой также новые проблемы для владельца телефона. Когда владелец хочет навести справки о товарах или услугах и звонит в ту или иную коммерческую организацию, дружелюбный продавец уже больше не отвечает на звонок. Вместо этого вызов получает комплексная службы телемаркетинга в той или иной географической точке. Затем очень часто владельцу приходится ждать и испытывать некоторое разочарование, так как его вызов многократно перенаправляется внутри справочной службы в поисках специалиста, обладающего необходимыми знаниями для ответа на конкретный запрос. От владельца может также потребоваться ответить на длинную череду наводящих вопросов, которые задает записанный на пленку синтезированный голос, для чего ему (владельцу) приходится набирать последовательности цифр или других символов на клавиатуре своего телефона. Такие грубые методы маршрутизации телефонного вызова не удовлетворяют также и службы телемаркетинга ввиду того, что их операторы используются неэффективно. Но гораздо важнее то, что их клиенты чувствуют неудовлетворенность и дискомфорт и могут вообще решить иметь дело с кем-нибудь еще. Примеры прототипов такой технологии раскрыты в следующих документах: ЕР-А-0.347.155 и US-А-4.277.649. Основной целью настоящего изобретения является обеспечение расширенного механизма обработки поступающих телефонных вызовов. Второй целью настоящего изобретения является обеспечение механизма эффективного автоматического отсеивания нежелательных телефонных вызовов. Еще одной целью изобретения является обеспечение эффективного автоматического и оптимального направления поступающего вызова к месту назначения. Эти и другие цели достигаются с помощью способа и устройства для гибкого и оптимального приема и маршрутизации телефонного вызова, описанных в настоящей заявке. Телефонный вызов осуществляется вызывающим абонентом. Затем телефонный вызов направляется по телефонной сети к блоку терминального оборудования. Затем терминальное оборудование анализирует информацию, сопровождающую телефонный вызов. Эта информация разделяется на самостоятельные атрибуты вызова, такие как номер вызывающего абонента и номер вызываемого абонента. После этого проводится поиск в номерном списке (одном или нескольких) и проверяется, содержит ли он запись, соответствующую атрибутам вызова. Если такого соответствия не найдено, вызов отвергается. Если обнаружено одно или несколько соответствий, вызов направляется согласно информации, содержащейся в той записи номерного списка, которая имеет наиболее оптимальное соответствие. При этом пользователь имеет возможность легко модифицировать номерные списки. На фиг. 1 показана общая схема коммуникационной среды данного изобретения. На фиг. 2 показана схема терминального оборудования данного изобретения. На фиг. 3 показано более подробно содержимое памяти терминального оборудования данного изобретения. На фиг. 4 показан пример номерного списка, используемого в основной реализации данного изобретения. На фиг. 5 показаны примеры деревьев поиска для номерных списков, представленных на фиг. 4. На фиг. 6 показан пример номерного списка, используемого в альтернативной реализации данного изобретения. На фиг. 7, 8, 9 показана блок-схема соответствующим образом запрограммированного терминального оборудования данного изобретения. На фиг. 10 12 показаны компьютерные экранные формы, используемые для модификации информации, содержащейся в номерных списках. На фиг. 1 показана общая схема коммуникационной среды данного изобретения. Телефон 10 может произвести вызов, который, пройдя через терминальное оборудование 12, телекоммуникационную сеть 15 и терминальное оборудование 20, будет получен телефоном 18. В основной реализации сеть 15 представляет собой Интегрированную Сервисную Цифровую Сеть (Integrated Services Digital Network), больше известную как ISDN. Тем не менее, могут быть использованы и другие телекоммуникационные сети, от современных сетей типа DTMF до тех, которые появятся в будущем. Вообще может быть использована любая телекоммуникационная сеть, способная передать информацию о телефонном вызове, непосредственно вместе с этим вызовом. Сеть 15 может поддерживать связь между тысячами терминалов, таких как терминальное оборудование 12 и терминальное оборудование 20, показанные на фиг. 1. Терминальное оборудование, соединенное о сетью 15, поддерживает протокол сети 15 и позволяет осуществлять связь между терминалами и любыми из подключенных телефонов. Хотя на фиг. 1 показано по одному телефону, подключенному к каждому терминалу, в действительности число подключаемых телефонов к каждому такому терминалу находится в диапазоне от нуля до нескольких сотен. Терминальное оборудование 12 может находиться физически в одном и то же месте с поддерживаемыми им телефонами или располагаться удаленно в местной, региональной или национальной телефонной станции. Тогда как в основной реализации телефон 10 и терминальное оборудование 12, а также телефон 18 и терминальное оборудование 20 являются отдельными компонентами, в альтернативной реализации телефон и терминальное оборудование могут быть объединены в одном блоке. Такое объединение особенно удобно для использования в небольшом офисе или квартире, где нет необходимости в мощном терминале с сотнями подключенных к нему телефонов. На фиг. 2 показана более подробно схема терминального оборудования 20. Терминальное оборудование 20 содержит сетевой интерфейс 21, процессор 23, память 30 и телефонный интерфейс 25. Сетевой интерфейс 21 позволяет терминальному оборудованию 20 осуществлять связь с сетью 15. Сетевой интерфейс получает телефонные вызовы, посылаемые другими телефонами в сети, а также передает телефонные вызовы, посылаемые телефонами, под- ключенными к терминальному оборудованию 20 через линию 17. Линия 17 не требуется, если подключенных телефонов нет вообще, как, например, для обмена между терминалами или в случае, когда терминальное оборудование отвечает на вызовы посредством синтезированной речи или отправляет вызовы обратно через сеть 15. Соответствующим образом запрограммированный процессор 23, как показано на фиг. 7 9, производит принятие/отвержение и оптимизированную маршрутизацию поступающих телефонных вызовов, полученных терминальным оборудованием 20. Более подробно это будет рассмотрено позже. Процессор 23 может быть очень простым микропроцессором типа Intel 8088, или может быть частью более сложной процессорной среды микрокомпьютеров, компьютеров среднего класса или даже базовых компьютеров (manframe). Телефонный интерфейс 25 соединен с процессором 23 и позволяет терминальному оборудованию 20 осуществлять связь с одним или более телефонами, такими как телефон 18 (фиг. 1), подключенными к телефонному интерфейсу 25 через линию 17. Сложность телефонного интерфейса 25 в значительной степени зависит от количества телефонов, поддерживаемых терминальным оборудованием 20. Если поддерживается один или по крайней мере несколько телефонов, телефонному интерфейсу 25 достаточно обладать очень простой переключающей логикой, заложенной в обычных мультиплексорах или других логических микросхемах, хорошо известных специалистам в данной области. Телефонный интерфейс 25 не требуется, если к терминальному оборудованию 20 вообще не подключено ни одного телефона. В противном случае, когда одновременно поддерживаются десятки, сотни и, тем более, тысячи телефонов, телефонный интерфейс 25 становится намного более сложным. В таких случаях желательно использовать оборудование частной телефонной станции (Private Branch Exchange PBX) или подобного устройства, или же компьютерной программы, способной осуществлять связь с таким устройством. В основной реализации процессор 23 и память 30 являются компонентами компьютера среднего класса AS/400 (Application Systtem/400) компьютерной системой, выпускаемой фирмой IBM (International Buisiness Machines Corporation). Сетевой интерфейс 21 представляет собой адаптер интерфейса основного режима (Basic Rate Interface) ISDN, установленный внутри AS/400. Линия 16 представляет собой кабель типа RJ45. Телефонный интерфейс 25 представляет собой известный программный продукт, обеспечивающий средства телефонии, Call Path/400, также производимый фирмой IBM. Вернемся опять к фиг.2: память 30 соединена с процессором 23. Память 30 содержит данные, используемые процессором 23, чтобы решить: принять или отвергнуть поступивший вызов и, если он принят, направить его на соответствующий телефон. Более подробно содержимое памяти 30 показано на фиг. З. Память 30 содержит один или несколько номерных списков 31, а также одно или более деревьев поиска 32. Все деревья поиска в памяти 30 имеют одно количество рядов (таких как ряд 33) и одно количество колонок (таких как колонка 34). В номерном списке ряд представляет собой запись, содержащую одно или несколько полей данных. Данные номерного списка используются для определения оптимального маршрута поступившего вызова или его отвержения. Количество рядов, колонок и номерных списков переменно и может быть изменено в зависимости от желаемой функциональной конфигурации. В основной реализации деревья поиска 32 используются для ускорения поиска данных в номерном списке, но они не требуются в альтернативной реализации. В случае их использования для каждой колонки (такой как колонка 32) существует одно дерево поиска. Так как номерные списки 31 содержат по четыре колонки, для них показаны четыре дерева поиска 32. Каждое дерево поиска содержит записи (такие как запись 35). Причем записей в одном дереве поиска столько же, сколько записей содержится во всех номерных списках, вместе взятых. Так как общее количество записей в номерных списках составляет пятнадцать, каждое дерево поиска состоит из пятнадцати записей. Первое дерево поиска содержит данные, взятые из первой колонки каждого номерного списка. Запись дерева поиска состоит из трех полей данных. Поле 37 записи 35 дерева поиска содержит данные из поля на пересечении первого ряда и первой колонки второго номерного списка (здесь "5551212"). Поле 38 содержит признак того номерного списка, из которого были взяты данные (здесь 02 является признаком номерного списка 02). Поле 39 содержит признак ряда номерного списка, из которого были взяты данные (здесь 01 является признаком первого ряда номерного списка). Для повышения производительности поиска в основной реализации изобретения записи дерева поиска отсортированы по данным номерного списка, по номеру номерного списка и по номеру ряда номерного списка. Например, три записи, предшествующие записи 35, будут содержать данные из первых полей записей номерных списков с числами, меньшими "5551212". Оставшиеся записи, следующие за записью 35 в первом дереве поиска, будут содержать данные из первых полей записей номерных списков с числами, большими "5551212", а за ними будут идти записи, содержащие шаблоны (такие как "608#") и обобщающие поля (такие как "*ANY"). Второе дереве поиска содержит данные из вторых колонок номерных списков, где данные также отсортированы для ускорения поиска. Запись 36 содержит данные из поля на пересечении первого ряда и второй колонки второго номерного списка (здесь "23"). Остальная часть второго дерева поиска, точно также как третьего и четвертого, построена согласно той же самой организационной модели. Специалисту в данной области должно быть совершенно ясно, что схема, показанная здесь, только одна из нескольких различных, но одинаково пригодных организационных моделей, которые могут быть использованы для ускорения процедуры поиска в номерных списках. На фиг. 4 показан пример номерных списков которые могут быть использованы в службе телемаркетинга, когда терминальное оборудование получает тысячи телефонных вызовов каждый день. Показано три номерных списка, в каждом из которых четыре колонки данных. Первая колонка содержит телефонный номер вызывающего абонента, вторая подадрес вызывающего абонента. Подадрес вводится самим абонентом (вызывающим) или его терминальным оборудованием и предоставляет дополнительную информацию о вызывающем абоненте. Например, подадрес вызывающего абонента "13" может быть признаком того, что абонентом является женщина в возрасте 30 50 лет с годовым доходом, превышающим 50 000 долларов. Третья колонка содержит телефонный номер вызываемого абонента, а четвертая его подадрес, содержащий дополнительную информацию о цели вызова. Например, подадрес вызываемого абонента "09" может быть кодом из журнального объявления и вводится вызывающим абонентом, чтобы указать, что его интересует информация о международном взаимном акционерном фонде. В примере на фиг. 4 терминальное оборудование в службе телемаркетинга получает телефонный вызов, сопровождаемый некоторой информацией, с ним связанной. Терминальное оборудование разделяет эту информацию на атрибуты вызова. В данном случае это номер вызывающего абонента и его подадрес, номер вызываемого абонента и его подадрес. Если также имеются атрибуты среды, содержащие информацию о получателе вызова, то они определяются и добавляются к атрибутам вызова. Затем эти атрибуты сравниваются с каждой записью номерного списка с целью поиска соответствий. Различают точное соответствие, соответствие по шаблонам и по обобщающим полям. Точное соответствие имеет место тогда, когда все атрибуты в точности совпадают с данными записи номерного списка. Необходимо учитывать, что в основной реализации поле со значением "NONE" (подходящих значений не существует) считается в точности соответствующим атрибуту, не содержащему никаких данных. Шаблонное соответствие имеет место тогда, когда один или более атрибутов не совпадает в точности с данными номерного списка, однако в усеченном виде такое совпадение имеет место. Например, номер телефона 6081111211 не совпадает с данными номерного списка 608# а в усеченном виде совпадает. Знак "#" одно из множества обозначений операции усечения справа. В альтернативной реализации могут использоваться также и другие шаблоны) например, данные номерного списка в виде $ 555# будут совпадать с усеченным видом атрибута вызова 6085551111, так как он содержит строку "555". Символ $ - одно из множества обозначений операции усечения слева. Соответствие по обобщающим полям имеет место тогда, когда один или более атрибутов не совпадают в точности с данными номерного списка, но при этом данные записи указывают, что приемлемо любое значение атрибута. Например, номер телефона 6081111211 не совпадает с данными записи *ANY, но *ANY указывает, что приемлем любой номер телефона, включая 6081111211. Заметим, однако, что запись, удовлетворяющая соответствию с атрибутами вызова и атрибутами среды получателя по шаблонным или обобщающим полям, может на самом деле содержать поля, полностью идентичные определенным атрибутам. Например, когда атрибуты вызова "5075553311, 12, 6082224444, 00", будем говорить о совпадении по обобщающим полям с записью номерного списка "5075553311, *ANY, *ANY, *ANY", несмотря на то, что первый атрибут "5075553311" идентичен первому полю записи номерного списка. В основной реализации запись номерного списка не может соответствовать атрибутам вызова и атрибутам среды ни в точности, ни по шаблонным, ни по обобщающим полям, в том случае, если какое-либо поле не совпадает по значению с соответствующим атрибутом. Однако в альтернативной реализации это разрешено, если совпадает значение по крайней мере одного атрибута. Запись номерного списка, которая в точности соответствует атрибутам поступившего вызова, используется для управления вызовом ("захватывает" вызов) и указывает, куда именно он должен быть направлен. Если точного соответствия не найдено, вызов захватывает та запись, которая имеет наиболее оптимальное соответствие по шаблонным или обобщающим полям. Более подробно метод определения такого наиболее оптимального соответствия будет рассмотрен ниже. Он основан на учете количества поля, идентичного атрибутам вызова. Также учитываются и определяемые пользователем весовые факторы значимости данных номерного списка. Если не найдено ни точного соответствия, ни соответствия по шаблонным или обобщающим полям (как показано выше), вызов отвергается. Для направления телефонного вызова по назначению запись номерного списка, "захватившая" вызов, использует маршрутную информацию, которая может быть одной и той же для всего номерного списка либо разной для каждой его записи. Маршрутные данные могут храниться вместе с номерным списком или с записями номерного списка, а также могут храниться как часть прикладной программы или в других сегментах памяти 30 (фиг. 2). Вернемся снова к фиг. 4. Предположим, что номерной список 01 будет управлять маршрутизацией поступающих вызовов, для которых не может быть получено заранее никакой детальной информации. Каждый раз, когда поступивший вызов "захватывается" записью из списка 01, он будет направляться на определенный телефон, согласно списку 01. Номерной список 02 будет управлять маршрутизацией вызовов от "особых клиентов", которые уже звонили ранее или для которых уже были получены необходимые телефонные номера и, возможно, другая информация. Эти клиенты сразу направляются точно к оператору, обслуживающему телефон с номером, определенным согласно списку 02. В такой вызов может быть также включена дополнительная информация, позволяющая оператору начать разговор с личного приветствия, как то: "Здравствуйте, Миссис Эплгейт! Вы уже что- нибудь решили относительно того свитера, о котором вы справлялись до этого?"Номерной список 03 будет управлять маршрутизацией вызовов от клиентов, которые еще не звонили, но указали, тем не менее, что их интересует какая-то конкретная справка. Например, любой поступивший вызов с подадресом "21" будет указывать на то, что клиент желает получить информацию о лекарственных средствах для лечения мужского облысения, поэтому вызов может быть автоматически направлен к оператору службы телемаркетинга, обладающему знаниями по этому предмету. На фиг. 5 показаны деревья поиска для номерных списков из фиг. 4. Как говорилось, каждое дерево поиска содержит отсортированные данные из соответствующей колонки каждого номерного списка. На фиг. 6 показан пример номерного списка, который мог бы быть использован в системе небольшого офиса или квартиры, где терминальное оборудование ежедневно получает не очень много звонков. Показан один номерной список, содержащий семь колонок данных. Первые четыре колонки рассматривались выше, пятая указывает день недели, в течение которого был получен вызов. Эта информация может быть получена в виде атрибута вызова или определена процессором 23 (фиг. 2) путем запроса системной даты, хранящейся в памяти 30. Шестая колонна содержит информацию о статусе владельца телефона. Эта информация используется при сопоставлении с "атрибутом среды", который не является частью поступающего вызова, а указывается получателем вызова. Если имеется один или более атрибутов среды, они добавляются к атрибутам вызова и обрабатываются единым образом. Далее это будет объясняться более подробно. В данном примере информация о статусе владельца указывает, отсутствует ли он, работает или в настоящее время он не занят. Последняя колонка содержит информацию о маршруте. В противоположность примеру из фиг. 3A эти маршрутные данные хранятся непосредственно в каждой записи номерного списка. В примере на фиг. 6 терминальное оборудование размещается в главном телефоне, расположенном в доме семьи Джонсонов. У них в доме имеется три телефонные линии: 5071111111 номер главного телефона дома, 5072222222 - номер телефона небольшой бухгалтерской конторы миссис Джонсон, которая располагается в цокольном этаже и 5073333333 номер телефона дочери Джонсонов, весьма разговорчивой девушки Тиффани. Маршрутные коды "01" и "02" одинаково направляют поступивший вызов на телефон в кухне, при этом в случае кода "02" раздается двойной звонок. Точно так же коды "03" и "04" направляют вызов на телефон в цокольном этаже, причем код "04" вызывает двойной звонок, а коды "05" и "06" направляют вызов на телефон в спальне Тиффани, код "06" сопровождается двойным звонком. Маршрутный код "00" явно указывает на то, что вызов не следует принимать, а код "10" на то, что поступивший вызов должен быть направлен на автоответчик. Если поступивший вызов "захватывает" первая запись номерного списка, он будет направлен на телефон в кухне, и звонок будет одиночным. Если четвертая запись "захватывает" вызов, это значит, что звонит некоторый определенный клиент фирмы миссис Джонсон. Такой вызов направляется на телефон в ее офисе и сопровождается двойным звонком. Если же вызов "захватывает" восьмая запись, это звонит Джеймс Джилтид, старый приятель Тиффани. Она специально ввела эту запись в номерной список для того, чтобы звонки с телефона Джеймса не принимались. В основной реализации деревья поиска, подобно изображенным на фиг. 9, связаны с номерным списком из фиг. 6. Как рассматривалось выше, каждое дерево поиска содержит отсортированные данные номерного списка из его соответствующей колонки. В том случае, когда используется один номерной список или небольшое их количество, применение деревьев поиска может не дать ожидаемого повышения производительности поисковой процедуры. На фиг.7 9 показана блок-схема программы терминального оборудования 20, функционирующего в рамках данного изобретения, где: 101 Инициализировать переменную Count для всех записей номерного списка значением -1. 102 Разбить информации вызова на атрибуты от (1) до (N). 103 Проверить дерево поиска на нахождение первой/следующей записи, совпадающей с атрибутом (1). 104 Совпадение найдено?
110 Получить атрибуты среды. 130 Все возможные шаблоны для атрибута (1) проверены?
132 Усечь атрибут (1). 160 Атрибут (1) *ANY
162 Установить атрибут (1) *ANY. 170 Найти запись номерного списка с наибольшим значением переменной Count. 171 Действительная запись номерного списка найдена?
172 Направить вызов согласно номерному списку или его записи. 175 Отвергнуть вызов. 190 Конец. 105 Сохранить номер номерного списка и номер ряда. 106 Атрибут (1) *ANY или произошло совпадение по шаблонному полю?
107 Установить переменную Count равной весовому фактору атрибута (1). 120 Проверить дерево поиска (j) на совпадение атрибута (j) с содержимым записи, соответствующей сохраненным номеру номерного списка и номеру ряда. 121 Совпадение?
122 Атрибут (1) *ANY или произошло совпадение по шаблонному полю?
123 Увеличить переменную Count на величину весового фактора атрибута (j). 124 Остались еще атрибуты для проверки?
140 Все возможные шаблоны для атрибута(j) проверены?
142 Усечь атрибут (j). 150 Атрибут (j) *ANY
152 Установить атрибут (j) *ANY. 155 Сбросить переменную Count в -1. 157 Восстановить атрибуты в их первоначальном значении. Блок 101 присваивает переменной "Count" (счет) начальное значение 1 для каждой записи из номерных списков. Блок 102 разделяет или разбивает информацию, сопровождающую поступивший вызов на один или более атрибутов вызова. Рассмотрим работу блок-схемы, используя наш пример службы телемаркетинга на фиг. 4. Блок 102 разбивает информацию вызова на четыре атрибута: атрибут (1), атрибут (2), атрибут (3) и атрибут (4). Атрибут (1) соответствует номеру вызывающего абонента, атрибут (2) его подадресу и т.д. Блок 102 также делает дублирующую копию этих атрибутов так, что блок-схема на фиг.7 9 всегда работает с неискаженной информацией. Эта дублирующая копия используется для того, чтобы восстанавливать атрибут в его первоначальном значении, если он был усечен или обобщен в результате какой-либо операции обработки. Блок 110 проверяет, потребуются ли какие-нибудь атрибуты среды в процессе принятия решения. Как рассматривалось выше, атрибут среды не является составной частью вызова, а указывается получателем. Если имеется один или более атрибутов среды (таких как статус владельца из фиг. 6), значения этих атрибутов определяются и добавляются к определенным в блоке 102 атрибутам вызова. Дублирующая копия атрибутов среды также производится в блоке 110. В нашем примере атрибутов среды нет. Для лучшего понимания блок-схемы предположим, что вызов получен и блок 102 разбивает сопровождающую его информацию на следующие атрибуты:
атрибут (1) 6085551111
атрибут (2) 16
атрибут (3) 5073337766
атрибут (4) 21
Блок 103 проводит поиск в первом дереве поиска для нахождения записи, совпадающей с атрибутом (1). Блок 103 определяет, что запись 201 первого дерева поиска совпадает с атрибутом (1), так что вопрос в блоке 104 получает утвердительный ответ. Блок 105 запоминает содержащиеся в записи 201 номер списка (02) и ряда (тоже 02). Блок 106 проверяет условие: значение атрибута равно *ANY или произошло совпадение по шаблонному полю. В данном случае ответ отрицательный. Далее блок 107 устанавливает переменную Count (для данной записи номерного списка) равной определенному пользователем весу атрибута (1). Центр телемаркетинга может считать некоторые атрибуты вызова более важными и поэтому приписывать атрибутам разные весовые факторы. Например, атрибуту (2) мог быть присвоен весовой фактор 0,5, а остальным атрибутам 1,0. Таким образом, показывается, что значимость атрибута (2) составляет только половину значимости каждого из остальных атрибутов. Для удобства предположим, что все атрибуты имеют один и тот же весовой фактор 1,0. В таком случае блок 107 устанавливает Count=1. Блок 108 устанавливает переменную-счетчик "j"=2, подготавливая проверку следующего атрибута. Блок 120 (фиг. 9) проверяет, совпадает ли следующий атрибут со следующим полем записи номерного списка, предыдущее поле которой уже совпало с предыдущим атрибутом. В нашем примере на фиг. 4 проверяется, совпадают ли данные в первом поле записи 202 второго дерева поиска с атрибутом (2). Так как атрибут (2) 16, т.е. имеет место совпадение, управление передается блоку 122. Блок 122 проверяет условие: явилось ли совпадение атрибута (j) соответствием по обобщающему (*ANY) или по шаб- лонному полю. Так как в нашем случае наблюдается точное совпадение, условие блока 122 не выполняется и, следовательно, блок 123 увеличивает значение переменной Count для данной записи списка на величину, равную определенному пользователем весу атрибута (2). В нашем примере блок 123 увеличивает Count до 2. Блок 124 выясняет, имеется ли еще какой-нибудь атрибут для проверки. Так как остается еще атрибут (3), то переменная "j" увеличивается до 3 и снова выполняются блоки 120 123. Эти блоки определяют, что атрибут (3) совпадает с записью 203 дерева поиска и переменная Count увеличивается до 3. Так как остался еще атрибут (4), то снова выполняются блоки 120 123 и обнаруживается, что атрибут (4) совпадает с записью 204 дерева поиска и, следовательно, Count увеличивается уже до 4. Блок 124 определяет, что непроверенных атрибутов больше нет и управление переходит к блоку 103 на фиг. 7. В нашем примере Count 4 указывает на точное соответствие записи 301 номерного списка (фиг. 4) атрибутам вызова. Блок 103 снова проверяет первое дерево поиска на наличие в нем других записей, совпадающих с атрибутом (1). Так как никакие другие записи кроме 201 не содержат значение "6085551111", совпадающих записей не находится, и условие блока 104 не выполняется. Блок 130 проверяет условие: все ли шаблонные поля, удовлетворяющие атрибуту (1), просмотрены. Так как шаблонные поля еще до сих пор не проверялись, условия блока 130 не выполняются, и следовательно, блок 132 выполняет усечение атрибута (1), отбрасывая по одному символу и заменяя все отброшенные символы одним знаком "#". Таким образом, атрибут (1) принимает вид "6085551#". Блоки 103, 104, 130 и 132 повторно выполняются до тех пор, пока не будет найдено совпадение с шаблоном или пока не будут усечены все символы атрибута (1). В нашем примере атрибут (1) усекается до состояния "608#". В этот момент блок 130 находит совпадение с записью 205 дерева поиска, а блок 105 сохраняет номер списка и номер ряда, содержащиеся в записи 205. Блок 106 еще раз проверяет условие: атрибут (1) *ANY или произошло совпадение по шаблонному полю. Так как в нашем случае произошло как раз совпадение по шаблонному полю, следовательно, переменная Count, связанная с данной записью списка, изменяет значение с -1 на 0, показывая таким образом, что для данной записи имеет место действительное (но не точное) соответствие. Блок 108 устанавливает j 2, а блоки 120 123 проверяют, совпадает ли первое поле записи 206 дерева поиска с атрибутом (2). Так как оба эти значения равны 16, они совпадают, а переменная Count увеличивается и становится равной 1. Блок 125 устанавливает j=3, а блоки 120-122 проверяют, совпадает ли первое поле записи 207 дерева поиска с атрибутом (3). Так как атрибут (3) 5073337766, а поле записи содержит *ANY, то они не совпадают. Условие блока 121 не выполняется, и управление передается блоку 140. Блок 140 проверяет условие: все ли возможные шаблоны для атрибута (3) уже просмотрены. Условие не выполняется, и блок 142 выполняет усечение атрибута (3), отбрасывая по одному символу и заменяя отброшенные символы одним знаком "#". В результате атрибут (3) теперь имеет вид "507333776#". Блоки 103, 104, 130 и 132 повторно выполняются до тех пор, пока не будет найдено совпадение с шаблоном или пока не будут усечены все символы атрибута (3). В нашем примере атрибут (3) постепенно усекается, пока не остается только символ "#", не совпадая ни в каком виде со значением *ANY, содержащимся в поле записи 207. Таким образом, все шаблоны проверены и при проверке условия в блоке 140 формируется утвердительный ответ. Блок 150 проверяет условие: атрибут (3) *ANY. Так как в данный момент атрибут (3) "#", условие не выполняется, и блок 152 устанавливает атрибут (3) *ANY. Управление возвращается блоку 120, который проверяет, совпадает ли теперь поле записи 207 дерева поиска с атрибутом (3). Так как оба значения равны *ANY, они совпадают. Условие блока 122 выполняется, однако переменная Count не увеличивается. В отличие от совпадения по шаблону, в случае совпадения по обобщающему полю значение Count не увеличивается. Блок 123 показывает, что остался еще один атрибут, который необходимо проверить. Поэтому j увеличивается до 4 и происходит возврат к блоку 120. На этот раз блоки 120 122 проверяют, совпадает ли первое поле записи 208 дерева поиска с атрибутом (4). Так как атрибут (4) 21, а поле записи содержит 99, они не совпадают. Условие блока 121 не выполняется, и управление передается блоку 140. Блоки 140 и 142 выполняются до тех пор, пока атрибут (4) не станет равным "#", что означает отсутствие совпадения. Затем блоки 150 152 устанавливают атрибут (4)*ANY, но на этот раз условие блока 121 не выполняется, потому что *ANY не совпадает с 99. Так как проверены все возможные шаблоны и атрибут (4) равен *ANY следовательно, условие блока 150 не выполняется. В этом случае, как нам известно, найденное поле не совпадает с атрибутом, т. е. нет ни точного совпадения, ни совпадения по шаблонному, ни по обобщающему полю. В основной реализации запись номерного списка не может "захватить" вызов, если она содержит поле, не совпадающее с атрибутом вызова. Поэтому блок 155 возвращает значение переменной Count для этой записи снова в -1, показывая таким образом, что полученный результат неприемлем. В альтернативной реализации запись номерного списка может "захватить" вызов, даже если она содержит поле, не совпадающее с атрибутом вызова, но при этом ее переменная Count имеет самое большое значение. В этой реализации блок 155 отсутствует. Как бы то ни было, в любой реализации блок 156 восстанавливает атрибуты в их первоначальных значениях, используя дублирующую копию, сделанную блоком 102 и/или блоком 110. Затем управление возвращается блоку 103. Блок 103 снова проверяет первое дерево поиска на наличие в нем других записей, совпадающих с атрибутом (1). Так как кроме записи 201 ни одна запись не содержит значение "6085551111", то совпадающих записей не находится и условие блока 104 не выполняется. Далее проверяется условие блока 130: все ли возможные шаблоны для атрибута (1) проверены. Так как шаблоны действительно уже были проверены, условие блока 130 выполняется. Блок 160 содержит условие: атрибут (1)*ANY. Так как атрибут (1) не равен *ANY, то это условие не выполняется и блок 162 устанавливает атрибут (1)*ANY. Управление передается блоку 103, который проверяет: совпадает ли теперь первое поле записи 209 дерева поиска с атрибутом (1). Так как оба эти значения равны теперь *ANY, они совпадают. Блоки 104 и 106 формируют утвердительный ответ, и блок 109 устанавливает значение переменной Count для этой записи в 0. Блоки 120, 121, 140, 150, 152, 103-108, 120, 121, 122, 124, 125 повторно выполняются и определяют, что записи 210; 211 и 212, как и запись 209, совпадают с атрибутами по обобщающему полю. После того, как проверен последний атрибут, условие блока 124 не выполняется и управление возвращается блоку 103. Следует отметить, что значение переменной Count для этой записи номерного списка равно 0. Блок 103 в конечном итоге находит и другие записи дерева поиска, у которых в первом поле содержится *ANY. Также он определяет, что эти записи номерного списка неприемлемы, так как содержат одно или более несовпадающих полей. Когда все записи проверены, блок 160 формирует утвердительный ответ, показывая тем самым, что процедура поиска завершена. Управление передается блоку 170. Блок 170 проводит поиск записи номерного списка с наибольшим значением переменной Count. Он определяет, что для записи 301 значение переменной Count равно 4, для записи 302 1, для записи 303 0, а для остальных записей значение переменной Count равно -1. Следовательно, запись 301 со значением переменной Count, равным 4, используется для управления поступившим вызовом. В случае, когда ни одна из записей не "захватывает" вызов, она может быть выбрана случайным образом, но может быть использован и другой механизм. Блок 171 проверяет условие: является ли действительным значение переменной Count для записи номерного списка, "захватившей вызов". В основной реализации действительным считается любое значение Count, большее или равное 0, хотя это определение при необходимости может быть изменено. Так как запись 301 номерного списка имеет действительное значение Count 4, то блок 172 направляет вызов по маршруту, который указан в записи номерного списка или в самом списке. В нашем случае вызов направляется к оператору в соответствии с номерным списком 02, так как запись 301 содержится в этом списке. После этого программа заканчивается блоком 190. Если запись с действительным значением Count не была найдена, вызов будет отвергнут в блоке 175. Данные содержащиеся в номерных списках, так же как и веса, приписанные атрибутам вызова, могут легко модифицироваться пользователем, как показано на экранных формах фиг. 10. Хотя в основном было рассмотрено применение в области аналоговой связи, данное изобретение может быть использовано и для приема/отвержения и маршрутизации цифровых сигналов между компьютерами. Это изобретение может быть особенно полезным в качестве механизма обеспечения безопасности для удаленных терминалов, соединенных с базовой ЭВМ через телефонную сеть. К тому же для ввода/изменения данных в номерном списке могут использоваться и другие способы вместо того, который иллюстрируют изображенные на фиг. 10 12 экранные формы. Например, с помощью клавиатуры телефона.
Класс H04M1/66 устройства для предотвращения нежелательного или злонамеренного вызова
Класс H04M3/38 устройства, исключающие возможность соединения некоторых абонентов с определенными номерами
Класс H04M3/42 системы, обеспечивающие абонентам особые услуги или удобства