Как создать Slack-бота для нескольких разговоров?

Я создаю слабый бот, используя стороннюю службу для обработки ответов на основе входных данных, а не просто жестко кодируя их в боте. API этой службы требуется идентификатор клиента и идентификатор разговора, чтобы получить ответ. Я обнаружил, что каждый раз, когда слабый бот получает сообщение, он каждый раз создает новый объект сообщения, поэтому нет способа сохранить идентификатор клиента и идентификатор беседы в объекте сообщения и удержать его.

rtm.on(RTM_EVENTS.MESSAGE, function(message // <-- new object each time the bot hears a message){
  rtm.sendMessage('hello', message.channel);
});

Короче говоря, кто-нибудь знает способ поддерживать разговор между одним пользователем и ботом, сохраняя при этом какую-то переменную для хранения идентификатора клиента и разговора?


person Daniel McCrevan    schedule 15.04.2016    source источник
comment
Вы можете запустить приложение, которое будет получать входящие сообщения, используя RTM. Затем в этом приложении у вас будет база данных, в которой вы будете хранить conversation_id и client_id и запрашивать свою базу данных перед вызовом стороннего API. Следую ли я вашей цели до сих пор?   -  person Petr Gazarov    schedule 17.04.2016


Ответы (1)


Вы можете сохранить идентификатор message.user и отслеживать разговор, относящийся к этому конкретному пользователю. Вам нужно будет следить за всеми текущими разговорами самостоятельно. Что-то вроде этого

rtm.on(RTM_EVENTS.MESSAGE, function(message // <-- new object each time the bot hears a message){
  if(stored_conversations.indexOf(message.user) > -1){
    //customize message depending on history
    rtm.sendMessage('I remember you', message.channel);
  }
});

Или вы можете использовать Botkit — он управляет диалогами пользователей и ботов вместо вас.

person Matthieu    schedule 27.04.2016
comment
Извините за опоздание, что такое объект store_conversations? И я рассматривал возможность использования botkit, но для проекта, в котором я его создаю, обойти его довольно сложно. - person Daniel McCrevan; 02.05.2016
comment
Stored_conversations — это объект (здесь неопределенный массив), который вам нужно создать для хранения текущих разговоров. - person Matthieu; 03.05.2016