SAPCAI快速回复显示为附件

时间:2019-06-18 08:02:20

标签: botframework web-chat

我使用SAPCAI(SAP Conversational AI是类似于Azure Bot Service的法国开发平台)构建聊天机器人,但是我在Web应用程序中使用了Bot-Framework网络聊天。因此,我没有任何C#或JS代码。问题是SAPCAI快速答复显示为“附件”。我该如何解决?

预期 Imgur

知道 Imgur

2 个答案:

答案 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'));

屏幕截图

enter image description here

希望这会有所帮助!