Как обращаться с клиентом, номером счета и т. Д. С помощью беседы Watson

Я создаю образец приложения, используя API разговора Watson в nodejs. Я пытаюсь получить имя пользователя и отправить его в Watson, а затем я хочу поздороваться с "$ username", также я хочу сохранить это на протяжении всего разговора, чтобы я мог, если пользователь спросит, помню ли я имя, Watson может сказать "да," $ username "".

Может ли кто-нибудь помочь мне с образцом кода, как использовать намерение в этом случае использования.

    // Start conversation with Hello message.
conversation.message({
  input: { text: "Hello" },
    }, processResponse);

// Process the conversation response.
function processResponse(err, response) {
  if (err) {
    console.error(err); // something went wrong
    return;
  }

  // If an intent was detected, log it out to the console.
  if (response.intents.length > 0) {
    //console.log('Detected intent: #' + response.intents[0].intent);
    console.log(response.context)
  }

  // Display the output from dialog, if any.
  if (response.output.text.length != 0) {
      console.log("Watson : "+response.output.text[0]);
  }

  // Prompt for the next round of input.
    var newMessageFromUser = prompt('Me : ');
    // Send back the context to maintain state.
    conversation.message({
      input: { text: newMessageFromUser },
      context : response.context,
    }, processResponse)
}

person Ashok Prabhu    schedule 05.04.2017    source источник
comment
Это имя задается кодом? Или вы запрашиваете имя внутри разговора и можете использовать его после?   -  person Sayuri Mizuguchi    schedule 05.04.2017
comment
Watson спросит имя пользователя. И я хочу обработать это с правильным намерением, сохранить в контексте и использовать на протяжении всей беседы. клиент просто вводит просто имя или меня зовут Ашок .... Не знаю, как обращаться с ними в намерениях.   -  person Ashok Prabhu    schedule 05.04.2017


Ответы (1)


Для этого вы можете использовать контекстные переменные.

Чтобы извлечь имя, запросите имя в 1º node и в узле next добавьте этот JSON:

{
  "context": {
    "name": "<? input.text ?>"
  },
  "output": {
    "text": {
      "values": [
        "Hello $name."
      ],
      "selection_policy": "sequential"
    }
  }
}

input.text захватывает все, что набрал пользователь.

Вы можете использовать $ для установки и получить контекстную переменную с именем: $name покажет, что набрал пользователь.

В другом случае, если пользователь ввел мое имя XXXXX, вы можете использовать регулярное выражение внутри своей переменной контекста. Проверьте этот пример на использование REGEX внутри переменных контекста:

   "name" : "<? input.text.extract('^[A-Z][-a-zA-Z]+$') ?>"

@MichelBida сделала один пример с регулярным выражением, но с другим запросом для пользователя проверьте это ссылка.

РЕДАКТИРОВАТЬ:

Использовать:

context.myproperty = "Hello World";

И теперь есть системная сущность @sys-person, эта сущность извлекает имена из ввода пользователя. Имена не нормализуются системой, поэтому "Will" не рассматривается как "William", и наоборот, см. официальная документация. Этот объект может быть активен в Entity -> System Entities -> @sys-person

person Sayuri Mizuguchi    schedule 05.04.2017
comment
см. это - person Sayuri Mizuguchi; 05.04.2017