Есть ли способ заставить Hubot отвечать на все сообщения, которые не являются существующими командами?

Я даю Hubot первую попытку и делаю сценарий диалога для простого разговора. Я реализовал довольно много возможностей (у меня много вопросов и ключевых слов работает), но когда пользователь спрашивает или говорит что-то, чего Hubot не распознает, полная тишина.

Я хочу добавить набор ответов по умолчанию для Hubot, когда он не может найти существующую команду или слово (расплывчатые ответы, такие как "Это интересно" или "Расскажите мне больше".)

Есть ли способ сделать это через скрипт? Что-то типа:

robot.respond / * /, (msg) ->
    msg.send ArrayOfVagueReplies

где * "все остальное". "Если команды... иначе..."?


person Yisela    schedule 30.04.2016    source источник


Ответы (2)


Поскольку метод robot.respond hubot принимает регулярное выражение, вы должны иметь возможность просто указать /.*/ в качестве регулярного выражения, и оно будет соответствовать всем.

Итак, у вас будет:

module.exports = (robot) ->
        robot.respond /.*/i, (msg) ->
            doSomething(msg)
person TonyH    schedule 16.05.2016
comment
Потрясающий. Вы случайно не знаете, где я могу найти список выражений, которые я могу использовать для создания более сложных сопоставлений? Например, я использую () и | но я не знаю, есть ли еще и как их точно определить: - person Yisela; 19.05.2016
comment
В Интернете есть много хороших руководств по регулярным выражениям. Попробуйте поискать в Google «регулярное выражение кофескрипт» для конкретных примеров кода, но любое регулярное выражение должно работать между двумя косыми чертами / / - person TonyH; 19.05.2016
comment
Кстати, загляните на regex101.com. Это не лучший учебник, но он отлично подходит для тестирования и объяснения того, как работают ваши регулярные выражения. - person TonyH; 20.05.2016

используйте предложение robot.catchAll для перехвата всех несовпадающих диалогов, вы можете обратиться к https://www.npmjs.com/package/hubot-suggest

person gasolin    schedule 01.05.2016