我使用 SAPCAI(SAP Conversational AI 是一个类似于 Azure Bot Service 的法国开发平台)来构建我的聊天机器人,但我在我的 Web 应用程序上使用了 Bot-Framework Webchat。因此,我没有任何 C# 或 JS 代码。问题是 SAPCAI 快速回复显示为“附件”。我该如何解决?
预期的
得到
我使用 SAPCAI(SAP Conversational AI 是一个类似于 Azure Bot Service 的法国开发平台)来构建我的聊天机器人,但我在我的 Web 应用程序上使用了 Bot-Framework Webchat。因此,我没有任何 C# 或 JS 代码。问题是 SAPCAI 快速回复显示为“附件”。我该如何解决?
预期的
得到
您想要的是快速回复类型。
快速回复:与按钮的用途相同,但单击后会消失。如果您不希望用户必须向上滚动对话并再次单击按钮,那就太好了。
此页面上有关于如何创建点击回复的信息。它似乎采用以下格式:
{
"type": "quickReplies",
"content": {
"title": "TITLE",
"buttons": [
{
"title": "BUTTON_TITLE",
"value": "BUTTON_VALUE"
}
]
}
}
重要的部分是"type": "quickReplies"
。由于您没有提供任何代码,我不确定您是否知道如何进入输入/编辑此 JSON 的阶段。从我链接的第一页上的文档看来,您可以通过以下方式获得:
在技能的“操作”选项卡(或“要求”选项卡)上,您可以选择发送消息。
在发送消息按钮下,您将看到要发送的消息类型列表,快速回复是这些类型之一。在此处查看我的屏幕截图。我希望这有帮助。
我不完全确定 SAPCAI 是如何工作的,但如果您在网络聊天中收到卡片,您可以使用自定义中间件存储将卡片的标题转换为文本,并将其按钮转换为建议的操作。然后,您可以将它们添加到活动中以代替附件。请注意,下面的商店中间件会将所有卡片转换为建议的操作,因此如果您确实打算在对话框中使用其他卡片,则可能需要添加一些额外的逻辑。此外,如果卡片是自适应卡片,您还需要进行更多修改,因为这些修改往往比富卡片更复杂。
中间件
const store = createStore(
{},
({ dispatch}) => next => async action => {
if (action.type === 'DIRECT_LINE/INCOMING_ACTIVITY') {
const { attachments, from: { role }} = action.payload.activity;
if (role === 'bot' && attachments) {
const text = attachments.map(({ content: { title }}) => title).join(' ');
const actions = attachments.map(({content: { buttons }}) => buttons).flat();
action.payload.activity.text = text;
action.payload.activity.attachments = [];
action.payload.activity.suggestedActions = { actions };
}
}
return next(action)
}
);
renderWebChat({
directLine,
store,
}, document.getElementById('webchat'));
截屏
希望这可以帮助!