我使用SAPCAI(SAP Conversational AI是类似于Azure Bot Service的法国开发平台)构建聊天机器人,但是我在Web应用程序中使用了Bot-Framework网络聊天。因此,我没有任何C#或JS代码。问题是SAPCAI快速答复显示为“附件”。我该如何解决?
预期
知道
答案 0 :(得分:1)
您想要的是Quick replies类型。
快速回复:与按钮的用途相同,但单击后消失。如果您不希望用户向上滚动对话并再次单击按钮,那就太好了。
有关如何在this page上创建点击回复的信息。似乎采用以下格式:
{
"type": "quickReplies",
"content": {
"title": "TITLE",
"buttons": [
{
"title": "BUTTON_TITLE",
"value": "BUTTON_VALUE"
}
]
}
}
重要的部分是"type": "quickReplies"
。由于您未提供任何代码,因此我不确定是否知道如何进入输入/编辑此JSON的阶段。从我链接的第一页的文档中,您似乎可以通过以下方式获得此信息:
在技能的“动作”选项卡(或“需求”选项卡)上,您可以选择其他方式来发送消息。
在“发送消息”按钮下,将显示要发送的消息类型列表,快速回复就是这些类型之一。查看我的屏幕截图here。 我希望这会有所帮助。
答案 1 :(得分:0)
我不确定SAPCAI的工作方式,但是如果您在网络聊天中收到卡片,则可以使用自定义中间件商店将卡片的标题转换为文本,并将其按钮转换为建议的操作。然后,您可以将它们添加到活动中,以代替附件。注意,下面的商店中间件会将所有卡转换为建议的操作,因此,如果您打算在对话框中使用其他卡,则可能需要添加一些其他逻辑。另外,如果卡是AdaptiveCard,则您还需要进行更多修改,因为这些修改往往比富卡复杂。
中间件
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'));
屏幕截图
希望这会有所帮助!