目录

简介

先决条件

要求

使用的组件

问题

根本原因

受影响的版本

用于验证的CLI查询

解决方案

简介

本文档介绍控制字符在语音留言的主题行中出现时对Cisco Unity Connection(CUC)的影响。

先决条件

要求

思科建议您了解CUC。

使用的组件

本文档中的信息基于CUC 8.X及更高版本。

本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始（默认）配置。如果您使用的是真实网络，请确保您已经了解所有命令的潜在影响。

问题

消息的主题行或发件人显示名称标题中的控制字符的存在会中断CUC与Microsoft Exchange Server同步消息的尝试。某些旧式电话将^A作为发件人显示名称标题中的第一个字符发送到CUC服务器以创建语音消息操作。CUC服务器草稿主题标题从“发件人显示名称”(Sender Display Name)标题中，因此它还包含^A字符。这会中断统一消息传送流。

注意：此问题记录在Cisco Bug ID CSCur53311中。

根本原因

使用Exchange Web服务(EWS)请求 — 响应来同步CUC邮箱和Microsoft Exchange Server之间的语音消息。当CUC将包含^A字符的语音留言同步到Exchange服务器时，它会发送一个具有相同字符的主题行，该留言将成功保存在Exchange邮箱中。CUC使用CreateItem EWS请求在Exchange Server上创建语音消息。

当CUC尝试通过Exchange邮箱中任何用户的FindItem EWS请求搜索项目(在本例中为包含^A字符的主题行的语音消息等项目)时，Exchange Server将标题开始(SOH)作为主题内容(十六进制01、&#x1;)作出响应。

CUC使用Simple API for XML(SAX)解析器来解析EWS响应XML。SAX解析器使用XML版本1.0（CUC支持的版本）中定义的语法解析XML。 SOH内容是无效的XML 1.0字符。当XML SAX解析器尝试解析控制字符时，它会失败，出现致命错误，并且对邮箱中的其余消息不继续同步尝试。

受影响的版本

所有10.x版之前的CUC版本都没有Cisco Bug ID CSCur53311的修复程序。

用于验证的CLI查询

要检查“发件人显示名称”标题或主题行中的“控制字符”，可以使用以下CLI查询：

- 在CLI中输入此命令，以获取受影响的消息总数：

run cuc dbquery unitymbxdb1 select count(*) from vw_mailbox as mb, vw_message as m

where mb.mailboxobjectid = m.mailboxobjectid AND left(m.senderdisplayname,1)=CHR(1)
此查询检查“发件人显示名称”(Sender Display Name)报头中的第一个字符，并验证它是否为SOH字符。

- 在CLI中输入此命令，以检查消息主题行中任意位置的SOH字符：

run cuc dbquery unitymbxdb1 select count(*) from vw_message where instr

(subject,CHR(1),1)!=0

提示：您可以修改这些查询以检查其他控制字符或标准字符。将CHR()中的值替换为适当的值。有关其他信息，请参阅 ASCII代码表。

解决方案

CUC版本10.5(2)中修复了Cisco Bug ID CSCur53311中描述的缺陷。 此版本可从思科软件下载网页下载。

完成以下步骤以进行临时修复：

1. 确保主题行中没有将消息发送到^A的CUC服务器。

2. 在CLI中输入此命令以获取受影响用户的列表，然后为其禁用单一收件箱功能：

run cuc dbquery unitymbxdb1 Select description from vw_mailbox mb inner join

vw_message m on mb.mailboxobjectid = m.mailboxobjectid where instr(subject,

CHR(1),1)!=0

3. 手动删除已识别的语音留言：

- 在CLI中输入以下命令，以获取受影响邮件的邮件对象ID和文件夹对象ID:

run cuc dbquery unitymbxdb1 Select messageobjectid, folderobjectid from

vw_messagewithsynch where instr(subject,CHR(1),1)!=0

- 在CLI中输入以下命令，以运行csp_messagesdelete存储过程并删除CUC服务器上的语音消息：

run cuc dbquery unitymbxdb1 execute procedure csp_messagesdelete

(pFolderObjectId='db252856-0c1a-4b19-a476-7ee4f7bc4298', pMessages=

'5d6cfc0e-17cb-4849-b193-e1435a816ad7', pNummessages=1)

4. 在Exchange管理员的帮助下，在Exchange Server上识别这些消息并将其删除。在CLI中输入以下命令（在CUC中删除消息之前）：

run cuc dbquery unitymbxdb1 Select sender, senderdisplayname, subject, creationtime,

rfc822messageid from vw_message where instr(subject,CHR(1),1)!=0

注意：使用rfc822messageid部分将CUC邮箱中受影响的邮件映射到Exchange Server邮箱中的邮件。

5. 在从CUC和Exchange服务器删除所有受影响的邮件后启用统一消息。