Как сделать ненужный текстовый мессенджер бот nodejs

Итак, я создаю бота-мессенджера, используя node js. Как я могу сделать:

  1. Каждый раз, когда пользователь отправляет случайный текст (кроме правой команды), бот отвечает: «Извините, я не могу распознать эту команду».
  2. Как заставить бота сохранять текст от пользователя и подтверждать позже? Пример: ПОЛЬЗОВАТЕЛЬ: Здравствуйте. БОТ: Что еще? ПОЛЬЗОВАТЕЛЬ: Мир. БОТ: Что еще? ПОЛЬЗОВАТЕЛЬ: готово. БОТ: Я понял, БОТ: 1. Привет БОТ: 2. Мировой БОТ: Это правильно?

Вот мои текущие скрипты на нет. 1:

function replyByText(sender, text, payload) {
let kata = text.toLowerCase()
let date = new Date()
let current_hour = date.getHours()
if (S(kata).contains('produk') || S(kata).contains('produknya') || S(kata).contains('product')) {
    sendOpeningProduct(sender, "Wait Sec..")
}

if (S(kata).contains('layanan')|| S(kata).contains('services')|| S(kata).contains('diagnose')){
    // sendOpeningServices(sender, 'Wait sec..' )
    sendPlainMessage(sender, 'Hi, what concern you most about your health? Please describe your symptoms..' )
}

if (S(kata).contains('health symptoms')){
    sendPlainMessage(sender, 'Tell me What You Feel..' )
}

if (S(kata).contains('im feeling sick') || S(kata).contains('im feeling unwell') || S(kata).contains('im feeling dizzy') || S(kata).contains('dizzy') || S(kata).contains('sick')){
    sendPlainMessage(sender, 'How old are you ?' )
}

if (S(kata).contains('3') || S(kata).contains('4') || S(kata).contains('5') || S(kata).contains('6') || S(kata).contains('7') || S(kata).contains('8') || S(kata).contains('9')){
    sendPlainMessage(sender, 'I see...' )
    sendOpeningProductKids(sender, "Just try our products")
}}

Любая помощь будет оценена ..


person Nasihun Amin Suhardiyan    schedule 22.03.2017    source источник


Ответы (3)


Решение № 1:

function replyByText(sender, text, payload) {
    let kata = text.toLowerCase()
    let date = new Date()
    let current_hour = date.getHours()

    if (S(kata).contains('produk') || S(kata).contains('produknya') || S(kata).contains('product')) {
        sendOpeningProduct(sender, "Wait Sec..")
    }

    else if (S(kata).contains('layanan')|| S(kata).contains('services')|| S(kata).contains('diagnose')){
        // sendOpeningServices(sender, 'Wait sec..' )
        sendPlainMessage(sender, 'Hi, what concern you most about your health? Please describe your symptoms..' )
    }

    else if (S(kata).contains('health symptoms')){
        sendPlainMessage(sender, 'Tell me What You Feel..' )
    }

    else if (S(kata).contains('im feeling sick') || S(kata).contains('im feeling unwell') || S(kata).contains('im feeling dizzy') || S(kata).contains('dizzy') || S(kata).contains('sick')){
        sendPlainMessage(sender, 'How old are you ?' )
    }

    else if (S(kata).contains('3') || S(kata).contains('4') || S(kata).contains('5') || S(kata).contains('6') || S(kata).contains('7') || S(kata).contains('8') || S(kata).contains('9')){
        sendPlainMessage(sender, 'I see...' )
        sendOpeningProductKids(sender, "Just try our products")
    }
    else{
        sendPlainMessage(sender, 'Sorry I cant recognize that command' )
    }

}

Решение № 2:

Вам нужно будет сохранять состояние между каждым вызовом вашего веб-перехватчика. Следуй этим шагам.

Есть несколько способов решить эту проблему. Вы можете решить эту проблему таким образом. Сохраняйте состояние, обновляя модель / объект covesation при каждом вызове webhook. Используйте уникальный psid пользователя, полученный из facebook api, в качестве первичного ключа или как часть составного ключа для модели / объекта.

person akinmail    schedule 29.03.2017

Вы также можете попробовать использовать BootBot (https://github.com/Charca/bootbot), nodejs фреймворк, который делает разработку бота Messenger относительно простой. В нем есть функции, позволяющие легко проверять вводимые пользователем данные и сохранять контекст разговора.

person sotirelisc    schedule 05.04.2017

Для вашего первого вопроса идеально подойдет оператор switch / case. Если какие-либо случаи не выполняются, действие по умолчанию будет «Извините, я не могу распознать эту команду».

person devwanderer    schedule 28.03.2017