将 Oracle Digital Assistant 集成到内置 Oracle Content Management 的网站中
简介
组织通常希望创建内容共享网站(例如营销网站、销售门户和合作伙伴中心),以便向内部或外部受众分发内容。Oracle Content Management 提供了用于构建此类内容共享网站的功能强大的工具。
数字助手和聊天机器人让销售和营销团队能够快速跟踪数字业务增长并增强客户体验。
Oracle Digital Assistant 是一个平台,可用于创建和部署数字助手,这些数字助手是 AI 驱动的界面,可帮助用户以自然语言对话完成各种任务。但当您需要内容管理系统 (Content Management System, CMS) 来提供您的所有内容时,会发生什么情况?幸运的是,Oracle Content Management 凭借其丰富的无头 CMS 功能,能够针对您的所有内容管理和治理需求提供优雅的解决方案。
在本教程中,我们将首先在 Oracle Digital Assistant 中构建一个聊天机器人,它利用 Oracle Content Management 作为无标题 CMS 及其软件开发工具包 (Software Development Kit, SDK) 来在 JavaScript 中交付内容。接下来,我们将使用 Oracle Content Management 的 Site Builder 创建和编辑销售支持网站,并使用 Oracle Content Management 自定义组件添加聊天机器人。
教程包含四个步骤:
- 设置您的 Café Supremo 销售支持网站
- 掌握 Oracle Digital Assistant 技能
- 设置 Oracle Content Management 自定义组件
- 将定制组件添加到网站
先决条件
在继续本教程之前,我们建议您先阅读以下信息:
要学习本教程,您需要:
- Oracle Content Management 订阅
- 具有内容管理员角色的 Oracle Content Management 账户
- Oracle Digital Assistant (ODA) 订阅
- ODA 实例
- 安装了 Node.js 和 Node Package Manager (NPM) 的 Windows 或 Mac 计算机以进行全局访问
我们正在构建的内容
Café Supremo 是一家虚拟的咖啡店连锁店,具有全球各地的商店地点。Café Supremo 销售支持网站是使用 Oracle Content Management 创建的。
Café Supremo 销售支持网站允许全球 Café Supremo 公司的销售代表获得他们所需的所有销售信息。要了解什么是销售支持网站,并查看 Café Supremo 销售支持网站的介绍,请参阅了解如何创建销售支持网站。
这是 Café Supremo 销售支持网站的增强版本,该网站具有使用 Oracle Digital Assistant (ODA) 开发的聊天机器人,该聊天机器人提取从 Oracle Content Management 渠道传送的内容。
以下是本教程末尾的销售启用站点外观:

任务 1:设置您的 Café Supremo 销售支持网站
在此部分中,您将使用 Oracle Content Management 设置 Café Supremo 销售支持网站。
要开始使用,您需要从 Oracle Content Management 下载页面下载包含 Café Supremo 销售支持网站模板和示例代码的 zip 文件。获取模板副本后,将其上载到 Oracle Content Management,您将使用它创建销售支持网站。
zip 文件包含一个自述文件、许可证文件和模板 zip 文件。
注意:示例模板和 Café Supremo 销售支持网站中使用的图像是 Shutterstock 的图像。如果您要重用这些图像,必须获得 Shutterstock 的授权。您也可以将这些图像替换为自己的图像。
要设置 Café Supremo 参考销售支持网站,请执行以下操作:
以管理员身份登录到 Oracle Content Management。如果在 Oracle Content Management Web 界面的左侧导航菜单中未看到 ADMINISTRATION 部分,则您没有管理员权限。在这种情况下,请与服务管理员联系。
在左侧导航菜单中,依次单击开发人员和查看所有模板。

在“模板”页上,单击创建,然后选择导入模板程序包。
在“选择文件”对话框中,导航到要上载文件的文件夹或创建新文件夹,然后单击上载。
找到并选择 CafeSupremoSalesEnablement.zip 模板程序包,然后单击打开。等待文件上载。文件上载后,将可供选择。
选中 CafeSupremoSalesEnablement.zip 复选框,然后单击确定。CafeSupremoSalesEnablement 模板现在包括在“模板”页上的模板列表中。
单击左侧导航菜单中 ADMINISTRATION 下的内容。
现在创建一个存储库,该存储库是一个存储位置,用于管理您在网站上使用的全部数字资产。
从下拉列表中选择资料档案库,然后单击右上角的创建。
在名称字段中,为您的网站输入一个有意义的资料档案库名称(例如 'CafeSupremoSalesEnablement Repository')。
在 Default Language(默认语言)字段中,确保选中 English(美国)(en-US)(美国))。
单击保存。新创建的资料档案库现在包括在“内容”页上的资料档案库列表中。

单击左侧导航菜单中的站点。
在“站点”页面中,单击右上角的创建。

在 Create Site(创建站点)对话框中,选择 CafeSupremoSalesEnablement 模板。
完成以下字段:
Asset Repository(资产资料档案库)- 选择之前创建的资产资料档案库(例如,'CafeSupremoSalesEnablement Repository(资料档案库))。
本地化策略 - 自动选择本地化策略,因为它作为示例代码和模板的一部分提供。
默认语言 - 默认情况下,此字段设置为英语(美国)(en-US)。

单击下一步并为您的站点添加详细信息:
Name(名称)- 输入网站的名称(例如 CafeSupremoSalesEnablement)。
友好 URL 值的前缀 - 这会添加到内容项的友好 URL 值中。
说明- 提供站点的可选说明。

单击创建。
销售支持网站已创建,现在已在“站点”页面上列出。
任务 2:构建 Oracle Digital Assistant 技能
要在 ODA 聊天机器人应用程序中使用 Oracle Content Management 内容,可以使用 Oracle Content Management ODA 聊天机器人示例,该示例位于 GitHub 上的开源存储库中。
注意:请记住,使用 ODA 聊天机器人示例是可选的,在本教程中使用此示例可以帮助您快速入门。您还可以构建您自己的聊天机器人应用。
要掌握 ODA 中的聊天机器人技能,请执行以下操作:
克隆示例资源库
Oracle Content Management ODA 聊天机器人示例位于 GitHub 上的开源存储库中。首先需要将示例系统信息库从 GitHub 克隆到本地计算机,并更改目录以处理此示例。
git clone https://github.com/oracle/oce-integration-samples.git
cd oce-integration-samples/oce-oda-chatbot-sample/site-integration-chatbot-sample
现在,您已经有了代码库,让我们来进一步了解一下您将在本教程中使用的文件夹:
oda-custom-component 文件夹是一个 ODA 定制组件。

SalesEnablementChatbotIntegration 文件夹是一种聊天机器人技能。

SE2-ODA-Chatbot 文件夹是一个 Oracle Content Management 站点定制组件。

注意:headless-chatbot-sample 文件夹是无标题聊天机器人样例的一部分。您可以在此处了解有关此无标题聊天机器人示例的更多信息。
将 ODA 技能导入实例
SalesEnablementChatbotIntegration 文件夹是本教程中使用的 ODA 技能。按照以下步骤,在 ODA 实例上创建和训练您的技能:
在 Oracle Digital Assistant 实例中,打开左侧的导航菜单,然后依次单击开发和技能。

搜索销售支持聊天机器人集成技能。
注意:如果实例不具备此技能,则选择 SalesEnablementChatbotIntegration 文件夹的内容并将其压缩为单个 zip 文件。在 ODA 实例的“技能”页面上,单击导入技能并导入刚创建的 zip 文件。直接压缩 SalesEnablementChatbotIntegration 文件夹将导致导入时出错。
在“销售启用聊天机器人集成”技能卡上,依次单击选项图标和克隆。

为克隆的技能指定一个唯一的显示名称;例如,在开始时添加您的姓名首字母,例如“AB - 销售支持聊天机器人集成”。保留所有其他值不变。依次选择打开随后克隆的技能,然后单击克隆。
注意:名称必须以字母开头,并且只能包含字母、数字、句点和下划线。不能超过 100 个字符。

单击培训,确保选中培训员 Ht,然后单击提交培训技能。
注意:在本教程中使用“Ht”培训,该培训快速但肤浅。对于生产作业,您应该使用 Tm 培训,这样可以更好地解决问题。

销售支持聊天机器人集成技能
技能是个人聊天机器人,旨在与用户交互并履行特定类型的任务,例如订购食品、进行预订和更改联系人信息。ODAChatbot 技能通过文本消息和简单 UI 元素(如选择列表)的组合,帮助用户找到合适的销售支持公告和故事。
在您开始使用数字助手和技能培养之前,您需要熟悉以下几个概念:
意图 - 用户期望您的技能为他们执行的操作或任务的类别。我们的技能中有两个意图:
- 您好:此意图向用户显示欢迎消息。
- StoryIntent:此意图显示 Oracle Content Management 中的相应菜单和内容项。
实体 - 用于标识用户输入中的关键信息片段的变量,这些信息使技能能够完成任务。我们的技能中有七个实体:
- TopMenu:这是包含菜单项的值列表实体。
- HomeMenu:这是包含“主页”菜单中的类别的值列表实体。
- CafeSupremoMenu:这是包含 Cafe Supremo 菜单中类别的值列表实体。
- LearningMenu:这是包含“学习”菜单中类别的值列表实体。
- SellingMenu:这是包含“销售”菜单中的类别的值列表实体。
- MenuBag:这是菜单项实体的组合袋实体;即 HomeMenu、CafeSupremoMenu、LearningMenu 和 SellingMenu 实体。
- StoryCategory:这是包含所有故事类别的值列表实体。
意图和实体都是常见的自然语言处理 (Natural Language Processing, NLP) 概念。NLP 是从文本中提取文本和相关信息的意图的科学。
组件 - 这些组件为您提供了各种功能的技能,以便它可以回应用户。这些函数可以是输出文本等通用函数,也可以是可从后端返回信息并执行定制逻辑的定制组件。在我们的技能中,有一个自定义组件服务 sales-enablement-custom-component,它通过 REST API 从 Oracle Content Management 提取内容项。
对话框流 - 技能用户交互的定义。对话流程根据用户输入描述您的技能的响应和行为。
渠道 - 用户可以通过消息传递平台或客户端消息传递应用访问数字助手和技能。单个数字助手或技能可以配置多个渠道,以便同时在不同服务上运行。在本教程中,我们使用 Oracle Web 渠道来访问我们在 Web 应用中的技能。
要了解有关 Oracle Digital Assistant 和技能的更多信息,请查看产品文档。
设置和配置定制组件服务
代码库中的 oda-custom-component 文件夹是 ODA 自定义组件,用于从 OCM 上的安全通道提取内容。首先,我们需要下载此 ODA 自定义组件的依赖性。从 site- integration-chatbot-sample/oda-custom-component 目录运行以下命令:
npm install
接下来,我们需要配置一些信息,以便我们的 Oracle Content Management Content SDK(和任何其他请求)可以将正确的实例 URL 和 API 版本与正确的渠道标记作为目标。
组件 /server-config-utils.js 中使用这些值来实例化新的传送客户机。
在文本编辑器中打开 server-config-utils.js 文件。您将看到以下内容:
contentServer: "https://instance-name.cec.ocp.oraclecloud.com",
contentVersion: "v1.1",
channelToken: "4b7b22ad5f5245f28579641d5489a98f",
更改每个键 - 值对以反映您的实例 URL、要设定的 API 版本以及与 CafeSupremoSalesEnablement 站点的发布通道关联的通道标记。
使用 Oracle Content Management Content SDK
Oracle Content Management 提供了一个 SDK 来帮助发现和使用应用程序中的内容。SDK 作为 NPM 模块发布,项目托管在 GitHub 上。
此处了解有关 SDK 的更多信息。
SDK 已注册为 package.json 文件中 ODA 自定义组件的运行时依赖项。
使用内容 SDK 提取内容
现在,我们可以利用内容 SDK 通过 ODA 自定义组件提取聊天机器人技能内容。
组件 /services.js 文件夹包含使用内容 SDK 从 Oracle Content Management 获取数据的代码。
component/server-config-utils.js 文件导入 Content SDK,然后使用其中指定的配置创建传送客户机。
以下命令导入 SDK:
createDeliveryClient = require('@oracle/content-management-sdk');以下命令创建传送客户机:
deliveryClient = createDeliveryClient(serverconfig);组件 /services.js 文件包含用于获取聊天机器人的内容项的所有代码。有一个主函数可提取聊天机器人的所有内容。
调用以下函数从 CafeSupremoSalesEnablement 资料档案库检索特定分类类别的所有数据:
function getStoryData(client, categoryName) {
if (categoryName === 'Announcements') {
return fetchItemsForAnnouncements(client, false)
.then((topLevelItem) => {
const { totalResults } = topLevelItem;
const promises = [];
// for each item, retrieve the result object and add it to the promise
topLevelItem.items.forEach((item) => {
promises.push(
retrieveAnnouncementsObject(client, item.id)
.then((resultobject) => ({ ...resultobject })),
);
});
// execute all the promises before returning the data
return Promise.all(promises)
.then((arrayOfItems) => ({
totalResults,
items: arrayOfItems.flat(),
}));
});
}
return fetchItemsForCategoryName(client, categoryName, false)
.then((topLevelItem) => {
const { totalResults } = topLevelItem;
const promises = [];
// for each item, retrieve the result object and add it to the promise
topLevelItem.items.forEach((item) => {
promises.push(
retrieveResultObject(client, item.id)
.then((resultobject) => ({ ...resultobject })),
);
});
// execute all the promises before returning the data
return Promise.all(promises)
.then((arrayOfItems) => ({
totalResults,
items: arrayOfItems.flat(),
}));
});
}getStoryData 函数根据是针对公告还是故事类别发出请求,发出两组不同的调用。
公告数据
需要一个数据调用才能获取公告的所有内容项。
getStoryData 函数调用 fetchItemsForAnnouncements,它获取类型为 ‘ SE2-Announcements ’ 的所有内容项。接下来,调用 retrieveAnnouncementsObject 函数,并使用来自 fetchItemsForAnnouncements 的数据填充结果对象的标题和摘要字段。
function fetchItemsForAnnouncements(client, limit) {
return client.getItems({
q: '(type eq "SE2-Announcement")',
fields: 'all',
expand: 'all',
limit: limit ? 4 : 100,
totalResults: true,
});
}案例数据
需要多次数据调用才能获取故事的所有内容项。
首先,我们会获得用户请求类别的所有内容项。
对于获取的每个内容项,我们调用以检索介质 URL。
getStoryData 函数调用 fetchItemsForCategoryName,它获取用户指定的类型为 ‘ SE2-Story ’ 的所有内容项和分类类别名称。
function fetchItemsForCategoryName(client, categoryName, limit) {
return client.getItems({
q: `(taxonomies.categories.name eq "${categoryName}" and type eq "SE2-Story")`,
fields: 'all',
expand: 'all',
limit: limit ? 4 : 100,
totalResults: true,
});
}fetchItemsForCategoryName 提取的内容项具有介质 ID 字段。retrieveMediaURL 函数使用此介质 ID 提取介质 URL。
function retrieveMediaURL(client, identifier) {
return client.getItem({
id: identifier,
fields: 'all',
expand: 'all',
}).then((asset) => {
let url = null;
if (asset.fields && asset.fields.renditions && asset.fields.fileType !== 'mp4') {
const object = asset.fields.renditions.filter((item) => item.name === 'Small')[0];
const format = object.formats.filter((item) => item.format === 'jpg')[0];
const self = format.links.filter((item) => item.rel === 'self')[0];
url = self.href;
} else {
url = asset.fields.native.links[0].href;
}
return [url, asset.fields.fileType];
});
}打包和部署定制组件服务
您可以将自定义组件部署到技能的嵌入式容器、远程节点服务器或 Oracle Mobile Hub。在本教程中,您将定制组件服务部署到嵌入式容器。为此,首先需要将定制组件服务打包到可部署文件中:
将工作保存在 JavaScript IDE 中。
打开终端窗口并导航到 site-integ-chatbot-sample/oda-custom-component 文件夹。
在 oda-custom-component 文件夹中,输入以下 npm 命令
bots-node-sdk pack由于 package.json 文件中的预包装脚本,该命令首先执行 preack 命令来验证软件包。然后,该命令将节点项目及其依赖项打包到名为 oda-custom-component-1.0.0.tgz 的可部署 tarball 中。
tarball 必须包括除 devDependencies 之外的所有依赖项。
在 ODA 实例的聊天机器人技能中,单击左侧栏中的“组件”图标打开组件服务页面。单击 + 服务以创建新服务。

在“Create Service(创建服务)”对话框中,执行以下操作:
在 "Name"(名称)字段中,输入 SalesEnablementCustomComponent。
在“说明”字段中,您可以添加可选的说明。
请确保选择了嵌入式容器选项。
将 oda-custom-component-1.0.0.tgz 文件拖放到“软件包文件”字段中。
单击创建。

等待 "Status" 字段显示 Ready,这可能需要几秒钟。
将自定义组件服务部署到技能的嵌入式容器中,您可以准备测试组件。
要了解有关 Oracle Digital Assistant 和自定义组件的更多信息,请查看培训文档。
创建 Oracle Digital Assistant Web 渠道
您将创建一个 Oracle Digital Assistant 用户渠道,使 Oracle Web 客户端能够访问您的技能。为确保只有 Web 客户端才能使用此通道,您可以将它配置为要求进行客户端验证。
在 Oracle Digital Assistant 实例中,打开左侧的导航菜单,然后依次单击开发和渠道。

在“渠道”页面上,单击 + 渠道以添加渠道。
在“Create Channels(创建渠道)”页面上,输入以下信息,如下面的屏幕截图所示:
- 名称:以字母开头且仅包含字母、数字、句点和下划线 (_) 的唯一名称,例如 AB_SalesEnablementChatbotIntegration。
- 说明:(可选)渠道的用途。
- 渠道类型:Oracle Web。
- 允许的域: *(单个星号允许任何域。)
- Client Authentication Enabled(启用客户机验证):将其保留在关闭位置。

单击创建。
在“发送至”下拉列表中,选择您为此教程创建的技能。

将启用渠道选项切换为“打开”。
记下为此渠道显示的渠道 ID。在本教程的后面部分中,您将在 Web 应用程序中使用此值。

另请注意 Web 浏览器地址字段中显示的实例 URL 中的 Oracle Digital Assistant 主机和域(称为全限定域名),例如 oda-xxxx.data.digitalassistant.oci.oraclecloud.com。您稍后将在教程中使用此值。
现在,您的实例已设置为让您可将网站上的聊天机器人连接到技能。
任务 3:设置 Oracle Content Management 自定义组件
现在,您需要将 SE2-ODA-Chatbot 自定义组件导入 Oracle Content Management 实例。
设置 Oracle Content Management 自定义组件的过程分为三个步骤:
添加 Oracle Digital Assistant Web SDK
我们需要将 ODA web-sdk.js 文件添加到 SE2-ODA-Chatbot 自定义组件中。SDK 连接到 Oracle 聊天服务器,该服务器位于 Oracle Digital Assistant 和技能(或数字助手)之间。然后,聊天服务器将消息传递给处理技能,并向客户提供技能响应。
下载最新版本的 Oracle Web SDK 并解压缩到您选择的文件夹中。您还可以通过打开侧边菜单并单击“下载”,从数字助手实例转到此 SDK 的下载页面。
从 Oracle Web SDK 文件夹复制 native-client-sdk-js/web-sdk.js 文件,并将其放在 SE2-ODA-Chatbot/assets/chatbot 文件夹中。

导入 SE2-ODA-Chatbot 自定义组件
要导入 SE2-ODA-Chatbot 自定义组件,请执行以下操作:
导航到 site- integration-chatbot-sample 文件夹,并将 SE2-ODA-Chatbot 文件夹压缩到 zip 文件。
以管理员身份登录到 Oracle Content Management Web 界面。
单击左侧导航菜单中的开发人员,然后单击查看所有组件。如果看不到“开发人员”选项,则表示您没有所需的用户角色。
在“组件”页上,单击创建,然后选择导入组件。

转到 Oracle Content Management 实例中要上载组件或创建新文件夹的文件夹。单击上载,然后查找 SE2-ODA-Chatbot.zip 文件并单击打开。
选择 SE2-ODA-Chatbot.zip 文件并单击确定。

如果已存在组件或布局的名称或 ID,则系统将提示您解决冲突。您可能需要创建新组件,也可以使用导入的版本覆盖现有组件。
成功上载 SE2-ODA-Chatbot 组件后,该组件将列在“组件”页上。
发布 SE2-ODA-Chatbot 自定义组件
现在,需要发布导入的 SE2-ODA-Chatbot 组件:
在“组件”页上,选择 SE2-ODA-Chatbot 组件,然后单击操作栏或右键单击菜单中的发布。

在“发布组件”对话框中,选择确认以继续,然后单击确定。

发布 SE2-ODA-Chatbot 组件后,页面顶部将显示一条通知以确认这一点。
任务 4:将自定义组件添加到网站
最后一步是将 SE2-ODA-Chatbot 自定义组件拖放到 Site Builder 中,从而将其添加到销售支持网站。
将聊天机器人添加到销售支持站点的过程分为两步:
编辑网站
第一步是使用 SE2-ODA-Chatbot 自定义组件向销售支持站点添加聊天机器人:
登录到 Oracle Content Management Web 界面并打开“站点”页。
选择新创建的网站,然后从操作栏或右键单击菜单中选择打开以在站点构建器中打开它。
通过切换“查看 / 编辑”开关,将站点置于编辑模式。
输入更新名称,然后单击确定。
在左侧子工具栏中,依次单击组件和定制以显示定制组件列表。

现在,让我们使用 SE2-ODA-Chatbot 自定义组件将 ODA 聊天机器人小部件添加到主页。将 SE2-ODA-Chatbot 组件拖放到页面上的任意位置。单击 SE2-ODA-Chatbot 组件的标题以确保其父组件是您需要的内容。可使用此方式查看任何组件在 Web 页结构中的位置。

在“一般信息”选项卡中完成自定义设置:
- ODA URI:ODA 实例 URL(不带 http://)。
- 渠道 ID:ODA Web 渠道 ID。
- 聊天机器人标题:显示在标题中的聊天小部件的标题。
- 聊天机器人配置:(可选)将 ODA 聊天机器人作为 JSON 对象提供任何其他配置(对任何键和值字符串使用双引号)。
重复以上步骤,在网站的任何页面上添加聊天机器人。
发布网站
现在,您已成功将聊天机器人添加到您的网站,可以将其发布,使其联机以供您的用户查看。
一切看上去正常后,请单击站点构建器右上角的提交来提交对基本网站所做的更改。

在“提交更新”对话框中,单击提交。

提交所做更改后,该网站已就绪,可以发布。关闭站点构建器。
单击 Oracle Content Management Web 界面中左侧导航菜单中的站点,然后选择该网站。
单击菜单栏上的边栏,然后选择属性或从右键单击菜单中选择属性。

在属性对话框中,单击安全性选项卡,然后在要求所有人登录才能访问此站点字段中选择是。在联机时谁可以访问此站点字段中,选中云用户复选框,然后单击保存。

从操作栏或右键单击菜单中选择发布。

发布网站后,页面顶部将显示一则通知以确认这一点。
在“站点”页上,再次选择该网站,然后从操作栏或右键单击菜单中选择联机。在“联机”对话框中,选择确认以继续,然后单击联机。


就这样。您的网站现在已联机,可供其他人查看。
要查看您的网站,请从操作栏或右键单击菜单中选择查看,或在 Web 浏览器中打开 URL。
如何使用聊天机器人
您可以通过以下方式使用网站中的聊天机器人:
向机器人寻求帮助,帮助他们开始工作。
询问机器人“如何使用机器人”。

通过键入查询查找案例。
询问机器人“我想查看融资解决方案”,然后单击任意提要卡片在网站上将其打开。

只需口头陈述查询并获得音频响应即可查找案例。
打开音频响应以使用音频输入并说“向我展示咖啡馆销售剧本”。
您可以单击、说出或键入“show more”来查看类别中的更多案例,或单击“find other(查找其他内容)”来启动新查询。

请参见不同的菜单项。
询问机器人“我想查看主菜单”。

详细了解特定菜单。
询问机器人“显示主页菜单”,或者单击主菜单列表中的任意菜单项,或者键入或说“在销售菜单中可以找到什么”。

将 Oracle Digital Assistant 集成到内置 Oracle Content Management 的网站中
F52695-01
2022 年 1 月
Copyright © 2021, 2022, Oracle and/or its affiliates.
第一作者:Oracle Corporation