0

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

预期的 伊姆古尔

得到 伊姆古尔

4

2 回答 2

1

您想要的是快速回复类型。

快速回复:与按钮的用途相同,但单击后会消失。如果您不希望用户必须向上滚动对话并再次单击按钮,那就太好了。

此页面上有关于如何创建点击回复的信息。它似乎采用以下格式:

  {
    "type": "quickReplies",
    "content": {
      "title": "TITLE",
      "buttons": [
        {
          "title": "BUTTON_TITLE",
          "value": "BUTTON_VALUE"
        }
      ]
    }
  }

重要的部分是"type": "quickReplies"。由于您没有提供任何代码,我不确定您是否知道如何进入输入/编辑此 JSON 的阶段。从我链接的第一页上的文档看来,您可以通过以下方式获得:

在技​​能的“操作”选项卡(或“要求”选项卡)上,您可以选择发送消息。

在发送消息按钮下,您将看到要发送的消息类型列表,快速回复是这些类型之一。在此处查看我的屏幕截图。我希望这有帮助。

于 2019-06-18T10:39:34.547 回答
0

我不完全确定 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'));

截屏

在此处输入图像描述

希望这可以帮助!

于 2019-06-19T02:40:25.803 回答