详细描述
以下详细描述涉及用于标识电子邮件消息并将其相关的各种技术。通过此处所给出的各实施例,传入电子邮件消息可在不使用跟踪词例或线程标识符的情况下相关到相关的预先存在的电子邮件消息或相关CRM对象。以此方式,传入电子邮件消息可在不将任何数据放置在传出电子邮件消息中的情况下与相关电子邮件消息或CRM对象相关。
如将在以下更详细地描述的,此处所给出的实现利用一般未被因特网电子邮件服务器移除或修改的电子邮件字段的内容来标识传入电子邮件消息并将其与相关的预先存在的电子邮件消息或其他CRM对象相关。根据此处所给出的各方面,对在计算系统处收发的每一个电子邮件消息的主题和收件人字段的内容求散列并将其存储在数据库中。当接收到传入电子邮件消息时,也对该传入电子邮件消息的主题和收件人字段的内容求散列。然后将对应于传入电子邮件消息的计算出的散列值与存储在数据库中的值进行比较以确定是否有足够数量的公共主题和收件人电子邮件地址来将该传入电子邮件消息标识为与该数据库中所标识的电子邮件消息中的一个有关。如果是,则将该传入电子邮件消息与相关电子邮件消息相关。该传入电子邮件消息还可以按类似的方式与相关CRM对象相关。关于该过程的附加细节以下将参考图1-5来描述。
尽管此处所述的主题是在结合操作系统和应用程序在计算系统上的执行而执行的程序模块的一般上下文中提供的,但本领域技术人员可以认识到,可结合其它类型的程序模块来执行其它实现。一般而言,程序模块包括执行特定任务或实现特定的抽象数据类型的例程、程序、组件、数据结构和其它类型的结构。此外,本领域的技术人员可以理解,此处所述的本主题可以使用其它计算机系统配置来实践,这些其它计算机系统配置包括手持式设备、多处理器系统、基于微处理器或可编程的消费电子产品、小型计算机、大型计算机等。
在以下详细描述中,参考了构成其一部分并作为说明示出了各具体实施例或示例的附图。现在参考附图(全部若干附图中相同的标号表示相同的元素),将描述用于将电子邮件消息相关的计算系统和方法的各方面。具体而言,图1是提供关于用于此处所给出的各实施例的说明性操作环境以及此处所给出的若干软件组件的各方面的细节的网络和软件体系结构图。
图1所示的说明性计算系统包括CRM系统102。CRM系统102包括执行CRM应用程序108并维护相关联的CRM数据库110的CRM服务器计算机106。CRM系统102提供用于管理与商业顾客的关系的功能,包括对顾客信息的捕捉、存储和分析。该数据由CRM应用程序108存储在CRM数据库110中。存储在CRM数据库110中的顾客数据可以与顾客编号、定单号或其他类型的CRM对象相关联。根据各实现,CRM数据库110是结构化查询语言(SQL)数据库。然而,应当理解,可利用任何类型的数据库技术来具体化CRM数据库110。
由CRM应用程序108提供的CRM功能可通过使用在CRM客户机计算机107上执行的web浏览器应用程序104来访问。以此方式,CRM客户机计算机107可用于访问由CRM应用程序108提供的、用于创建和查看顾客信息、用于经由CRM系统102与顾客进行通信以及用于执行其他CRM相关功能的功能。CRM系统102将电子邮件用作与顾客进行通信的主要方法。
当电子邮件消息112从CRM系统102发送到顾客计算机116时,在CRM数据库110中创建已发送的电子邮件消息112的副本以跟踪该通信。已发送的电子邮件消息112的副本可以与顾客定单、顾客账号或者唯一地标识该电子邮件消息的上下文的其他类型的CRM对象相关联。如将在以下更详细地描述的,也处理发自CRM系统102的电子邮件消息112中所包含的数据并将其存储在CRM数据库110中以便在标识相关消息并将这些消息与CRM数据库110中所标识的、相关的预先存在的电子邮件消息相关时使用。关于该过程的细节在以下参考图2-4提供。
顾客使用在顾客计算机116上执行的电子邮件客户机应用程序118来接收发自CRM应用程序108的电子邮件消息。顾客还可通过使用web浏览器应用程序以及所主存的web邮件服务来接收这些电子邮件消息。响应于接收到电子邮件消息112,顾客可利用电子邮件客户机应用程序118或所主存的web邮件服务来将响应电子邮件消息114传送到CRM系统102。例如,顾客可传送响应电子邮件消息114以询问他们已下的定单。
当CRM应用程序108接收到响应电子邮件消息114时,尝试将该消息标识为CRM相关,并且如果这样做,则将该响应电子邮件消息114与诸如电子邮件消息112等CRM数据库110中所标识的相关电子邮件消息相关。如将在以下更详细地描述的,分析传入响应电子邮件消息114中所包含的各个字段的内容并将其与在CRM数据库110中为其他电子邮件消息存储的数据进行比较以标识该响应电子邮件消息并将该响应电子邮件消息114相关到预先存在的相关电子邮件消息。另外,一旦适当地将响应电子邮件消息114相关到了相关电子邮件消息112,也处理该响应电子邮件消息114中所包含的数据并将其存储在CRM数据库110中以便在相关将来的传入电子邮件消息时使用。通过以此方式标识所有相关电子邮件消息并将其相关,对于顾客的所有相关通信都可关联在一起并一起访问。关于此处所给出的用于标识CRM系统102中的电子邮件消息并将其相关的各个过程的细节将在以下参考图2-4讨论。
现在参考图2,将提供关于此处所给出的用于标识电子邮件消息并将其相关的各实施例的附加细节。具体而言,图2是示出此处所描述的一个实现中的例程200的流程图,该例程示出用于处理传入和传出电子邮件消息的CRM应用程序108的操作的各方面。如以上所简要描述的,CRM应用程序108处理在CRM系统102处收发的电子邮件消息的若干字段的内容以便在将传入电子邮件消息相关到存储在CRM数据库110中的电子邮件消息时使用。图2示出了由CRM应用程序108用来执行该处理的一个说明性实施例。图2将结合图3来描述,图3示出了说明性电子邮件消息112的内容以及CRM数据库110的各方面。
应理解,此处所述的逻辑操作被实现为(1)一系列计算机实现动作或运行于计算系统上的程序模块,和/或(2)计算系统内的互连机器逻辑电路或电路模块。该实现是取决于计算机系统的性能和其他要求的选择的问题。因此,此处所描述的逻辑操作被不同地称为操作、结构设备、动作或模块。这些操作、结构设备、动作和模块可用软件、固件、专用数字逻辑以及它们的任何组合来实现。还应当理解,可以实现比各附图所示的并在此处描述的更多或更少操作。这些操作还能以与此处参考各附图所描述的次序不同的次序来执行。
如以上所简要描述的,CRM应用程序108处理在CRM系统102处收发的每一个电子邮件消息。图3示出了已由CRM应用程序108发送的说明性电子邮件消息112。如图3所示,电子邮件消息112包括多个字段302A-302D。具体而言,电子邮件消息112包括三个收件人字段302A-302C。收件人字段302A-302C用于存储电子邮件消息112的各个收件人的电子邮件地址。例如,“发件人;”字段302A存储电子邮件地址304A,“收件人:”字段302B存储电子邮件地址304B和304C,而“抄送:”字段302C存储电子邮件地址304D。应当理解,电子邮件地址可具有图3未示出的其他收件人字段。
电子邮件消息112还包括主题字段302D和正文字段308。主题字段302D用于存储电子邮件消息112的字母数字主题。正文字段308用于存储电子邮件消息112的主体。在图3所示的示例电子邮件消息112中,正文字段308存储给顾客的、关于定单送货的消息。如将在以下详细描述的,CRM应用程序108处理字段302A-302D的内容以生成供在标识传入电子邮件消息并将其相关到CRM数据库110中所标识的电子邮件消息时使用的数据。应当理解,尽管图3所示的说明性电子邮件消息112消息是发自CRM系统102的传出电子邮件消息,但参考图2描述的过程是对于传入消息和传出消息两者执行的。
例程200开始于操作202,在那里确定是否正在处理到CRM应用程序108的入站消息或来自CRM应用程序108的出站的消息。如果正在处理出站消息,则例程200从操作202继续至操作208。如果正在处理入站消息,则例程200从操作202继续至操作204,如下所述。
在操作208,CRM应用程序108向电子邮件消息112分配活动标识符310(“活动ID”)。活动ID 310唯一地标识电子邮件消息112的上下文。例如,活动ID 310可用于将电子邮件消息112相关到其他相关电子邮件消息、相关顾客账号或定单号、或者另一类型的CRM对象。在传出电子邮件消息112的情况下,活动标识符310是CRM应用程序108所知道的。
从操作208,例程200继续至操作210,在那里CRM应用程序108词例化电子邮件消息112的主题字段302D的内容。在一个实现中,忽略主题字段302D中的预定格式的所有前导字。例如,可忽略以冒号结尾的任何词或短语。这准许快速移除通常添加到电子邮件主题字段的短语(例如,“Re:”、“Fw:”等)。或者,可查阅将从主题字段中移除的词列表以确定应移除哪些词。该列表可由管理员定制,诸如添加新词或从列表中移除词等。然后按词汇分析其余内容以标识主题字段302D中所包含的词词例。例如,通过对图3所示的主题字段302D的说明性内容应用词例化过程,将标识词例306A-306D。
一旦标识了主题字段302D中所包含的词例306A-306D,例程200继续至操作212,在那里为词例306A-306D中的每一个生成散列值。对应于词例306A-306D的散列值此处被称为主题散列值318。例如,在图3所示的示例中,为词例306A生成主题散列值318A,为词例306B生成主题散列值318B,为词例306C生成主题散列值318C,而为词例306D生成主题散列值318D。应当理解,可利用任何合适的散列函数来生成主题散列值316。在各实施例中,散列函数根据秘密密钥生成安全散列。也可利用固定、紧凑散列。
从操作212,例程200继续至操作214,在那里将主题散列值316插入到存储在CRM数据库110中的电子邮件散列表320中的电子邮件散列记录322中。电子邮件散列表320包括对应于每一个传入和传出电子邮件消息的电子邮件散列记录322并且如将在已下更详细地描述的,用于将传入电子邮件消息相关到CRM数据库110中所标识的预先存在的相关消息。每一个电子邮件散列记录322还包括对应的电子邮件消息的活动ID 310以及一个或多个地址散列值314。地址散列值314的生成将在以下描述。
从操作214,例程200继续至操作216,在那里收集收件人字段302A-302D中的每一个中的电子邮件地址。例程200然后继续至操作218,在那里为每一个收集到的电子邮件地址生成散列值。这些散列值此处被称为地址散列值312。对于图3所示的说明性电子邮件消息112,地址散列值314A从电子邮件地址304A中生成,地址散列值314B从电子邮件地址304B中生成,地址散列值314C从电子邮件地址304C中生成,而地址散列值314D从电子邮件地址304D中生成。可利用任何合适的散列函数来从电子邮件地址304A-304D中生成地址散列值。
从操作218,例程200继续至操作220,在那里将地址散列值312插入到电子邮件散列表320中的适当的电子邮件散列记录322中。应当理解,对传送自CRM系统102的每一个电子邮件消息重复在图2的操作208-220处示出且在上文中描述的各过程。以此方式,为每一个出站电子邮件消息创建电子邮件散列记录322。如将在已下参考图4更详细地描述的,CRM应用程序108利用电子邮件散列记录322的内容来将传入电子邮件消息与CRM数据库110中所标识的预先存在的电子邮件消息相关。从操作220,例程200继续到操作222,并在那里结束。
如果在操作202处确定正在处理来自CRM应用程序108的出站消息,则例程200从操作202继续至操作204。在操作204,确定入站电子邮件消息是否是CRM相关的,并且如果是,则将该消息相关到一个或多个现有电子邮件消息。用于将电子邮件消息标识为CRM相关并且将传入电子邮件消息相关到CRM数据库110中所标识的一个或多个预先存在的相关电子邮件消息的说明性过程将在以下参考图4描述。
如果入站消息被标识为CRM相关,则例程200从操作206继续至操作207,在那里将对应于传入电子邮件消息的主题散列值和地址散列值存储在数据库110中。例程200然后从操作207继续至操作222,并在那里结束。如果入站电子邮件消息并非CRM相关,则忽略该入站消息。例程200因此直接从操作206继续至操作222,并在那里结束。
现在转向图4,将描述例程400,该例程示出由CRM应用程序108执行的、用于将传入电子邮件消息相关到CRM数据库110中所标识的预先存在的相关电子邮件消息的一个说明性过程。例程400开始于操作402,在那里以上文中参考图2描述的方式词例化要相关的传入电子邮件消息的主题字段。例程400然后继续至操作404,在那里以与以上参考图2描述的相同方式为所生成的词例计算主题散列值316。
从操作404,例程400继续至操作406,在那里收集传入电子邮件消息的各收件人字段中的所有电子邮件地址。例程400然后继续至操作408,在那里为每一个所收集到的电子邮件地址生成地址散列值312。从操作408,例程400继续至操作410。
在操作410,CRM应用程序108执行对电子邮件散列表320的搜索。具体而言,搜索电子邮件散列表320以定位其中存储的、具有匹配为传入电子邮件消息计算的地址散列值的至少预定义数量(此处被称为“N”)的地址散列值318的电子邮件散列记录322。例程400然后继续至操作412,在那里在操作410中所执行的搜索的结果中搜索具有匹配为传入电子邮件消息计算的主题散列值的至少预定义数量(此处被称为“X”)的主题散列值318的任何电子邮件数量记录322。应当理解,通过在操作412和414处执行的搜索,定位了CRM数据库110中所标识的、具有与传入电子邮件消息共有的至少N个地址散列值和X个主题散列值的电子邮件消息。这些电子邮件消息此处可被称为相关候选电子邮件消息。
从操作412,例程400继续至操作414,在那里在操作410和412中所执行的搜索的结果中搜索具有不超过预定义数量(此处被称为“C”)的主题散列值的任何记录。通过排除具有多于C个主题散列值的潜在相关候选电子邮件消息,可避免过拟合(overfit)。应当理解,尽管在此处被描述为单独的操作,但以上参考操作410、412和414描述的搜索可利用单个SQL搜索查询来执行。还应当理解,可修改N、X和C以提高此处所描述的相关算法的准确度。
从操作414,例程400继续至操作416,在那里确定在操作410、412和414处执行的搜索的结果是否没有产生相关候选电子邮件消息(即,未返回匹配的电子邮件散列记录)。如果未标识候选电子邮件消息,则传入电子邮件消息被认为与电子邮件散列表320中所标识的电子邮件消息无关。例程400因此从操作416继续至操作420,在那里可提供传入电子邮件消息与CRM系统102的活动无关的指示。如果标识了一个或多个候选电子邮件消息,则例程400从操作416继续至操作418。
在操作418,确定在操作410、412和414处执行的搜索期间是否标识了不止一个候选电子邮件消息。如果只定位了一个候选电子邮件消息,则例程400继续至操作422,在那里将入站电子邮件消息与匹配的电子邮件散列记录322所引用的电子邮件消息相关。这可例如通过向传入电子邮件消息分配与匹配的电子邮件散列记录322中所包含的活动标识符相同的活动标识符310来执行。如果标识了不止一个候选电子邮件消息,则例程400从操作418继续至操作424,在那里将入站电子邮件消息与匹配的电子邮件散列记录所引用的最近修改的电子邮件消息(即,最近修改的候选电子邮件消息)相关。从操作420、422和424,例程400继续至操作426,并在那里结束。
现在参考图5,将讨论能够执行以上参考图1-4所描述的软件组件的计算机500的说明性计算机体系结构。图5所示的计算机体系结构示出了常规台式计算机、膝上型计算机或服务器计算机并且可用于具体化此处所描述的计算机系统中的任一个。
图5所示的计算机体系结构包括中央处理单元502(“CPU”)、包括随机存取存储器514(“RAM”)和只读存储器(“ROM”)516的系统存储器508、以及将存储器耦合至CPU 502的系统总线504。基本输入/输出系统存储在ROM516中,它包含帮助诸如在启动期间在计算机500内元件之间传递信息的基本例程。计算机500还包括用于存储操作系统518、应用程序和其它程序模块等的大容量存储设备510,这将在以下更为详尽地描述。
大容量存储设备510通过连接至总线504的大容量存储控制器(未示出)连接到CPU 502。大容量存储设备510及其相关联的计算机可读介质为计算机500提供非易失性存储。虽然此处包含的计算机可读介质的描述针对诸如硬盘或CD-ROM驱动器等大容量存储设备,但应当理解,计算机可读介质可以是能够由计算机500访问的任何可用介质。
作为示例而非限制,计算机可读介质可包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。例如,计算机可读介质包括但不限于,RAM、ROM、EPROM、EEPROM、闪存或其它固态存储器技术、CD-ROM、数字多功能盘(“DVD”)、HD-DVD、蓝光(BLU-RAY)或其它光学存储、磁带盒、磁带、磁盘存储或其它磁性存储设备、或能用于存储所需信息且可以由计算机500访问的任何其它介质。
根据各实施例,计算机500使用通过诸如网络505等网络与远程计算机的逻辑连接在联网环境中操作。计算机500可以通过连接至总线504的网络接口单元506来连接到网络505。应当理解,网络接口单元506也可用于连接至其它类型的网络和远程计算机系统。计算机500还可以包括用于接收和处理来自多个其它设备的输入的输入/输出控制器512,这些设备包括键盘、鼠标或者电子指示笔(未在图5中示出)。类似地,输入/输出控制器可以提供至显示屏、打印机或其它类型的输出设备(也未在图5中示出)的输出。
如以上所简述的,多个程序模块和数据文件可以存储在计算机500的大容量存储设备510和RAM 514内,包括适于控制联网的台式计算机、膝上型计算机、或服务器计算机的操作的操作系统。大容量存储设备510和RAM 514还可以存储一个或多个程序模块。具体而言,大容量存储设备510和RAM 514可存储web浏览器应用程序104、电子邮件客户机应用程序118、CRM应用程序108以及CRM数据库110,以上各项中的每一个都已在上文中参考图1-4描述。其它程序模块也可被存储在大容量存储设备510中并供计算机500利用。
根据其他实施例,CRM应用程序108可提供可经由web浏览器应用程序104访问的、用于纠正错误相关的用户界面。例如,如果CRM应用程序108不正确地将传入电子邮件消息相关到无关电子邮件消息或CRM对象,则用户将能够经由该用户界面通过将该传入电子邮件消息相关到相关电子邮件消息或CRM对象来纠正该错误相关。根据其他方面,该用户界面可显示对于由CRM应用程序108执行的每一次相关的置信度水平。如果置信度水平高于某一预定义阈值,则用户可能不被准许修改相关。根据其他实施例,用户可被准许在CRM应用程序108未检测到相关的地方添加相关。或者,如果消息被标识为CRM相关但被不正确地相关,则将不为该消息创建链接。
还应理解,尽管此处所给出的各个过程已被描述为由CRM应用程序108来执行,但在其他类型的计算系统上执行的其他类型的程序可执行这些过程。例如,在另一实现中,此处所提供的用于标识电子邮件消息并将其相关的功能可集成在电子邮件客户机应用程序118中。通过对该功能的集成,电子邮件客户机应用程序118可根据线程来将相关电子邮件消息彼此关联并显示相关消息。此处所描述的功能还可在基于web的电子邮件系统或其他类型的电子邮件系统中利用。
还应理解,此处所描述的各实现提供了比利用跟踪词例的以往的解决方案更大的安全性。利用以往的解决方案,恶意用户可预测并伪造跟踪词例。利用此处所给出的实现,主题和收件人对于要标识并相关到同一上下文的电子邮件消息必须足够接近地匹配。恶意用户攻击此处所描述的过程将会非常困难。此外,还应理解,利用跟踪词例的以往的解决方案需要在发送电子邮件消息时作出关于是否将跟踪该电子邮件的决定。利用此处所给出的各过程,可在稍后作出该决定并且仍旧可提供对后续回复消息的相关。
基于上文,应当理解,此处提供了用于标识电子邮件消息并将其相关的技术。尽管用对计算机结构特征、方法动作和计算机可读介质专用的语言描述了此处呈现的本主题,但可以理解,所附权利要求书中定义的本发明不必限于此处所述的具体特征、动作或介质。相反,具体特征、动作和介质是作为实现权利要求的示例形式公开的。
上述主题仅作为说明提供,并且不应被解释为限制。可对此处所述的主题作出各种修改和改变,而不必遵循所示和所述的示例实施例和应用,且不背离所附权利要求书中所述的本发明的真正精神和范围。