This site is no longer updated.Go to new Conversational Cloud docs

$response


Объект для заполнения поля $response в ответах системы. $response.replies — список ответов, выведенных в процессе обработки реакций.

replies — массив реплик чатбота, содержащий строго типизированные элементы. Предназначен для передачи ответов в различные каналы коммуникации, такие, как Телеграм, Фейсбук и др.

Ниже представлен список поддерживаемых платформой replies. Подробная иформация о формате ответа бота, параметрах, типах сообщений для каналов представлена в статье Типы ответов.


replies

Поддерживаемые элементы replies:

  • text — простой текстовый ответ, каждый элемент выводится отдельным сообщением. Параметр tts задаёт текст ответа с разметкой для синтеза речи. Параметр markup задаёт способ форматирования.
{
  "type":"text",
  "text":"....",
  "tts":"....",
  "markup":
    "html|markdown|plain"
}

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

  • inlineButtons — вывод inline-кнопки. Если заполнено поле inlineButtons[].url, по клику будет открыт указанный url.
{
  "type":"inlineButtons"
  "buttons":[
    {
      "text":"кнопка",
      "url":"http://ya.ru"
    }
  ]
}

  • image — вывод изображения.
{
  "type":"image",
  "imageUrl":"http://..."
}

  • link — вывод ссылки.
{
  "type":"link",
  "url":"http://..."
}

  • raw — используется для передачи методов, специфичных для определенного канала. Обязательный параметр body: тело ответа, которое будет передано в чат-систему. Параметры, идентифицирующие пользователя в чате будут подставлены автоматически.
{
  "type":"raw",
  "body":{ ... },
  "method":"sendMessage"
}

  • switch — переключает диалог клиента с бота на оператора.
{
  "type":"switch",
  "firstMessage":"...",
  "closeChatPhrases": [".."],
  "ignoreOffline":true|false,
"oneTimeMessage": true|false
}

  • location — вывод координат. Параметры: lat, lon.
{
  "type": "location",
  "lat": 59.934280,
  "lon": 30.335099
}

  • timeout — задает переход в состояние, если от пользователя нет ответа.
{
  "type":"timeout",
  "interval":10,
  "targetState":"/timedout"
}

  • dtmf — запрос набора DTMF-сообщения (цифры/символы в тоновом режиме). Только для телефонных звонков.
$response.replies.push({type:"dtmf"});

  • hangup — прервать звонок. Только телефонных звонков.
$response.replies.push({type:"hangup"});

  • htmlResponse используется для вывода визуальной составляющей навыков, созданных с использованием Interactive Canvas.
{
  "type":"htmlResponse",
  "updatedState": "some",
  "suppressMic":true|false,
  "url": "appUrl"
}

Примеры использования

  • Вывод изображения.
  script:
     $response.replies.push( {
          type: "image",
          imageUrl: " https://testimageurl.jpg",
          text: "Изображение" (это поле опционально)
      } )

  • Вывод GIF анимации.
 $response.replies = $response.replies || [];
      $response.replies.push({
          "type": "raw",
          "body": {
              "animation": "https://www.catgifpage.com/gifs/318.gif"
          },
          "method": "sendAnimation"
      });

  • Переключение диалога с бота на оператора.
$response.replies .push({
     type:"switch",
     phoneNumber:74155,
     closeChatPhrases: catchAll.closeChatPhrases,
     firstMessage: $client.history,
     destination: catchAll.operatorGroup,
                    });

  • Пример изменения ответа в post-процессе при третьей попытке бота ответить одинаково.
init:
    bind("postProcess", function(){
        var $session = $jsapi.context().session;
        var $response = $jsapi.context().response;
        var answer = $response.replies ? $response.replies.reduce (function (answers, current) {
            answers += " " + current.text;
            return answers;
        }, "")  : "";
        if ($session.lastAnswer && (answer == $session.lastAnswer)) {
            $session.answerRepetition = $session.answerRepetition || 0;
            $session.answerRepetition += 1;
        } else {
            $session.answerRepetition = 0;
        }
        if ($session.answerRepetition == 2) {
            $response.replies = [{
                "type": "text",
                "text": "Похоже мы ходим кругами. Может спросишь о чем-нибудь другом?"
            }];
        }
        $session.lastAnswer = answer;
    });