教程:与主机网页互动
您可以使用自定义回复和事件,让网络聊天与出现它的网页进行交互。
例如,客户可能会使用您的助手查找填写表格所需的信息。 与其让客户手动将这些信息复制到表单中,不如让网络聊天自动完成这些信息。
如需本教程示例的完整、可运行版本,请参阅 《 AI 助手网页聊天的页面交互 》。
此示例使用自定义回复在网络聊天中呈现一个按钮,该按钮会在表单字段中填入客户的账号:
为该
customResponse事件创建一个处理程序。 该处理程序将渲染一个自定义按钮,并为其创建一个点击处理程序。 点击处理程序使用 "Document.querySelector()方法与 DOM 交互,并在表单字段中填写客户的账号。
本例使用硬编码的账号 "1234567。 在典型的生产助理中,您的助理会从会话变量中获取该值,或从外部系统中进行查询。
function customResponseHandler(event) {
const { element } = event.data;
const button = document.createElement('button');
button.type = 'button';
button.innerHTML = 'Enter account number';
button.addEventListener('click', () => {
// Look for the account number element in the document, and enter the account number.
document.querySelector('#account-number').value = '1234567';
});
element.appendChild(button);
}
在您的
onLoad事件处理程序中,使用实例on()方法订阅该customResponse事件,并将处理程序注册为回调。 这样,助手就可以发送自定义回复,显示填写账号的按钮。
instance.on({
type: 'customResponse',
handler: (event, instance) => {
const { message } = event.data;
if (message.user_defined &&
message.user_defined.user_defined_type === 'fill_account_number') {
accountNumberResponseHandler(event, instance);
}
},
});
在此示例中,我们将检查自定义响应的自定义 "user_defined_type属性,并仅在指定类型为 "fill_account_number时调用 "accountNumberResponseHandler()"函数。 这是一个可选的检查,显示了如何使用自定义属性来定义多个不同的自定义响应(每个响应的 "user_defined_type值都不同)。
如需完整的可运行代码,请参阅 “AI 助手网页聊天示例”中的页面交互部分。