Автоматически бот отображает оценочную карту через несколько секунд, чтобы получить обратную связь с пользователем - PullRequest
1 голос
/ 04 февраля 2020

У меня есть бот, созданный с использованием framework v4 в c#. Я хочу, чтобы мой бот принимал отзывы пользователей после того, как бот перестал работать, или в случае, если пользователь не ответил на бот. Я сделал свою карту, но не получил лог c для реализации вышеупомянутой функции в моем боте. Я также прилагаю код карты, которую я сделал. Также изображение моей карты. Может ли кто-нибудь разобраться в этом и помочь мне с этой реализацией. введите описание изображения здесь

{
  "type": "AdaptiveCard",
  "body": [
{
  "type": "TextBlock",
  "size": "Medium",
  "weight": "Bolder",
  "color": "Accent",
  "text": "Rate your experience!"
},
{
  "type": "TextBlock",
  "separator": true,
  "text": "Please rate your experience! Your feedback is very appreciated and will help improve your experience in the future. ",
  "wrap": true
},
{
  "type": "ColumnSet",
  "spacing": "Medium",
  "columns": [
    {
      "type": "Column",
      "selectAction": {
        "type": "Action.Submit",
        "data": "awful"
      },
      "items": [
        {
          "type": "Image",
          "horizontalAlignment": "Center",
          "url": "https://upload.wikimedia.org/wikipedia/commons/1/18/Five-pointed_star.svg"
        },
        {
          "type": "TextBlock",
          "horizontalAlignment": "Center",
          "text": "Awful"
        }
      ],
      "width": "stretch"
    },
    {
      "type": "Column",
      "selectAction": {
        "type": "Action.Submit",
        "data": "bad"
      },
      "items": [
        {
          "type": "Image",
          "horizontalAlignment": "Center",
          "url": "https://upload.wikimedia.org/wikipedia/commons/1/18/Five-pointed_star.svg"
        },
        {
          "type": "TextBlock",
          "horizontalAlignment": "Center",
          "text": "Bad"
        }
      ],
      "width": "stretch"
    },
    {
      "type": "Column",
      "selectAction": {
        "type": "Action.Submit",
        "data": "normal"
      },
      "items": [
        {
          "type": "Image",
          "horizontalAlignment": "Center",
          "url": "https://upload.wikimedia.org/wikipedia/commons/1/18/Five-pointed_star.svg"
        },
        {
          "type": "TextBlock",
          "horizontalAlignment": "Center",
          "text": "normal"
        }
      ],
      "width": "stretch"
    },
    {
      "type": "Column",
      "selectAction": {
        "type": "Action.Submit",
        "data": "good"
      },
      "items": [
        {
          "type": "Image",
          "horizontalAlignment": "Center",
          "url": "https://upload.wikimedia.org/wikipedia/commons/1/18/Five-pointed_star.svg"
        },
        {
          "type": "TextBlock",
          "horizontalAlignment": "Center",
          "text": "Good"
        }
      ],
      "width": "stretch"
    },
    {
      "type": "Column",
      "selectAction": {
        "type": "Action.Submit",
        "data": "terrific"
      },
      "items": [
        {
          "type": "Image",
          "horizontalAlignment": "Center",
          "url": "https://upload.wikimedia.org/wikipedia/commons/1/18/Five-pointed_star.svg"
        },
        {
          "type": "TextBlock",
          "horizontalAlignment": "Center",
          "text": "Terrific"
        }
      ],
      "width": "stretch"
    }
  ]
},
{
  "type": "Input.Text",
  "id": "comment",
  "placeholder": "Add a comment",
  "isMultiline": true
}
 ],
  "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
  "version": "1.0",
   "actions":
[
  {
    "type": "Action.Submit",
    "title": "OK",
   // "data":  "ok"
  }
]}

1 Ответ

1 голос
/ 05 февраля 2020

Нет встроенного способа сделать это, и при этом нет «стандартного» предложения. Однако мы обычно рекомендуем:

  1. Для каждого сообщения запускать асинхронный таймер. Вы можете сделать это в боте, но было бы лучше сделать это вне бота, например, с помощью Azure функций или чего-то еще. В остальной части этого ответа предполагается, что таймер находится за пределами бота. Убедитесь, что таймер также отслеживает dialogReference , связанный с таймером.
  2. Перезапускайте таймер каждый раз, когда пользователь, соответствующий этому conversationReference, отправляет сообщение
  3. после таймера истекает, отправьте событие боту с информацией о пользователе и разговоре (возможно, через ChannelData), сообщив боту, что таймер истек. Вы также можете создать отдельную конечную точку и наблюдать там, чтобы вам не нужна схема действий; вместо /api/messages вы могли бы использовать что-то вроде /api/expiredTimers.
  4. После получения события таймера с истекшим сроком действия отправлять пользователю активное сообщение любому из них 1) посмотреть, если они ' Вы все еще там, или 2) закончите разговор.
...