ТЕХНОЛОГИИ АВТОМАТИЧЕСКОГО ДИАЛОГА
AUTOMATIC DIALOGUE TECHNOLOGIES

Уровень техники
Приложения электронной почты (почтовые программы) предоставляют пользователям возможность хранить сообщения в логических папках в рамках интерфейса, аналогичного интерфейсу, предоставленному посредством многих файловых систем. Почтовые приложения также могут давать возможность пользователям группировать сохраненные сообщения в логические "диалоги". Каждый диалог - это группа связанных сообщений, включающая в себя корневое сообщение и ответы на корневое сообщение или друг на друга. Когда скомпонованы как диалог, сообщения отображаются в пользовательском интерфейсе почтового приложения как список диалогов, сгруппированных по теме сообщения или цепочке диалога. Диалоги могут быть отсортированы по дате, а сообщения в рамках каждого диалога могут быть отсортированы на основе того, кто кому отвечает.
Несмотря на удобство, предлагаемое посредством групп сообщений, некоторые почтовые приложения ограничивают операции для диалога отдельными элементами диалога. Например, пользователь может не хотеть участвовать в цепочке диалога, обсуждающей варианты обеда с некоторыми коллегами. Пользователю может требоваться удалять отдельные элементы диалога по мере того, как они поступают, чтобы сохранять свою папку входящих сообщений свободной. Такие операции могут быть трудоемкими и длительными для пользователя, в частности, с учетом возрастающих объемов почтовых сообщений, которые пользователь может принимать за день. Следовательно, необходимы усовершенствования в технологиях управления и отображения элементов для того, чтобы разрешать эти и другие проблемы и расширять возможности работы пользователей в различных сценариях использования.
Сущность изобретения
Данная сущность изобретения предоставлена для того, чтобы представлять в упрощенной форме выбор концепций, которые дополнительно описаны ниже в подробном описании. Эта сущность не имеет намерением ни то, чтобы идентифицировать ключевые признаки или важнейшие признаки заявленного предмета изобретения, ни то, чтобы быть использованной так, чтобы ограничивать объем заявленного предмета изобретения.
Различные варианты осуществления, в общем, направлены на технологии автоматического ведения диалога для приложения обмена сообщениями. Некоторые варианты осуществления, в частности, направлены на действия автоматического ведения диалога, которые могут применяться по всей группе или цепочке диалога для приложения обмена сообщениями, такого как, например, почтовое приложение.
Один вариант осуществления, например, может содержать устройство, такое как вычислительное устройство, имеющее прикладную программу обмена сообщениями. Прикладная программа обмена сообщениями может содержать, помимо других элементов, модуль входящих сообщений, выполненный с возможностью приема входящего сообщения. Прикладная программа обмена сообщениями также может содержать модуль идентификации диалогов, функционально соединенный с модулем входящих сообщений, при этом модуль идентификации диалогов выполнен с возможностью определения того, что входящее сообщение является частью цепочки диалога, и ассоциирования входящего сообщения с цепочкой диалога посредством задания свойства идентификатора диалога входящего сообщения идентификатору диалога для цепочки диалога. Прикладная программа обмена сообщениями дополнительно может содержать модуль диспетчера диалогов, функционально соединенный с модулем идентификации диалогов, при этом модуль диспетчера диалогов выполнен с возможностью определения того, что правило диалога ассоциировано с цепочкой диалога, и применения правила диалога к входящему сообщению. Другие варианты осуществления описываются и приводятся в формуле изобретения.
Эти и другие признаки и преимущества должны становиться очевидными из прочтения последующего подробного описания и рассмотрения сопроводительных чертежей. Следует понимать, что как вышеприведенное общее описание, так последующее детальное описание являются только примерными и пояснительными, а не ограничивающими аспекты согласно формуле изобретения.
Краткое описание чертежей
Фиг. 1 иллюстрирует вариант осуществления операционного окружения.
Фиг. 2 иллюстрирует вариант осуществления вычислительного устройства.
Фиг. 3 иллюстрирует вариант осуществления почтового приложения.
Фиг. 4 иллюстрирует вариант осуществления первого вида диалога.
Фиг. 5 иллюстрирует вариант осуществления второго вида диалога.
Фиг. 6 иллюстрирует вариант осуществления третьего вида диалога.
Фиг. 7 иллюстрирует вариант осуществления четвертого вида диалога.
Фиг. 8 иллюстрирует вариант осуществления пятого вида диалога.
Фиг. 9 иллюстрирует вариант осуществления логической последовательности операций.
Фиг. 10 иллюстрирует вариант осуществления изделия.
Подробное описание изобретения
Различные варианты осуществления включают в себя физические или логические структуры, выполненные с возможностью осуществлять определенные операции, функции или услуги. Структуры могут содержать физические структуры, логические структуры или комбинацию вышеуказанных. Физические или логические структуры реализуются с использованием аппаратных элементов, программных элементов или комбинации вышеозначенного. Описания вариантов осуществления в отношении конкретных аппаратных или программных элементов, тем не менее, служат в качестве примеров, а не ограничений. Решения использовать аппаратные или программные элементы для того, чтобы фактически осуществлять на практике вариант осуществления, зависят от ряда внешних факторов, таких как требуемая скорость вычислений, уровень мощности, теплостойкость, бюджет цикла обработки, скорости передачи входных данных, скорости передачи выходных данных, ресурсы запоминающего устройства, скорости шин данных и другие проектные ограничения или ограничения производительности. Кроме того, физические или логические структуры могут иметь соответствующие физические или логические соединения, чтобы передавать информацию между структурами в форме электронных сигналов или сообщений. Соединения могут содержать проводные и/или беспроводные соединения, подходящие для информации или конкретной структуры. Следует отметить, что все ссылки на "один вариант осуществления" или "вариант осуществления" означают, что конкретный признак, структура или характеристика, описанные в связи с вариантом осуществления, включены, по меньшей мере, в один вариант осуществления. Вхождения фразы "в одном варианте осуществления" в различных местах подробного описания не обязательно ссылаются на идентичный вариант осуществления.
Различные варианты осуществления могут быть направлены на технологии автоматического ведения диалога для приложения обмена сообщениями. Технологии автоматического ведения диалога могут быть реализованы для любого приложения обмена сообщениями. Примеры приложений обмена сообщениями могут включать в себя, но не только, приложение обмена почтовыми сообщениями, программу обмена текстовыми сообщениями, программу обмена сообщениями по протоколу службы коротких сообщений (SMS), программу обмена сообщениями по протоколу службы мультимедийных сообщений (MMS), программу обмена речевыми сообщениями, программу обмена видеосообщениями и т.д. В одном варианте осуществления, технологии автоматического ведения диалога могут описываться в отношении почтового приложения в качестве примера, а не ограничения. Конкретные реализации могут реализовывать технологии автоматического ведения диалога с другими приложениями обмена сообщениями и, тем не менее, по-прежнему находиться в рамках объема по вариантам осуществления.
Различные варианты осуществления могут быть направлены на технологии автоматического ведения диалога для приложения обмена сообщениями, такого как почтовое приложение. В общем, почтовое приложение дает возможность пользователям составлять, отправлять и принимать сообщения по системам электронной связи. В некоторых вариантах осуществления, описанные технологии могут быть реализованы посредством одного или более элементов клиент-серверной системы обмена почтовыми сообщениями. В таких вариантах осуществления, сервер может поддерживать множество клиентов обмена сообщениями, принимать запросы и данные от клиентов, обрабатывать запросы, сохранять данные и возвращать результаты обработки клиентам. Соответственно, одна или более технологий агрегирования и отображения элементов могут быть реализованы как признаки в рамках клиентских почтовых приложений, серверных почтовых приложений, включающих в себя почтовые приложения на основе веб-технологий, предоставляющие доступ к почтовым службам через веб-обозреватель и/или посредством других типов приложений, программ или услуг, которые взаимодействуют с электронной почтой.
В некоторых вариантах осуществления, одна или более технологий автоматического ведения диалога могут быть реализованы в рамках клиентского почтового приложения или программы, такой как MICROSOFT OFFICE OUTLOOK, прикладное программное обеспечение от Корпорации Microsoft, Редмонд, Вашингтон. В таких вариантах осуществления, описанные технологии могут выполняться посредством клиентского почтового приложения либо в онлайновом, либо в оффлайновом режиме. В оффлайновом режиме клиентское почтовое приложение может выполнять одну или более технологий автоматического ведения диалога для локально сохраненных или кэшированных почтовых сообщений. Можно принимать во внимание, что описанные технологии могут быть реализованы посредством почтового клиента любого типа в соответствии с описанными вариантами осуществления, в том числе, без ограничения, клиентов согласно интерфейсу прикладного программирования для электронной почты (MAPI), клиентов по протоколу передачи гипертекста (HTTP), клиентов по потовому протоколу 3 (POP3), клиентов по протоколу доступа к Интернет-службе сообщений (IMAP или IMAP4), клиентов по сетевому протоколу передачи новостей (NNTP) и т.д.
Альтернативно или дополнительно, одна или более технологий автоматического ведения диалога могут быть реализованы как признаки в рамках серверного почтового приложения или программы, такой как MICROSOFT EXCHANGE SERVER от Корпорации Microsoft, Редмонд, Вашингтон. Сервер может предоставлять функциональность электронной почты, ведения календаря, контактов и задач и поддержку доступа на основе веб-технологий и с мобильных устройств к информации, а также хранение данных. Сервер может содержать или обмениваться данными с хранилищем сообщений для сохранения элементов, включающих в себя почтовые сообщения и другие данные, в почтовых ящиках и папках и может предоставлять интерфейс для обмена данными с различными почтовыми клиентами и разрешения доступа к хранилищу сообщений. Сервер также может содержать или обмениваться данными с каталогом, содержащим информацию о пользователях из системной и конфигурационной информации, которая может использоваться посредством подсистемы передачи сообщений, чтобы выполнять различные операции передачи и направления для почтовых сообщений, предназначенных для получателей на сервере, другом сервере в этой организации и/или для получателей в Интернете или других систем обмена сообщениями.
В некоторых вариантах осуществления, сервер может поддерживать различные веб-службы, включающие в себя функциональность доступа на основе веб-технологий, доступа с мобильных устройств и синхронизации, приложения на основе информационных служб Интернета (IIS) и интерфейса прикладного программирования Интернет-сервера (ISAPI), предоставляющие службы SMTP, NNTP, IMAP4 и POP3, чтобы давать возможность Интернет-пользователям осуществлять доступ к данным обмена сообщениями по множеству протоколов доступа в Интернет и HTTP-протоколов, в том числе удаленный вызов процедур (RPC) по HTTP-связи. В некоторых реализациях, данные могут форматироваться как сжатые беспроводные двоичные XML-данные (WbXML), чтобы эффективно использовать полосу пропускания для мобильных клиентов. В дополнение к стандартным Интернет-протоколам, сервер также может поддерживать связь по собственным или нестандартным протоколам, когда используется посредством компании или другой организации.
Почтовое приложение может предоставлять пользователям возможность хранить сообщения в логических папках в рамках интерфейса, аналогичного интерфейсу, предоставленному посредством многих файловых систем. Можно принимать во внимание, что термин "папка" может ссылаться на любой набор элементов, тем не менее, сохраненных и/или представленных в пользовательском интерфейсе. Хотя некоторые операционные системы или приложения могут не использовать термин "папка" при ссылке на набор элементов, такие сценарии имеют намерение покрываться посредством вариантов осуществления, которые описывают и иллюстрируют папки.
Почтовое приложение также может давать возможность пользователям и/или логике группировать сохраненные сообщения в логические диалоги, чтобы формировать группу сообщений или цепочку диалога. Каждый диалог может содержать группу связанных сообщений, включающую в себя, например, корневое сообщение и ответы на корневое сообщение или друг на друга. Когда пользователь выбирает, чтобы компоновать сообщения посредством диалога, сообщения отображаются в пользовательском интерфейсе почтового приложения как список диалогов, которые могут группироваться по теме сообщения или цепочке диалога. Диалоги могут быть отсортированы по дате, а сообщения в рамках каждого диалога могут быть отсортированы на основе того, кто кому отвечает.
В некоторых случаях, сообщения диалога могут храниться в нескольких папках. Например, пользователи могут вручную организовывать сообщения в различные папки. Пользователи также могут задавать одно или более правил фильтрации для автоматического разделения почтовых сообщений по определенным папкам на основе отправителя, темы или других критериев. Помимо этого, ответное сообщение, отправляемое пользователем, может сохраняться в папке отправленных элементов пользователя.
Несмотря на удобство, предлагаемое посредством цепочек сообщений, некоторые почтовые приложения ограничивают операции для диалога отдельными элементами диалога. Например, пользователь может не хотеть участвовать в цепочке диалога, обсуждающей варианты обеда с некоторыми коллегами. Пользователю может требоваться удалять отдельные элементы диалога по мере того, как они поступают, чтобы сохранять свою папку входящих сообщений свободной. Такие операции могут быть трудоемкими и длительными для пользователя, в частности, с учетом возрастающих объемов почтовых сообщений, которые пользователь может принимать в любой день.
Чтобы разрешать эти и другие проблемы, различные варианты осуществления могут реализовывать различные технологии автоматического ведения диалога для приложения обмена сообщениями. Некоторые варианты осуществления, в частности, направлены на технологии автоматического ведения диалога, которые могут применяться по всей группе сообщений или цепочке диалога для приложения обмена сообщениями, такого как, например, почтовое приложение.
Один вариант осуществления, например, может содержать устройство, такое как вычислительное устройство, имеющее прикладную программу обмена сообщениями, такую как почтовая прикладная программа. Прикладная программа обмена сообщениями может содержать, помимо других элементов, модуль входящих сообщений, выполненный с возможностью принимать входящее сообщение. Прикладная программа обмена сообщениями также может содержать модуль идентификации диалогов, функционально соединенный с модулем входящих сообщений, при этом модуль идентификации диалогов выполнен с возможностью определять то, что входящее сообщение является частью цепочки диалога, и ассоциировать входящее сообщение с цепочкой диалога посредством задания свойства идентификатора диалога входящего сообщения как идентификатора диалога для цепочки диалога. Прикладная программа обмена сообщениями дополнительно может содержать модуль диспетчера диалогов, функционально соединенный с модулем идентификации диалогов, при этом модуль диспетчера диалогов выполнен с возможностью определять то, что правило диалога ассоциировано с цепочкой диалога, и применять правило диалога к входящему сообщению. Таким образом, пользователь должен устанавливать правило диалога один раз, и правило диалога автоматически применяется ко всем сохраненным сообщениям в цепочке диалога, а также новым входящим сообщениям, которые являются частью этой цепочки диалога. Как результат, пользователь может иметь расширенные возможности обмена сообщениями.
Более конкретно, модуль диспетчера диалогов реализует технологии автоматического ведения диалога в форме действий на уровне диалога, которые могут применяться по всей группе сообщений или цепочке диалога. Действия на уровне диалога типично затрагивают некоторые или все сообщения во всей цепочке диалога. В отличие от этого, действия на уровне элемента типично затрагивают один элемент сообщения. Примеры правил диалога могут включать в себя, но не только, правило диалога "всегда удалять", правило диалога "всегда перемещать", правило диалога "всегда категоризовать", в числе других. Это просто несколько примеров, и любое число действий на уровне диалога может быть реализовано для цепочки диалога требуемым образом для данной реализации. Варианты осуществления не ограничены этим контекстом.
Фиг. 1 иллюстрирует блок-схему для операционного окружения 100, подходящего для осуществления на практике различных вариантов осуществления. Операционное окружение 100 может содержать элементы, созданные для реализации посредством однообъектного окружения или многообъектного распределенного окружения. Каждый элемент может быть реализован как аппаратный элемент, программный элемент или любая комбинация вышеозначенного, как требуется для данного набора проектных параметров или ограничений производительности. Примеры аппаратных элементов могут включать в себя устройства, компоненты, процессоры, микропроцессоры, схемы, схемные элементы (к примеру, транзисторы, резисторы, конденсаторы, индукторы и т.п.), интегральные схемы, специализированные интегральные схемы (ASIC), программируемые логические устройства (PLD), процессоры цифровых сигналов (DSP), программируемую пользователем вентильную матрицу (FPGA), запоминающие устройства, логические вентили, регистры, полупроводниковые устройства, кристаллы, микросхемы, наборы микросхем и т.п. Примеры программных элементов могут включать в себя любые программные компоненты, программы, приложения, компьютерные программы, прикладные программы, системные программы, машинные программы, программное обеспечение операционной системы, промежуточное программное обеспечение, микропрограммное обеспечение, программные модули, процедуры, подпрограммы, функции, способы, интерфейсы, программные интерфейсы, интерфейсы прикладного программирования (API), наборы инструкций, вычислительный код, компьютерный код, сегменты кода, сегменты компьютерного кода, слова, значения, символы или любую комбинацию вышеозначенного.
При использовании в данном документе термины "система", "подсистема", "компонент" и "модуль" имеют намерение ссылаться на связанный с применением компьютера объект, содержащий аппаратные средства, комбинацию аппаратных средств и программного обеспечения, программного обеспечения или программное обеспечение в ходе выполнения. Например, компонент может быть реализован как процесс, запущенный на процессоре, процессор, жесткий диск, несколько накопителей хранения (оптического и/или магнитного носителя хранения данных), объект, исполняемый файл, поток выполнения, программа и/или компьютер. В качестве иллюстрации, как приложение, запущенное на сервере, так и сервер может быть компонентом. Один или более компонентов могут постоянно размещаться внутри процесса и/или потока выполнения, и компонент может быть локализован на компьютере и/или распределен между двумя и более компьютеров требуемым образом для данной реализации. Варианты осуществления не ограничены этим контекстом.
В проиллюстрированном варианте осуществления, показанном на фиг. 1, операционное окружение 100 может содержать, помимо других элементов, клиентское вычислительное устройство 110 и серверное вычислительное устройство 130. Вычислительные устройства 110, 130 могут быть реализованы с использованием любого подходящего электронного устройства, имеющего вычислительные возможности и возможность связи. Примеры для вычислительных устройств 110, 130 могут включать в себя, но не только, мобильное устройство, персональное цифровое устройство, мобильное вычислительное устройство, смартфон, сотовый телефон, переносной телефон, одностороннее устройство поискового вызова, двухстороннее устройство поискового вызова, устройство обмена сообщениями, компьютер, персональный компьютер (PC), настольный компьютер, портативный компьютер, ноутбук, карманный компьютер, сервер, массив серверов или ферма серверов, веб-сервер, сетевой сервер, Интернет-сервер, рабочую станцию, миникомпьютер, мэйнфрейм, суперкомпьютер, сетевое устройство, устройство для доступа на основе веб-технологий, распределенную вычислительную систему, многопроцессорные системы, процессорные системы, бытовую электронную аппаратуру, программируемую бытовую электронную аппаратуру, телевизионный приемник, цифровой телевизионный приемник, абонентскую приставку, точку беспроводного доступа, базовую станцию, абонентскую станцию, мобильный абонентский центр, контроллер радиосети, маршрутизатор, концентратор, шлюз, мост, коммутатор, машину или комбинацию вышеозначенного. Хотя операционное окружение 100, как показано на фиг. 1, имеет ограниченное число узлов в определенной топологии, можно принимать во внимание, что операционное окружение 100 может включать в себя большее или меньшее число узлов в альтернативных топологиях требуемым образом для данной реализации.
Вычислительные устройства 110, 130 могут функционально соединяться через сеть 118 и соответствующие среды беспроводной или проводной связи. Вычислительные устройства 110, 130 могут координировать операции между собой. Координация может заключать в себе однонаправленный или двунаправленный обмен информацией. Например, вычислительные устройства 110, 130 могут передавать информацию по сети 118. Сеть 118 может содержать сеть с коммутацией пакетов, сеть с коммутацией каналов или комбинацию вышеозначенного. Информация может быть реализована как сообщения с данными, отправляемые через различные сетевые интерфейсы. Примерные сетевые интерфейсы включают в себя параллельные интерфейсы, последовательные интерфейсы и интерфейсы шин.
Вычислительные устройства 110, 130 могут реализовывать соответствующие вычислительные системы 120, 120a. Вычислительные системы 120, 120a могут включать в себя различные вычислительные элементы, такие как один или более процессоров, сопроцессоров, запоминающих устройств, наборов микросхем, контроллеров, периферийных устройств, интерфейсов, генераторов, синхронизирующих устройств, видеокарт, звуковых карт, мультимедийных компонентов ввода-вывода и т.д. Вычислительные системы 120, 120a могут реализовывать, помимо других элементов, соответствующие клиентские прикладные программы 122 и серверные прикладные программы 132. В примере, проиллюстрированном на фиг. 1, клиентские прикладные программы 122 могут содержать клиентское почтовое приложение 124 и другие приложения 126, а серверные прикладные программы 132 могут содержать серверное почтовое приложение 134 и другие приложения 136. В различных реализациях, клиентское почтовое приложение 124 и/или серверное почтовое приложение 134 может выполнять одну или более технологий агрегирования и отображения элементов в соответствии с описанными вариантами осуществления.
Приложения 126 могут содержать один или более типов прикладных программ, поддерживающих работу клиентского вычислительного устройства 110. Примерные прикладные программы могут включать в себя, без ограничения, приложение веб-обозревателя, телефонное приложение (к примеру, сотовое, VoIP, PTT), сетевое приложение, приложение обмена сообщениями (к примеру, IM, SMS, MMS), приложение для работы с календарем, приложение для управления контактами, приложение для управления задачами, приложение обработки текстов, приложение электронных таблиц, приложение управления базами данных, мультимедийное приложение (к примеру, видеопроигрыватель, аудиопроигрыватель, мультимедийный проигрыватель, цифровую камеру, видеокамеру, управление мультимедиа), приложение предоставления услуг на основе информации о местоположении (LBS), игровое приложение и т.д.
Приложения 136 могут содержать один или более типов прикладных программ, поддерживающих работу серверного вычислительного устройства 130. В различных реализациях, приложения 136 могут включать в себя серверные прикладные программы, поддерживающие работу серверного вычислительного устройства 130 как почтового сервера, веб-сервера и/или файлового сервера в соответствии с описанными вариантами осуществления. В некоторых случаях, одно или более приложений 136 может содержать сеть, сервер или версию на основе веб-технологий одного или более приложений 126. В таких случаях, приложения 126, 136 могут работать отдельно, например, когда клиентское вычислительное устройство 110 находится оффлайн, или могут взаимодействовать, когда клиентское вычислительное устройство 110 находится онлайн и подключено к серверному вычислительному устройству 130 через сеть 118.
Вычислительные системы 120, 120a также могут содержать соответствующие операционные системы 128, 138, подходящие для управления работой клиентского вычислительного устройства 110 и серверного вычислительного устройства 130. В некоторых вариантах осуществления, операционные системы 128, 138 могут содержать соответствующие клиентские и серверные версии операционной системы, такой как операционная система MICROSOFT WINDOWS от Корпорации Microsoft, Редмонд, Вашингтон. Можно принимать во внимание, что другие подходящие операционные системы могут использоваться для клиентского вычислительного устройства 110 и/или серверного вычислительного устройства 130.
Вычислительные устройства 110, 130 могут содержать или обмениваться данными с хранилищем данных для сохранения элементов, таких как почтовые сообщения и другие данные в почтовых ящиках и папках. Со ссылкой на фиг. 1, хранилище данных может быть реализовано посредством базы 140 данных. В таких реализациях серверное вычислительное устройство 130 может предоставлять клиентскому вычислительному устройству 110 доступ к базе 140 данных, когда соединяется через сеть 118. Альтернативно или дополнительно, клиентское вычислительное устройство 110 может непосредственно осуществлять доступ к базе 140 данных через сеть 118. Хотя показаны как отдельные элементы в целях иллюстрации, можно принимать во внимание, что в некоторых вариантах осуществления, база 140 данных может являться частью клиентского вычислительного устройства 110 и/или серверного вычислительного устройства 130. Также можно принимать во внимание, что хранилище данных может постоянно размещаться на клиентском вычислительном устройстве 110, серверном вычислительном устройстве 130 и/или в базе 140 данных, и что, в некоторых вариантах осуществления, клиентское вычислительное устройство 110, серверное вычислительное устройство 130 и/или база 140 данных могут хранить соответствующие хранилища данных, которые могут синхронизироваться друг с другом.
В дополнение к соответствующим вычислительным системам 120, 120a, вычислительные устройства 110, 130 могут реализовывать соответствующую систему 150, 150a связи. Системы 150, 150a связи могут включать в себя различные элементы обмена данными, такие как передающее устройство, приемное устройство, приемо-передающее устройство, радиостанция, сетевой интерфейс, процессор полосы модулирующих частот, антенна, усилители, фильтры и т.д. В одном варианте осуществления, например, вычислительные устройства 110, 130 могут быть реализованы с использованием вычислительной архитектуры и архитектуры связи, как описано со ссылкой на фиг. 2.
Фиг. 2 предоставляет иллюстративную архитектуру для вычислительного устройства 200, подходящую для осуществления на практике различных вариантов осуществления. Вычислительное устройство 200 может представлять, например, клиентское вычислительное устройство 110 и/или серверное вычислительное устройство 130. Как показано, вычислительное устройство 200 иллюстрирует традиционную вычислительную архитектуру для персонального или серверного компьютера, включающего в себя систему обработки, содержащую процессор 204 и системное запоминающее устройство 206. Системное запоминающее устройство 206 может включать в себя, помимо других типов запоминающего устройства, оперативное запоминающее устройство (RAM) 208 и постоянное запоминающее устройство (ROM) 210. Система ввода-вывода, такая как базовая система ввода-вывода (BIOS), может реализовывать процедуры, чтобы помогать в передаче информации между элементами в рамках вычислительного устройства 200, к примеру, во время операций запуска, с использованием логики, сохраненной в ROM 210. Системная шина 212 функционально соединяет все элементы вычислительного устройства 200, чтобы упрощать операции передачи информации и обработки данных.
Вычислительное устройство 200 дополнительно включает в себя устройство 214 хранения данных большой емкости для сохранения операционной системы, такой как операционная система 128, а также других программных модулей 216 и программных данных 218. Устройство 214 хранения данных большой емкости также может сохранять различные прикладные программы, как подробнее описано ниже.
Устройство 214 хранения данных большой емкости подключается к процессору 204 через контроллер устройства хранения данных большой емкости (не показан), подключенный к системной шине 212. Устройство 214 хранения данных большой емкости и его ассоциированные машиночитаемые носители предоставляют энергонезависимое хранилище для вычислительного устройства 200. Хотя описание машиночитаемых носителей, содержащееся в данном документе, ссылается на устройство хранения данных большой емкости, такое как жесткий диск или накопитель CD-ROM, специалисты в данной области техники должны принимать во внимание, что машиночитаемыми носителями могут быть любыми доступные носители, к которым может осуществлять доступ вычислительное устройство 200. В качестве примера, а не ограничения, машиночитаемые носители могут содержать компьютерные носители хранения данных и среды связи. Компьютерные носители хранения включают в себя энергозависимые и энергонезависимые, съемные и несъемные носители, реализованные любым способом или технологией для хранения информации, такой как машиночитаемые инструкции, структуры данных, программные модули или другие данные. Компьютерный носитель хранения данных включает в себя (но не только) запоминающее устройство по технологии RAM, ROM, EPROM, EEPROM, флэш-память или другой технологии полупроводниковых запоминающих устройств, CD-ROM, DVD или другое оптическое устройство хранения, магнитные кассеты, магнитную ленту, устройство хранения на магнитных дисках или другие магнитные устройства хранения, либо любой другой носитель, который может использоваться для того, чтобы сохранять требуемую информацию, и к которому можно осуществлять доступ посредством компьютера.
Согласно различным вариантам осуществления, вычислительное устройство 200 может работать в сетевом окружении с использованием логических соединений с удаленными компьютерами через сеть 118, которой, в некоторых реализациях, может быть сеть по протоколу управления передачей (TCP) и Интернет-протоколу (IP), к примеру, Интернет. Вычислительное устройство 200 может подключаться к сети 118 через сетевой интерфейс 220 (к примеру, проводной или беспроводной сетевой интерфейс), подключенный к системной шине 212. Можно принимать во внимание, что сеть 118 может содержать любой тип сети в соответствии с описанными вариантами осуществления, в том числе, без ограничения, глобальную вычислительную сеть (WAN), локальную вычислительную сеть (LAN) и/или сотовую телефонную сеть, и что сетевой интерфейс 220 может поддерживать различные транспортные уровни, такие как GPRS, CDMA 1xRTT, IEEE 802.11 и другие, для подключения к множеству сетей и/или удаленных компьютерных систем.
Вычислительное устройство 200 может включать в себя контроллер 222 ввода-вывода для приема и обработки ввода от ряда устройств 224 ввода. Пользователь может входить в команды и информацию в вычислительное устройство 200 через различные устройства 224 ввода, такие как клавиатура и указательное устройство, такие как мышь, шаровой манипулятор или сенсорная панель. Другие устройства ввода могут включать в себя микрофон, джойстик, игровой планшет, спутниковую антенну, сканер и т.п. Устройства 224 ввода могут подключаться к процессору 204 через контроллер 222 ввода-вывода, который подключается к системной шине 212, но могут подключаться посредством других интерфейсов и шинных структур, таких как параллельный порт, игровой порт или универсальная последовательная шина (USB). Контроллер 222 ввода-вывода также может предоставлять вывод в различные устройства 224 вывода, такие как монитор или другой тип дисплейного устройства, которое подключается через контроллер 222 ввода-вывода к системной шине 212. В различных реализациях, дисплейное устройство может представлять один или более пользовательских интерфейсов (UI) для пользователя в соответствии с описанными вариантами осуществления. В дополнение к дисплейному устройству, контроллер 222 ввода-вывода может предоставлять вывод на принтер, динамики и другие периферийные устройства.
Как упомянуто выше, определенное число программных модулей и файлов данных может сохраняться в устройстве 214 хранения данных большой емкости и RAM 208 вычислительного устройства 200. В примере, проиллюстрированном на фиг. 2, устройство 214 хранения данных большой емкости и RAM 208 могут сохранять операционную систему 128, а также одну или более клиентских прикладных программ 122, включающих в себя клиентское почтовое приложение 124 и другие приложения 126. Можно принимать во внимание, что в некоторых реализациях, устройство 214 хранения данных большой емкости и RAM 208 могут сохранять операционную систему 138, а также одну или более серверных прикладных программ 132, включающих в себя серверное почтовое приложение 134 и другие приложения 136.
Согласно различным вариантам осуществления, клиентское почтовое приложение 124 и/или серверное почтовое приложение 134 может реализовывать одну или более технологий автоматического ведения диалога. В одном варианте осуществления, например, клиентское почтовое приложение 124 и/или серверное почтовое приложение 134 может быть реализовано так, как описано со ссылкой на фиг. 3.
Фиг. 3 иллюстрирует один вариант осуществления почтового приложения 300, подходящего для осуществления на практике различных вариантов осуществления. Со ссылкой на фиг. 1 и 2, в некоторых реализациях, почтовое приложение 300 может работать в качестве клиентского почтового приложения 124 как одна из клиентских прикладных программ 122, которые постоянно размещаются на вычислительном устройстве 110. Альтернативно или дополнительно, почтовое приложение 300 может работать в качестве серверного почтового приложения 134 как одна из серверных прикладных программ 132, которые постоянно размещаются на вычислительном устройстве 130. Дополнительно, одна или более частей почтового приложения 300 могут быть распределены между клиентским почтовым приложением 124 и серверным почтовым приложением 134. Одна или более частей почтового приложения 300 также могут быть реализованы посредством прикладных программ в RAM 208 вычислительного устройства 200, на другом удаленном компьютере или в любом другом варианте, как должно быть очевидным специалистам в области техники компьютерного программного обеспечения.
Как показано, почтовое приложение 300 может включать в себя хранилище 310 элементов. Хотя хранилище 310 элементов показано как часть почтового приложения 300 в целях иллюстрации, а не ограничения, можно принимать во внимание, что хранилище 310 элементов может постоянно размещаться в различных местоположениях в соответствии с описанными вариантами осуществления. Например, хранилище 310 элементов может постоянно размещаться на клиентском вычислительном устройстве 110, серверном вычислительном устройстве 130 и/или в базе 140 данных. В качестве одного неограничивающего примера, хранилище 310 элементов почтового приложения 300 может постоянно размещаться в программных данных 218 вычислительного устройства 200 или в базе данных, и/или в одном или более файлов. В качестве другого неограничивающего примера, хранилище 310 элементов может постоянно размещаться полностью или частично в каталоге, указываемом пользователем в файловой системе операционной системы, такой как операционная система 128 или операционная система 138. В качестве другого неограничивающего примера, хранилище 310 элементов может постоянно размещаться полностью или частично в базе 140 данных, к которой может осуществляться доступ или для которой может выступать в качестве хоста серверное вычислительное устройство 130.
В примере, проиллюстрированном на фиг. 3, хранилище 310 элементов включает в себя папку 312 входящих сообщений, папку-корзину 314, папку 316 отправленных элементов, одну или более других папок 318 почтовых сообщений и один или более архивных файлов 320. Можно принимать во внимание, что термин "папка" или "файл" может ссылаться на любой набор элементов, тем не менее, сохраненных и/или представленных в пользовательском интерфейсе. Хотя некоторые операционные системы или приложения могут не использовать термин "папка" при ссылке на набор элементов, такие сценарии имеют намерение покрываться посредством вариантов осуществления, которые описаны и иллюстрируют папки. Также можно принимать во внимание, что другие разновидности папок и файлы могут быть реализованы в соответствии с описанными вариантами осуществления.
Почтовое приложение 300 может предоставлять пользователю возможность сохранять элементы в определенных логических папках, таких как папка 312 входящих сообщений, папка-корзина 314, папка 316 отправленных элементов и одна или более других папок 318 почтовых сообщений, к примеру, созданная пользователем папка для сохранения элементов, ассоциированных с определенным отправителем или получателем, темой (к примеру, проектом), содержимым (к примеру, текстом, вложением) или другими критериями. Пользователь может взаимодействовать с почтовым приложением 300 и вручную организовывать элементы в различные папки. Пользователь также может задавать одно или более правил фильтрации для автоматического разделения элементов по определенным папкам на основе отправителя, получателя, темы, содержимого или других критериев. Помимо этого, ответное сообщение, отправляемое пользователем в ответ на другие сообщения, может храниться в папке 316 отправленных элементов. Пользователи также могут сохранять устаревшие элементы в одном или более архивных файлов 320, которые могут быть реализованы как один или более файлов с расширением персональной таблицы хранения (.pst) на локальном жестком диске пользователя и/или любая другая подходящая структура архивных данных.
Почтовое приложение 300 может давать возможность пользователю группировать сохраненные сообщения в логические диалоги. Каждый диалог может содержать группу связанных элементов, включающую в себя, например, корневое сообщение и ответы на корневое сообщение или друг на друга. В некоторых случаях, связанные элементы диалога могут сохраняться в нескольких ячейках хранения, к примеру, в двух или более из папки 312 входящих сообщений, папки-корзины 314, папки 316 отправленных элементов, других папок 318 почтовых сообщений и архивных файлов 320.
Как показано, почтовое приложение 300 может включать в себя логику 330 управления элементами, которая может отвечать за выполнение некоторых или всех технологий агрегирования и отображения элементов, описанных в данном документе. В примере, проиллюстрированном на фиг. 3, логика 330 управления элементами включает в себя различные модули, причем каждый модуль представляет дискретные наборы логики для различных операций, выполняемых посредством логики 330 управления элементами.
Логика 330 управления элементами также может содержать другую логику для управления почтовым приложением 300, которая может поддерживать различные другие операции и возможности. Примерные операции и возможности могут включать в себя операции отправки и приема, операции сохранения и организации, операции фильтрации, операции сортировки, операции поиска, операции предварительного просмотра, возможности для синхронизации, возможности для осуществления доступа к данным обмена сообщениями, в том числе доступ на основе веб-технологий и доступ с мобильных устройств, возможности для обнаружения онлайнового/оффлайнового состояния пользователей, возможности для интегрирования почтового приложения 300 с функциональностью календаря, контактов и задач и/или любые другие признаки в соответствии с описанными вариантами осуществления.
В некоторых реализациях, логика 330 управления элементами может постоянно размещаться в рамках почтового приложения 300 как часть клиентских прикладных программ 122 на клиентском вычислительном устройстве 110 или как часть серверных прикладных программ 132 на серверном вычислительном устройстве 130. Тем не менее, можно принимать внимание, что логика 330 управления элементами альтернативно или дополнительно может осуществляться как машиноисполняемые инструкции, сохраненные на одном или более типов машиночитаемых носителей хранения данных во множестве местоположений в соответствии с описанными вариантами осуществления.
Хотя пример, проиллюстрированный на фиг. 3, включает в себя конкретный набор логики, можно принимать во внимание, что логика 330 управления элементами предоставляет примерную реализацию общей функциональности. Следует понимать, что последовательность логики не обязательно должна выполняться в представленном порядке, если не указано иное. Помимо этого, хотя логика 330 управления элементами может описываться как выполняющая определенную последовательность этапов, другие последовательности этапов также могут выполняться согласно альтернативным вариантам осуществления. Кроме того, некоторые отдельные этапы, выполняемые посредством логики 330 управления элементами, могут включать в себя несколько подэтапов, которые могут выполняться в различных последовательностях надлежащим образом для конкретного этапа. Кроме того, дополнительные этапы могут выполняться, или некоторые этапы могут опускаться посредством логики 330 управления элементами в зависимости от конкретной реализации.
В проиллюстрированном варианте осуществления, показанном на фиг. 3, логика 330 управления элементами может подразделяться на модуль 332 входящих сообщений, модуль 334 идентификации диалогов, модуль 336 диспетчера диалогов, модуль 338 извлечения сообщений и модуль 340 исходящих сообщений. Следует принимать во внимание, что эти модули могут совместно использовать одну или более общих инструкций. Кроме того, следует принимать во внимание, что логика 330 управления элементами может включать в себя другие модули 342 сообщений в дополнение к проиллюстрированным модулям, чтобы предоставлять дополнительную функциональность работы с сообщениями. Например, логика управления элементами может включать в себя модуль сообщений, который отфильтровывает почтовые сообщения со "спамом".
Когда выполняется посредством процессора 204, модуль 332 входящих сообщений взаимодействует с операционной системой 128, чтобы принимать входящие почтовые сообщения, которые принимаются от сети 118 посредством сетевого интерфейса 220. Например, модуль 332 входящих сообщений может использовать интерфейс, предоставленный посредством операционной системы 128, чтобы конфигурировать обратный вызов, который инструктирует операционной системе 128 предоставлять входящие почтовые сообщения в модуль 332 входящих сообщений. Когда модуль 332 входящих сообщений принимает входящее почтовое сообщение, модуль 332 входящих сообщений может выполнять одну или более операций обработки почтовых сообщений для входящего почтового сообщения. Например, модуль 332 входящих сообщений может определять то, включает или нет входящий почтовый адрес в себя свойство "кому", свойство "копия" или свойство "скрытая копия", которое указывает почтовый адрес, ассоциированный с активной учетной записью, поддерживаемой посредством вычислительных устройств 110, 130. В этом примере, модуль 332 входящих сообщений может формировать исходящее сообщение "возврат", когда свойство "кому", свойство "копия" или свойство "скрытая копия" входящего почтового сообщения указывают почтовый адрес, ассоциированный с неактивной учетной записью, которая ранее поддержана посредством вычислительных устройств 110, 130. После того, как модуль 332 входящих сообщений выполняет операции обработки почтовых сообщений для входящего почтового сообщения, модуль 332 входящих сообщений может предоставлять входящее почтовое сообщение в модуль 334 идентификации диалогов.
Логика 330 управления элементами может включать в себя модуль 334 идентификации диалогов, функционально соединенный с модулем 332 входящих сообщений. Модуль 334 идентификации диалогов выполнен с возможностью определять то, что входящее сообщение является частью цепочки диалога. Модуль 334 идентификации диалогов ассоциирует входящее сообщение с цепочкой диалога посредством задания свойства идентификатора диалога входящего сообщения как идентификатора диалога для цепочки диалога.
Когда выполняется посредством процессора 204, модуль 334 идентификации диалогов принимает входящие почтовые сообщения от модуля 332 входящих сообщений и пытается идентифицировать существующий диалог, ассоциированный с входящим почтовым сообщением. Если модуль 334 идентификации диалогов не может успешно идентифицировать существующий диалог, ассоциированный с входящим почтовым сообщением, модуль 334 идентификации диалогов может ассоциировать входящее почтовое сообщение с новым диалогом.
Модуль 334 идентификации диалогов может определять то, является или нет сообщение частью существующего диалога, рядом различных способов. В одном варианте осуществления, например, модуль 334 идентификации диалогов выполняет алгоритм, который ассоциирует входящее почтовое сообщение с существующим диалогом, когда одно или более следующих условий возникает:
(1) Входящее почтовое сообщение включает в себя свойство "в ответ на", которое указывает значение, которое соответствует значению, указываемому посредством свойства "идентификатор сообщения" сохраненного сообщения, ассоциированного с существующим диалогом;
(2) Входящее почтовое сообщение включает в себя свойство "ссылки", которое указывает значение, которое соответствует значению, указываемому посредством свойства "идентификатор сообщения" сохраненного сообщения, ассоциированного с существующим диалогом; и
(3) Нормализованное свойство "тема" входящей электронной почты соответствует нормализованному свойству "тема" сохраненного сообщения, ассоциированного с существующим диалогом.
Возникновение одного из этих условий может представлять примерный набор предварительных условий для предоставления возможности модулю 334 идентификации диалогов ассоциировать входящее почтовое сообщение с существующим диалогом. Тем не менее, могут быть реализации, в которых могут возникать дополнительные условия до того, как модуль 334 идентификации диалогов ассоциирует входящее почтовое сообщение с существующим диалогом. Например, одна реализация может ассоциировать принимаемое сообщение с существующим диалогом, когда условие (2) возникает, только если условие (1) не возникает.
Дополнительно или альтернативно, модуль 334 идентификации диалогов не выполняет действия, чтобы ассоциировать почтовые сообщения с диалогами. Вместо этого, модуль 334 идентификации диалогов может выполнять действия, чтобы ассоциировать почтовые сообщения с диалогами. Это включает в себя как входящие почтовые сообщения, так и исходящие почтовые сообщения.
После того, как модуль 334 идентификации диалогов ассоциирует входящее почтовое сообщение с существующим диалогом или ассоциирует входящее почтовое сообщение с новым диалогом, модуль 334 идентификации диалогов может сохранять в базе 350 данных сообщений входящее почтовое сообщение наряду с идентификатором диалога, который идентифицирует диалог, ассоциированный с входящим почтовым сообщением. В одной реализации, база 350 данных сообщений включает в себя таблицу, которая включает в себя строку для каждого почтового сообщения и столбец для каждого свойства почтового сообщения. Например, таблица может включать в себя столбец для свойства "кому" почтового сообщения, свойства "от кого" почтового сообщения, свойства "копия" почтового сообщения, свойства "дата" почтового сообщения, свойства "тема" почтового сообщения, свойства "тело" почтового сообщения и т.д. Кроме того, в этом случае, таблица может включать в себя столбец для идентификатора диалога, который идентифицирует диалог, ассоциированный с почтовым сообщением. Пример предоставлен в таблице 1 следующим образом:
Таблица 1
Кому
От кого
Тема
Тело
Идентификатор диалога
...
jones@microsoft.com
smith@microsoft.com
Офис в Атланте закрывается
Сегодня офис в Атланте закрывается...
53713
ybara@microsoft.com
barney@microsoft.com
Обедаем сегодня?
Хочу сходить на обед в полдень...
25415
barney@microsoft.com
ybara@microsoft.com
RE: Обедаем сегодня?
Конечно, куда хочешь пойти?
25415
ybara@microsoft.com
barney@microsoft.com
RE: RE: Обедаем сегодня?
Давай сходим в Mario's...
25415
…
…
…
…
…
Следует принимать во внимание, что таблица может включать в себя столбцы для многих других свойств почтовых сообщений. Эти другие свойства могут включать в себя свойство "X-MimeOLE", свойство "класс содержимого", свойство "версия MIME", свойство "тип содержимого", свойств "кодирование передачи содержимого", свойство "дата", свойство "идентификатор сообщения", свойство "X-MS-Has-Attach", свойство "X-MS-TNEF-Correlator", свойство "X-Priority", свойство "приоритет", свойство "важность", свойство "копия", свойство "скрытая копия" и т.д. Кроме того, легко можно заметить, что таблица 1 включает в себя последовательность почтовых сообщений, передаваемых между пользователем, ассоциированным с почтовым адресом "ybara@microsoft.com", и пользователем, ассоциированным с почтовым адресом "barney@microsoft.com", относительно того, следует или нет идти на обед. Следует отметить, что эти почтовые сообщения имеют один идентификатор диалога, приведенный в свойствах "идентификатор диалога". Таким образом, идентификаторы диалогов свойств "идентификатор диалога" этих почтовых сообщений указывают, что эти почтовые сообщения ассоциированы с общим диалогом.
Логика 330 управления элементами может включать в себя модуль 338 извлечения сообщений, функционально соединенный с модулем 336 диспетчера диалогов. Когда выполняется посредством процессора 204, модуль 338 извлечения сообщений предоставляет возможность пользователям извлекать почтовые сообщения, сохраненные в базе 350 данных сообщений. Когда почтовое приложение 300 реализуется посредством серверного вычислительного устройства 130, например, модуль 338 извлечения сообщений может принимать периодические запросы от клиентского почтового приложения 124 на клиентском вычислительном устройстве 110, чтобы извлекать новые сообщения, которые указывают почтовый адрес, ассоциированный с пользователем клиентского вычислительного устройства 110. В ответ на такие запросы модуль 338 извлечения сообщений может идентифицировать все новые почтовые сообщения в базе 350 данных сообщений, которые ранее не отправлены в клиентское вычислительное устройство 110. Если модуль 338 извлечения сообщений идентифицирует все такие новые почтовые сообщения, модуль 338 извлечения сообщений может отправлять идентифицированные почтовые сообщения, наряду с идентификаторами диалогов почтовых сообщений, в клиентское вычислительное устройство 110. После приема идентифицированных почтовых сообщений клиентское почтовое приложение на клиентском вычислительном устройстве 110 может представлять вид пользовательского интерфейса, в котором идентифицированные почтовые сообщения, наряду с ранее извлеченными почтовыми сообщениями, группируются по диалогу, с которым ассоциируются почтовые сообщения. Например, клиентское вычислительное устройство 110 может представлять вид пользовательского интерфейса, в котором почтовые сообщения, которые ассоциированы с диалогом, представляются как деревья почтовых сообщений. В другом случае, клиентское вычислительное устройство 110 может представлять интерфейс, который включает в себя отдельные списки почтовых сообщений для каждого диалога.
Логика 330 управления элементами может включать в себя модуль 340 исходящих сообщений, функционально соединенный с модулем 338 извлечения сообщений. Когда выполняется посредством процессора 204, модуль 340 исходящих сообщений предоставляет возможность пользователям отправлять исходящие почтовые сообщения. Например, модуль 340 исходящих сообщений может принимать запрос от клиентского почтового приложения 124 на клиентском вычислительном устройстве 110, чтобы отправлять исходящее почтовое сообщение. В этом примере, модуль 340 исходящих сообщений может ассоциировать исходящее почтовое сообщение с идентификатором диалога и включать этот идентификатор диалога в исходящее почтовое сообщение. После того, как модуль 340 исходящих сообщений ассоциирует исходящее почтовое сообщение с идентификатором диалога и включает этот идентификатор диалога в исходящее почтовое сообщение как свойство "идентификатор диалога" почтового сообщения, модуль 340 исходящих сообщений может инструктировать операционной системе 128 отправлять исходящее почтовое сообщение по сети 118.
Логика 330 управления элементами может включать в себя модуль 336 диспетчера диалогов, функционально соединенный с модулем 334 идентификации диалогов. Модуль 336 диспетчера диалогов, в общем, может быть выполнен с возможностью реализовывать различные технологии автоматического ведения диалога. Модуль 336 диспетчера диалогов реализует технологии автоматического ведения диалога в форме действий на уровне диалога, которые могут применяться по всей группе сообщений или цепочке диалога, управляемой посредством почтового приложения 300. Действия на уровне диалога типично затрагивают некоторые или все сообщения во всей цепочке диалога. В отличие от этого, действия на уровне элемента типично затрагивают один элемент сообщения.
Один из основных принципов помощи пользователям уменьшать объем служебной информации с функциональностью ведения диалогов состоит в предоставлении им простого способа оперировать с моделью диалогов. Модель диалогов теперь обоснованно представляет группу сообщений, с которыми взаимодействует пользователь. Предусмотрено две основных группы действий, которые должна поддерживать новая модель диалогов. Во-первых, модель диалогов продвигает то, что раньше было действиями уровня элемента, на уровень диалога и вводит новый набор действий специально для элементов диалога. Продвижение действий на уровне элемента заключается в пакетировании действий, которые ранее выполнялись по отдельности для сообщений, таких как "установить флаг", "категоризировать", "назначить" и т.д., так что пользователь задает одно правило диалога для всего диалога. Например, пользователь может устанавливать флаг для цепочки диалога и использовать его, чтобы легко устанавливать флаг для последнего сообщения в цепочке диалога. Кроме того, наличие видов уровня диалога дает возможность почтовому приложению 300 вводить вторую категорию действий, в частности, действия, которые оперируют конкретно с самой цепочкой диалога. Это набор операций, которые используют семантику "диалога", к примеру, правила диалога "всегда удалять" или "всегда перемещать".
Модуль 336 диспетчера диалогов выполнен с возможностью создавать правило диалога для цепочки диалога. Оператор или пользователь может создавать правило диалога для цепочки диалога посредством выбора одного или более сообщений из цепочки диалога и назначения правила диалога одному или более сообщений. Правило диалога задает набор действий на уровне диалога, чтобы выполнять для существующих и будущих сообщений, имеющих общее свойство идентификатора диалога для цепочки диалога. Существующие сообщения могут храниться в базе 350 данных сообщений. Будущие сообщения могут включать в себя новые входящие сообщения для почтового приложения 300, принимаемый от удаленного устройства по сети 118 и сетевому интерфейсу 220. Некоторые примеры правил диалога включают в себя, но не только, правило диалога "всегда удалять", правило диалога "всегда перемещать", диалог "всегда категоризовать", в числе других. Каждое из этих правил диалога описывается дополнительно ниже.
Как только модуль 336 диспетчера диалогов создает правило диалога для цепочки диалога, модуль 336 диспетчера диалогов сохраняет правило диалога в таблице действий в диалоге (CAT). CAT - это новая таблица, созданная для того, чтобы хранить информацию, требуемую для того, чтобы управлять действиями на уровне диалога. Именно в CAT "объект" диалога получает текущее действие, ассоциированное с ним. Это таблица в PST, которая содержит запись для каждого диалога, который имеет текущее действие или набор действий. Базовая структура CAT показана в таблице 2 следующим образом:
Таблица 2
Пример...
Идентификатор диалога
Всегда удалять
Всегда перемещать
Категоризировать
Срок истечения
Да/Нет
Да/Нет
Назначение
Да/Нет
Категории
Всегда удалять
1
Да
Да
Удаленные элементы
11:08:556/8/07
Всегда перемещать
2
Да
Contoso
13:40:516/9/07
Всегда категоризировать
3
Да
Личное, семья
07:01:116/10/07
Как показано в таблице 2, CAT может содержать идентификатор диалога, параметр ("Да" или "Нет"), чтобы указывать, применяется или нет правило диалога к идентификатору диалога, и информацию, требуемую для того, чтобы реализовывать данное правило, такую как целевая папка для правила диалога "всегда перемещать" или имя категории для правила диалога "всегда категоризировать". CAT также предоставляет дату и время истечения, чтобы указывать, когда данное правило диалога должно действовать. Каждый раз, когда новое входящее сообщение поступает в модуль 332 входящих сообщений, и модуль 334 идентификации диалогов идентифицирует входящее сообщение как часть цепочки диалога, модуль 336 диспетчера диалогов обращается к CAT, которая выполняет последующие операции обработки сообщений для входящего сообщения в соответствии с различными правилами диалога, ассоциированными с цепочкой диалога.
Модуль 336 диспетчера диалогов выполнен с возможностью создавать правило диалога "всегда удалять", чтобы автоматически направлять входящее сообщение в папку удаленных элементов. Правило диалога "всегда удалять" - это признак опытного пользователя, что дает возможность пользователю автоматически перемещать новые элементы, которые поступают в диалог, в папку удаленных элементов, тем самым исключая входящее сообщение из папки входящих сообщений. Пользователь может создавать правило диалога "всегда удалять" посредством выбора элемента пользовательского интерфейса, такого как кнопка пользовательского интерфейса в модульной ленте в пользовательском интерфейсе.
Когда пользователь выбирает один элемент диалога, к примеру, сообщение для диалога, чтобы выделять один элемент диалога, и выбирает кнопку пользовательского интерфейса для "всегда удалять", модуль 336 диспетчера диалогов инициирует операции, чтобы создавать правило диалога "всегда удалять". Модуль 336 диспетчера диалогов сначала определяет то, имеет или нет диалог предварительно установленное существующее правило диалога "всегда удалять". Это может быть выполнено посредством проверки свойства элемента диалога, чтобы определять то, имеет или нет родительский элемент диалога текущее действие, ассоциированное с ним. Это свойство задается для сообщения, когда CAT-обработка осуществляется. Модуль 336 диспетчера диалогов формирует вид пользовательского интерфейса, такой как диалоговое окно, имеющее следующие свойства, как показано в таблице 3:
Таблица 3
Предлагаемая диалоговая строка
Переключатели
Это должно перемещать текущие элементы в этом диалоге и все новые элементы, которые поступают, в папку удаленных элементов.Нажмите OK, чтобы игнорировать этот диалог.
ОКCANCEL
Не показывать мне этот диалог снова.
CHECKUNCHECK
Когда пользователь нажимает [OK], все отдельные сообщения в текущей папке для диалога перемещаются в папку удаленных элементов. Запись создается в CAT для этого диалога с использованием его PR_CONVERSATION_ID, если он еще не существует. Новые элементы диалога, которые поступают в этот диалог и совпадают с PR_CONVERSATION_ID, автоматически перемещаются в папку удаленных элементов. Эта логика подчиняется критериям истечения, заданным в CAT.
Когда несколько элементов диалога выделены, и пользователь выбирает кнопку пользовательского интерфейса для "всегда удалять", модуль 336 диспетчера диалогов инициирует операции, чтобы создавать правило диалога "всегда удалять". Модуль 336 диспетчера диалогов сначала определяет то, является или нет текущая папка для выбранных элементов диалога папкой удаленных элементов. Если нет, модуль 336 диспетчера диалогов формирует вид пользовательского интерфейса, такой как диалоговое окно, имеющее следующие свойства, как показано в таблице 4:
Таблица 4
Предлагаемая диалоговая строка
Переключатели
Это должно перемещать текущие элементы в выбранные диалоги и разрешать новым элементам, которые поступают в них, - в папку удаленных элементов.Нажмите OK, чтобы игнорировать эти диалоги.
ОКCANCEL
Не показывать мне этот диалог снова.
CHECKUNCHECK
Когда пользователь нажимает [OK], все отдельные сообщения в текущей папке для выбранных диалогов перемещаются в папку удаленных элементов. Запись создается в CAT для каждого из диалогов с использованием PR_CONVERSATION_ID. Новые элементы, которые поступают в эти диалоги и совпадают с PR_CONVERSATION_ID, автоматически перемещаются в папку удаленных элементов. Эта логика подчиняется критериям истечения, заданным в CAT.
Пользователь может деактивировать текущее действие "всегда удалять" для диалога рядом различных способов. Чтобы деактивировать правило диалога "всегда удалять" для диалога, пользователь может переходить в папку удаленных элементов.
Когда один элемент диалога выделен и в настоящий момент подчиняется правилу диалога "всегда удалять", и текущая папка - это папка удаленных элементов, то пользовательский интерфейс в форме модульной ленты должен отображать кнопку пользовательского интерфейса "деактивировать правило всегда удалять", чтобы удалять правило диалога "всегда удалять" из цепочки диалога. Выбор кнопки пользовательского интерфейса инструктирует модулю 336 диспетчера диалогов формировать вид пользовательского интерфейса, такой как диалоговое окно, имеющее следующие свойства, как показано в таблице 5:
Таблица 5
Предлагаемая диалоговая строка
Переключатели
Это должно прекращать удаление новых элементов, которые поступают в этот диалог.Нажмите OK, чтобы прекращать игнорирование этого диалога и перемещать выбранный диалог в папку входящих сообщений.
ОКCANCEL
Не показывать мне этот диалог снова.
CHECKUNCHECK
Когда пользователь выбирает [OK], все отдельные сообщения в цепочке диалога перемещаются в папку входящих сообщений. Модуль 336 диспетчера диалогов удаляет соответствующую запись для правила диалога "всегда удалять" из CAT.
Когда несколько элементов диалога выделены и в настоящий момент подчиняются правилу диалога "всегда удалять", и текущая папка - это папка удаленных элементов, то пользовательский интерфейс в форме модульной ленты должен отображать кнопку пользовательского интерфейса "деактивировать правило всегда удалять", чтобы удалять правило диалога "всегда удалять" из цепочки диалога. Выбор кнопки пользовательского интерфейса инструктирует модулю 336 диспетчера диалогов формировать вид пользовательского интерфейса, такой как диалоговое окно, имеющее следующие свойства, как показано в таблице 6:
Таблица 6
Предлагаемая диалоговая строка
Переключатели
Это должно прекращать удаление новых элементов, которые поступают в эти диалоги.Нажмите OK, чтобы прекращать игнорирование этих диалогов и перемещать выбранные диалоги в папку входящих сообщений.
ОКCANCEL
Не показывать мне этот диалог снова.
CHECKUNCHECK
Когда пользователь выбирает [OK], все отдельные сообщения в выбранных диалогах перемещаются в папку входящих сообщений. Модуль 336 диспетчера диалогов удаляет соответствующие записи для правил диалога "всегда удалять" из CAT.
Необходимо отметить, что модуль 336 диспетчера диалогов не проверяет активированное/деактивированное состояние каждого диалога, когда находится в состоянии множественного вида, поскольку это может влиять на производительность почтового приложения 300, к примеру, приводить к замедлению при рендеринге вида. Чтобы повышать производительность, модуль 336 диспетчера диалогов не проверяет каждый диалог, а вместо этого по умолчанию предполагает, что все они имеют текущее действие, ассоциированное с ними. Альтернативно, модуль 336 диспетчера диалогов может проверять активированное/деактивированное состояние каждого диалога, когда находится в состоянии множественного вида, для данной реализации, когда производительность не является проблемой.
Модуль 336 диспетчера диалогов выполнен с возможностью создавать правило диалога "всегда перемещать", чтобы автоматически направлять входящее сообщение в папку целевых элементов. Правило диалога "всегда перемещать" - это другой признак опытного пользователя, который предоставляет возможность пользователю легко перемещать элементы конкретного диалога в выбранную им папку. Это гораздо проще создания обычного правила, и доступ осуществляется через кнопку в виде модульной ленты "переместить в папку".
Когда один элемент диалога выделен, и целевая папка выбрана, пользовательский интерфейс в форме модульной ленты должен отображать кнопку пользовательского интерфейса "всегда перемещать", чтобы инициировать операции для формирования правила диалога "всегда перемещать", чтобы перемещать сообщения в целевую папку. Выбор кнопки пользовательского интерфейса инструктирует модулю 336 диспетчера диалогов формировать вид пользовательского интерфейса, такой как диалоговое окно, имеющее следующие свойства, как показано в таблице 7:
Таблица 7
Предлагаемая диалоговая строка
Переключатели
Это должно перемещать текущие элементы в этом диалоге и все новые элементы, которые поступают, в выбранную папку.Нажмите OK, чтобы всегда перемещать этот диалог.
OKCANCEL
Не показывать мне этот диалог снова.
CHECKUNCHECK
Когда пользователь нажимает [OK], все отдельные сообщения в текущей папке для диалога перемещаются в выбранную папку. Модуль 336 диспетчера диалогов создает новую запись в CAT для этого диалога с использованием его PR_CONVERSATION_ID, если он еще не существует. Модуль 336 диспетчера диалогов оценивает и автоматически перемещает новые элементы диалога с совпадающим PR_CONVERSATION_ID в целевую папку. Эта логика подчиняется критериям истечения, заданным в CAT.
Когда несколько элементов диалога выделены, и целевая папка выбрана, пользовательский интерфейс в форме модульной ленты должен отображать кнопку пользовательского интерфейса "всегда перемещать", чтобы инициировать операции для формирования правила диалога "всегда перемещать", чтобы перемещать сообщения для нескольких диалогов в целевую папку. Выбор кнопки пользовательского интерфейса инструктирует модулю 336 диспетчера диалогов формировать вид пользовательского интерфейса, такой как диалоговое окно, имеющее следующие свойства, как показано в таблице 8:
Таблица 8
Предлагаемая диалоговая строка
Переключатели
Это должно перемещать текущие элементы в этих диалогах и все новые элементы, которые поступают, в выбранную папку.Нажмите OK, чтобы всегда перемещать этот диалог.
OKCANCEL
Не показывать мне этот диалог снова.
CHECKUNCHECK
Когда пользователь нажимает [OK], все отдельные сообщения в текущей папке для выбранных диалогов перемещаются в выбранную папку. Модуль 336 диспетчера диалогов создает запись в CAT для этих диалогов с использованием их PR_CONVERSATION_ID, если он еще не существует. Если PR_CONVERSATION_ID уже имеет правило диалога "всегда перемещать", ассоциированное с ним, он перезаписывает это правило. Он также сбрасывает время истечения ко времени по умолчанию. Новые элементы, которые поступают в этот диалог и совпадают с PR_CONVERSATION_ID, автоматически перемещаются в выбранную папку. Эта логика подчиняется критериям истечения, заданным в CAT.
Имеется несколько случаев исключения для правила диалога "всегда перемещать". Например, если пользователь выбирает папку удаленных элементов в качестве папки назначения для правила диалога "всегда перемещать", это по существу идентично правилу диалога "всегда удалять". Когда диалог выбирается в папке удаленных элементов, кнопка "всегда удалять" переключается в "деактивированное" состояние.
Пользователь может деактивировать правило диалога "всегда перемещать" рядом различных способов. Например, когда один элемент диалога выделен, модуль 336 диспетчера диалогов может определять то, подчиняется или нет элемент диалога в настоящий момент уже существующему правилу диалога "всегда перемещать". Это может быть выполнено посредством проверки свойства элемента диалога, чтобы определять то, имеет или нет родительский элемент диалога текущее действие, ассоциированное с ним. Это свойство задается для сообщения, когда CAT-обработка осуществляется. Пользовательский интерфейс в форме модульной ленты должен отображать кнопку пользовательского интерфейса "деактивировать правило всегда перемещать", чтобы удалять правило диалога "всегда перемещать" из цепочки диалога. Выбор кнопки пользовательского интерфейса инструктирует модулю 336 диспетчера диалогов формировать вид пользовательского интерфейса, такой как диалоговое окно, имеющее следующие свойства, как показано в таблице 9:
Таблица 9
Предлагаемая диалоговая строка
Переключатели
Новые элементы в этом диалоге автоматически перемещаются в выбранную папку.Нажмите OK, чтобы прекращать всегда перемещать новые элементы в выбранную папку.
OKCANCEL
Не показывать мне этот диалог снова.
CHECKUNCHECK
Когда пользователь нажимает [OK], модуль 336 диспетчера диалогов прекращает текущее действие "всегда перемещать". Модуль 336 диспетчера диалогов удаляет запись для цепочки диалога из CAT. Элементы диалога необязательно могут перемещаться или не перемещаться из своего текущего местоположения на основе данной реализации.
Когда несколько элементов диалога выделены, пользовательский интерфейс в форме модульной ленты должен отображать кнопку пользовательского интерфейса "деактивировать правило всегда перемещать", чтобы удалять правило диалога "всегда перемещать" из цепочек сообщений. Выбор кнопки пользовательского интерфейса инструктирует модулю 336 диспетчера диалогов формировать вид пользовательского интерфейса, такой как диалоговое окно, имеющее следующие свойства, как показано в таблице 10:
Таблица 10
Предлагаемая диалоговая строка
Переключатели
Новые элементы в выбранных диалогах автоматически перемещаются в другие папки.Нажмите OK, чтобы прекращать всегда перемещать новые элементы в эти диалоги.
OKCANCEL
Не показывать мне этот диалог снова.
CHECKUNCHECK
Когда пользователь нажимает [OK], модуль 336 диспетчера диалогов прекращает текущее действие "всегда перемещать" для всех диалогов, которые имеют действие, ассоциированное с ними. Модуль 336 диспетчера диалогов удаляет записи для цепочек сообщений из CAT. Элементы диалога необязательно могут перемещаться или не перемещаться из своего текущего местоположения на основе данной реализации.
Модуль 336 диспетчера диалогов выполнен с возможностью создавать правило диалога "всегда категоризовать", чтобы автоматически назначать категорию для входящего сообщения. Назначение категории элементу диалога автоматически активирует текущую классификацию для всей цепочки диалога.
При назначении категории с использованием соответствующей кнопки пользовательского интерфейса "всегда категоризовать" из пользовательского интерфейса в форме модульной ленты для одного элемента диалога, выбранные категории применяются ко всем элементам во всех папках для этого диалога. Это является текущим действием, и запись CAT создается автоматически. Это дополнение к другим категориям, которые могут существовать для любых отдельных сообщений. Например, допустим, что цепочка диалога имеет сообщения 1, 2, 3 и 4, причем сообщение 1 имеет категорию A, сообщение 3 имеет категорию B, и все сообщения 1-4 находятся в папке входящих сообщений. Если пользователь выбирает цепочку диалога и применяет действие "всегда категоризовать" с категорией C, результаты дополняются следующим образом:
Сообщение 1 - категории A+C
Сообщение 2 - категория C
Сообщение 3 - категории B+C
Сообщение 4 - категория C
Эти и другие принципы для элемента диалога "всегда категоризировать" могут описываться подробнее со ссылкой на фиг. 4-8.
Фиг. 4 иллюстрирует вариант осуществления видов 402, 404 диалога. Виды 402, 404 диалога представляют виды диалога, группирующие сообщения по цепочке диалога. Виды 402, 404 диалога иллюстрируют несколько сообщений 420, каждое из которых имеет индикатор категории. В виде 402 диалога, сообщение 420 имеет индикатор категории 410, который является пустым, тем самым указывая, что категория не назначена соответствующему сообщению 420. Когда несколько элементов диалога выбираются, и правило диалога "всегда категоризовать" применяется ко всем сообщениям во всех папках, которые содержат эти диалоги, то все сообщения 420 назначаются выбранной категории или категориям, указанным посредством индикаторов категорий 412, которые затенены.
Фиг. 5 иллюстрирует вариант осуществления видов 502, 504 диалога. Виды 502, 504 диалога также представляют виды диалога, группирующие сообщения по цепочке диалога. Когда модуль 336 диспетчера диалогов выполняет действия с сообщениями 420 выбранного типа сообщения, к примеру, всеми сообщениями для "Randy Byrne", например, модуль 336 диспетчера диалогов применяет выбранные категории только к сообщениям 420 выбранного типа сообщения. Как показано на фиг. 5, вид 504 диалога назначает выбранную категорию выбранным сообщениям 420, как указано посредством индикаторов категорий 412, которые затенены.
Фиг. 6 иллюстрирует вариант осуществления видов 602, 604 диалога. Виды 602, 604 диалога также представляют виды диалога, группирующие сообщения по цепочке диалога. Вид диалога 602 иллюстрирует, что некоторые из индикаторов 410 категорий затенены, тем самым указывая, что категория назначена соответствующим сообщениям 420. Модуль 336 диспетчера диалогов может удалять категорию в то время, когда один элемент диалога выделен. Например, когда пользователь выбирает кнопку пользовательского интерфейса "сбросить все категории" в пользовательском интерфейсе в форме модульной ленты, модуль 336 диспетчера диалогов удаляет все категории из всех сообщений во всех папках. Это является истиной, даже когда сообщение 420 имеет несколько назначенных категорий, как указано посредством одного индикатора категории 410, разделенного на несколько индикаторов 410 категорий. Это типично не является текущим действием. Модуль 336 диспетчера диалогов удаляет правило диалога "всегда категоризировать" из CAT.
Фиг. 7 иллюстрирует вариант осуществления видов 702, 704 диалога. Виды 702, 704 диалога также представляют виды диалога, группирующие сообщения по цепочке диалога. Цепочка 702 диалога иллюстрирует, что некоторые из индикаторов 410 категорий затенены, и дополнительно, что некоторые из сообщений 420 имеют несколько назначенных категорий, как указано посредством разделения одного индикатора категории 410 на несколько индикаторов 410 категорий согласно некоторым из сообщений 420. Модуль 336 диспетчера диалогов может удалять одну категорию из нескольких категорий, назначенных элементу диалога, в то время, когда один элемент диалога выделен. Например, когда пользователь выбирает кнопку пользовательского интерфейса "сбросить категорию" в пользовательском интерфейсе в форме модульной ленты, модуль 336 диспетчера диалогов удаляет только выбранную категорию из всех сообщений во всех папках. Например, сообщение 420 для "Michael Affronti", имеющего две категории, назначенные ему, модифицируется посредством модуля 336 диспетчера диалогов, чтобы удалять одну из двух категорий, как указано посредством нескольких индикаторов 410 категорий, становящихся одним индикатором категории 410. Это типично не является текущим действием. Модуль 336 диспетчера диалогов удаляет правило диалога "всегда категоризировать" для выбранной категории из CAT. Модуль 336 диспетчера диалогов может применять аналогичную логику каждый раз, когда несколько элементов диалога выделены, когда кнопка пользовательского интерфейса "сбросить категорию" активирована.
Фиг. 8 иллюстрирует вариант осуществления видов 802, 804 диалога. Виды 802, 804 диалога также представляют виды диалога, группирующие сообщения по цепочке диалога. Цепочка 802 диалога иллюстрирует, что некоторые из индикаторов 410 категорий затенены, и дополнительно, что некоторые из сообщений 420 имеют несколько назначенных категорий, как указано посредством разделения одного индикатора категории 410 на несколько индикаторов 410 категорий согласно некоторым из сообщений 420. Модуль 336 диспетчера диалогов может удалять одну категорию из нескольких категорий, назначенных элементу диалога, в то время, когда один элемент диалога выделен. Например, когда пользователь выбирает кнопку пользовательского интерфейса "сбросить категорию" в пользовательском интерфейсе в форме модульной ленты, модуль 336 диспетчера диалогов удаляет только выбранную категорию из всех сообщений во всех папках. Например, сообщение 420 для "Michael Affronti", имеющего две категории, назначенные ему, модифицируется посредством модуля 336 диспетчера диалогов, чтобы удалять одну из двух категорий, как указано посредством нескольких индикаторов 410 категорий, становящихся одним индикатором категории 410. Кроме того, модуль 336 диспетчера диалогов может быть выполнен с возможностью выполнять действия с сообщениями 420 выбранного типа сообщения, к примеру, всеми сообщениями для "Michael Affronti", например. В этом случае, модуль 336 диспетчера диалогов удаляет только выбранную категорию или категории из сообщений 420 одного типа сообщения.
Каждый раз, когда новое входящее сообщение поступает в модуль 332 входящих сообщений, и модуль 334 идентификации диалогов идентифицирует входящее сообщение как часть цепочки диалога, модуль 336 диспетчера диалогов определяет то, ассоциировано или нет правило диалога с цепочкой диалога, и если да, применяет правило диалога к входящему сообщению. Модуль 336 диспетчера диалогов обращается к CAT и выполняет последующие операции обработки сообщений для входящего сообщения в соответствии с различными правилами диалога, ассоциированными с цепочкой диалога.
В качестве примера, допустим, что пользователю по имени Michael нравится оставаться в начале большого списка почтовых сообщений в течение дня. Он имеет правила, которые перемещают почтовые сообщения из списка рассылки в различные папки, но по-прежнему прилагает огромные усилия, чтобы отслеживать обычную почту, которую он принимает в своей папке входящих сообщений. Один из его коллег начинает цепочку диалога в его список групповой рассылки, которую Michael принимает в своей папке входящих сообщений, о предстоящих играх плей-офф по баскетболу в колледже. Michael не заинтересован в участии в общем деле в этом году и хочет удалить цепочку из своей папки входящих сообщений. Он выбирает действие "всегда удалять", и вся цепочка перемещается в его папку удаленных элементов. По мере того как его коллеги продолжают общаться в цепочке, все последующие ответы скрыто помещаются в папку удаленных элементов Michael, сохраняя его папку входящих элементов свободной от разговоров этого диалога, при этом одновременно не вынуждая его создавать одноразовое правило или удалять себя из этого (обычно) важного сообщества.
В другом примере, допустим, что пользователь по имени Paul является делопроизводителем и постоянно перемещает почту в различные папки на основе проекта или пользователя, который отправил его. По мере того как новые диалоги поступают в его папку входящих сообщений, Paul может легко выполнять действия только с сообщениями, которые поступают в эту папку, и перемещать их в любое место. Конкретный диалог о проекте "Morandi" высвечивается на экране и продолжает быть активным, так что Paul использует действие "всегда перемещать", чтобы легко передвигать новые элементы в этом диалоге в папку "Morandi Project", когда они поступают.
В еще одном другом примере, допустим, что пользователь по имени Mary категоризирует новые сообщения по мере того, как они поступают. Когда последующие ответы поступают для диалога, Mary должна вручную категоризировать каждый элемент по отдельности каждый раз, когда новый элемент поступает. Mary использует действие "всегда категоризовать", чтобы распознавать, что новые элементы поступили в диалог, и автоматически применять корректные категории с первого сообщения до оставшейся части диалога.
В дополнение к применению правил диалога для входящих сообщений, модуль 336 диспетчера диалогов также применяет правила диалога к сохраненным сообщениям. База 350 данных сообщений сохраняет множество сообщений для каждой цепочки диалога. Когда модуль 336 диспетчера диалогов создает новое правило диалога для цепочки диалога, модуль 336 диспетчера диалогов применяет правило диалога к множеству сохраненных сообщений для соответствующей цепочки диалога.
Операции для вышеописанных вариантов осуществления дополнительно могут описываться в отношении одной или более логических последовательностей операций. Можно принимать во внимание, что характерные логические последовательности операций должны не обязательно выполняться в представленном порядке или в любом конкретном порядке, если не указано иное. Кроме того, различные действия, описанные относительно логических последовательностей операций, могут выполняться последовательным или параллельным способом. Логические последовательности операций могут быть реализованы с использованием одного или более аппаратных и/или программных элементов описанных вариантов осуществления или альтернативных элементов требуемым образом для данного набора проектных ограничений и ограничений производительности. Например, логические последовательности операций могут быть реализованы как логика (к примеру, инструкции компьютерной программы) для выполнения посредством логического устройства (к примеру, компьютера общего назначения или компьютера конкретной цели).
Фиг. 9 иллюстрирует один вариант осуществления логической последовательности 900 операций, подходящей для осуществления на практике различных вариантов осуществления. Логическая последовательность 900 операций может представлять некоторые или все операции, выполняемые посредством одного или более вариантов осуществления, описанных в данном документе.
В проиллюстрированном варианте осуществления, показанном на фиг. 9, логическая последовательность 900 операций может принимать входящее сообщение на этапе 902. Например, модуль 332 входящих сообщений взаимодействует с операционной системой 128, чтобы принимать входящие почтовые сообщения, которые принимаются от сети 118 посредством сетевого интерфейса 220. Например, модуль 332 входящих сообщений может использовать интерфейс, предоставленный посредством операционной системы 128, чтобы конфигурировать обратный вызов, который инструктирует операционной системе 128 предоставлять входящие почтовые сообщения в модуль 332 входящих сообщений. Когда модуль 332 входящих сообщений принимает входящее почтовое сообщение, модуль 332 входящих сообщений может выполнять одну или более операций обработки почтовых сообщений для входящего почтового сообщения. После того, как модуль 332 входящих сообщений выполняет операции обработки почтовых сообщений для входящего почтового сообщения, модуль 332 входящих сообщений может предоставлять входящее почтовое сообщение в модуль 334 идентификации диалогов.
Логическая последовательность 900 операций может определять то, что входящее сообщение является частью цепочки диалога, на этапе 904. Например, модуль 334 идентификации диалогов принимает входящие почтовые сообщения от модуля 332 входящих сообщений и пытается идентифицировать существующий диалог, ассоциированный с входящим почтовым сообщением. Если модуль 334 идентификации диалогов не может успешно идентифицировать существующий диалог, ассоциированный с входящим почтовым сообщением, модуль 334 идентификации диалогов может ассоциировать входящее почтовое сообщение с новым диалогом. Модуль 334 идентификации диалогов может использовать любое число различных алгоритмов и условий, чтобы явно или неявно определять то, является или нет сообщение частью цепочки диалога. Варианты осуществления не ограничены этим контекстом.
Логическая последовательность 900 операций может ассоциировать входящее сообщение с цепочкой диалога на этапе 906. Например, если модуль 332 входящих сообщений идентифицирует входящее сообщение как часть существующей цепочки диалога, модуль 334 идентификации диалогов ассоциирует входящее сообщение с цепочкой диалога посредством назначения входящему сообщению общего идентификатора диалога в соответствующем свойстве для входящего сообщения. Если модуль 332 входящих сообщений не идентифицирует входящее сообщение как часть существующей цепочки диалога, тем не менее, модуль 334 идентификации диалогов ассоциирует входящее почтовое сообщение с новым диалогом посредством назначения ему нового идентификатора диалога. После того, как модуль 334 идентификации диалогов ассоциирует входящее почтовое сообщение с существующим диалогом или ассоциирует входящее почтовое сообщение с новым диалогом, модуль 334 идентификации диалогов может сохранять в базе 350 данных сообщений входящее почтовое сообщение наряду с идентификатором диалога, который идентифицирует диалог, ассоциированный с входящим почтовым сообщением.
Логическая последовательность 900 операций может определять то, что правило диалога ассоциировано с цепочкой диалога, на этапе 908. Например, модуль 336 диспетчера диалогов выполняет поиск в CAT, чтобы определять то, ассоциировано или нет правило диалога с цепочкой диалога. Модуль 336 диспетчера диалогов может выполнять поиск в CAT с использованием любого числа различных критериев поиска, таких как, например, идентификатор диалога.
Логическая последовательность 900 операций может применять правило диалога к входящему сообщению на этапе 910. Например, когда модуль 336 диспетчера диалогов находит правило диалога, ассоциированное с цепочкой диалога, модуль 336 диспетчера диалогов применяет найденное правило диалога к входящему сообщению. Модуль 336 диспетчера диалогов выполняет определенные операции обработки сообщений для входящего сообщения, как задано посредством правила диалога, такие как удаление входящего сообщения, перемещение входящего сообщения, категоризация входящего сообщения, перенаправление входящего сообщения в другое почтовое приложение 300 для другого пользователя, ответ на входящее сообщение, копирование входящего сообщения или любые другие операции обработки сообщений, доступные посредством данного почтового приложения 300. Модуль 336 диспетчера диалогов также может использовать входящее сообщение и соответствующее правило диалога, чтобы активировать или инициировать последующие операции для других сообщений, сохраненных посредством базы 350 данных сообщений или прикладных программ, запущенных на вычислительных устройствах 110, 130.
Фиг. 10 иллюстрирует схему изделия 1000, подходящего для сохранения логики для различных вариантов осуществления. Как показано, изделие 1000 может содержать носитель 1002 хранения данных, чтобы сохранять логику 1004. Примеры носителя 1002 хранения данных могут включать в себя один или более типов машиночитаемых носителей хранения данных, допускающих сохранение электронных данных, в том числе энергозависимое запоминающее устройство или энергонезависимое запоминающее устройство, съемное или несъемное запоминающее устройство, стираемое или нестираемое запоминающее устройство, записываемое или перезаписываемое запоминающее устройство и т.д. Примеры логики 1004 могут включать в себя любые программные элементы, такие как программные компоненты, программы, приложения, компьютерные программы, прикладные программы, системные программы, машинные программы, программное обеспечение операционной системы, промежуточное программное обеспечение, микропрограммное обеспечение, программные модули, стандартные программы, подпрограммы, функции, способы, процедуры, программные интерфейсы, интерфейсы прикладного программирования (API), наборы инструкций, вычислительный код, компьютерный код, сегменты кода, сегменты компьютерного кода, слова, значения, символы или любую комбинацию вышеозначенного.
В одном варианте осуществления, например, изделие 1000 и/или машиночитаемый носитель 1002 хранения данных может сохранять логику 1004, содержащую выполняемые инструкции компьютерной программы, которые, когда выполняются посредством компьютера, инструктируют компьютеру осуществлять способы и/или операции в соответствии с описанными вариантами осуществления. Выполняемые инструкции компьютерной программы могут включать в себя любой подходящий тип кода, такой как исходный код, откомпилированный код, интерпретируемый код, исполняемый код, статический код, динамический код и т.п. Выполняемые инструкции компьютерной программы могут быть реализованы согласно заранее заданному машинному языку, способу или синтаксису для инструктирования компьютеру выполнять определенную функцию. Инструкции могут быть реализованы с использованием любого подходящего высокоуровневого, низкоуровневого, объектно-ориентированного, визуального, откомпилированного и/или интерпретированного язык программирования, такого как C, C++, Java, BASIC, Perl, Matlab, Pascal, Visual BASIC, язык ассемблера и другие.
Различные варианты осуществления могут быть реализованы с использованием аппаратных элементов, программных элементов или комбинации вышеозначенного. Примеры аппаратных элементов могут включать в себя любой из примеров, предоставленных ранее для логического устройства, и дополнительно включать в себя микропроцессоры, схемы, схемные элементы (к примеру, транзисторы, резисторы, конденсаторы, индукторы и т.д.), интегральные схемы, логические вентили, регистры, полупроводниковые устройства, кристаллы, микросхемы, наборы микросхем и т.д. Примеры программных элементов могут включать в себя любые программные компоненты, программы, приложения, компьютерные программы, прикладные программы, системные программы, машинные программы, программное обеспечение операционной системы, промежуточное программное обеспечение, микропрограммное обеспечение, программные модули, стандартные программы, подпрограммы, функции, способы, процедуры, программные интерфейсы, интерфейсы прикладного программирования (API), наборы инструкций, вычислительный код, компьютерный код, сегменты кода, сегменты компьютерного кода, слова, значения, символы или любую комбинацию вышеозначенного. Определение того, реализован вариант осуществления с использованием аппаратных и/или программных элементов, может варьироваться в соответствии с любым числом факторов, таких как требуемая скорость вычислений, уровень мощности, теплостойкость, бюджет цикла обработки, скорости передачи входных данных, скорости передачи выходных данных, ресурсы запоминающего устройства, скорости шин данных и другие проектные ограничения или ограничения производительности требуемым образом для данной реализации.
Некоторые варианты осуществления могут быть описаны с помощью выражения "соединенный" или "подключенный" наряду с его производными словами. Эти термины не обязательно служат в качестве синонимов друг для друга. Например, некоторые варианты осуществления могут быть описаны с использованием термина "подключенный" и/или "соединенный", чтобы указывать, что два или более элементов находятся в непосредственном физическом или электрическом контакте друг с другом. Тем не менее, термин "соединенный" также может означать, что два или более элементов не находятся в прямом контакте друг с другом, но при этом по-прежнему совместно работают или взаимодействуют друг с другом.
Следует подчеркнуть, что реферат раскрытия сущности предоставляется так, чтобы соответствовать 37 C.F.R. Section 1.72(b), требующему реферат, который должен давать возможность читателям быстро выявлять характер технического раскрытия сущности. Он представляется с пониманием того, что он не будет использоваться для того, чтобы интерпретировать или ограничивать объем или смысл формулы изобретения. Помимо этого, в вышеприведенном подробном описании можно видеть, что различные признаки группируются в одном варианте осуществления с целью упрощения раскрытия сущности. Этот способ раскрытия сущности не должен быть интерпретирован как отражающий намерение, что заявленные варианты осуществления требуют большего числа признаков, чем явно изложено в каждом пункте формуле изобретения. Наоборот, как отражает прилагаемая формула изобретения, предмет изобретения находится не во всех признаках одного раскрытого варианта осуществления. Таким образом, прилагаемая формула изобретения тем самым включается в подробное описание, причем каждый ее пункт является независимым как отдельный вариант осуществления. В прилагаемой формуле изобретения, термины "включающий в себя" и "в котором" используются как явные английские эквиваленты соответствующих терминов "содержащий" и "в котором", соответственно. Кроме того, термины "первый", "второй", "третий" и т.д. используются просто как метки и не имеют намерение налагать числовые требования на свои объекты.
Хотя предмет изобретения описан на языке, характерном для структурных признаков и/или технологических этапов, следует понимать, что предмет изобретения, заданный в прилагаемой формуле изобретения, не обязательно ограничен характерными признаками или действиями, описанными выше. Вместо этого, характерные признаки и действия, описанные выше, раскрываются как примерные формы реализации формулы изобретения.