Быстрые ответы SAPCAI отображаются в виде вложений - PullRequest
0 голосов
/ 18 июня 2019

Я использовал SAPCAI (SAP Conversational AI - это французская платформа разработки, например Azure Bot Service) для создания моего чат-бота, но я использую Bot-Framework Webchat в своем веб-приложении.Поэтому у меня нет кода C # или JS.Проблема в том, что быстрые ответы SAPCAI отображаются как «вложения».Как я могу это исправить?

Ожидается Imgur

Есть Imgur

Ответы [ 2 ]

1 голос
/ 18 июня 2019

То, что вы хотите, это Быстрый ответ тип.

Быстрые ответы: та же цель, что и у кнопок, но исчезает при нажатии. Отлично, если вы не хотите, чтобы пользователь прокручивал разговор и снова нажимал кнопку.

Информация о том, как создавать ответы по кликам, есть на этой странице . Вроде бы в формате:

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

Важной частью будет "type": "quickReplies". Поскольку вы не предоставили никакого кода, я не уверен, знаете ли вы, как добраться до этапа, на котором вы вводите / редактируете этот JSON. Из документации на первой странице, которую я связал, может показаться, что вы добираетесь до этого через:

На вкладке «Действия» навыка (или на вкладке «Требования») вы можете, помимо прочего, отправлять сообщения.

Под кнопкой отправки сообщения вам будет показан список типов сообщений для отправки, быстрый ответ является одним из этих типов. Смотрите мои скриншоты здесь . Надеюсь, это поможет.

0 голосов
/ 19 июня 2019

Я не совсем уверен, как работает SAPCAI, но если вы получаете карту в веб-чате, вы можете использовать пользовательское промежуточное хранилище для преобразования названия карты в текст, а ее кнопок - в предлагаемые действия. Затем вы можете добавить их в действие вместо вложения. Обратите внимание, что промежуточное ПО магазина ниже преобразует все карты в предлагаемые действия, поэтому вы можете добавить дополнительную логику, если вы намерены использовать другие карты в своем диалоге. Кроме того, если карта является AdaptiveCard, вам нужно будет также сделать еще несколько модификаций, поскольку они, как правило, более сложные, чем карты с расширенными возможностями.

Middleware

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

Надеюсь, это поможет!

...