Поддерживаемые типы сообщений

text

Простой текстовый ответ, каждый элемент выводится отдельным сообщением.

Параметры

  • text — текст ответа;
  • tts — задаёт текст ответа без разметки синтеза речи;
  • ssml — задаёт голосовой текст ответа c разметкой ssml для синтеза речи.

Синтаксис

{
    "type": "text",
    "text": "....",
    "tts": "....",
    "ssml": "....."
}

В тексте ответа можно использовать подстановки и функции, в рамках тега a: и в $reaction.answer. Внутри скобок {{ }} может находиться любое валидное выражение на JavaScript, можно использовать те же переменные и функции, что и в скриптах.

Использование в сценарии

  • Добавление ответа в $response:
script:
    var reply = {
        "type":"text",
        "text":"мой ответ",
    };
    $response.replies = $response.replies || [];
    $response.replies.push(reply);
  • Модификация ответов. В примере используем postProcess: если ответ ассистента повторяется, то заменяем его на фразу "Что-то я повторяюсь".
init:
    bind("postProcess", function($context) {
        var currentAnswer = $context.response.replies.reduce(function(allAnswers, reply) {
            allAnswers += reply.type === "text" ? reply.text : "";
            return allAnswers;
        },"");

        if ($context.session.lastAnswer === currentAnswer) {
            $context.response.replies = [
            {
                "type":"text",
                "text":"Что-то я повторяюсь"
            }
            ];
        }
        $context.session.lastAnswer = currentAnswer;
    });

theme: /
    state:
        q!: как твои дела
        a: У меня все хорошо!
        a: А у тебя как?

buttons

Тип ответа buttons выводит в чате ряд кнопок.

Параметры

  • text — название кнопки.

Синтаксис

{
  "type":"buttons"         //тип сообщения
  "buttons":[
    {
      "text":"кнопка",     //название кнопки
      другие поля будут переданы
      непосредственно в мессенджер
    }
  ]
}

При добавлении нескольких кнопок на разные строки, определяйте каждую тегом buttons.

Вложенные данные тега buttons: должны соответствовать шаблону: <json-node> -> <string>. В левой части валидный JsonNode — строка или объект, определяющие текст или тело кнопки. В правой части — опционально строка, определяющая путь перехода при нажатии кнопки.

 state: Buttons
        q!: * start
        a: Кнопка:
        buttons:
            "Имя кнопки" -> /NormalButtons/2   //после стрелки указывается путь до состояния, в которое будет совершен переход

Также кнопки могут содержать подстановку параметров в имени и указанном пути для перехода.

 state: Buttons
        q!: * start
        a: Подстановка параметров в кнопках:
        buttons:
            "Имя кнопки" -> /NormalButtons/2
            "подстановка параметров как в {{ 'имени' }} так и в пути для перехода" -> {{ './3' }}

Использование в сценарии

state:
  a: Текст сообщения
  buttons:
    "Привет" -> ../Hello
    {text:"Отправить контакты", request_contact: true}  // две кнопки будут расположены на одной строке
  buttons:
    "Вторая кнопка"

image

Вывод изображения.

Параметры

  • imageUrl — веб-адрес изображения из раздела Контент.
  • hash — хэш изображения из раздела Контент.

Синтаксис

{
    "type": "image",
    "imageUrl": "веб-адрес изображения из раздела Контент",
    "hash": "хэш изображения из раздела Контент"
}

Использование в сценарии

script:
       $response.replies = $response.replies || [];
       $response.replies.push({
         type: "image",
         imageUrl: "https://testimageurl.jpg",
         hash: "5debe321a4cc700c9ba138edd5e98f71",
        })

card

Ответ ассистента в виде карточки.

Параметры

  • title — обязательное поле, которое содержит текст заголовка карточки. Позволяет использовать переменные сценария;
  • description — описания карточки, которое отображается под заголовком. Рекомендуемая длина описания — менее 50 символов. Позволяет использовать переменные сценария;
  • imageUrl — ссылка на изображение из раздела Контент;
  • hash — хэш изображения из раздела Контент;
  • button — кнопка, которая отображается в карточке;
  • button.text — текст кнопки.
  • button.url — url на который выполняется переход по нажатию кнопки.
  • auto_listening — указывает будет ли смартап слушать ответ пользователя после ответа ассистента.

Синтаксис

{
    "type": "card",
    "title": "title",
    "description": "descr",
    "imageUrl": "веб-адрес изображения из раздела Контент",
    "hash": "хэш картинки из раздела Контент",
    "button": {
        "text": "text",
        "url": "url"
    },
    "auto_listening": false
}

Использование в сценарии

script:
  var reply = {
      "type": "card",
      "title": "title",
      "description": "descr",
      "imageUrl": "<url на картинку из раздела Контент>",
      "hash":"<hash картинки из раздела Контент>",
      "button": {
         "text": "text",
         "url": "url"
      },
      "auto_listening": false
  };
  $response.replies = $response.replies || [];
  $response.replies.push(reply);

cardList

Ответ ассистента в виде карточки со списком ячеек.

Параметры

Параметры карточки:

  • title — обязательное поле, которое содержит текст заголовка карточки. Позволяет использовать переменные сценария;
  • subtitle — описания карточки, которое отображается под заголовком. Рекомендуемая длина описания — менее 50 символов. Позволяет использовать переменные сценария;
  • cells — массив с объектами, описывающими ячейки карточки;
  • buttons — массив кнопок карточки;
  • auto_listening — указывает будет ли смартап слушать ответ пользователя после ответа ассистента.

Параметры ячейки:

  • title — обязательное поле, которое содержит текст заголовка ячейки;
  • subtitle — поле с текстом, который отображается под заголовком ячейки;
  • value — обязательное поле, которое содержит текст правой части ячейки. Может содержать переменные сценария.;
  • iconUrl — веб-адрес изображения, которое отображается в ячейке;
  • hash — хэш изображения ячейки;
  • action — действие, которое произойдёт при нажатии ячейки;
  • action.url — веб-адрес, который откроется при нажатии ячейки;
  • action.text — текст, который отправится при нажатии ячейки.

Синтаксис

{
    "type": "cardList",
    "title": "Заголовок карточки",
    "subtitle": "Описание",
    "cells": [
        {
            "title": "Заголовок ячейки 1",
            "subtitle": "Описание ячейки 1",
            "value": "Значение, которое отображается в правой части ячейки 1. Рекомендуемая длина менее 5 символов.",
            "iconUrl": "https://example.ru/images/image.png",
            "hash": "3a74d5abfc671f47e45d336ed4d41026",
            "action": {
                "url": "Веб-адрес, который откроется при нажатии ячейки"
            }
        },
        {
            "title": "Заголовок ячейки 2",
            "subtitle": "Описание ячейки 2",
            "value": "Значение, которое отображается в правой части ячейки 2. Рекомендуемая длина менее 5 символов.",
            "iconUrl": "https://example.ru/images/image.png",
            "hash": "3a74d5abfc671f47e45d336ed4d41026",
            "action": {
                "text": "Текст, который отправится при нажатии ячейки"
            }
        }
    ],
    "buttons": [
        {
            "text": "Название кнопки карточки",
            "url": "Веб-адрес, который откроется при нажатии кнопки"
        }
    ],
    "auto_listening": false
}

Использование в сценарии

script:
    var reply = {
          "type": "cardList",
          "title": "Заголовок карточки",
          "subtitle": "Описание",
          "cells": [{
                  "title": "Заголовок ячейки 1",
                  "subtitle": "Описание ячейки 1",
                  "value": "Значение, которое отображается в правой части ячейки 1. Рекомендуемая длина менее 5 символов.",
                  "iconUrl": "https://example.ru/images/image.png",
                  "hash": "3a74d5abfc671f47e45d336ed4d41026",
                  "action": {
                      "url": "Веб-адрес, который откроется при нажатии ячейки"
                      },
                  },
                  {
                  "title": "Заголовок ячейки 2",
                  "subtitle": "Описание ячейки 2",
                  "value": "Значение, которое отображается в правой части ячейки 2. Рекомендуемая длина менее 5 символов.",
                  "iconUrl": "https://example.ru/images/image.png",
                  "hash": "3a74d5abfc671f47e45d336ed4d41026",
                  "action": {
                      "text": "Текст, который отправится при нажатии ячейки"
                      },
                  }],
          "buttons": [
                  {
                    "text": "Название кнопки карточки",
                    "url": "Веб-адрес, который откроется при нажатии кнопки"
                  }],
          "auto_listening": false
        };
        $response.replies = $response.replies || [];
        $response.replies.push(reply);

raw

Используется для передачи кастомного типа ответа.

Параметры

  • body — тело ответа, содержание которого будет добавлено в поле payload протокола ассистента. Параметры, идентифицирующие пользователя, подставляются автоматически.

Вы можете передать поле messageName и явно указать в нём тип сообщения. Поле messageName необязательное и по умолчанию содержит значение ANSWER_TO_USER. Примеры сообщений, которые можно использовать в body вы найдёте в SmartApp API.

Синтаксис

{
  "type":"raw",            //тип сообщения
  "body":{ ... },          //тело ответа
  "messageName":"ANSWER_TO_USER"   //опциональный параметр
}

Использование в сценарии

Внимание! Не тестируйте сценарий, в котором есть $rawResponse, в тестовом виджете! Если вы добавите $rawResponse в сценарий, а затем нажмете Тестировать, SmartApp Graph вернет ошибку, так как смартап не может получить данные из ассистента, когда диалог идет в тестовом виджете.

var reply = {
  type: "raw",
  body: {
        "response": { Сюда вставить body из реплики с типом raw }
        },
    messageName: "ANSWER_TO_USER"
  };
$response.replies = $response.replies || [];
$response.replies.push(reply);

Заметили ошибку?

Выделите текст и нажмите Ctrl + Enter, чтобы сообщить нам о ней